diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index a24c524047..2bd1ccfd62 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1,6 +1,6 @@ FROM ghcr.io/commaai/openpilot-base:latest -RUN apt update && apt install -y vim net-tools usbutils htop ripgrep tmux wget mesa-utils xvfb libxtst6 libxv1 libglu1-mesa libegl1-mesa +RUN apt update && apt install -y vim net-tools usbutils htop ripgrep tmux wget mesa-utils xvfb libxtst6 libxv1 libglu1-mesa libegl1-mesa gdb RUN pip install ipython jupyter jupyterlab RUN cd /tmp && \ @@ -8,6 +8,8 @@ RUN cd /tmp && \ curl -L -o virtualgl.deb "https://downloads.sourceforge.net/project/virtualgl/3.1/virtualgl_3.1_$ARCH.deb" && \ dpkg -i virtualgl.deb +RUN usermod -aG video batman + USER batman RUN cd $HOME && \ diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index a7a63658ed..7174ee2800 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -17,8 +17,8 @@ "--volume=/tmp/.X11-unix:/tmp/.X11-unix", "--volume=${localWorkspaceFolder}/.devcontainer/.host/.Xauthority:/home/batman/.Xauthority", "--volume=${localEnv:HOME}/.comma:/home/batman/.comma", + "--volume=${localEnv:HOME}/.azure:/home/batman/.azure", "--volume=/tmp/comma_download_cache:/tmp/comma_download_cache", - "--volume=/tmp/devcontainer_scons_cache:/tmp/scons_cache", "--shm-size=1G", "--add-host=host.docker.internal:host-gateway", // required to use host.docker.internal on linux "--publish=0.0.0.0:8070-8079:8070-8079" // body ZMQ services @@ -29,7 +29,9 @@ "installOhMyZsh": false, "upgradePackages": false, "username": "batman" - } + }, + "ghcr.io/devcontainers-contrib/features/gh-cli:1": {}, + "ghcr.io/devcontainers/features/azure-cli:1": {} }, "containerUser": "batman", "remoteUser": "batman", @@ -43,5 +45,8 @@ "lharri73.dbc" ] } - } + }, + "mounts": [ + "type=volume,source=scons_cache,target=/tmp/scons_cache" + ] } \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/pc_bug_report.yml b/.github/ISSUE_TEMPLATE/pc_bug_report.yml index db3eb22e5c..761c8b1a0a 100644 --- a/.github/ISSUE_TEMPLATE/pc_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/pc_bug_report.yml @@ -24,7 +24,7 @@ body: id: os-version attributes: label: OS Version - placeholder: Ubuntu 20.04 + placeholder: Ubuntu 24.04 validations: required: true diff --git a/.github/PULL_REQUEST_TEMPLATE/car_port.md b/.github/PULL_REQUEST_TEMPLATE/car_port.md index 690c24c9b0..c7aa2b96c2 100644 --- a/.github/PULL_REQUEST_TEMPLATE/car_port.md +++ b/.github/PULL_REQUEST_TEMPLATE/car_port.md @@ -8,7 +8,7 @@ assignees: '' **Checklist** -- [ ] added entry to CarInfo in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs +- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs - [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py) - [ ] route with openpilot: - [ ] route with stock system: diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 3e3f42dcbc..2b4a5ed48f 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -44,7 +44,7 @@ Explain how you tested this bug fix. **Checklist** -- [ ] added entry to CarInfo in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs +- [ ] added entry to CAR in selfdrive/car/*/values.py and ran `selfdrive/car/docs.py` to generate new docs - [ ] test route added to [routes.py](https://github.com/commaai/openpilot/blob/master/selfdrive/car/tests/routes.py) - [ ] route with openpilot: - [ ] route with stock system: diff --git a/.github/workflows/auto-cache/action.yaml b/.github/workflows/auto-cache/action.yaml index 173803f7f0..e99c46e3c3 100644 --- a/.github/workflows/auto-cache/action.yaml +++ b/.github/workflows/auto-cache/action.yaml @@ -19,14 +19,14 @@ runs: using: "composite" steps: - name: setup namespace cache - if: ${{ contains(runner.name, 'nsc') }} + if: ${{ contains(runner.name, 'nsc') }} uses: namespacelabs/nscloud-cache-action@v1 with: path: ${{ inputs.path }} - name: setup github cache if: ${{ !contains(runner.name, 'nsc') && inputs.save != 'false' }} - uses: 'actions/cache@v3' + uses: 'actions/cache@v4' with: path: ${{ inputs.path }} key: ${{ inputs.key }} @@ -34,7 +34,7 @@ runs: - name: setup github cache if: ${{ !contains(runner.name, 'nsc') && inputs.save == 'false' }} - uses: 'actions/cache/restore@v3' + uses: 'actions/cache/restore@v4' with: path: ${{ inputs.path }} key: ${{ inputs.key }} @@ -46,4 +46,4 @@ runs: run: | mkdir -p ${{ inputs.path }} sudo chmod -R 777 ${{ inputs.path }} - sudo chown -R $USER ${{ inputs.path }} \ No newline at end of file + sudo chown -R $USER ${{ inputs.path }} diff --git a/.github/workflows/auto_pr_review.yaml b/.github/workflows/auto_pr_review.yaml index abb6c38d6b..8316fedda0 100644 --- a/.github/workflows/auto_pr_review.yaml +++ b/.github/workflows/auto_pr_review.yaml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' steps: - - uses: Vankka/pr-target-branch-action@69ab6dd5c221de3548b3b6c4d102c1f4913d3baa + - uses: Vankka/pr-target-branch-action@def32ec9d93514138d6ac0132ee62e120a72aed5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -34,6 +34,26 @@ jobs: already-exists-action: close_this already-exists-comment: "Your PR should be made against the `master` branch" + comment: + runs-on: ubuntu-latest + steps: + - name: comment + uses: thollander/actions-comment-pull-request@fabd468d3a1a0b97feee5f6b9e499eab0dd903f6 + if: github.event.pull_request.head.repo.full_name != 'commaai/openpilot' + with: + message: | + + Thanks for contributing to openpilot! In order for us to review your PR as quickly as possible, check the following: + * Convert your PR to a draft unless it's ready to review + * Read the [contributing docs](https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md) + * Before marking as "ready for review", ensure: + * the goal is clearly stated in the description + * all the tests are passing + * the change is [something we merge](https://github.com/commaai/openpilot/blob/master/docs/CONTRIBUTING.md#what-gets-merged) + * include a route or your device' dongle ID if relevant + comment_tag: run_id + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + check-pr-template: runs-on: ubuntu-latest permissions: @@ -41,7 +61,7 @@ jobs: issues: write pull-requests: write actions: read - if: github.event.pull_request.head.repo.full_name != 'commaai/openpilot' + if: false && github.event.pull_request.head.repo.full_name != 'commaai/openpilot' steps: - uses: actions/github-script@v7 with: @@ -91,7 +111,7 @@ jobs: // Utility function to check if a list of checkboxes is a subset of another list of checkboxes isCheckboxSubset = (templateCheckBoxTexts, prTextCheckBoxTexts) => { - // Check if each template checkbox text is a substring of at least one PR checkbox text + // Check if each template checkbox text is a substring of at least one PR checkbox text // (user should be allowed to add additional text) return templateCheckBoxTexts.every((item) => prTextCheckBoxTexts.some((element) => element.includes(item))) } diff --git a/.github/workflows/badges.yaml b/.github/workflows/badges.yaml index 2f1a7d67c4..cf8bdc7109 100644 --- a/.github/workflows/badges.yaml +++ b/.github/workflows/badges.yaml @@ -12,7 +12,7 @@ env: jobs: badges: name: create badges - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' permissions: contents: write diff --git a/.github/workflows/compile-openpilot/action.yaml b/.github/workflows/compile-openpilot/action.yaml index 2945b67d2e..4015746c0e 100644 --- a/.github/workflows/compile-openpilot/action.yaml +++ b/.github/workflows/compile-openpilot/action.yaml @@ -14,7 +14,7 @@ runs: ${{ env.RUN }} "rm -rf /tmp/scons_cache/* && \ scons -j$(nproc) --cache-populate" - name: Save scons cache - uses: actions/cache/save@v3 + uses: actions/cache/save@v4 if: github.ref == 'refs/heads/master' with: path: .ci_cache/scons_cache diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index c555eafc73..a32989f7d0 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -20,7 +20,7 @@ env: jobs: docs: name: build docs - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 45 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/prebuilt.yaml b/.github/workflows/prebuilt.yaml index 990be73f72..d8963ec89f 100644 --- a/.github/workflows/prebuilt.yaml +++ b/.github/workflows/prebuilt.yaml @@ -11,7 +11,7 @@ env: jobs: build_prebuilt: name: build prebuilt - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' env: PUSH_IMAGE: true @@ -22,7 +22,7 @@ jobs: steps: - name: Wait for green check mark if: ${{ github.event_name != 'workflow_dispatch' }} - uses: lewagon/wait-on-check-action@595dabb3acf442d47e29c9ec9ba44db0c6bdd18f + uses: lewagon/wait-on-check-action@ccfb013c15c8afb7bf2b7c028fb74dc5a068cccc with: ref: master wait-interval: 30 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 3e3fe46e7a..34e333bb59 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -12,7 +12,7 @@ jobs: ImageOS: ubuntu20 container: image: ghcr.io/commaai/openpilot-base:latest - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' permissions: checks: read @@ -24,7 +24,7 @@ jobs: sudo apt-get install -y libyaml-dev - name: Wait for green check mark if: ${{ github.event_name != 'workflow_dispatch' }} - uses: lewagon/wait-on-check-action@595dabb3acf442d47e29c9ec9ba44db0c6bdd18f + uses: lewagon/wait-on-check-action@ccfb013c15c8afb7bf2b7c028fb74dc5a068cccc with: ref: master wait-interval: 30 diff --git a/.github/workflows/repo-maintenance.yaml b/.github/workflows/repo-maintenance.yaml index 445a1cf11c..0e6606112b 100644 --- a/.github/workflows/repo-maintenance.yaml +++ b/.github/workflows/repo-maintenance.yaml @@ -8,7 +8,7 @@ on: jobs: bump_submodules: name: bump_submodules - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest container: image: ghcr.io/commaai/openpilot-base:latest if: github.repository == 'commaai/openpilot' @@ -22,8 +22,9 @@ jobs: git -c submodule."tinygrad".update=none submodule update --remote git add . - name: Create Pull Request - uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5 + uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 with: + author: Vehicle Researcher token: ${{ secrets.ACTIONS_CREATE_PR_PAT }} commit-message: bump submodules title: '[bot] Bump submodules' @@ -34,7 +35,7 @@ jobs: labels: bot package_updates: name: package_updates - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest container: image: ghcr.io/commaai/openpilot-base:latest if: github.repository == 'commaai/openpilot' @@ -49,8 +50,9 @@ jobs: git config --global --add safe.directory '*' pre-commit autoupdate - name: Create Pull Request - uses: peter-evans/create-pull-request@5b4a9f6a9e2af26e5f02351490b90d01eb8ec1e5 + uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 with: + author: Vehicle Researcher token: ${{ secrets.ACTIONS_CREATE_PR_PAT }} commit-message: Update Python packages and pre-commit hooks title: '[bot] Update Python packages and pre-commit hooks' diff --git a/.github/workflows/selfdrive_tests.yaml b/.github/workflows/selfdrive_tests.yaml index d1dff147f2..2be83b1654 100644 --- a/.github/workflows/selfdrive_tests.yaml +++ b/.github/workflows/selfdrive_tests.yaml @@ -26,7 +26,7 @@ env: jobs: build_release: name: build release - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest env: STRIPPED_DIR: /tmp/releasepilot steps: @@ -69,9 +69,9 @@ jobs: matrix: arch: ${{ fromJson( ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || + ((github.event_name != 'pull_request') || (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && '["x86_64", "aarch64"]' || '["x86_64"]' ) }} - runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-20.04' }} + runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 with: @@ -87,7 +87,7 @@ jobs: strategy: matrix: arch: ${{ fromJson( (github.repository == 'commaai/openpilot') && '["x86_64", "aarch64"]' || '["x86_64"]' ) }} - runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-20.04' }} + runs-on: ${{ (matrix.arch == 'aarch64') && 'namespace-profile-arm64-2x8' || 'ubuntu-latest' }} if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot' steps: - uses: actions/checkout@v4 @@ -104,7 +104,7 @@ jobs: docker_push_multiarch: name: docker push multiarch tag - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.ref == 'refs/heads/master' && github.event_name != 'pull_request' && github.repository == 'commaai/openpilot' needs: [docker_push] steps: @@ -122,8 +122,8 @@ jobs: static_analysis: name: static analysis runs-on: ${{ ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || - (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} + ((github.event_name != 'pull_request') || + (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 with: @@ -136,7 +136,7 @@ jobs: valgrind: name: valgrind - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -155,8 +155,8 @@ jobs: unit_tests: name: unit tests runs-on: ${{ ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || - (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} + ((github.event_name != 'pull_request') || + (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 with: @@ -177,7 +177,7 @@ jobs: QT_QPA_PLATFORM=offscreen ./selfdrive/ui/tests/test_translations && \ ./selfdrive/ui/tests/test_translations.py" - name: "Upload coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: name: ${{ github.job }} env: @@ -186,8 +186,8 @@ jobs: process_replay: name: process replay runs-on: ${{ ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || - (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} + ((github.event_name != 'pull_request') || + (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }} steps: - uses: actions/checkout@v4 with: @@ -197,7 +197,7 @@ jobs: docker_hub_pat: ${{ secrets.DOCKER_HUB_PAT }} - name: Cache test routes id: dependency-cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .ci_cache/comma_download_cache key: proc-replay-${{ hashFiles('.github/workflows/selfdrive_tests.yaml', 'selfdrive/test/process_replay/ref_commit') }} @@ -215,7 +215,7 @@ jobs: id: print-diff if: always() run: cat selfdrive/test/process_replay/diff.txt - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 if: always() continue-on-error: true with: @@ -226,7 +226,7 @@ jobs: run: | ${{ env.RUN }} "unset PYTHONWARNINGS && AZURE_TOKEN='$AZURE_TOKEN' python selfdrive/test/process_replay/test_processes.py -j$(nproc) --upload-only" - name: "Upload coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: name: ${{ github.job }} env: @@ -234,15 +234,15 @@ jobs: regen: name: regen - runs-on: 'ubuntu-20.04' - steps: + runs-on: 'ubuntu-latest' + steps: - uses: actions/checkout@v4 with: submodules: true - uses: ./.github/workflows/setup-with-retry - name: Cache test routes id: dependency-cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .ci_cache/comma_download_cache key: regen-${{ hashFiles('.github/workflows/selfdrive_tests.yaml', 'selfdrive/test/process_replay/test_regen.py') }} @@ -259,7 +259,7 @@ jobs: test_modeld: name: model tests - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -284,7 +284,7 @@ jobs: ${{ env.RUN }} "unset PYTHONWARNINGS && \ $PYTEST selfdrive/modeld" - name: "Upload coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: name: ${{ github.job }} env: @@ -293,8 +293,8 @@ jobs: test_cars: name: cars runs-on: ${{ ((github.repository == 'commaai/openpilot') && - ((github.event_name != 'pull_request') || - (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-20.04' }} + ((github.event_name != 'pull_request') || + (github.event.pull_request.head.repo.full_name == 'commaai/openpilot'))) && 'namespace-profile-amd64-8x16' || 'ubuntu-latest' }} strategy: fail-fast: false matrix: @@ -321,7 +321,7 @@ jobs: NUM_JOBS: 5 JOB_ID: ${{ matrix.job }} - name: "Upload coverage to Codecov" - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 with: name: ${{ github.job }}-${{ matrix.job }} env: @@ -329,7 +329,7 @@ jobs: car_docs_diff: name: PR comments - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - uses: actions/checkout@v4 @@ -340,7 +340,7 @@ jobs: - uses: ./.github/workflows/setup-with-retry - name: Get base car info run: | - ${{ env.RUN }} "scons -j$(nproc) && python selfdrive/debug/dump_car_info.py --path /tmp/openpilot_cache/base_car_info" + ${{ env.RUN }} "scons -j$(nproc) && python selfdrive/debug/dump_car_docs.py --path /tmp/openpilot_cache/base_car_docs" sudo chown -R $USER:$USER ${{ github.workspace }} - uses: actions/checkout@v4 with: @@ -352,19 +352,19 @@ jobs: run: | cd current ${{ env.RUN }} "scons -j$(nproc)" - output=$(${{ env.RUN }} "python selfdrive/debug/print_docs_diff.py --path /tmp/openpilot_cache/base_car_info") + output=$(${{ env.RUN }} "python selfdrive/debug/print_docs_diff.py --path /tmp/openpilot_cache/base_car_docs") output="${output//$'\n'/'%0A'}" echo "::set-output name=diff::$output" - name: Find comment if: ${{ env.AZURE_TOKEN != '' }} - uses: peter-evans/find-comment@1769778a0c5bd330272d749d12c036d65e70d39d + uses: peter-evans/find-comment@3eae4d37986fb5a8592848f6a574fdf654e61f9e id: fc with: issue-number: ${{ github.event.pull_request.number }} body-includes: This PR makes changes to - name: Update comment if: ${{ steps.save_diff.outputs.diff != '' && env.AZURE_TOKEN != '' }} - uses: peter-evans/create-or-update-comment@b95e16d2859ad843a14218d1028da5b2c4cbc4b4 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 with: comment-id: ${{ steps.fc.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} @@ -372,7 +372,7 @@ jobs: edit-mode: replace - name: Delete comment if: ${{ steps.fc.outputs.comment-id != '' && steps.save_diff.outputs.diff == '' && env.AZURE_TOKEN != '' }} - uses: actions/github-script@v6 + uses: actions/github-script@v7 with: script: | github.rest.issues.deleteComment({ @@ -383,7 +383,7 @@ jobs: create_ui_report: name: Create UI Report - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -395,10 +395,10 @@ jobs: run: > ${{ env.RUN }} "PYTHONWARNINGS=ignore && source selfdrive/test/setup_xvfb.sh && - export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' && + export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' && python selfdrive/ui/tests/test_ui/run.py" - name: Upload Test Report - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v4 with: name: report - path: selfdrive/ui/tests/test_ui/report \ No newline at end of file + path: selfdrive/ui/tests/test_ui/report diff --git a/.github/workflows/setup-pre-commit/action.yaml b/.github/workflows/setup-pre-commit/action.yaml index 1b3e16e73f..f07a106861 100644 --- a/.github/workflows/setup-pre-commit/action.yaml +++ b/.github/workflows/setup-pre-commit/action.yaml @@ -4,7 +4,7 @@ runs: using: "composite" steps: - uses: ./.github/workflows/auto-cache - with: + with: path: .ci_cache/pre-commit key: pre-commit-${{ hashFiles('**/.pre-commit-config.yaml') }} restore-keys: | diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml index 2d60d2f0e9..b33945cae2 100644 --- a/.github/workflows/stale.yaml +++ b/.github/workflows/stale.yaml @@ -12,15 +12,16 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: exempt-milestones: true # pull request config stale-pr-message: 'This PR has had no activity for ${{ env.DAYS_BEFORE_PR_STALE }} days. It will be automatically closed in ${{ env.DAYS_BEFORE_PR_CLOSE }} days if there is no activity.' close-pr-message: 'This PR has been automatically closed due to inactivity. Feel free to re-open once activity resumes.' + stale-pr-label: stale delete-branch: ${{ github.event.pull_request.head.repo.full_name == 'commaai/openpilot' }} # only delete branches on the main repo - exempt-pr-labels: "ignore stale,needs testing,car port" # if wip or it needs testing from the community, don't mark as stale + exempt-pr-labels: "ignore stale,needs testing,car port,car" # if wip or it needs testing from the community, don't mark as stale days-before-pr-stale: ${{ env.DAYS_BEFORE_PR_STALE }} days-before-pr-close: ${{ env.DAYS_BEFORE_PR_CLOSE }} diff --git a/.github/workflows/tools_tests.yaml b/.github/workflows/tools_tests.yaml index d15ab8cd60..ccd3368cb0 100644 --- a/.github/workflows/tools_tests.yaml +++ b/.github/workflows/tools_tests.yaml @@ -22,7 +22,7 @@ env: jobs: plotjuggler: name: plotjuggler - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest timeout-minutes: 45 steps: - uses: actions/checkout@v4 @@ -31,15 +31,15 @@ jobs: - uses: ./.github/workflows/setup-with-retry - name: Build openpilot timeout-minutes: 5 - run: ${{ env.RUN }} "scons -j$(nproc) cereal/ common/ --minimal" + run: ${{ env.RUN }} "scons -j$(nproc) cereal/ common/ opendbc/ --minimal" - name: Test PlotJuggler timeout-minutes: 2 run: | ${{ env.RUN }} "pytest tools/plotjuggler/" - simulator: - name: simulator - runs-on: ubuntu-20.04 + simulator_build: + name: simulator docker build + runs-on: ubuntu-latest if: github.repository == 'commaai/openpilot' timeout-minutes: 45 steps: @@ -56,6 +56,28 @@ jobs: run: | selfdrive/test/docker_build.sh sim + simulator_driving: + name: simulator driving + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - uses: actions/checkout@v4 + with: + submodules: true + - run: git lfs pull + - uses: ./.github/workflows/setup-with-retry + - name: Build base docker image + run: eval "$BUILD" + - name: Build openpilot + run: | + ${{ env.RUN }} "scons -j$(nproc)" + - name: Run bridge test + run: | + ${{ env.RUN }} "export MAPBOX_TOKEN='pk.eyJ1Ijoiam5ld2IiLCJhIjoiY2xxNW8zZXprMGw1ZzJwbzZneHd2NHljbSJ9.gV7VPRfbXFetD-1OVF0XZg' && \ + source selfdrive/test/setup_xvfb.sh && \ + source selfdrive/test/setup_vsound.sh && \ + CI=1 tools/sim/tests/test_metadrive_bridge.py" + devcontainer: name: devcontainer runs-on: ubuntu-latest @@ -85,8 +107,8 @@ jobs: notebooks: name: notebooks - runs-on: ubuntu-20.04 - if: github.repository == 'commaai/openpilot' + runs-on: ubuntu-latest + if: false && github.repository == 'commaai/openpilot' timeout-minutes: 45 steps: - uses: actions/checkout@v4 @@ -99,4 +121,4 @@ jobs: - name: Test notebooks timeout-minutes: 3 run: | - ${{ env.RUN }} "pip install nbmake && pytest --nbmake tools/car_porting/examples/" \ No newline at end of file + ${{ env.RUN }} "pip install nbmake && pytest --nbmake tools/car_porting/examples/" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6db68e55bc..e9c7d93d88 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,7 @@ repos: - id: check-hooks-apply - id: check-useless-excludes - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-ast exclude: '^(third_party)/' @@ -33,7 +33,7 @@ repos: - -L bu,ro,te,ue,alo,hda,ois,nam,nams,ned,som,parm,setts,inout,warmup,bumb,nd,sie,preints - --builtins clear,rare,informal,usage,code,names,en-GB_to_en-US - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.2.2 + rev: v0.4.3 hooks: - id: ruff exclude: '^(third_party/)|(cereal/)|(panda/)|(rednose/)|(rednose_repo/)|(tinygrad/)|(tinygrad_repo/)|(teleoprtc/)|(teleoprtc_repo/)' @@ -75,7 +75,7 @@ repos: # relevant rules are whitelisted, see all options with: cpplint --filter= - --filter=-build,-legal,-readability,-runtime,-whitespace,+build/include_subdir,+build/forward_decl,+build/include_what_you_use,+build/deprecated,+whitespace/comma,+whitespace/line_length,+whitespace/empty_if_body,+whitespace/empty_loop_body,+whitespace/empty_conditional_body,+whitespace/forcolon,+whitespace/parens,+whitespace/semicolon,+whitespace/tab,+readability/braces - repo: https://github.com/MarcoGorelli/cython-lint - rev: v0.16.0 + rev: v0.16.2 hooks: - id: cython-lint exclude: '^(third_party/)|(cereal/)|(body/)|(rednose/)|(rednose_repo/)|(opendbc/)|(panda/)|(generated/)' @@ -98,6 +98,6 @@ repos: args: - --lock - repo: https://github.com/python-jsonschema/check-jsonschema - rev: 0.28.0 + rev: 0.28.2 hooks: - id: check-github-workflows diff --git a/.vscode/settings.json b/.vscode/settings.json index daf74ca777..f0731c362d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -12,5 +12,16 @@ "**/.git": true, "**/.venv": true, "**/__pycache__": true - } -} \ No newline at end of file + }, + "python.analysis.exclude": [ + "**/.git", + "**/.venv", + "**/__pycache__", + // exclude directories that should be using the symlinked version + "common/**", + "selfdrive/**", + "system/**", + "third_party/**", + "tools/**", + ] +} diff --git a/CHANGELOGS.md b/CHANGELOGS.md index 30881e67b2..5c0fc08bb2 100644 --- a/CHANGELOGS.md +++ b/CHANGELOGS.md @@ -1,10 +1,13 @@ -sunnypilot - 0.9.7.0 (2024-xx-xx) +sunnypilot - 0.9.7.0 (2024-05-xx) ======================== * New driving model -* Support for many hybrid Ford models +* Adjust driving personality with the follow distance button +* Support for hybrid variants of supported Ford models +* Added toggle to enable driver monitoring even when openpilot is not engaged +* Fingerprinting without the OBD-II port on all cars ************************ * UPDATED: Synced with commaai's openpilot - * master commit 56e343b (February 27, 2024) + * master commit 2e6b2ef (May 9, 2024) * NEW❗: sunnylink (Alpha early access) * NEW❗: Config Backup * Remotely back up and restore sunnypilot settings easily @@ -16,11 +19,28 @@ sunnypilot - 0.9.7.0 (2024-xx-xx) * GitHub account pairing from device settings scanning QR code * Pairing your account will allow you to access features via our API (still WIP but accessible if you dig a little on our code 😉) * Allow inheritance of your sponsorship status, allowing you to get extra features and early access whenever applicable +* NEW❗: iOS Siri Shortcuts Navigation support thanks to twilsonco and mike86437! + * iOS and macOS Shortcuts to quickly set navigation destinations from your iOS device + * comma Prime support + * Personal Mapbox/Amap/Google Maps token support + * Instructions on how to set up your iOS Siri Shortcuts: https://routinehub.co/shortcut/17677/ * RE-ENABLED: Map-based Turn Speed Control (M-TSC) for supported platforms * openpilot Longitudianl Control available cars * Custom Stock Longitudinal Control available cars +* UPDATED: Driving Model Selector v4 + * NEW❗: Driving Model additions + * North Dakota (April 29, 2024) - NDv2 + * WD40 (April 09, 2024) - WD40 + * Duck Amigo (March 18, 2024) - DA + * Recertified Herbalist (March 01, 2024) - CHLR + * Legacy Driving Models with Navigate on openpilot (NoO) support + * Includes Duck Amigo and all preceding models * UPDATED: Reset Mapbox Access Token -> Reset Access Tokens for Map Services * Reset self-service access tokens for Mapbox, Amap, and Google Maps +* UPDATED: Upstream native support for Gap Adjust Cruise +* UPDATED: Neural Network Lateral Control (NNLC) + * Due to upstream changes with platform simplifications, most platforms will match and fallback to combined platform model + * This will be updated when the new mapping of platforms are restructured (thanks @twilsconso 😉) * UI Updates * Display Metrics Below Chevron * NEW❗: Metrics is now being displayed below the chevron instead of above diff --git a/Jenkinsfile b/Jenkinsfile index d716510bfe..9d12b77746 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -40,6 +40,7 @@ if [ -f /TICI ]; then rm -rf /tmp/tmp* rm -rf ~/.commacache rm -rf /dev/shm/* + rm -rf /dev/tmp/tmp* if ! systemctl is-active --quiet systemd-resolved; then echo "restarting resolved" @@ -194,7 +195,7 @@ node { ["test pandad", "pytest selfdrive/boardd/tests/test_pandad.py"], ["test power draw", "pytest -s system/hardware/tici/tests/test_power_draw.py"], ["test encoder", "LD_LIBRARY_PATH=/usr/local/lib pytest system/loggerd/tests/test_encoder.py"], - ["test pigeond", "pytest system/sensord/tests/test_pigeond.py"], + ["test pigeond", "pytest system/ubloxd/tests/test_pigeond.py"], ["test manager", "pytest selfdrive/manager/test/test_manager.py"], ]) }, @@ -249,4 +250,4 @@ node { currentBuild.result = 'FAILED' throw e } -} \ No newline at end of file +} diff --git a/README.md b/README.md index ca6221995b..c78052ad6b 100644 --- a/README.md +++ b/README.md @@ -98,7 +98,7 @@ Please refer to [Recommended Branches](#-recommended-branches) to find your pref * sunnypilot not installed or you installed a version before 0.8.17? 1. [Factory reset/uninstall](https://github.com/commaai/openpilot/wiki/FAQ#how-can-i-reset-the-device) the previous software if you have another software/fork installed. 2. After factory reset/uninstall and upon reboot, select `Custom Software` when given the option. - 3. Input the installation URL per [Recommended Branches](#-recommended-branches). Example: ```bit.ly/sp-release-c3``` [^4] (note: `https://` is not requirement on the comma three) + 3. Input the installation URL per [Recommended Branches](#-recommended-branches). Example: ```release-c3.sunnypilot.ai``` [^4] (note: `https://` is not requirement on the comma three) 4. Complete the rest of the installation following the onscreen instructions. * sunnypilot already installed and you installed a version after 0.8.17? @@ -107,6 +107,12 @@ Please refer to [Recommended Branches](#-recommended-branches) to find your pref 3. At the `Target Branch` option, press `SELECT` to open the Target Branch selector. 4. Scroll to select the desired branch per [Recommended Branches](#-recommended-branches). Example: `release-c3` +| Branch | Installation URL | +|:------------:|:--------------------------------:| +| `release-c3` | https://release-c3.sunnypilot.ai | +| `staging-c3` | https://staging-c3.sunnypilot.ai | +| `dev-c3` | https://dev-c3.sunnypilot.ai | + Requires further assistance with software installation? Join the [sunnypilot Discord server](https://discord.sunnypilot.com) and message us in the `#installation-help` channel. comma two diff --git a/RELEASES.md b/RELEASES.md index d0fd530db1..da22a87a47 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -1,7 +1,10 @@ -Version 0.9.7 (2024-XX-XX) +Version 0.9.7 (2024-05-XX) ======================== * New driving model -* Support for many hybrid Ford models +* Adjust driving personality with the follow distance button +* Support for hybrid variants of supported Ford models +* Added toggle to enable driver monitoring even when openpilot is not engaged +* Fingerprinting without the OBD-II port on all cars Version 0.9.6 (2024-02-27) ======================== @@ -11,6 +14,9 @@ Version 0.9.6 (2024-02-27) * Directly outputs curvature for lateral control * New driver monitoring model * Trained on larger dataset +* Model path UI + * Shows where driving model wants to be + * Shows what model is seeing more clearly, but more jittery * AGNOS 9 * comma body streaming and controls over WebRTC * Improved fuzzy fingerprinting for many makes and models diff --git a/SConstruct b/SConstruct index 9c8c0f8be4..da0bf9bf4b 100644 --- a/SConstruct +++ b/SConstruct @@ -193,6 +193,7 @@ env = Environment( "-Wno-c99-designator", "-Wno-reorder-init-list", "-Wno-error=unused-but-set-variable", + "-Wno-vla-cxx-extension", ] + cflags + ccflags, CPPPATH=cpppath + [ @@ -377,25 +378,22 @@ SConscript([ ]) if arch != "Darwin": SConscript([ - 'system/camerad/SConscript', 'system/sensord/SConscript', 'system/logcatd/SConscript', ]) +if arch == "larch64": + SConscript(['system/camerad/SConscript']) + # Build openpilot SConscript(['third_party/SConscript']) -SConscript(['selfdrive/boardd/SConscript']) -SConscript(['selfdrive/controls/lib/lateral_mpc_lib/SConscript']) -SConscript(['selfdrive/controls/lib/longitudinal_mpc_lib/SConscript']) -SConscript(['selfdrive/locationd/SConscript']) -SConscript(['selfdrive/navd/SConscript']) -SConscript(['selfdrive/modeld/SConscript']) -SConscript(['selfdrive/ui/SConscript']) +SConscript(['selfdrive/SConscript']) -if arch in ['x86_64', 'aarch64', 'Darwin'] and Dir('#tools/cabana/').exists() and GetOption('extras'): +if Dir('#tools/cabana/').exists() and GetOption('extras'): SConscript(['tools/replay/SConscript']) - SConscript(['tools/cabana/SConscript']) + if arch != "larch64": + SConscript(['tools/cabana/SConscript']) external_sconscript = GetOption('external_sconscript') if external_sconscript: diff --git a/body b/body index 61ace31efa..0e74db67ae 160000 --- a/body +++ b/body @@ -1 +1 @@ -Subproject commit 61ace31efad27ae0d6d86888842f82bc92545e72 +Subproject commit 0e74db67ae6aaa7c30054bd4335dcafe69a5aa72 diff --git a/cereal b/cereal index d4c43a0865..5ce28549ba 160000 --- a/cereal +++ b/cereal @@ -1 +1 @@ -Subproject commit d4c43a0865fe2d9c7c765f62e31233c9a7d33ebc +Subproject commit 5ce28549ba09cdf199f5a0edaf7dc8e9b8a53344 diff --git a/common/git.py b/common/git.py new file mode 100644 index 0000000000..bfb18ce25d --- /dev/null +++ b/common/git.py @@ -0,0 +1,42 @@ +import subprocess +from openpilot.common.utils import cache +from openpilot.common.run import run_cmd, run_cmd_default + + +@cache +def get_commit(cwd: str = None, branch: str = "HEAD") -> str: + return run_cmd_default(["git", "rev-parse", branch], cwd=cwd) + + +@cache +def get_commit_date(cwd: str = None, commit: str = "HEAD") -> str: + return run_cmd_default(["git", "show", "--no-patch", "--format='%ct %ci'", commit], cwd=cwd) + + +@cache +def get_short_branch(cwd: str = None) -> str: + return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=cwd) + + +@cache +def get_branch(cwd: str = None) -> str: + return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"], cwd=cwd) + + +@cache +def get_origin(cwd: str = None) -> str: + try: + local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"], cwd=cwd) + tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"], cwd=cwd) + return run_cmd(["git", "config", "remote." + tracking_remote + ".url"], cwd=cwd) + except subprocess.CalledProcessError: # Not on a branch, fallback + return run_cmd_default(["git", "config", "--get", "remote.origin.url"], cwd=cwd) + + +@cache +def get_normalized_origin(cwd: str = None) -> str: + return get_origin(cwd) \ + .replace("git@", "", 1) \ + .replace(".git", "", 1) \ + .replace("https://", "", 1) \ + .replace(":", "/", 1) diff --git a/common/params.cc b/common/params.cc index 9f9a053041..76b9a1fbb1 100644 --- a/common/params.cc +++ b/common/params.cc @@ -89,6 +89,7 @@ private: std::unordered_map keys = { {"AccessToken", CLEAR_ON_MANAGER_START | DONT_LOG}, + {"AlwaysOnDM", PERSISTENT}, {"ApiCache_Device", PERSISTENT}, {"ApiCache_NavDestinations", PERSISTENT}, {"AssistNowToken", PERSISTENT}, @@ -172,7 +173,6 @@ std::unordered_map keys = { {"Offroad_CarUnrecognized", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, {"Offroad_ConnectivityNeeded", CLEAR_ON_MANAGER_START}, {"Offroad_ConnectivityNeededPrompt", CLEAR_ON_MANAGER_START}, - {"Offroad_InvalidTime", CLEAR_ON_MANAGER_START}, {"Offroad_IsTakingSnapshot", CLEAR_ON_MANAGER_START}, {"Offroad_NeosUpdate", CLEAR_ON_MANAGER_START}, {"Offroad_NoFirmware", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, @@ -190,6 +190,7 @@ std::unordered_map keys = { {"RecordFront", PERSISTENT | BACKUP}, {"RecordFrontLock", PERSISTENT}, // for the internal fleet {"ReplayControlsState", CLEAR_ON_MANAGER_START | CLEAR_ON_ONROAD_TRANSITION}, + {"RouteCount", PERSISTENT}, {"SnoozeUpdate", CLEAR_ON_MANAGER_START | CLEAR_ON_OFFROAD_TRANSITION}, {"SshEnabled", PERSISTENT | BACKUP}, {"TermsVersion", PERSISTENT}, @@ -208,7 +209,6 @@ std::unordered_map keys = { {"UpdaterTargetBranch", CLEAR_ON_MANAGER_START}, {"UpdaterLastFetchTime", PERSISTENT}, {"Version", PERSISTENT}, - {"VisionRadarToggle", PERSISTENT}, {"AccMadsCombo", PERSISTENT | BACKUP}, {"AmapKey1", PERSISTENT | BACKUP}, @@ -407,7 +407,9 @@ int Params::put(const char* key, const char* value, size_t value_size) { } while (false); close(tmp_fd); - ::unlink(tmp_path.c_str()); + if (result != 0) { + ::unlink(tmp_path.c_str()); + } return result; } diff --git a/common/prefix.py b/common/prefix.py index 4059ac09e2..3292acae86 100644 --- a/common/prefix.py +++ b/common/prefix.py @@ -4,6 +4,7 @@ import uuid from openpilot.common.params import Params +from openpilot.system.hardware import PC from openpilot.system.hardware.hw import Paths from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT @@ -45,7 +46,8 @@ class OpenpilotPrefix: shutil.rmtree(os.path.realpath(symlink_path), ignore_errors=True) os.remove(symlink_path) shutil.rmtree(self.msgq_path, ignore_errors=True) - shutil.rmtree(Paths.log_root(), ignore_errors=True) + if PC: + shutil.rmtree(Paths.log_root(), ignore_errors=True) if not os.environ.get("COMMA_CACHE", False): shutil.rmtree(Paths.download_cache_root(), ignore_errors=True) shutil.rmtree(Paths.comma_home(), ignore_errors=True) diff --git a/common/run.py b/common/run.py new file mode 100644 index 0000000000..06deb6388d --- /dev/null +++ b/common/run.py @@ -0,0 +1,13 @@ +import subprocess + + +def run_cmd(cmd: list[str], cwd=None, env=None) -> str: + return subprocess.check_output(cmd, encoding='utf8', cwd=cwd, env=env).strip() + + +def run_cmd_default(cmd: list[str], default: str = "", cwd=None, env=None) -> str: + try: + return run_cmd(cmd, cwd=cwd, env=env) + except subprocess.CalledProcessError: + return default + diff --git a/common/time.py b/common/time.py index f2e49eb546..5379faf22a 100644 --- a/common/time.py +++ b/common/time.py @@ -1,6 +1,15 @@ import datetime +from pathlib import Path -MIN_DATE = datetime.datetime(year=2024, month=1, day=28) +_MIN_DATE = datetime.datetime(year=2024, month=3, day=30) + +def min_date(): + # on systemd systems, the default time is the systemd build time + systemd_path = Path("/lib/systemd/systemd") + if systemd_path.exists(): + d = datetime.datetime.fromtimestamp(systemd_path.stat().st_mtime) + return d + datetime.timedelta(days=1) + return _MIN_DATE def system_time_valid(): - return datetime.datetime.now() > MIN_DATE + return datetime.datetime.now() > min_date() diff --git a/common/transformations/camera.py b/common/transformations/camera.py index c643cb5702..dc3ca5f388 100644 --- a/common/transformations/camera.py +++ b/common/transformations/camera.py @@ -1,55 +1,74 @@ +import itertools import numpy as np +from dataclasses import dataclass import openpilot.common.transformations.orientation as orient ## -- hardcoded hardware params -- -eon_f_focal_length = 910.0 -eon_d_focal_length = 650.0 -tici_f_focal_length = 2648.0 -tici_e_focal_length = tici_d_focal_length = 567.0 # probably wrong? magnification is not consistent across frame +@dataclass(frozen=True) +class CameraConfig: + width: int + height: int + focal_length: float -eon_f_frame_size = (1164, 874) -eon_d_frame_size = (816, 612) -tici_f_frame_size = tici_e_frame_size = tici_d_frame_size = (1928, 1208) + @property + def size(self): + return (self.width, self.height) -# aka 'K' aka camera_frame_from_view_frame -eon_fcam_intrinsics = np.array([ - [eon_f_focal_length, 0.0, float(eon_f_frame_size[0])/2], - [0.0, eon_f_focal_length, float(eon_f_frame_size[1])/2], - [0.0, 0.0, 1.0]]) -eon_intrinsics = eon_fcam_intrinsics # xx + @property + def intrinsics(self): + # aka 'K' aka camera_frame_from_view_frame + return np.array([ + [self.focal_length, 0.0, float(self.width)/2], + [0.0, self.focal_length, float(self.height)/2], + [0.0, 0.0, 1.0] + ]) -eon_dcam_intrinsics = np.array([ - [eon_d_focal_length, 0.0, float(eon_d_frame_size[0])/2], - [0.0, eon_d_focal_length, float(eon_d_frame_size[1])/2], - [0.0, 0.0, 1.0]]) + @property + def intrinsics_inv(self): + # aka 'K_inv' aka view_frame_from_camera_frame + return np.linalg.inv(self.intrinsics) -tici_fcam_intrinsics = np.array([ - [tici_f_focal_length, 0.0, float(tici_f_frame_size[0])/2], - [0.0, tici_f_focal_length, float(tici_f_frame_size[1])/2], - [0.0, 0.0, 1.0]]) +@dataclass(frozen=True) +class _NoneCameraConfig(CameraConfig): + width: int = 0 + height: int = 0 + focal_length: float = 0 -tici_dcam_intrinsics = np.array([ - [tici_d_focal_length, 0.0, float(tici_d_frame_size[0])/2], - [0.0, tici_d_focal_length, float(tici_d_frame_size[1])/2], - [0.0, 0.0, 1.0]]) +@dataclass(frozen=True) +class DeviceCameraConfig: + fcam: CameraConfig + dcam: CameraConfig + ecam: CameraConfig -tici_ecam_intrinsics = tici_dcam_intrinsics + def all_cams(self): + for cam in ['fcam', 'dcam', 'ecam']: + if not isinstance(getattr(self, cam), _NoneCameraConfig): + yield cam, getattr(self, cam) -# aka 'K_inv' aka view_frame_from_camera_frame -eon_fcam_intrinsics_inv = np.linalg.inv(eon_fcam_intrinsics) -eon_intrinsics_inv = eon_fcam_intrinsics_inv # xx +_ar_ox_fisheye = CameraConfig(1928, 1208, 567.0) # focal length probably wrong? magnification is not consistent across frame +_os_fisheye = CameraConfig(2688, 1520, 567.0 / 2 * 3) +_ar_ox_config = DeviceCameraConfig(CameraConfig(1928, 1208, 2648.0), _ar_ox_fisheye, _ar_ox_fisheye) +_os_config = DeviceCameraConfig(CameraConfig(2688, 1520, 2648.0 * 2 / 3), _os_fisheye, _os_fisheye) +_neo_config = DeviceCameraConfig(CameraConfig(1164, 874, 910.0), CameraConfig(816, 612, 650.0), _NoneCameraConfig()) -tici_fcam_intrinsics_inv = np.linalg.inv(tici_fcam_intrinsics) -tici_ecam_intrinsics_inv = np.linalg.inv(tici_ecam_intrinsics) +DEVICE_CAMERAS = { + # A "device camera" is defined by a device type and sensor + # sensor type was never set on eon/neo/two + ("neo", "unknown"): _neo_config, + # unknown here is AR0231, field was added with OX03C10 support + ("tici", "unknown"): _ar_ox_config, -FULL_FRAME_SIZE = tici_f_frame_size -FOCAL = tici_f_focal_length -fcam_intrinsics = tici_fcam_intrinsics - -W, H = FULL_FRAME_SIZE[0], FULL_FRAME_SIZE[1] + # before deviceState.deviceType was set, assume tici AR config + ("unknown", "ar0231"): _ar_ox_config, + ("unknown", "ox03c10"): _ar_ox_config, + # simulator (emulates a tici) + ("pc", "unknown"): _ar_ox_config, +} +prods = itertools.product(('tici', 'tizi', 'mici'), (('ar0231', _ar_ox_config), ('ox03c10', _ar_ox_config), ('os04c10', _os_config))) +DEVICE_CAMERAS.update({(d, c[0]): c[1] for d, c in prods}) # device/mesh : x->forward, y-> right, z->down # view : x->right, y->down, z->forward @@ -93,7 +112,7 @@ def roll_from_ke(m): -(m[0, 0] - m[0, 1] * m[2, 0] / m[2, 1])) -def normalize(img_pts, intrinsics=fcam_intrinsics): +def normalize(img_pts, intrinsics): # normalizes image coordinates # accepts single pt or array of pts intrinsics_inv = np.linalg.inv(intrinsics) @@ -106,7 +125,7 @@ def normalize(img_pts, intrinsics=fcam_intrinsics): return img_pts_normalized[:, :2].reshape(input_shape) -def denormalize(img_pts, intrinsics=fcam_intrinsics, width=np.inf, height=np.inf): +def denormalize(img_pts, intrinsics, width=np.inf, height=np.inf): # denormalizes image coordinates # accepts single pt or array of pts img_pts = np.array(img_pts) @@ -123,7 +142,7 @@ def denormalize(img_pts, intrinsics=fcam_intrinsics, width=np.inf, height=np.inf return img_pts_denormalized[:, :2].reshape(input_shape) -def get_calib_from_vp(vp, intrinsics=fcam_intrinsics): +def get_calib_from_vp(vp, intrinsics): vp_norm = normalize(vp, intrinsics) yaw_calib = np.arctan(vp_norm[0]) pitch_calib = -np.arctan(vp_norm[1]*np.cos(yaw_calib)) diff --git a/common/transformations/model.py b/common/transformations/model.py index 7e40767f63..aaa12d776a 100644 --- a/common/transformations/model.py +++ b/common/transformations/model.py @@ -1,19 +1,11 @@ import numpy as np from openpilot.common.transformations.orientation import rot_from_euler -from openpilot.common.transformations.camera import ( - FULL_FRAME_SIZE, get_view_frame_from_calib_frame, view_frame_from_device_frame, - eon_fcam_intrinsics, tici_ecam_intrinsics, tici_fcam_intrinsics) +from openpilot.common.transformations.camera import get_view_frame_from_calib_frame, view_frame_from_device_frame # segnet SEGNET_SIZE = (512, 384) -def get_segnet_frame_from_camera_frame(segnet_size=SEGNET_SIZE, full_frame_size=FULL_FRAME_SIZE): - return np.array([[float(segnet_size[0]) / full_frame_size[0], 0.0], - [0.0, float(segnet_size[1]) / full_frame_size[1]]]) -segnet_frame_from_camera_frame = get_segnet_frame_from_camera_frame() # xx - - # MED model MEDMODEL_INPUT_SIZE = (512, 256) MEDMODEL_YUV_SIZE = (MEDMODEL_INPUT_SIZE[0], MEDMODEL_INPUT_SIZE[1] * 3 // 2) @@ -63,16 +55,9 @@ calib_from_medmodel = np.linalg.inv(medmodel_frame_from_calib_frame[:, :3]) calib_from_sbigmodel = np.linalg.inv(sbigmodel_frame_from_calib_frame[:, :3]) # This function is verified to give similar results to xx.uncommon.utils.transform_img -def get_warp_matrix(device_from_calib_euler: np.ndarray, wide_camera: bool = False, bigmodel_frame: bool = False, tici: bool = True) -> np.ndarray: - if tici and wide_camera: - cam_intrinsics = tici_ecam_intrinsics - elif tici: - cam_intrinsics = tici_fcam_intrinsics - else: - cam_intrinsics = eon_fcam_intrinsics - +def get_warp_matrix(device_from_calib_euler: np.ndarray, intrinsics: np.ndarray, bigmodel_frame: bool = False) -> np.ndarray: calib_from_model = calib_from_sbigmodel if bigmodel_frame else calib_from_medmodel device_from_calib = rot_from_euler(device_from_calib_euler) - camera_from_calib = cam_intrinsics @ view_frame_from_device_frame @ device_from_calib + camera_from_calib = intrinsics @ view_frame_from_device_frame @ device_from_calib warp_matrix: np.ndarray = camera_from_calib @ calib_from_model return warp_matrix diff --git a/common/util.cc b/common/util.cc index 8af9f5884c..5ffd6e4099 100644 --- a/common/util.cc +++ b/common/util.cc @@ -246,18 +246,13 @@ std::string random_string(std::string::size_type length) { return s; } -std::string dir_name(std::string const &path) { - size_t pos = path.find_last_of("/"); - if (pos == std::string::npos) return ""; - return path.substr(0, pos); -} - bool starts_with(const std::string &s1, const std::string &s2) { return strncmp(s1.c_str(), s2.c_str(), s2.size()) == 0; } -bool ends_with(const std::string &s1, const std::string &s2) { - return strcmp(s1.c_str() + (s1.size() - s2.size()), s2.c_str()) == 0; +bool ends_with(const std::string& s, const std::string& suffix) { + return s.size() >= suffix.size() && + strcmp(s.c_str() + (s.size() - suffix.size()), suffix.c_str()) == 0; } std::string check_output(const std::string& command) { @@ -276,20 +271,4 @@ std::string check_output(const std::string& command) { return result; } -struct tm get_time() { - time_t rawtime; - time(&rawtime); - - struct tm sys_time; - gmtime_r(&rawtime, &sys_time); - - return sys_time; -} - -bool time_valid(struct tm sys_time) { - int year = 1900 + sys_time.tm_year; - int month = 1 + sys_time.tm_mon; - return (year > 2023) || (year == 2023 && month >= 6); -} - } // namespace util diff --git a/common/util.h b/common/util.h index 0cbad5bd31..186873ac21 100644 --- a/common/util.h +++ b/common/util.h @@ -8,7 +8,6 @@ #include #include #include -#include #include #include #include @@ -45,10 +44,6 @@ int set_realtime_priority(int level); int set_core_affinity(std::vector cores); int set_file_descriptor_limit(uint64_t limit); -// ***** Time helpers ***** -struct tm get_time(); -bool time_valid(struct tm sys_time); - // ***** math helpers ***** // map x from [a1, a2] to [b1, b2] @@ -75,9 +70,8 @@ int getenv(const char* key, int default_val); float getenv(const char* key, float default_val); std::string hexdump(const uint8_t* in, const size_t size); -std::string dir_name(std::string const& path); bool starts_with(const std::string &s1, const std::string &s2); -bool ends_with(const std::string &s1, const std::string &s2); +bool ends_with(const std::string &s, const std::string &suffix); // ***** random helpers ***** int random_int(int min, int max); @@ -179,3 +173,10 @@ void update_max_atomic(std::atomic& max, T const& value) { T prev = max; while (prev < value && !max.compare_exchange_weak(prev, value)) {} } + +typedef struct Rect { + int x; + int y; + int w; + int h; +} Rect; diff --git a/common/utils.py b/common/utils.py new file mode 100644 index 0000000000..e37f2448c5 --- /dev/null +++ b/common/utils.py @@ -0,0 +1,23 @@ +from collections.abc import Callable +from functools import lru_cache +from typing import TypeVar + + +_RT = TypeVar("_RT") + + +class Freezable: + _frozen: bool = False + + def freeze(self): + if not self._frozen: + self._frozen = True + + def __setattr__(self, *args, **kwargs): + if self._frozen: + raise Exception("cannot modify frozen object") + super().__setattr__(*args, **kwargs) + + +def cache(user_function: Callable[..., _RT], /) -> Callable[..., _RT]: + return lru_cache(maxsize=None)(user_function) diff --git a/docs/BOUNTIES.md b/docs/BOUNTIES.md index 5ff5dd939f..7e7ee3b8d3 100644 --- a/docs/BOUNTIES.md +++ b/docs/BOUNTIES.md @@ -10,7 +10,8 @@ Get paid to improve openpilot! * open a ticket at [comma.ai/support](https://comma.ai/support/shop-order) with links to your PRs to claim * get an extra 20% if you redeem your bounty in [comma shop](https://comma.ai/shop) credit (including refunds on previous orders) -New bounties can be proposed in the [**#contributing**](https://discord.com/channels/469524606043160576/1183173332531687454) channel in Discord. +We put up each bounty with the intention that it'll get merged, but occasionally the right resolution is to close the bounty, which only becomes clear once some effort is put in. +This is still valuable work, so we'll pay out $100 for getting any bounty closed with a good explanation. ## Issue bounties @@ -20,6 +21,8 @@ We've tagged bounty-eligible issues across openpilot and the rest of our repos; * **$500** - a few days of work for an experienced openpilot developer * **$1k+** - a week or two of work (could be less for the right person) +New bounties can be proposed in the [**#contributing**](https://discord.com/channels/469524606043160576/1183173332531687454) channel in Discord. + ## Car bounties The car bounties only apply to cars that have a path to ship in openpilot release, which excludes unsupportable cars (e.g. Fords with a steering lockout) or cars that require extra hardware (Honda Accord with serial steering). diff --git a/docs/CARS.md b/docs/CARS.md index 7ad12189cb..7e5324d322 100644 --- a/docs/CARS.md +++ b/docs/CARS.md @@ -4,29 +4,24 @@ A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. -# 288 Supported Cars +# 286 Supported Cars |Make|Model|Supported Package|ACC|No ACC accel below|No ALC below|Steering Torque|Resume from stop|Hardware Needed
 |Video| |---|---|---|:---:|:---:|:---:|:---:|:---:|:---:|:---:| |Acura|ILX 2016-19|AcuraWatch Plus|openpilot|25 mph|25 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Acura|RDX 2016-18|AcuraWatch Plus|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Acura|RDX 2019-22|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|A3 2014-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|A3 Sportback e-tron 2017-18|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|Q2 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|Q3 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|RS3 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Audi|S3 2015-17|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Buick|LaCrosse 2017-19[4](#footnotes)|Driver Confidence Package 2|openpilot|18 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Cadillac|Escalade 2017[4](#footnotes)|Driver Assist Package|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Cadillac|Escalade ESV 2016[4](#footnotes)|Adaptive Cruise Control (ACC) & LKAS|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Cadillac|Escalade ESV 2019[4](#footnotes)|Adaptive Cruise Control (ACC) & LKAS|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|A3 2014-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|A3 Sportback e-tron 2017-18|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|Q2 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|Q3 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|RS3 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Audi|S3 2015-17|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Bolt EUV 2022-23|Premier or Premier Redline Trim without Super Cruise Package|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Bolt EV 2022-23|2LT Trim with Adaptive Cruise Control Package|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Equinox 2019-22|Adaptive Cruise Control (ACC)|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Silverado 1500 2020-21|Safety Package II|openpilot available[1](#footnotes)|0 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chevrolet|Trailblazer 2021-22|Adaptive Cruise Control (ACC)|openpilot available[1](#footnotes)|3 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Chevrolet|Volt 2017-18[4](#footnotes)|Adaptive Cruise Control (ACC)|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chrysler|Pacifica 2017-18|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chrysler|Pacifica 2019-20|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chrysler|Pacifica 2021-23|All|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -34,8 +29,9 @@ A supported vehicle is one that just works when you install a comma device. All |Chrysler|Pacifica Hybrid 2018|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Chrysler|Pacifica Hybrid 2019-23|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |comma|body|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|None|| +|CUPRA|Ateca 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Dodge|Durango 2020-21|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Ford|Bronco Sport 2021-22|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Ford|Bronco Sport 2021-23|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Escape 2020-22|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Escape Hybrid 2020-22|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Escape Plug-in Hybrid 2020-22|Co-Pilot360 Assist+|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -47,31 +43,31 @@ A supported vehicle is one that just works when you install a comma device. All |Ford|Kuga Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Kuga Plug-in Hybrid 2020-22|Adaptive Cruise Control with Lane Centering|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Maverick 2022|LARIAT Luxury|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Ford|Maverick 2023|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Ford|Maverick 2023-24|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ford|Maverick Hybrid 2022|LARIAT Luxury|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Ford|Maverick Hybrid 2023|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|G70 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|G70 2020|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Ford|Maverick Hybrid 2023-24|Co-Pilot360 Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G70 2018|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G70 2019-21|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G70 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2017|All|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai J connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Genesis|G80 2018-19|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|G90 2017-18|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV60 (Advanced Trim) 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV60 (Performance Trim) 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV70 (2.5T Trim) 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV70 (3.5T Trim) 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Genesis|GV80 2023[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|GMC|Acadia 2018[4](#footnotes)|Adaptive Cruise Control (ACC)|openpilot|0 mph|7 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 OBD-II connector
- 1 comma 3X
- 2 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|G90 2017-20|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV60 (Advanced Trim) 2023[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV60 (Performance Trim) 2023[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV70 (2.5T Trim) 2022-23[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV70 (3.5T Trim) 2022-23[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Genesis|GV80 2023[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai M connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |GMC|Sierra 1500 2020-21|Driver Alert Package II|openpilot available[1](#footnotes)|0 mph|6 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 GM connector
- 1 comma 3X
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Accord 2018-22|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Accord Hybrid 2018-22|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Civic 2016-18|Honda Sensing|openpilot|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Honda|Civic 2019-21|All|openpilot available[1](#footnotes)|0 mph|2 mph[5](#footnotes)|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Honda|Civic 2019-21|All|openpilot available[1](#footnotes)|0 mph|2 mph[4](#footnotes)|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Civic 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch B connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Civic Hatchback 2017-21|Honda Sensing|openpilot available[1](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Civic Hatchback 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch B connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|CR-V 2015-16|Touring Trim|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|CR-V 2017-22|Honda Sensing|openpilot available[1](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Honda|CR-V Hybrid 2017-20|Honda Sensing|openpilot available[1](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Honda|CR-V Hybrid 2017-21|Honda Sensing|openpilot available[1](#footnotes)|0 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|e 2020|All|openpilot available[1](#footnotes)|0 mph|3 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Honda Bosch A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Fit 2018-20|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Honda|Freed 2020|Honda Sensing|openpilot|25 mph|12 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Honda Nidec connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -94,10 +90,10 @@ A supported vehicle is one that just works when you install a comma device. All |Hyundai|Elantra Hybrid 2021-23|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Genesis 2015-16|Smart Cruise Control (SCC)|Stock|19 mph|37 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai J connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|i30 2017-19|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Ioniq 5 (Southeast Asia only) 2022-23[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Ioniq 5 (with HDA II) 2022-23[6](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Ioniq 5 (without HDA II) 2022-23[6](#footnotes)|Highway Driving Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Ioniq 6 (with HDA II) 2023[6](#footnotes)|Highway Driving Assist II|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Ioniq 5 (Southeast Asia only) 2022-23[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Ioniq 5 (with HDA II) 2022-23[5](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Ioniq 5 (without HDA II) 2022-23[5](#footnotes)|Highway Driving Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Ioniq 6 (with HDA II) 2023[5](#footnotes)|Highway Driving Assist II|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Ioniq Electric 2019|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Ioniq Electric 2020|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Ioniq Hybrid 2017-19|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -107,10 +103,10 @@ A supported vehicle is one that just works when you install a comma device. All |Hyundai|Kona 2020|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai B connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Kona Electric 2018-21|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai G connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Kona Electric 2022-23|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai O connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Kona Electric (with HDA II, Korea only) 2023[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai R connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Kona Electric (with HDA II, Korea only) 2023[5](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai R connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Kona Hybrid 2020|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai I connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Palisade 2020-22|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Santa Cruz 2022-23[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Santa Cruz 2022-24[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Santa Fe 2019-20|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Santa Fe 2021-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Santa Fe Hybrid 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -118,49 +114,50 @@ A supported vehicle is one that just works when you install a comma device. All |Hyundai|Sonata 2018-19|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Sonata 2020-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Sonata Hybrid 2020-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Staria 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Staria 2023[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Tucson 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Tucson 2022[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Tucson 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Tucson 2022[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Tucson 2023-24[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Tucson Diesel 2019|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Hyundai|Tucson Hybrid 2022-24[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Hyundai|Tucson Hybrid 2022-24[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Hyundai|Veloster 2019-20|Smart Cruise Control (SCC)|Stock|5 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Jeep|Grand Cherokee 2016-18|Adaptive Cruise Control (ACC)|Stock|0 mph|9 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Jeep|Grand Cherokee 2019-21|Adaptive Cruise Control (ACC)|Stock|0 mph|39 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 FCA connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Carnival 2022-24[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Carnival (China only) 2023[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Carnival 2022-24[5](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Carnival (China only) 2023[5](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Ceed 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|EV6 (Southeast Asia only) 2022-23[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|EV6 (with HDA II) 2022-23[6](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|EV6 (without HDA II) 2022-23[6](#footnotes)|Highway Driving Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|EV6 (Southeast Asia only) 2022-23[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|EV6 (with HDA II) 2022-23[5](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai P connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|EV6 (without HDA II) 2022-23[5](#footnotes)|Highway Driving Assist|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai L connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Forte 2019-21|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai G connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Forte 2023|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|K5 2021-24|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|K5 Hybrid 2020-22|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|K8 Hybrid (with HDA II) 2023[6](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|K8 Hybrid (with HDA II) 2023[5](#footnotes)|Highway Driving Assist II|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai Q connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2019|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2020|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2021|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro EV 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro EV 2023[6](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro EV 2023[5](#footnotes)|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Hybrid 2018|All|Stock|10 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Hybrid 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Hybrid 2022|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro Hybrid 2023[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Hybrid 2023[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Niro Plug-in Hybrid 2018-19|All|Stock|10 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro Plug-in Hybrid 2020|All|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro Plug-in Hybrid 2021|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Niro Plug-in Hybrid 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Plug-in Hybrid 2020|Smart Cruise Control (SCC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Plug-in Hybrid 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai D connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Niro Plug-in Hybrid 2022|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai F connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Optima 2017|Advanced Smart Cruise Control|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai B connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Optima 2019-20|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai G connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Optima Hybrid 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Seltos 2021|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Sorento 2018|Advanced Smart Cruise Control & LKAS|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Sorento 2019|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai E connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sorento 2021-23[6](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sorento Hybrid 2021-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sorento Plug-in Hybrid 2022-23[6](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sportage 2023[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Kia|Sportage Hybrid 2023[6](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sorento 2021-23[5](#footnotes)|Smart Cruise Control (SCC)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sorento Hybrid 2021-23[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sorento Plug-in Hybrid 2022-23[5](#footnotes)|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai A connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sportage 2023-24[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Kia|Sportage Hybrid 2023[5](#footnotes)|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai N connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Stinger 2018-20|Smart Cruise Control (SCC)|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai C connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Stinger 2022-23|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai K connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Kia|Telluride 2020-22|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Hyundai H connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -187,8 +184,8 @@ A supported vehicle is one that just works when you install a comma device. All |Lexus|UX Hybrid 2019-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Lincoln|Aviator 2020-23|Co-Pilot360 Plus|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Lincoln|Aviator Plug-in Hybrid 2020-23|Co-Pilot360 Plus|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Ford Q3 connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|MAN|eTGE 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|MAN|TGE 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|MAN|eTGE 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|MAN|TGE 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Mazda|CX-5 2022-24|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Mazda connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Mazda|CX-9 2021-23|All|Stock|0 mph|28 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 Mazda connector
- 1 RJ45 cable (7 ft)
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Nissan|Altima 2019-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Nissan B connector
- 1 RJ45 cable (7 ft)
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -196,26 +193,27 @@ A supported vehicle is one that just works when you install a comma device. All |Nissan|Rogue 2018-20|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Nissan A connector
- 1 RJ45 cable (7 ft)
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Nissan|X-Trail 2017|ProPILOT Assist|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 Nissan A connector
- 1 RJ45 cable (7 ft)
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Ram|1500 2019-24|Adaptive Cruise Control (ACC)|Stock|0 mph|32 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Ram connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|SEAT|Ateca 2018|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|SEAT|Leon 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Subaru|Ascent 2019-21|All[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Crosstrek 2018-19|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Crosstrek 2020-23|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Forester 2019-21|All[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Impreza 2017-19|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Impreza 2020-22|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Legacy 2020-22|All[7](#footnotes)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru B connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|Outback 2020-22|All[7](#footnotes)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru B connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|XV 2018-19|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Subaru|XV 2020-21|EyeSight Driver Assistance[7](#footnotes)|openpilot available[1,8](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| -|Škoda|Fabia 2022-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Škoda|Kamiq 2021-23[10,12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Škoda|Karoq 2019-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Škoda|Kodiaq 2017-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Škoda|Octavia 2015-19[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Škoda|Octavia RS 2016[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Škoda|Scala 2020-23[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Škoda|Superb 2015-22[12](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|SEAT|Ateca 2016-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|SEAT|Leon 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Subaru|Ascent 2019-21|All[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Crosstrek 2018-19|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Crosstrek 2020-23|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Forester 2019-21|All[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Impreza 2017-19|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Impreza 2020-22|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Legacy 2020-22|All[6](#footnotes)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru B connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|Outback 2020-22|All[6](#footnotes)|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru B connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|XV 2018-19|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-empty.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Subaru|XV 2020-21|EyeSight Driver Assistance[6](#footnotes)|openpilot available[1,7](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Subaru A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
Tools- 1 Pry Tool
- 1 Socket Wrench 8mm or 5/16" (deep)
|| +|Škoda|Fabia 2022-23[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Škoda|Kamiq 2021-23[9,11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Škoda|Karoq 2019-23[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Kodiaq 2017-23[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Octavia 2015-19[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Octavia RS 2016[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Octavia Scout 2017-19[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Škoda|Scala 2020-23[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Škoda|Superb 2015-22[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Alphard 2019-20|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Alphard Hybrid 2021|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Avalon 2016|Toyota Safety Sense P|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -228,8 +226,8 @@ A supported vehicle is one that just works when you install a comma device. All |Toyota|C-HR 2021|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|C-HR Hybrid 2017-20|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|C-HR Hybrid 2021-22|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|Camry 2018-20|All|Stock|0 mph[9](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|Camry 2021-24|All|openpilot|0 mph[9](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|Camry 2018-20|All|Stock|0 mph[8](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|Camry 2021-24|All|openpilot|0 mph[8](#footnotes)|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Camry Hybrid 2018-20|All|Stock|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Camry Hybrid 2021-24|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Corolla 2017-19|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -239,9 +237,9 @@ A supported vehicle is one that just works when you install a comma device. All |Toyota|Corolla Hatchback 2019-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Corolla Hybrid 2020-22|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Corolla Hybrid (Non-US only) 2020-23|All|openpilot|17 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|Highlander 2017-19|All|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|Highlander 2017-19|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Highlander 2020-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|Highlander Hybrid 2017-19|All|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|Highlander Hybrid 2017-19|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Highlander Hybrid 2020-23|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Mirai 2021|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Prius 2016|Toyota Safety Sense P|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| @@ -255,63 +253,62 @@ A supported vehicle is one that just works when you install a comma device. All |Toyota|RAV4 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 2023-24|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Toyota|RAV4 Hybrid 2017-18|All|openpilot available[2](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|RAV4 Hybrid 2016|Toyota Safety Sense P|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Toyota|RAV4 Hybrid 2017-18|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 Hybrid 2019-21|All|openpilot|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 Hybrid 2022|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|RAV4 Hybrid 2023-24|All|openpilot available[1](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| |Toyota|Sienna 2018-20|All|openpilot available[2](#footnotes)|19 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 RJ45 cable (7 ft)
- 1 Toyota A connector
- 1 comma 3X
- 1 comma power v2
- 1 harness box
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Arteon 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Arteon eHybrid 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Arteon R 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Atlas 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Atlas Cross Sport 2020-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|California 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Caravelle 2020|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|CC 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Crafter 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|e-Crafter 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|e-Golf 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf Alltrack 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf GTD 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf GTE 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf GTI 2015-21|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf R 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Golf SportsVan 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Grand California 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Jetta 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Jetta GLI 2021-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Passat 2015-22[11](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Passat Alltrack 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Passat GTE 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Polo 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Volkswagen|Polo GTI 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Volkswagen|T-Cross 2021|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Volkswagen|T-Roc 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[14](#footnotes)|| -|Volkswagen|Taos 2022-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Teramont 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Teramont Cross Sport 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Teramont X 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Tiguan 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Tiguan eHybrid 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| -|Volkswagen|Touran 2016-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,13](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Arteon 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Arteon eHybrid 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Arteon R 2020-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Atlas 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Atlas Cross Sport 2020-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|California 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Caravelle 2020|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|CC 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Crafter 2017-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|e-Crafter 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|e-Golf 2014-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf Alltrack 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf GTD 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf GTE 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf GTI 2015-21|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-empty.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf R 2015-19|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Golf SportsVan 2015-20|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Grand California 2019-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|31 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 angled mount (8 degrees)
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Jetta 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Jetta GLI 2021-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Passat 2015-22[10](#footnotes)|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Passat Alltrack 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Passat GTE 2015-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Polo 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Volkswagen|Polo GTI 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Volkswagen|T-Cross 2021|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
[13](#footnotes)|| +|Volkswagen|T-Roc 2018-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Taos 2022-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Teramont 2018-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Teramont Cross Sport 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Teramont X 2021-22|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Tiguan 2018-24|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Tiguan eHybrid 2021-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| +|Volkswagen|Touran 2016-23|Adaptive Cruise Control (ACC) & Lane Assist|openpilot available[1,12](#footnotes)|0 mph|0 mph|[![star](assets/icon-star-full.svg)](##)|[![star](assets/icon-star-full.svg)](##)|
Parts- 1 J533 connector
- 1 USB-C coupler
- 1 comma 3X
- 1 harness box
- 1 long OBD-C cable
- 1 mount
- 1 right angle OBD-C cable (1.5 ft)
Buy Here
|| ### Footnotes 1openpilot Longitudinal Control (Alpha) is available behind a toggle; the toggle is only available in non-release branches such as `devel` or `master-ci`.
2By default, this car will use the stock Adaptive Cruise Control (ACC) for longitudinal control. If the Driver Support Unit (DSU) is disconnected, openpilot ACC will replace stock ACC. NOTE: disconnecting the DSU disables Automatic Emergency Braking (AEB).
3Refers only to the Focus Mk4 (C519) available in Europe/China/Taiwan/Australasia, not the Focus Mk3 (C346) in North and South America/Southeast Asia.
-4Requires a community built ASCM harness. NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).
-52019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph.
-6Requires a CAN FD panda kit if not using comma 3X for this CAN FD car.
-7In the non-US market, openpilot requires the car to come equipped with EyeSight with Lane Keep Assistance.
-8Enabling longitudinal control (alpha) will disable all EyeSight functionality, including AEB, LDW, and RAB.
-9openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control.
-10Not including the China market Kamiq, which is based on the (currently) unsupported PQ34 platform.
-11Refers only to the MQB-based European B8 Passat, not the NMS Passat in the USA/China/Mideast markets.
-12Some Škoda vehicles are equipped with heated windshields, which are known to block GPS signal needed for some comma 3X functionality.
-13Only available for vehicles using a gateway (J533) harness. At this time, vehicles using a camera harness are limited to using stock ACC.
-14Model-years 2022 and beyond may have a combined CAN gateway and BCM, which is supported by openpilot in software, but doesn't yet have a harness available from the comma store.
+42019 Honda Civic 1.6L Diesel Sedan does not have ALC below 12mph.
+5Requires a CAN FD panda kit if not using comma 3X for this CAN FD car.
+6In the non-US market, openpilot requires the car to come equipped with EyeSight with Lane Keep Assistance.
+7Enabling longitudinal control (alpha) will disable all EyeSight functionality, including AEB, LDW, and RAB.
+8openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control.
+9Not including the China market Kamiq, which is based on the (currently) unsupported PQ34 platform.
+10Refers only to the MQB-based European B8 Passat, not the NMS Passat in the USA/China/Mideast markets.
+11Some Škoda vehicles are equipped with heated windshields, which are known to block GPS signal needed for some comma 3X functionality.
+12Only available for vehicles using a gateway (J533) harness. At this time, vehicles using a camera harness are limited to using stock ACC.
+13Model-years 2022 and beyond may have a combined CAN gateway and BCM, which is supported by openpilot in software, but doesn't yet have a harness available from the comma store.
## Community Maintained Cars Although they're not upstream, the community has openpilot running on other makes and models. See the 'Community Supported Models' section of each make [on our wiki](https://wiki.comma.ai/). @@ -352,7 +349,9 @@ openpilot does not yet support these Toyota models due to a new message authenti * Toyota Venza 2021+ * Toyota Sequoia 2023+ * Toyota Tundra 2022+ +* Toyota Highlander 2024+ * Toyota Corolla Cross 2022+ (only US model) +* Toyota Camry 2025+ * Lexus NX 2022+ * Toyota bZ4x 2023+ * Subaru Solterra 2023+ diff --git a/launch_env.sh b/launch_env.sh index 6859afb0d4..81578aff01 100755 --- a/launch_env.sh +++ b/launch_env.sh @@ -7,7 +7,7 @@ export OPENBLAS_NUM_THREADS=1 export VECLIB_MAXIMUM_THREADS=1 if [ -z "$AGNOS_VERSION" ]; then - export AGNOS_VERSION="9.7" + export AGNOS_VERSION="10.1" fi export STAGING_ROOT="/data/safe_staging" diff --git a/opendbc b/opendbc index ecffe0cc98..9876e5827d 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit ecffe0cc9881d7db1dc87a1569a3534816bd7db5 +Subproject commit 9876e5827d32f5c40a236e1cc7ee0598b9bea285 diff --git a/panda b/panda index 3b7e3d5885..221f016f07 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit 3b7e3d5885347acdaa92a5d16cce2e324acc13c4 +Subproject commit 221f016f073c7ba824e7f3dd427046cafe2fca62 diff --git a/poetry.lock b/poetry.lock index 588186d138..70e91f2cc2 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,88 +1,88 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.7.0 and should not be changed by hand. [[package]] name = "aiohttp" -version = "3.9.3" +version = "3.9.5" description = "Async http client/server framework (asyncio)" optional = false python-versions = ">=3.8" files = [ - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:939677b61f9d72a4fa2a042a5eee2a99a24001a67c13da113b2e30396567db54"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f5cd333fcf7590a18334c90f8c9147c837a6ec8a178e88d90a9b96ea03194cc"}, - {file = "aiohttp-3.9.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:82e6aa28dd46374f72093eda8bcd142f7771ee1eb9d1e223ff0fa7177a96b4a5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f56455b0c2c7cc3b0c584815264461d07b177f903a04481dfc33e08a89f0c26b"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bca77a198bb6e69795ef2f09a5f4c12758487f83f33d63acde5f0d4919815768"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e083c285857b78ee21a96ba1eb1b5339733c3563f72980728ca2b08b53826ca5"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ab40e6251c3873d86ea9b30a1ac6d7478c09277b32e14745d0d3c6e76e3c7e29"}, - {file = "aiohttp-3.9.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:df822ee7feaaeffb99c1a9e5e608800bd8eda6e5f18f5cfb0dc7eeb2eaa6bbec"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:acef0899fea7492145d2bbaaaec7b345c87753168589cc7faf0afec9afe9b747"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:cd73265a9e5ea618014802ab01babf1940cecb90c9762d8b9e7d2cc1e1969ec6"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a78ed8a53a1221393d9637c01870248a6f4ea5b214a59a92a36f18151739452c"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b0e029353361f1746bac2e4cc19b32f972ec03f0f943b390c4ab3371840aabf"}, - {file = "aiohttp-3.9.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7cf5c9458e1e90e3c390c2639f1017a0379a99a94fdfad3a1fd966a2874bba52"}, - {file = "aiohttp-3.9.3-cp310-cp310-win32.whl", hash = "sha256:3e59c23c52765951b69ec45ddbbc9403a8761ee6f57253250c6e1536cacc758b"}, - {file = "aiohttp-3.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:055ce4f74b82551678291473f66dc9fb9048a50d8324278751926ff0ae7715e5"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6b88f9386ff1ad91ace19d2a1c0225896e28815ee09fc6a8932fded8cda97c3d"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c46956ed82961e31557b6857a5ca153c67e5476972e5f7190015018760938da2"}, - {file = "aiohttp-3.9.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:07b837ef0d2f252f96009e9b8435ec1fef68ef8b1461933253d318748ec1acdc"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad46e6f620574b3b4801c68255492e0159d1712271cc99d8bdf35f2043ec266"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ed3e046ea7b14938112ccd53d91c1539af3e6679b222f9469981e3dac7ba1ce"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:039df344b45ae0b34ac885ab5b53940b174530d4dd8a14ed8b0e2155b9dddccb"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7943c414d3a8d9235f5f15c22ace69787c140c80b718dcd57caaade95f7cd93b"}, - {file = "aiohttp-3.9.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:84871a243359bb42c12728f04d181a389718710129b36b6aad0fc4655a7647d4"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5eafe2c065df5401ba06821b9a054d9cb2848867f3c59801b5d07a0be3a380ae"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:9d3c9b50f19704552f23b4eaea1fc082fdd82c63429a6506446cbd8737823da3"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:f033d80bc6283092613882dfe40419c6a6a1527e04fc69350e87a9df02bbc283"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2c895a656dd7e061b2fd6bb77d971cc38f2afc277229ce7dd3552de8313a483e"}, - {file = "aiohttp-3.9.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:1f5a71d25cd8106eab05f8704cd9167b6e5187bcdf8f090a66c6d88b634802b4"}, - {file = "aiohttp-3.9.3-cp311-cp311-win32.whl", hash = "sha256:50fca156d718f8ced687a373f9e140c1bb765ca16e3d6f4fe116e3df7c05b2c5"}, - {file = "aiohttp-3.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:5fe9ce6c09668063b8447f85d43b8d1c4e5d3d7e92c63173e6180b2ac5d46dd8"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:38a19bc3b686ad55804ae931012f78f7a534cce165d089a2059f658f6c91fa60"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:770d015888c2a598b377bd2f663adfd947d78c0124cfe7b959e1ef39f5b13869"}, - {file = "aiohttp-3.9.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ee43080e75fc92bf36219926c8e6de497f9b247301bbf88c5c7593d931426679"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52df73f14ed99cee84865b95a3d9e044f226320a87af208f068ecc33e0c35b96"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9b311743a78043b26ffaeeb9715dc360335e5517832f5a8e339f8a43581e4d"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b955ed993491f1a5da7f92e98d5dad3c1e14dc175f74517c4e610b1f2456fb11"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:504b6981675ace64c28bf4a05a508af5cde526e36492c98916127f5a02354d53"}, - {file = "aiohttp-3.9.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a6fe5571784af92b6bc2fda8d1925cccdf24642d49546d3144948a6a1ed58ca5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ba39e9c8627edc56544c8628cc180d88605df3892beeb2b94c9bc857774848ca"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e5e46b578c0e9db71d04c4b506a2121c0cb371dd89af17a0586ff6769d4c58c1"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:938a9653e1e0c592053f815f7028e41a3062e902095e5a7dc84617c87267ebd5"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:c3452ea726c76e92f3b9fae4b34a151981a9ec0a4847a627c43d71a15ac32aa6"}, - {file = "aiohttp-3.9.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:ff30218887e62209942f91ac1be902cc80cddb86bf00fbc6783b7a43b2bea26f"}, - {file = "aiohttp-3.9.3-cp312-cp312-win32.whl", hash = "sha256:38f307b41e0bea3294a9a2a87833191e4bcf89bb0365e83a8be3a58b31fb7f38"}, - {file = "aiohttp-3.9.3-cp312-cp312-win_amd64.whl", hash = "sha256:b791a3143681a520c0a17e26ae7465f1b6f99461a28019d1a2f425236e6eedb5"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0ed621426d961df79aa3b963ac7af0d40392956ffa9be022024cd16297b30c8c"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7f46acd6a194287b7e41e87957bfe2ad1ad88318d447caf5b090012f2c5bb528"}, - {file = "aiohttp-3.9.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feeb18a801aacb098220e2c3eea59a512362eb408d4afd0c242044c33ad6d542"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f734e38fd8666f53da904c52a23ce517f1b07722118d750405af7e4123933511"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b40670ec7e2156d8e57f70aec34a7216407848dfe6c693ef131ddf6e76feb672"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fdd215b7b7fd4a53994f238d0f46b7ba4ac4c0adb12452beee724ddd0743ae5d"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:017a21b0df49039c8f46ca0971b3a7fdc1f56741ab1240cb90ca408049766168"}, - {file = "aiohttp-3.9.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e99abf0bba688259a496f966211c49a514e65afa9b3073a1fcee08856e04425b"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:648056db9a9fa565d3fa851880f99f45e3f9a771dd3ff3bb0c048ea83fb28194"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8aacb477dc26797ee089721536a292a664846489c49d3ef9725f992449eda5a8"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:522a11c934ea660ff8953eda090dcd2154d367dec1ae3c540aff9f8a5c109ab4"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5bce0dc147ca85caa5d33debc4f4d65e8e8b5c97c7f9f660f215fa74fc49a321"}, - {file = "aiohttp-3.9.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b4af9f25b49a7be47c0972139e59ec0e8285c371049df1a63b6ca81fdd216a2"}, - {file = "aiohttp-3.9.3-cp38-cp38-win32.whl", hash = "sha256:298abd678033b8571995650ccee753d9458dfa0377be4dba91e4491da3f2be63"}, - {file = "aiohttp-3.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:69361bfdca5468c0488d7017b9b1e5ce769d40b46a9f4a2eed26b78619e9396c"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0fa43c32d1643f518491d9d3a730f85f5bbaedcbd7fbcae27435bb8b7a061b29"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:835a55b7ca49468aaaac0b217092dfdff370e6c215c9224c52f30daaa735c1c1"}, - {file = "aiohttp-3.9.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:06a9b2c8837d9a94fae16c6223acc14b4dfdff216ab9b7202e07a9a09541168f"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:abf151955990d23f84205286938796c55ff11bbfb4ccfada8c9c83ae6b3c89a3"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:59c26c95975f26e662ca78fdf543d4eeaef70e533a672b4113dd888bd2423caa"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f95511dd5d0e05fd9728bac4096319f80615aaef4acbecb35a990afebe953b0e"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:595f105710293e76b9dc09f52e0dd896bd064a79346234b521f6b968ffdd8e58"}, - {file = "aiohttp-3.9.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c7c8b816c2b5af5c8a436df44ca08258fc1a13b449393a91484225fcb7545533"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f1088fa100bf46e7b398ffd9904f4808a0612e1d966b4aa43baa535d1b6341eb"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f59dfe57bb1ec82ac0698ebfcdb7bcd0e99c255bd637ff613760d5f33e7c81b3"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:361a1026c9dd4aba0109e4040e2aecf9884f5cfe1b1b1bd3d09419c205e2e53d"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:363afe77cfcbe3a36353d8ea133e904b108feea505aa4792dad6585a8192c55a"}, - {file = "aiohttp-3.9.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e2c45c208c62e955e8256949eb225bd8b66a4c9b6865729a786f2aa79b72e9d"}, - {file = "aiohttp-3.9.3-cp39-cp39-win32.whl", hash = "sha256:f7217af2e14da0856e082e96ff637f14ae45c10a5714b63c77f26d8884cf1051"}, - {file = "aiohttp-3.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:27468897f628c627230dba07ec65dc8d0db566923c48f29e084ce382119802bc"}, - {file = "aiohttp-3.9.3.tar.gz", hash = "sha256:90842933e5d1ff760fae6caca4b2b3edba53ba8f4b71e95dacf2818a2aca06f7"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:fcde4c397f673fdec23e6b05ebf8d4751314fa7c24f93334bf1f1364c1c69ac7"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5d6b3f1fabe465e819aed2c421a6743d8debbde79b6a8600739300630a01bf2c"}, + {file = "aiohttp-3.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6ae79c1bc12c34082d92bf9422764f799aee4746fd7a392db46b7fd357d4a17a"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d3ebb9e1316ec74277d19c5f482f98cc65a73ccd5430540d6d11682cd857430"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:84dabd95154f43a2ea80deffec9cb44d2e301e38a0c9d331cc4aa0166fe28ae3"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c8a02fbeca6f63cb1f0475c799679057fc9268b77075ab7cf3f1c600e81dd46b"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c26959ca7b75ff768e2776d8055bf9582a6267e24556bb7f7bd29e677932be72"}, + {file = "aiohttp-3.9.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:714d4e5231fed4ba2762ed489b4aec07b2b9953cf4ee31e9871caac895a839c0"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:e7a6a8354f1b62e15d48e04350f13e726fa08b62c3d7b8401c0a1314f02e3558"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:c413016880e03e69d166efb5a1a95d40f83d5a3a648d16486592c49ffb76d0db"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ff84aeb864e0fac81f676be9f4685f0527b660f1efdc40dcede3c251ef1e867f"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ad7f2919d7dac062f24d6f5fe95d401597fbb015a25771f85e692d043c9d7832"}, + {file = "aiohttp-3.9.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:702e2c7c187c1a498a4e2b03155d52658fdd6fda882d3d7fbb891a5cf108bb10"}, + {file = "aiohttp-3.9.5-cp310-cp310-win32.whl", hash = "sha256:67c3119f5ddc7261d47163ed86d760ddf0e625cd6246b4ed852e82159617b5fb"}, + {file = "aiohttp-3.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:471f0ef53ccedec9995287f02caf0c068732f026455f07db3f01a46e49d76bbb"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0ae53e33ee7476dd3d1132f932eeb39bf6125083820049d06edcdca4381f342"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c088c4d70d21f8ca5c0b8b5403fe84a7bc8e024161febdd4ef04575ef35d474d"}, + {file = "aiohttp-3.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:639d0042b7670222f33b0028de6b4e2fad6451462ce7df2af8aee37dcac55424"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f26383adb94da5e7fb388d441bf09c61e5e35f455a3217bfd790c6b6bc64b2ee"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:66331d00fb28dc90aa606d9a54304af76b335ae204d1836f65797d6fe27f1ca2"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4ff550491f5492ab5ed3533e76b8567f4b37bd2995e780a1f46bca2024223233"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f22eb3a6c1080d862befa0a89c380b4dafce29dc6cd56083f630073d102eb595"}, + {file = "aiohttp-3.9.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a81b1143d42b66ffc40a441379387076243ef7b51019204fd3ec36b9f69e77d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:f64fd07515dad67f24b6ea4a66ae2876c01031de91c93075b8093f07c0a2d93d"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:93e22add827447d2e26d67c9ac0161756007f152fdc5210277d00a85f6c92323"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:55b39c8684a46e56ef8c8d24faf02de4a2b2ac60d26cee93bc595651ff545de9"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:4715a9b778f4293b9f8ae7a0a7cef9829f02ff8d6277a39d7f40565c737d3771"}, + {file = "aiohttp-3.9.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:afc52b8d969eff14e069a710057d15ab9ac17cd4b6753042c407dcea0e40bf75"}, + {file = "aiohttp-3.9.5-cp311-cp311-win32.whl", hash = "sha256:b3df71da99c98534be076196791adca8819761f0bf6e08e07fd7da25127150d6"}, + {file = "aiohttp-3.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:88e311d98cc0bf45b62fc46c66753a83445f5ab20038bcc1b8a1cc05666f428a"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c7a4b7a6cf5b6eb11e109a9755fd4fda7d57395f8c575e166d363b9fc3ec4678"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0a158704edf0abcac8ac371fbb54044f3270bdbc93e254a82b6c82be1ef08f3c"}, + {file = "aiohttp-3.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d153f652a687a8e95ad367a86a61e8d53d528b0530ef382ec5aaf533140ed00f"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82a6a97d9771cb48ae16979c3a3a9a18b600a8505b1115cfe354dfb2054468b4"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60cdbd56f4cad9f69c35eaac0fbbdf1f77b0ff9456cebd4902f3dd1cf096464c"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8676e8fd73141ded15ea586de0b7cda1542960a7b9ad89b2b06428e97125d4fa"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da00da442a0e31f1c69d26d224e1efd3a1ca5bcbf210978a2ca7426dfcae9f58"}, + {file = "aiohttp-3.9.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18f634d540dd099c262e9f887c8bbacc959847cfe5da7a0e2e1cf3f14dbf2daf"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:320e8618eda64e19d11bdb3bd04ccc0a816c17eaecb7e4945d01deee2a22f95f"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:2faa61a904b83142747fc6a6d7ad8fccff898c849123030f8e75d5d967fd4a81"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:8c64a6dc3fe5db7b1b4d2b5cb84c4f677768bdc340611eca673afb7cf416ef5a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:393c7aba2b55559ef7ab791c94b44f7482a07bf7640d17b341b79081f5e5cd1a"}, + {file = "aiohttp-3.9.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c671dc117c2c21a1ca10c116cfcd6e3e44da7fcde37bf83b2be485ab377b25da"}, + {file = "aiohttp-3.9.5-cp312-cp312-win32.whl", hash = "sha256:5a7ee16aab26e76add4afc45e8f8206c95d1d75540f1039b84a03c3b3800dd59"}, + {file = "aiohttp-3.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:5ca51eadbd67045396bc92a4345d1790b7301c14d1848feaac1d6a6c9289e888"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:694d828b5c41255e54bc2dddb51a9f5150b4eefa9886e38b52605a05d96566e8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0605cc2c0088fcaae79f01c913a38611ad09ba68ff482402d3410bf59039bfb8"}, + {file = "aiohttp-3.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4558e5012ee03d2638c681e156461d37b7a113fe13970d438d95d10173d25f78"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9dbc053ac75ccc63dc3a3cc547b98c7258ec35a215a92bd9f983e0aac95d3d5b"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4109adee842b90671f1b689901b948f347325045c15f46b39797ae1bf17019de"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a6ea1a5b409a85477fd8e5ee6ad8f0e40bf2844c270955e09360418cfd09abac"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3c2890ca8c59ee683fd09adf32321a40fe1cf164e3387799efb2acebf090c11"}, + {file = "aiohttp-3.9.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3916c8692dbd9d55c523374a3b8213e628424d19116ac4308e434dbf6d95bbdd"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:8d1964eb7617907c792ca00b341b5ec3e01ae8c280825deadbbd678447b127e1"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:d5ab8e1f6bee051a4bf6195e38a5c13e5e161cb7bad83d8854524798bd9fcd6e"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:52c27110f3862a1afbcb2af4281fc9fdc40327fa286c4625dfee247c3ba90156"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:7f64cbd44443e80094309875d4f9c71d0401e966d191c3d469cde4642bc2e031"}, + {file = "aiohttp-3.9.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8b4f72fbb66279624bfe83fd5eb6aea0022dad8eec62b71e7bf63ee1caadeafe"}, + {file = "aiohttp-3.9.5-cp38-cp38-win32.whl", hash = "sha256:6380c039ec52866c06d69b5c7aad5478b24ed11696f0e72f6b807cfb261453da"}, + {file = "aiohttp-3.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:da22dab31d7180f8c3ac7c7635f3bcd53808f374f6aa333fe0b0b9e14b01f91a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:1732102949ff6087589408d76cd6dea656b93c896b011ecafff418c9661dc4ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c6021d296318cb6f9414b48e6a439a7f5d1f665464da507e8ff640848ee2a58a"}, + {file = "aiohttp-3.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:239f975589a944eeb1bad26b8b140a59a3a320067fb3cd10b75c3092405a1372"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b7b30258348082826d274504fbc7c849959f1989d86c29bc355107accec6cfb"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cd2adf5c87ff6d8b277814a28a535b59e20bfea40a101db6b3bdca7e9926bc24"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e9a3d838441bebcf5cf442700e3963f58b5c33f015341f9ea86dcd7d503c07e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e3a1ae66e3d0c17cf65c08968a5ee3180c5a95920ec2731f53343fac9bad106"}, + {file = "aiohttp-3.9.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9c69e77370cce2d6df5d12b4e12bdcca60c47ba13d1cbbc8645dd005a20b738b"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:0cbf56238f4bbf49dab8c2dc2e6b1b68502b1e88d335bea59b3f5b9f4c001475"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:d1469f228cd9ffddd396d9948b8c9cd8022b6d1bf1e40c6f25b0fb90b4f893ed"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:45731330e754f5811c314901cebdf19dd776a44b31927fa4b4dbecab9e457b0c"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:3fcb4046d2904378e3aeea1df51f697b0467f2aac55d232c87ba162709478c46"}, + {file = "aiohttp-3.9.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8cf142aa6c1a751fcb364158fd710b8a9be874b81889c2bd13aa8893197455e2"}, + {file = "aiohttp-3.9.5-cp39-cp39-win32.whl", hash = "sha256:7b179eea70833c8dee51ec42f3b4097bd6370892fa93f510f76762105568cf09"}, + {file = "aiohttp-3.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:38d80498e2e169bc61418ff36170e0aad0cd268da8b38a17c4cf29d254a8b3f1"}, + {file = "aiohttp-3.9.5.tar.gz", hash = "sha256:edea7d15772ceeb29db4aff55e482d4bcfb6ae160ce144f2682de02f6d693551"}, ] [package.dependencies] @@ -112,34 +112,34 @@ ifaddr = ">=0.2.0" [[package]] name = "aiortc" -version = "1.7.0" +version = "1.8.0" description = "An implementation of WebRTC and ORTC" optional = false python-versions = ">=3.8" files = [ - {file = "aiortc-1.7.0-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:aba47eac61ee7fb7e89876f40e4132aa66a13ed2a730dff003342e57219f34c0"}, - {file = "aiortc-1.7.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:169abaaa0c11a1695942b3eeea9d9032ea4992c6e84958c1b31c6ba22fcf4b0e"}, - {file = "aiortc-1.7.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c5323a347d02d53989e61944eead19e550d930afbb872dd0fb51b3d065aaa833"}, - {file = "aiortc-1.7.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71c18762ebfeb239352705672e598c57f0e56e5c1b7955dba27651c801c56ea2"}, - {file = "aiortc-1.7.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:817526c2e429a1ef1226ca9cdb4ff3c5d03857eb31de0f5a00433dc4cb5569f3"}, - {file = "aiortc-1.7.0-cp38-abi3-win32.whl", hash = "sha256:a63c4da5c4a9d96ef6e3948c1f4675e02b0b908605eff4cea8b5e2fa5a34da4e"}, - {file = "aiortc-1.7.0-cp38-abi3-win_amd64.whl", hash = "sha256:e60f19f810a552690bf6e969429c624df39af2b5079ee0d95fb75d110b978e20"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:e7407d7065cbc649adf866927c007d84f94eeb3fcaa65f44eb94def8c2c5bbca"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35e1dce2697762841dd3cc5a6e23ef8a0d96207e3fd33b834b5a8686748f6143"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f77cc2d757d7c3c37c6157cce36fe13fc161c5cb5aea62759c8b0d3e6d7f45f9"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80465daa66f89e4fd22b6afd3a6ae71ffd506343cf30025dbc36eb5453f95330"}, - {file = "aiortc-1.7.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:8fcf352df6fabad32fd337dc51b629060de80d06987a8544c3c842ecc04254f8"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5b1427673e3ef8889dbd1c4f05d3d2aa7895cbfdc985532d54892ad6f96fc08c"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec2d018bd01c7532188be5842e11de252a1346156880ff3387d4f879c9f163d2"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4f21e0024c0c7b07fec87e1ffcc30b6dbd57d1b822324d9c0128731388a82f08"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd267c338bd6578b46fb8f664418f9a48ad5d1582895eb029b4c5087e105fc89"}, - {file = "aiortc-1.7.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:919b6edbc1e462cb00e313d44368798066c3ebe81525ec6fb6008e0cad572c97"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:573314501d4aa2ef5e8826abe7e675742c92d25908f5f6b48ea2f5fababdfb4b"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:791f525577033572ee937853159cff2c63121d1e30d9c93df4ef3a4c94eec5ec"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:52e945b2ba536e4e78c106e6c923f73b1838bf0c35592d729ea9b3ba6791b108"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:89a8aef4067c68ccbc97872d506b9b80d5ed39e0cc41a46d641b66c518e00240"}, - {file = "aiortc-1.7.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0b7248716706c52e3bc1f21a89a1a9ca205e95a74c0b4aa4b2863d2162fd2552"}, - {file = "aiortc-1.7.0.tar.gz", hash = "sha256:4fd900797b419a9189443b7c95a2ce4bf5aa0d9542d8d19edfabf30aa5fbc296"}, + {file = "aiortc-1.8.0-cp38-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ac0bc48c9f98a744f6696be287b0403648deb3e20bd7f8fa91eb841e1c6c4e8d"}, + {file = "aiortc-1.8.0-cp38-abi3-macosx_11_0_arm64.whl", hash = "sha256:639afa23b7d5c6f7d4f3f7af5fadb9cc67c82d56e17840b4433d2e5f73958bb5"}, + {file = "aiortc-1.8.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:173dcfa6f0e989f65eb9d38f151d8834677df0f696f9f4ad925ee9795e914eaf"}, + {file = "aiortc-1.8.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b453def215c246486747e8ba5c1307a538071d6bfbb2a4e74ebfef583771a429"}, + {file = "aiortc-1.8.0-cp38-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22efeb53dab9eb58a1a6c2dcdeb72ae526de0a2b30334fc40782341df92a657d"}, + {file = "aiortc-1.8.0-cp38-abi3-win32.whl", hash = "sha256:4ec0c5c284c3345a9d994253ced4ad909acf9e375271a7ff01db165b09890ce8"}, + {file = "aiortc-1.8.0-cp38-abi3-win_amd64.whl", hash = "sha256:76454c55a59441a76f6ab7cd1218454389520d6a3cc9b0d13d428f6a3f2ebbcc"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b0eb1342595e386befcad56cd0f91cd5cd16daa7612ffc5c8abf7e5b58e529f5"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cbbdf78ac55e05d838fe4de326ed095ca6df1cd10d571958d2ef8f23792203b"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0bb565acb623474d8052926f2ee768dbf1f87a71d271df78482319c0bec7c817"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bd50def722eb6b999ebc831eca7bea79019d2eda71dc79f4219a9ab19d65c961"}, + {file = "aiortc-1.8.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:4054f42f9ef875c67e38c0e86532e85e7ba528957052bc3d99e7c7caf273c456"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ef40f132262a670169121b888a448e1973e892f1ed8a5f5980ab05a12ee78a32"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53d9f999104a2438c0c23f2cbc991c5e15e46c0fe71476d60c222b62e4c5a70"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a1ef2e0d657aaca42106558c7c8d6e84c7088d0b70bc1fe3f93c555c242e38"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:454012e08c9ef5027c2543d4e97b6f1323ce027ec395202478a7e431b2519c5b"}, + {file = "aiortc-1.8.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09dd2fad7a52f8fc66c86cdd2dd4d281b9815afd996e41301dd2706ccd57438a"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d669b635bbd8cf76fce63d3ceb83da5b219cea8bae4b566233f68618e69446cb"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8ccc4da8821e7ecdd2179bc5eb7fd5f12e50db8fc6affdbc8baa55f3f14dd377"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29ba65bcb4c4cd1b25109d1e7ee5cf303654b757a3b7b59a28e162953e5f6c36"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1be4571e70e15b443f5b9ae651e24ac9dafb8b9abc1cdeb14e5f4bf028639944"}, + {file = "aiortc-1.8.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2e20fe3cb4a8b6db4f5e8f625ff1eb9dafc67b7c0c9a0cb9969b646570aebd34"}, + {file = "aiortc-1.8.0.tar.gz", hash = "sha256:2363c08d1d2cb3aaed563c1fb256f5dae9f3ba75b70ad5e5df6d448504122591"}, ] [package.dependencies] @@ -255,13 +255,13 @@ files = [ [[package]] name = "azure-core" -version = "1.30.0" +version = "1.30.1" description = "Microsoft Azure Core Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-core-1.30.0.tar.gz", hash = "sha256:6f3a7883ef184722f6bd997262eddaf80cfe7e5b3e0caaaf8db1695695893d35"}, - {file = "azure_core-1.30.0-py3-none-any.whl", hash = "sha256:3dae7962aad109610e68c9a7abb31d79720e1d982ddf61363038d175a5025e89"}, + {file = "azure-core-1.30.1.tar.gz", hash = "sha256:26273a254131f84269e8ea4464f3560c731f29c0c1f69ac99010845f239c1a8f"}, + {file = "azure_core-1.30.1-py3-none-any.whl", hash = "sha256:7c5ee397e48f281ec4dd773d67a0a47a0962ed6fa833036057f9ea067f688e74"}, ] [package.dependencies] @@ -274,30 +274,30 @@ aio = ["aiohttp (>=3.0)"] [[package]] name = "azure-identity" -version = "1.15.0" +version = "1.16.0" description = "Microsoft Azure Identity Library for Python" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "azure-identity-1.15.0.tar.gz", hash = "sha256:4c28fc246b7f9265610eb5261d65931183d019a23d4b0e99357facb2e6c227c8"}, - {file = "azure_identity-1.15.0-py3-none-any.whl", hash = "sha256:a14b1f01c7036f11f148f22cd8c16e05035293d714458d6b44ddf534d93eb912"}, + {file = "azure-identity-1.16.0.tar.gz", hash = "sha256:6ff1d667cdcd81da1ceab42f80a0be63ca846629f518a922f7317a7e3c844e1b"}, + {file = "azure_identity-1.16.0-py3-none-any.whl", hash = "sha256:722fdb60b8fdd55fa44dc378b8072f4b419b56a5e54c0de391f644949f3a826f"}, ] [package.dependencies] -azure-core = ">=1.23.0,<2.0.0" +azure-core = ">=1.23.0" cryptography = ">=2.5" -msal = ">=1.24.0,<2.0.0" -msal-extensions = ">=0.3.0,<2.0.0" +msal = ">=1.24.0" +msal-extensions = ">=0.3.0" [[package]] name = "azure-storage-blob" -version = "12.19.0" +version = "12.19.1" description = "Microsoft Azure Blob Storage Client Library for Python" optional = false python-versions = ">=3.7" files = [ - {file = "azure-storage-blob-12.19.0.tar.gz", hash = "sha256:26c0a4320a34a3c2a1b74528ba6812ebcb632a04cd67b1c7377232c4b01a5897"}, - {file = "azure_storage_blob-12.19.0-py3-none-any.whl", hash = "sha256:7bbc2c9c16678f7a420367fef6b172ba8730a7e66df7f4d7a55d5b3c8216615b"}, + {file = "azure-storage-blob-12.19.1.tar.gz", hash = "sha256:13e16ba42fc54ac2c7e8f976062173a5c82b9ec0594728e134aac372965a11b0"}, + {file = "azure_storage_blob-12.19.1-py3-none-any.whl", hash = "sha256:c5530dc51c21c9564e4eb706cd499befca8819b10dd89716d3fc90d747556243"}, ] [package.dependencies] @@ -311,13 +311,13 @@ aio = ["azure-core[aio] (>=1.28.0,<2.0.0)"] [[package]] name = "babel" -version = "2.14.0" +version = "2.15.0" description = "Internationalization utilities" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "Babel-2.14.0-py3-none-any.whl", hash = "sha256:efb1a25b7118e67ce3a259bed20545c29cb68be8ad2c784c83689981b7a57287"}, - {file = "Babel-2.14.0.tar.gz", hash = "sha256:6919867db036398ba21eb5c7a0f6b28ab8cbc3ae7a73a44ebe34ae74a4e7d363"}, + {file = "Babel-2.15.0-py3-none-any.whl", hash = "sha256:08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb"}, + {file = "babel-2.15.0.tar.gz", hash = "sha256:8daf0e265d05768bc6c7a314cf1321e9a123afc328cc635c18622a2f30a04413"}, ] [package.extras] @@ -340,54 +340,59 @@ Sphinx = ">=4.0,<5.0.0 || >5.0.0" [[package]] name = "casadi" -version = "3.6.3" +version = "3.6.5" description = "CasADi -- framework for algorithmic differentiation and numeric optimization" optional = false python-versions = "*" files = [ - {file = "casadi-3.6.3-cp27-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:884c07617fbbedbd047900d6f2ab86e933064efc517b973fa4139fc60543e498"}, - {file = "casadi-3.6.3-cp27-none-manylinux1_i686.whl", hash = "sha256:6f9c1fadfb1eb729f8906f01cd2b45f542846a386fb63d59eb1872451dda8de3"}, - {file = "casadi-3.6.3-cp27-none-manylinux2010_x86_64.whl", hash = "sha256:041639615a866a7244e88905c40c15ef8f84bdedf0b4f92f72e4c5b56f8fe2dc"}, - {file = "casadi-3.6.3-cp27-none-win_amd64.whl", hash = "sha256:418d345e47cbc957a49e28c7765a7f6e37f5eb73ab969e6c6cfcd204189c559c"}, - {file = "casadi-3.6.3-cp310-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:9c8d360ee80dd65c0c7625e3dccfabdd6e78629a754fb28f6fd77e3d4893dc80"}, - {file = "casadi-3.6.3-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:a74cf436d42adf69d5ea16ba13d95f40585e148e856d00553f96740704fe2a03"}, - {file = "casadi-3.6.3-cp310-none-manylinux2014_aarch64.whl", hash = "sha256:1995029b4f11d492cb5277645534bdd377340eaabe51dba3c6d9ed3a25f83f4c"}, - {file = "casadi-3.6.3-cp310-none-manylinux2014_i686.whl", hash = "sha256:501ac40357dae0d224499f1b41b7d409703137ac7c8c1bcbb26444cff9d00de3"}, - {file = "casadi-3.6.3-cp310-none-manylinux2014_x86_64.whl", hash = "sha256:d86511c92f09fa464937098bb47b5cdfd07952a0a2b236938b9370537e4532d6"}, - {file = "casadi-3.6.3-cp310-none-win_amd64.whl", hash = "sha256:4d41d07a9a4c1cd9aa55a43ffe8921721dc5937b124075e903b4c0948e5dcb9b"}, - {file = "casadi-3.6.3-cp311-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:9a2aab9799e8a597b737c8ebbde6fce9cad6177d51fef8f73310d429e4b76cb4"}, - {file = "casadi-3.6.3-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:55cff88af39c486895d5d6ec3c1862050dbd51ca879df81be1b1c86cb97e9115"}, - {file = "casadi-3.6.3-cp311-none-manylinux2014_aarch64.whl", hash = "sha256:387e4832a6b98ecf71d7c6ceb129ca7bfe120dd6705162aecee70df13bd8cb62"}, - {file = "casadi-3.6.3-cp311-none-manylinux2014_i686.whl", hash = "sha256:8357cfae956d1c4d2c8e765e93fcfad537f83e8278d2bd7c9d4f66213fdc6f4e"}, - {file = "casadi-3.6.3-cp311-none-manylinux2014_x86_64.whl", hash = "sha256:de87a486a4578f609bb93327004ee0a4598723cff5c0118828e1de31f01ea65b"}, - {file = "casadi-3.6.3-cp311-none-win_amd64.whl", hash = "sha256:d5b5d49b3749aa075678206645b106fea104485285441f771ba5ef347d4bc394"}, - {file = "casadi-3.6.3-cp35-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:9ba455b1afc4b70249810098458951bd37cb346350ed00e913ec93ddb3f15251"}, - {file = "casadi-3.6.3-cp35-none-manylinux1_i686.whl", hash = "sha256:397b3754a0560e9c4ebb3ce9220bfe5194f6ef63dca6caa6695b7e43a170895b"}, - {file = "casadi-3.6.3-cp35-none-manylinux2010_x86_64.whl", hash = "sha256:406423816ef79ba82e579bd999ba9aaa16ffcb071261d8ff32e3c404ee1e816b"}, - {file = "casadi-3.6.3-cp35-none-win_amd64.whl", hash = "sha256:62fcabf79dfc1f3b7cf06eca1408556bc74a59a9de9dde4b779eff20ac243006"}, - {file = "casadi-3.6.3-cp36-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:7972b476b20557592fd1193140e6d1067a91b98cbc96767b3ec2f68e500c5342"}, - {file = "casadi-3.6.3-cp36-none-manylinux2014_aarch64.whl", hash = "sha256:692c284d838d11052c08fc8b38357858607f701ea6495bf9e22a0f2033811325"}, - {file = "casadi-3.6.3-cp36-none-manylinux2014_i686.whl", hash = "sha256:e5bb5ae64de87568c5c3895ca649b209283e2ad61ddeaef1685c7e856e4044e0"}, - {file = "casadi-3.6.3-cp36-none-manylinux2014_x86_64.whl", hash = "sha256:6b15e0bf452f7b3dface72e7d75ef2fe8566574abec51313540a6a251243e099"}, - {file = "casadi-3.6.3-cp36-none-win_amd64.whl", hash = "sha256:b7148bc8b107b1bae4f66fe5b815edb69aca69de8ead2ee25e1b059781654550"}, - {file = "casadi-3.6.3-cp37-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:3a184a4930a046ee788923a129032372f043027df7a2e08d25fd1fe72d1da8bd"}, - {file = "casadi-3.6.3-cp37-none-manylinux2014_aarch64.whl", hash = "sha256:44ceea824512a594b286fff7646470d7ac58e363bcb40ce23a6ec0577e6af3f9"}, - {file = "casadi-3.6.3-cp37-none-manylinux2014_i686.whl", hash = "sha256:ce42fb3df4e795bbb2178c4f9929bd8d0d359890ae1225c64a0c2795374fda25"}, - {file = "casadi-3.6.3-cp37-none-manylinux2014_x86_64.whl", hash = "sha256:39a73fa7383862abae27ebe4158d23d588286b22d74505af8569f4b91acc51d7"}, - {file = "casadi-3.6.3-cp37-none-win_amd64.whl", hash = "sha256:bede02743ac570b6289e8496563aa326dd4fdecc8c3e4f817b909cf6bc1b42cc"}, - {file = "casadi-3.6.3-cp38-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:7e80e8eee3bb174f941d592dbc440f57c76c5d81bad59f3a361dbf47e6175a43"}, - {file = "casadi-3.6.3-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:c0bcd64e8bb0db6e6dcc24d1ee10ef7f2305ed2e9d2786c1dcae43e7fcd05943"}, - {file = "casadi-3.6.3-cp38-none-manylinux2014_aarch64.whl", hash = "sha256:012970fec19a88326e010b8e8ef4d569e32246dabb8cad86c485263e3961f3b1"}, - {file = "casadi-3.6.3-cp38-none-manylinux2014_i686.whl", hash = "sha256:4c718672247d12b437f5b8b2f62eae5c6541bd9125f233ae4977fbf3b2ff2de7"}, - {file = "casadi-3.6.3-cp38-none-manylinux2014_x86_64.whl", hash = "sha256:3a3685525a278f5b450b8be9ab14bb367f2d0fc97f8400021ba406f63fab7795"}, - {file = "casadi-3.6.3-cp38-none-win_amd64.whl", hash = "sha256:0e6f2ae61abb3969ccf9503e2ee576a4f5b437ba40a082e26660a5d9513c839c"}, - {file = "casadi-3.6.3-cp39-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:7093cb7182db81b6184148121d61a68876ff9be55fb73c456927a344ff5983a2"}, - {file = "casadi-3.6.3-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:0a5383b295a499312657eb5c99a0e8f22e8bb06da774663bae69b322ec34dd6d"}, - {file = "casadi-3.6.3-cp39-none-manylinux2014_aarch64.whl", hash = "sha256:6632b30197aa0d491afb7f6d30980636342eaf8a88fe7680c5eb3a37d4013c01"}, - {file = "casadi-3.6.3-cp39-none-manylinux2014_i686.whl", hash = "sha256:5990366a5266dda537d45c6df583001a1519b86db00e1725e2d17304500e511d"}, - {file = "casadi-3.6.3-cp39-none-manylinux2014_x86_64.whl", hash = "sha256:5177b2592f4c147fec882fad92b7282262979bdf8ad5a337f6531464eee19226"}, - {file = "casadi-3.6.3-cp39-none-win_amd64.whl", hash = "sha256:d5b917443733123c634dbde7e5f971ffb87994af01c0d0d528f6d10ac78d97f7"}, - {file = "casadi-3.6.3.tar.gz", hash = "sha256:2a953bd001327c9ae79018a1efa455852c8a4b4f47f5bdda5f0a07ec820d1880"}, + {file = "casadi-3.6.5-cp27-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:6039081fdd1daf4ef7fa2b52814a954d75bfc03eb0dc62414e02af5d25746e8f"}, + {file = "casadi-3.6.5-cp27-none-manylinux1_i686.whl", hash = "sha256:b5192dfabf6f5266b168b984d124dd3086c1c5a408c0743ff3a82290a8ccf3b5"}, + {file = "casadi-3.6.5-cp27-none-manylinux2010_x86_64.whl", hash = "sha256:35b2ff6098e386a4d5e8bc681744e52bcd2f2f15cfa44c09814a8979b51a6794"}, + {file = "casadi-3.6.5-cp27-none-win_amd64.whl", hash = "sha256:caf395d1e36bfb215b154e8df61583d534a07ddabb18cbe50f259b7692a41ac8"}, + {file = "casadi-3.6.5-cp310-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:314886ef44bd01f1a98579e7784a3bed6e0584e88f9465cf9596af2523efb0dd"}, + {file = "casadi-3.6.5-cp310-none-macosx_11_0_arm64.whl", hash = "sha256:c6789c8060a99b329bb584d97c1eab6a5e4f3e2d2db391e6c2001c6323774990"}, + {file = "casadi-3.6.5-cp310-none-manylinux2014_aarch64.whl", hash = "sha256:e40afb3c062817dd6ce2497cd001f00f107ee1ea41ec4d6ee9f9a5056d219e83"}, + {file = "casadi-3.6.5-cp310-none-manylinux2014_i686.whl", hash = "sha256:ee5a4ed50d2becd0bd6d203c7a60ffad27c14a3e0ae357480de11c846a8dd928"}, + {file = "casadi-3.6.5-cp310-none-manylinux2014_x86_64.whl", hash = "sha256:1ddb6e4afdd1da95d7d9d652ed973c1b7f50ef1454965a9170b657e223a2c73e"}, + {file = "casadi-3.6.5-cp310-none-win_amd64.whl", hash = "sha256:e96ca81b00b9621007d45db1254fcf232d518ebcc802f42853f57b4df977c567"}, + {file = "casadi-3.6.5-cp311-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:bebd3909db24ba711e094aacc0a2329b9903d422d73f61be851873731244b7d1"}, + {file = "casadi-3.6.5-cp311-none-macosx_11_0_arm64.whl", hash = "sha256:ccb962ea02b7d6d245d5cd40fb52c29e812040a45273c6eed32cb8fcff673dda"}, + {file = "casadi-3.6.5-cp311-none-manylinux2014_aarch64.whl", hash = "sha256:1ce199a4ea1d376edbe5399cd622a4564040c83f50c50114fe50a69a8ea81d92"}, + {file = "casadi-3.6.5-cp311-none-manylinux2014_i686.whl", hash = "sha256:d12b67d467a5b2b0a909378ef7231fbc9af0da923baa13b1d5464d8471601ac3"}, + {file = "casadi-3.6.5-cp311-none-manylinux2014_x86_64.whl", hash = "sha256:3a3fb8af868f83d4a4f26d878c49f4acc4ed7ee92e731c73e650e5893418a634"}, + {file = "casadi-3.6.5-cp311-none-win_amd64.whl", hash = "sha256:3bdd645151beda013af5fd019fb554756e7dac37541b9f120cdfba90405b2671"}, + {file = "casadi-3.6.5-cp312-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:33afd1a4da0c86b4316953fe541635a8a7dc51703282e24a870ada13a46adb53"}, + {file = "casadi-3.6.5-cp312-none-macosx_11_0_arm64.whl", hash = "sha256:0d6ee0558b4ecdd8aa4aa70fd31528b135801f1086c28a9cb78d8e8242b7aedd"}, + {file = "casadi-3.6.5-cp312-none-manylinux2014_i686.whl", hash = "sha256:be40e9897d80fb72a97e750b2143c32f63f8800cfb78f9b396d8ce7a913fca39"}, + {file = "casadi-3.6.5-cp312-none-manylinux2014_x86_64.whl", hash = "sha256:0118637823e292a9270133e02c9c6d3f3c7f75e8c91a6f6dc5275ade82dd1d9d"}, + {file = "casadi-3.6.5-cp312-none-win_amd64.whl", hash = "sha256:fe2b64d777e36cc3f101220dd1e219a0e11c3e4ee2b5e708b30fea9a27107e41"}, + {file = "casadi-3.6.5-cp35-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:a1ae36449adec534125d4af5be912b6fb9dafe74d1fee39f6c82263695e21ca5"}, + {file = "casadi-3.6.5-cp35-none-manylinux1_i686.whl", hash = "sha256:32644c47fbfb643d5cf9769c7bbc94c6bdb9a40ea9c12c54af5e2754599c3186"}, + {file = "casadi-3.6.5-cp35-none-manylinux2010_x86_64.whl", hash = "sha256:601b76b7afcb27b11563999f6ad1d9d2a2510ab3d00a6f4ce86a0bee97c9d17a"}, + {file = "casadi-3.6.5-cp35-none-win_amd64.whl", hash = "sha256:febc645bcc0aed6d7a2bdb6e58b9a89cb8f74b19bc028c41cc807d75a5d54058"}, + {file = "casadi-3.6.5-cp36-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:c98e68023c9e5905d9d6b99ae1fbbfe4b85ba9846b3685408bb498b20509f99a"}, + {file = "casadi-3.6.5-cp36-none-manylinux2014_aarch64.whl", hash = "sha256:eb311088dca5359acc05aa4d8895bf99afaa16c7c04b27bf640ce4c2361b8cde"}, + {file = "casadi-3.6.5-cp36-none-manylinux2014_i686.whl", hash = "sha256:bceb69bf9f04fded8a564eb64e298d19e945eaf4734f7145a5ee61cf9ac693e7"}, + {file = "casadi-3.6.5-cp36-none-manylinux2014_x86_64.whl", hash = "sha256:c951031e26d987986dbc334492b2e6ef108077f11c00e178ff4007e4a9bf91d8"}, + {file = "casadi-3.6.5-cp36-none-win_amd64.whl", hash = "sha256:e44af450ce944649932f9ef63ff00d2d21f642b506444418b4b20e69dba3adaf"}, + {file = "casadi-3.6.5-cp37-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:c661fe88a93b7cc7ea42802aac76a674135cd65e3e564a6f08570dd3bea05201"}, + {file = "casadi-3.6.5-cp37-none-manylinux2014_aarch64.whl", hash = "sha256:5266fc82e39352e26cb1a4e0a5c3deb32d09e6333be637bd78c273fa50f9012b"}, + {file = "casadi-3.6.5-cp37-none-manylinux2014_i686.whl", hash = "sha256:02d6fb63c460abd99a450e861034d97568a8aec621fc0a4fed22f7494989c682"}, + {file = "casadi-3.6.5-cp37-none-manylinux2014_x86_64.whl", hash = "sha256:5e8adffe2015cde370fc545b2d0fe731e96e583e4ea4c5f3044e818fea975cfc"}, + {file = "casadi-3.6.5-cp37-none-win_amd64.whl", hash = "sha256:7ea8545579872b6f5412985dafec26b906b67bd4639a6c718b7e07f802af4e42"}, + {file = "casadi-3.6.5-cp38-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:0a38bf808bf51368607c64307dd77a7363fbe8e5c910cd5c605546be60edfaff"}, + {file = "casadi-3.6.5-cp38-none-macosx_11_0_arm64.whl", hash = "sha256:f62f779481b30e5ea88392bdb8225e9545a21c4460dc3e96c2b782405b938d04"}, + {file = "casadi-3.6.5-cp38-none-manylinux2014_aarch64.whl", hash = "sha256:deb2cb2bee8aba0c2cad03c832965b51ca305d0f8eb15de8b857ba86a76f0db0"}, + {file = "casadi-3.6.5-cp38-none-manylinux2014_i686.whl", hash = "sha256:f6e10b66d6ae8216dab01532f7ad75cc9d66a95125d421b33d078a51ea0fc2a0"}, + {file = "casadi-3.6.5-cp38-none-manylinux2014_x86_64.whl", hash = "sha256:f9e82658c910e3317535d769334260e0a24d97bbce68cadb72f592e9fcbafd61"}, + {file = "casadi-3.6.5-cp38-none-win_amd64.whl", hash = "sha256:092e448e05feaed8958d684e896d909e756d199b84d3b9d0182da38cd3deebf6"}, + {file = "casadi-3.6.5-cp39-none-macosx_10_13_x86_64.macosx_10_13_intel.whl", hash = "sha256:f9c1de9a798767c00f89c27677b74059df4c9601d69270967b06d7fcff204b4d"}, + {file = "casadi-3.6.5-cp39-none-macosx_11_0_arm64.whl", hash = "sha256:83e3404de4449cb7382e49d811eec79cd370e64b97b5c94b155c604d7c523a40"}, + {file = "casadi-3.6.5-cp39-none-manylinux2014_aarch64.whl", hash = "sha256:af95de5aa5942d627d43312834791623384c2ad6ba87928bf0e3cacc8a6698e8"}, + {file = "casadi-3.6.5-cp39-none-manylinux2014_i686.whl", hash = "sha256:dbeb50726603454a1f85323cba7caf72524cd43ca0aeb1f286d07005a967ece9"}, + {file = "casadi-3.6.5-cp39-none-manylinux2014_x86_64.whl", hash = "sha256:8bbfb2eb8cb6b9e2384814d6427e48bcf6df049bf7ed05b0a58bb311a1fbf18c"}, + {file = "casadi-3.6.5-cp39-none-win_amd64.whl", hash = "sha256:0e4a4ec2e26ebeb22b0c129f2db3cf90f730cf9fbe98adb9a12720ff6ca1834a"}, + {file = "casadi-3.6.5.tar.gz", hash = "sha256:409a5f6725eadea40fddfb8ba2321139b5252edac8bc115a72f68e648631d56a"}, ] [package.dependencies] @@ -667,82 +672,82 @@ cron = ["capturer (>=2.4)"] [[package]] name = "contourpy" -version = "1.2.0" +version = "1.2.1" description = "Python library for calculating contours of 2D quadrilateral grids" optional = false python-versions = ">=3.9" files = [ - {file = "contourpy-1.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0274c1cb63625972c0c007ab14dd9ba9e199c36ae1a231ce45d725cbcbfd10a8"}, - {file = "contourpy-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ab459a1cbbf18e8698399c595a01f6dcc5c138220ca3ea9e7e6126232d102bb4"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fdd887f17c2f4572ce548461e4f96396681212d858cae7bd52ba3310bc6f00f"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d16edfc3fc09968e09ddffada434b3bf989bf4911535e04eada58469873e28e"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c203f617abc0dde5792beb586f827021069fb6d403d7f4d5c2b543d87edceb9"}, - {file = "contourpy-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b69303ceb2e4d4f146bf82fda78891ef7bcd80c41bf16bfca3d0d7eb545448aa"}, - {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:884c3f9d42d7218304bc74a8a7693d172685c84bd7ab2bab1ee567b769696df9"}, - {file = "contourpy-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4a1b1208102be6e851f20066bf0e7a96b7d48a07c9b0cfe6d0d4545c2f6cadab"}, - {file = "contourpy-1.2.0-cp310-cp310-win32.whl", hash = "sha256:34b9071c040d6fe45d9826cbbe3727d20d83f1b6110d219b83eb0e2a01d79488"}, - {file = "contourpy-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:bd2f1ae63998da104f16a8b788f685e55d65760cd1929518fd94cd682bf03e41"}, - {file = "contourpy-1.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:dd10c26b4eadae44783c45ad6655220426f971c61d9b239e6f7b16d5cdaaa727"}, - {file = "contourpy-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c6b28956b7b232ae801406e529ad7b350d3f09a4fde958dfdf3c0520cdde0dd"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ebeac59e9e1eb4b84940d076d9f9a6cec0064e241818bcb6e32124cc5c3e377a"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:139d8d2e1c1dd52d78682f505e980f592ba53c9f73bd6be102233e358b401063"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1e9dc350fb4c58adc64df3e0703ab076f60aac06e67d48b3848c23647ae4310e"}, - {file = "contourpy-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18fc2b4ed8e4a8fe849d18dce4bd3c7ea637758c6343a1f2bae1e9bd4c9f4686"}, - {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:16a7380e943a6d52472096cb7ad5264ecee36ed60888e2a3d3814991a0107286"}, - {file = "contourpy-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8d8faf05be5ec8e02a4d86f616fc2a0322ff4a4ce26c0f09d9f7fb5330a35c95"}, - {file = "contourpy-1.2.0-cp311-cp311-win32.whl", hash = "sha256:67b7f17679fa62ec82b7e3e611c43a016b887bd64fb933b3ae8638583006c6d6"}, - {file = "contourpy-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:99ad97258985328b4f207a5e777c1b44a83bfe7cf1f87b99f9c11d4ee477c4de"}, - {file = "contourpy-1.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:575bcaf957a25d1194903a10bc9f316c136c19f24e0985a2b9b5608bdf5dbfe0"}, - {file = "contourpy-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9e6c93b5b2dbcedad20a2f18ec22cae47da0d705d454308063421a3b290d9ea4"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:464b423bc2a009088f19bdf1f232299e8b6917963e2b7e1d277da5041f33a779"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:68ce4788b7d93e47f84edd3f1f95acdcd142ae60bc0e5493bfd120683d2d4316"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3d7d1f8871998cdff5d2ff6a087e5e1780139abe2838e85b0b46b7ae6cc25399"}, - {file = "contourpy-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6e739530c662a8d6d42c37c2ed52a6f0932c2d4a3e8c1f90692ad0ce1274abe0"}, - {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:247b9d16535acaa766d03037d8e8fb20866d054d3c7fbf6fd1f993f11fc60ca0"}, - {file = "contourpy-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:461e3ae84cd90b30f8d533f07d87c00379644205b1d33a5ea03381edc4b69431"}, - {file = "contourpy-1.2.0-cp312-cp312-win32.whl", hash = "sha256:1c2559d6cffc94890b0529ea7eeecc20d6fadc1539273aa27faf503eb4656d8f"}, - {file = "contourpy-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:491b1917afdd8638a05b611a56d46587d5a632cabead889a5440f7c638bc6ed9"}, - {file = "contourpy-1.2.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5fd1810973a375ca0e097dee059c407913ba35723b111df75671a1976efa04bc"}, - {file = "contourpy-1.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:999c71939aad2780f003979b25ac5b8f2df651dac7b38fb8ce6c46ba5abe6ae9"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7caf9b241464c404613512d5594a6e2ff0cc9cb5615c9475cc1d9b514218ae8"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:266270c6f6608340f6c9836a0fb9b367be61dde0c9a9a18d5ece97774105ff3e"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:dbd50d0a0539ae2e96e537553aff6d02c10ed165ef40c65b0e27e744a0f10af8"}, - {file = "contourpy-1.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11f8d2554e52f459918f7b8e6aa20ec2a3bce35ce95c1f0ef4ba36fbda306df5"}, - {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:ce96dd400486e80ac7d195b2d800b03e3e6a787e2a522bfb83755938465a819e"}, - {file = "contourpy-1.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:6d3364b999c62f539cd403f8123ae426da946e142312a514162adb2addd8d808"}, - {file = "contourpy-1.2.0-cp39-cp39-win32.whl", hash = "sha256:1c88dfb9e0c77612febebb6ac69d44a8d81e3dc60f993215425b62c1161353f4"}, - {file = "contourpy-1.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:78e6ad33cf2e2e80c5dfaaa0beec3d61face0fb650557100ee36db808bfa6843"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:be16975d94c320432657ad2402f6760990cb640c161ae6da1363051805fa8108"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b95a225d4948b26a28c08307a60ac00fb8671b14f2047fc5476613252a129776"}, - {file = "contourpy-1.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:0d7e03c0f9a4f90dc18d4e77e9ef4ec7b7bbb437f7f675be8e530d65ae6ef956"}, - {file = "contourpy-1.2.0.tar.gz", hash = "sha256:171f311cb758de7da13fc53af221ae47a5877be5a0843a9fe150818c51ed276a"}, + {file = "contourpy-1.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bd7c23df857d488f418439686d3b10ae2fbf9bc256cd045b37a8c16575ea1040"}, + {file = "contourpy-1.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5b9eb0ca724a241683c9685a484da9d35c872fd42756574a7cfbf58af26677fd"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c75507d0a55378240f781599c30e7776674dbaf883a46d1c90f37e563453480"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11959f0ce4a6f7b76ec578576a0b61a28bdc0696194b6347ba3f1c53827178b9"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:eb3315a8a236ee19b6df481fc5f997436e8ade24a9f03dfdc6bd490fea20c6da"}, + {file = "contourpy-1.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39f3ecaf76cd98e802f094e0d4fbc6dc9c45a8d0c4d185f0f6c2234e14e5f75b"}, + {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:94b34f32646ca0414237168d68a9157cb3889f06b096612afdd296003fdd32fd"}, + {file = "contourpy-1.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:457499c79fa84593f22454bbd27670227874cd2ff5d6c84e60575c8b50a69619"}, + {file = "contourpy-1.2.1-cp310-cp310-win32.whl", hash = "sha256:ac58bdee53cbeba2ecad824fa8159493f0bf3b8ea4e93feb06c9a465d6c87da8"}, + {file = "contourpy-1.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9cffe0f850e89d7c0012a1fb8730f75edd4320a0a731ed0c183904fe6ecfc3a9"}, + {file = "contourpy-1.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6022cecf8f44e36af10bd9118ca71f371078b4c168b6e0fab43d4a889985dbb5"}, + {file = "contourpy-1.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ef5adb9a3b1d0c645ff694f9bca7702ec2c70f4d734f9922ea34de02294fdf72"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6150ffa5c767bc6332df27157d95442c379b7dce3a38dff89c0f39b63275696f"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c863140fafc615c14a4bf4efd0f4425c02230eb8ef02784c9a156461e62c965"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:00e5388f71c1a0610e6fe56b5c44ab7ba14165cdd6d695429c5cd94021e390b2"}, + {file = "contourpy-1.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4492d82b3bc7fbb7e3610747b159869468079fe149ec5c4d771fa1f614a14df"}, + {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:49e70d111fee47284d9dd867c9bb9a7058a3c617274900780c43e38d90fe1205"}, + {file = "contourpy-1.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b59c0ffceff8d4d3996a45f2bb6f4c207f94684a96bf3d9728dbb77428dd8cb8"}, + {file = "contourpy-1.2.1-cp311-cp311-win32.whl", hash = "sha256:7b4182299f251060996af5249c286bae9361fa8c6a9cda5efc29fe8bfd6062ec"}, + {file = "contourpy-1.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2855c8b0b55958265e8b5888d6a615ba02883b225f2227461aa9127c578a4922"}, + {file = "contourpy-1.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:62828cada4a2b850dbef89c81f5a33741898b305db244904de418cc957ff05dc"}, + {file = "contourpy-1.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:309be79c0a354afff9ff7da4aaed7c3257e77edf6c1b448a779329431ee79d7e"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e785e0f2ef0d567099b9ff92cbfb958d71c2d5b9259981cd9bee81bd194c9a4"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1cac0a8f71a041aa587410424ad46dfa6a11f6149ceb219ce7dd48f6b02b87a7"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af3f4485884750dddd9c25cb7e3915d83c2db92488b38ccb77dd594eac84c4a0"}, + {file = "contourpy-1.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ce6889abac9a42afd07a562c2d6d4b2b7134f83f18571d859b25624a331c90b"}, + {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a1eea9aecf761c661d096d39ed9026574de8adb2ae1c5bd7b33558af884fb2ce"}, + {file = "contourpy-1.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:187fa1d4c6acc06adb0fae5544c59898ad781409e61a926ac7e84b8f276dcef4"}, + {file = "contourpy-1.2.1-cp312-cp312-win32.whl", hash = "sha256:c2528d60e398c7c4c799d56f907664673a807635b857df18f7ae64d3e6ce2d9f"}, + {file = "contourpy-1.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:1a07fc092a4088ee952ddae19a2b2a85757b923217b7eed584fdf25f53a6e7ce"}, + {file = "contourpy-1.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bb6834cbd983b19f06908b45bfc2dad6ac9479ae04abe923a275b5f48f1a186b"}, + {file = "contourpy-1.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1d59e739ab0e3520e62a26c60707cc3ab0365d2f8fecea74bfe4de72dc56388f"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd3db01f59fdcbce5b22afad19e390260d6d0222f35a1023d9adc5690a889364"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a12a813949e5066148712a0626895c26b2578874e4cc63160bb007e6df3436fe"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fe0ccca550bb8e5abc22f530ec0466136379c01321fd94f30a22231e8a48d985"}, + {file = "contourpy-1.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1d59258c3c67c865435d8fbeb35f8c59b8bef3d6f46c1f29f6123556af28445"}, + {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f32c38afb74bd98ce26de7cc74a67b40afb7b05aae7b42924ea990d51e4dac02"}, + {file = "contourpy-1.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d31a63bc6e6d87f77d71e1abbd7387ab817a66733734883d1fc0021ed9bfa083"}, + {file = "contourpy-1.2.1-cp39-cp39-win32.whl", hash = "sha256:ddcb8581510311e13421b1f544403c16e901c4e8f09083c881fab2be80ee31ba"}, + {file = "contourpy-1.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:10a37ae557aabf2509c79715cd20b62e4c7c28b8cd62dd7d99e5ed3ce28c3fd9"}, + {file = "contourpy-1.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a31f94983fecbac95e58388210427d68cd30fe8a36927980fab9c20062645609"}, + {file = "contourpy-1.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef2b055471c0eb466033760a521efb9d8a32b99ab907fc8358481a1dd29e3bd3"}, + {file = "contourpy-1.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:b33d2bc4f69caedcd0a275329eb2198f560b325605810895627be5d4b876bf7f"}, + {file = "contourpy-1.2.1.tar.gz", hash = "sha256:4d8908b3bee1c889e547867ca4cdc54e5ab6be6d3e078556814a22457f49423c"}, ] [package.dependencies] -numpy = ">=1.20,<2.0" +numpy = ">=1.20" [package.extras] bokeh = ["bokeh", "selenium"] docs = ["furo", "sphinx (>=7.2)", "sphinx-copybutton"] -mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.6.1)", "types-Pillow"] +mypy = ["contourpy[bokeh,docs]", "docutils-stubs", "mypy (==1.8.0)", "types-Pillow"] test = ["Pillow", "contourpy[test-no-images]", "matplotlib"] test-no-images = ["pytest", "pytest-cov", "pytest-xdist", "wurlitzer"] [[package]] name = "control" -version = "0.9.4" +version = "0.10.0" description = "Python Control Systems Library" optional = false -python-versions = ">=3.8" +python-versions = ">=3.10" files = [ - {file = "control-0.9.4-py3-none-any.whl", hash = "sha256:ab68980abd8d35ae5015ffa090865cbbd926deea7e66d0b9a41cfd12577e63ff"}, - {file = "control-0.9.4.tar.gz", hash = "sha256:0fa57d2216b7ac4e9339c09eab6827660318a641779335864feee940bd19c9ce"}, + {file = "control-0.10.0-py3-none-any.whl", hash = "sha256:ed1e0eb73f1e2945fc9af9d7b9121ef328fe980e7903b2a14b149d4f1855a808"}, + {file = "control-0.10.0.tar.gz", hash = "sha256:2c18b767537f45c7fd07b2e4afe8fbe5964019499b5f52f888edb5d8560bab53"}, ] [package.dependencies] -matplotlib = "*" -numpy = "*" -scipy = ">=1.3" +matplotlib = ">=3.6" +numpy = ">=1.23" +scipy = ">=1.8" [package.extras] cvxopt = ["cvxopt (>=1.2.0)"] @@ -751,63 +756,63 @@ test = ["pytest", "pytest-timeout"] [[package]] name = "coverage" -version = "7.4.3" +version = "7.5.1" description = "Code coverage measurement for Python" optional = false python-versions = ">=3.8" files = [ - {file = "coverage-7.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8580b827d4746d47294c0e0b92854c85a92c2227927433998f0d3320ae8a71b6"}, - {file = "coverage-7.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:718187eeb9849fc6cc23e0d9b092bc2348821c5e1a901c9f8975df0bc785bfd4"}, - {file = "coverage-7.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:767b35c3a246bcb55b8044fd3a43b8cd553dd1f9f2c1eeb87a302b1f8daa0524"}, - {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae7f19afe0cce50039e2c782bff379c7e347cba335429678450b8fe81c4ef96d"}, - {file = "coverage-7.4.3-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba3a8aaed13770e970b3df46980cb068d1c24af1a1968b7818b69af8c4347efb"}, - {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ee866acc0861caebb4f2ab79f0b94dbfbdbfadc19f82e6e9c93930f74e11d7a0"}, - {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:506edb1dd49e13a2d4cac6a5173317b82a23c9d6e8df63efb4f0380de0fbccbc"}, - {file = "coverage-7.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:fd6545d97c98a192c5ac995d21c894b581f1fd14cf389be90724d21808b657e2"}, - {file = "coverage-7.4.3-cp310-cp310-win32.whl", hash = "sha256:f6a09b360d67e589236a44f0c39218a8efba2593b6abdccc300a8862cffc2f94"}, - {file = "coverage-7.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:18d90523ce7553dd0b7e23cbb28865db23cddfd683a38fb224115f7826de78d0"}, - {file = "coverage-7.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:cbbe5e739d45a52f3200a771c6d2c7acf89eb2524890a4a3aa1a7fa0695d2a47"}, - {file = "coverage-7.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:489763b2d037b164846ebac0cbd368b8a4ca56385c4090807ff9fad817de4113"}, - {file = "coverage-7.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:451f433ad901b3bb00184d83fd83d135fb682d780b38af7944c9faeecb1e0bfe"}, - {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fcc66e222cf4c719fe7722a403888b1f5e1682d1679bd780e2b26c18bb648cdc"}, - {file = "coverage-7.4.3-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3ec74cfef2d985e145baae90d9b1b32f85e1741b04cd967aaf9cfa84c1334f3"}, - {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:abbbd8093c5229c72d4c2926afaee0e6e3140de69d5dcd918b2921f2f0c8baba"}, - {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:35eb581efdacf7b7422af677b92170da4ef34500467381e805944a3201df2079"}, - {file = "coverage-7.4.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8249b1c7334be8f8c3abcaaa996e1e4927b0e5a23b65f5bf6cfe3180d8ca7840"}, - {file = "coverage-7.4.3-cp311-cp311-win32.whl", hash = "sha256:cf30900aa1ba595312ae41978b95e256e419d8a823af79ce670835409fc02ad3"}, - {file = "coverage-7.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:18c7320695c949de11a351742ee001849912fd57e62a706d83dfc1581897fa2e"}, - {file = "coverage-7.4.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b51bfc348925e92a9bd9b2e48dad13431b57011fd1038f08316e6bf1df107d10"}, - {file = "coverage-7.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:d6cdecaedea1ea9e033d8adf6a0ab11107b49571bbb9737175444cea6eb72328"}, - {file = "coverage-7.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3b2eccb883368f9e972e216c7b4c7c06cabda925b5f06dde0650281cb7666a30"}, - {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c00cdc8fa4e50e1cc1f941a7f2e3e0f26cb2a1233c9696f26963ff58445bac7"}, - {file = "coverage-7.4.3-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4a8dd3dcf4cbd3165737358e4d7dfbd9d59902ad11e3b15eebb6393b0446e"}, - {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:062b0a75d9261e2f9c6d071753f7eef0fc9caf3a2c82d36d76667ba7b6470003"}, - {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:ebe7c9e67a2d15fa97b77ea6571ce5e1e1f6b0db71d1d5e96f8d2bf134303c1d"}, - {file = "coverage-7.4.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c0a120238dd71c68484f02562f6d446d736adcc6ca0993712289b102705a9a3a"}, - {file = "coverage-7.4.3-cp312-cp312-win32.whl", hash = "sha256:37389611ba54fd6d278fde86eb2c013c8e50232e38f5c68235d09d0a3f8aa352"}, - {file = "coverage-7.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:d25b937a5d9ffa857d41be042b4238dd61db888533b53bc76dc082cb5a15e914"}, - {file = "coverage-7.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28ca2098939eabab044ad68850aac8f8db6bf0b29bc7f2887d05889b17346454"}, - {file = "coverage-7.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:280459f0a03cecbe8800786cdc23067a8fc64c0bd51dc614008d9c36e1659d7e"}, - {file = "coverage-7.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c0cdedd3500e0511eac1517bf560149764b7d8e65cb800d8bf1c63ebf39edd2"}, - {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a9babb9466fe1da12417a4aed923e90124a534736de6201794a3aea9d98484e"}, - {file = "coverage-7.4.3-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dec9de46a33cf2dd87a5254af095a409ea3bf952d85ad339751e7de6d962cde6"}, - {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:16bae383a9cc5abab9bb05c10a3e5a52e0a788325dc9ba8499e821885928968c"}, - {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:2c854ce44e1ee31bda4e318af1dbcfc929026d12c5ed030095ad98197eeeaed0"}, - {file = "coverage-7.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:ce8c50520f57ec57aa21a63ea4f325c7b657386b3f02ccaedeccf9ebe27686e1"}, - {file = "coverage-7.4.3-cp38-cp38-win32.whl", hash = "sha256:708a3369dcf055c00ddeeaa2b20f0dd1ce664eeabde6623e516c5228b753654f"}, - {file = "coverage-7.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:1bf25fbca0c8d121a3e92a2a0555c7e5bc981aee5c3fdaf4bb7809f410f696b9"}, - {file = "coverage-7.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3b253094dbe1b431d3a4ac2f053b6d7ede2664ac559705a704f621742e034f1f"}, - {file = "coverage-7.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:77fbfc5720cceac9c200054b9fab50cb2a7d79660609200ab83f5db96162d20c"}, - {file = "coverage-7.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6679060424faa9c11808598504c3ab472de4531c571ab2befa32f4971835788e"}, - {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4af154d617c875b52651dd8dd17a31270c495082f3d55f6128e7629658d63765"}, - {file = "coverage-7.4.3-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8640f1fde5e1b8e3439fe482cdc2b0bb6c329f4bb161927c28d2e8879c6029ee"}, - {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:69b9f6f66c0af29642e73a520b6fed25ff9fd69a25975ebe6acb297234eda501"}, - {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:0842571634f39016a6c03e9d4aba502be652a6e4455fadb73cd3a3a49173e38f"}, - {file = "coverage-7.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a78ed23b08e8ab524551f52953a8a05d61c3a760781762aac49f8de6eede8c45"}, - {file = "coverage-7.4.3-cp39-cp39-win32.whl", hash = "sha256:c0524de3ff096e15fcbfe8f056fdb4ea0bf497d584454f344d59fce069d3e6e9"}, - {file = "coverage-7.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:0209a6369ccce576b43bb227dc8322d8ef9e323d089c6f3f26a597b09cb4d2aa"}, - {file = "coverage-7.4.3-pp38.pp39.pp310-none-any.whl", hash = "sha256:7cbde573904625509a3f37b6fecea974e363460b556a627c60dc2f47e2fffa51"}, - {file = "coverage-7.4.3.tar.gz", hash = "sha256:276f6077a5c61447a48d133ed13e759c09e62aff0dc84274a68dc18660104d52"}, + {file = "coverage-7.5.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c0884920835a033b78d1c73b6d3bbcda8161a900f38a488829a83982925f6c2e"}, + {file = "coverage-7.5.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:39afcd3d4339329c5f58de48a52f6e4e50f6578dd6099961cf22228feb25f38f"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a7b0ceee8147444347da6a66be737c9d78f3353b0681715b668b72e79203e4a"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a9ca3f2fae0088c3c71d743d85404cec8df9be818a005ea065495bedc33da35"}, + {file = "coverage-7.5.1-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5fd215c0c7d7aab005221608a3c2b46f58c0285a819565887ee0b718c052aa4e"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:4bf0655ab60d754491004a5efd7f9cccefcc1081a74c9ef2da4735d6ee4a6223"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:61c4bf1ba021817de12b813338c9be9f0ad5b1e781b9b340a6d29fc13e7c1b5e"}, + {file = "coverage-7.5.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:db66fc317a046556a96b453a58eced5024af4582a8dbdc0c23ca4dbc0d5b3146"}, + {file = "coverage-7.5.1-cp310-cp310-win32.whl", hash = "sha256:b016ea6b959d3b9556cb401c55a37547135a587db0115635a443b2ce8f1c7228"}, + {file = "coverage-7.5.1-cp310-cp310-win_amd64.whl", hash = "sha256:df4e745a81c110e7446b1cc8131bf986157770fa405fe90e15e850aaf7619bc8"}, + {file = "coverage-7.5.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:796a79f63eca8814ca3317a1ea443645c9ff0d18b188de470ed7ccd45ae79428"}, + {file = "coverage-7.5.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fc84a37bfd98db31beae3c2748811a3fa72bf2007ff7902f68746d9757f3746"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6175d1a0559986c6ee3f7fccfc4a90ecd12ba0a383dcc2da30c2b9918d67d8a3"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fc81d5878cd6274ce971e0a3a18a8803c3fe25457165314271cf78e3aae3aa2"}, + {file = "coverage-7.5.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:556cf1a7cbc8028cb60e1ff0be806be2eded2daf8129b8811c63e2b9a6c43bca"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9981706d300c18d8b220995ad22627647be11a4276721c10911e0e9fa44c83e8"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d7fed867ee50edf1a0b4a11e8e5d0895150e572af1cd6d315d557758bfa9c057"}, + {file = "coverage-7.5.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ef48e2707fb320c8f139424a596f5b69955a85b178f15af261bab871873bb987"}, + {file = "coverage-7.5.1-cp311-cp311-win32.whl", hash = "sha256:9314d5678dcc665330df5b69c1e726a0e49b27df0461c08ca12674bcc19ef136"}, + {file = "coverage-7.5.1-cp311-cp311-win_amd64.whl", hash = "sha256:5fa567e99765fe98f4e7d7394ce623e794d7cabb170f2ca2ac5a4174437e90dd"}, + {file = "coverage-7.5.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b6cf3764c030e5338e7f61f95bd21147963cf6aa16e09d2f74f1fa52013c1206"}, + {file = "coverage-7.5.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2ec92012fefebee89a6b9c79bc39051a6cb3891d562b9270ab10ecfdadbc0c34"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16db7f26000a07efcf6aea00316f6ac57e7d9a96501e990a36f40c965ec7a95d"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:beccf7b8a10b09c4ae543582c1319c6df47d78fd732f854ac68d518ee1fb97fa"}, + {file = "coverage-7.5.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8748731ad392d736cc9ccac03c9845b13bb07d020a33423fa5b3a36521ac6e4e"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:7352b9161b33fd0b643ccd1f21f3a3908daaddf414f1c6cb9d3a2fd618bf2572"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7a588d39e0925f6a2bff87154752481273cdb1736270642aeb3635cb9b4cad07"}, + {file = "coverage-7.5.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:68f962d9b72ce69ea8621f57551b2fa9c70509af757ee3b8105d4f51b92b41a7"}, + {file = "coverage-7.5.1-cp312-cp312-win32.whl", hash = "sha256:f152cbf5b88aaeb836127d920dd0f5e7edff5a66f10c079157306c4343d86c19"}, + {file = "coverage-7.5.1-cp312-cp312-win_amd64.whl", hash = "sha256:5a5740d1fb60ddf268a3811bcd353de34eb56dc24e8f52a7f05ee513b2d4f596"}, + {file = "coverage-7.5.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e2213def81a50519d7cc56ed643c9e93e0247f5bbe0d1247d15fa520814a7cd7"}, + {file = "coverage-7.5.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:5037f8fcc2a95b1f0e80585bd9d1ec31068a9bcb157d9750a172836e98bc7a90"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5c3721c2c9e4c4953a41a26c14f4cef64330392a6d2d675c8b1db3b645e31f0e"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ca498687ca46a62ae590253fba634a1fe9836bc56f626852fb2720f334c9e4e5"}, + {file = "coverage-7.5.1-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0cdcbc320b14c3e5877ee79e649677cb7d89ef588852e9583e6b24c2e5072661"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:57e0204b5b745594e5bc14b9b50006da722827f0b8c776949f1135677e88d0b8"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:8fe7502616b67b234482c3ce276ff26f39ffe88adca2acf0261df4b8454668b4"}, + {file = "coverage-7.5.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9e78295f4144f9dacfed4f92935fbe1780021247c2fabf73a819b17f0ccfff8d"}, + {file = "coverage-7.5.1-cp38-cp38-win32.whl", hash = "sha256:1434e088b41594baa71188a17533083eabf5609e8e72f16ce8c186001e6b8c41"}, + {file = "coverage-7.5.1-cp38-cp38-win_amd64.whl", hash = "sha256:0646599e9b139988b63704d704af8e8df7fa4cbc4a1f33df69d97f36cb0a38de"}, + {file = "coverage-7.5.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4cc37def103a2725bc672f84bd939a6fe4522310503207aae4d56351644682f1"}, + {file = "coverage-7.5.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:fc0b4d8bfeabd25ea75e94632f5b6e047eef8adaed0c2161ada1e922e7f7cece"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d0a0f5e06881ecedfe6f3dd2f56dcb057b6dbeb3327fd32d4b12854df36bf26"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9735317685ba6ec7e3754798c8871c2f49aa5e687cc794a0b1d284b2389d1bd5"}, + {file = "coverage-7.5.1-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d21918e9ef11edf36764b93101e2ae8cc82aa5efdc7c5a4e9c6c35a48496d601"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c3e757949f268364b96ca894b4c342b41dc6f8f8b66c37878aacef5930db61be"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:79afb6197e2f7f60c4824dd4b2d4c2ec5801ceb6ba9ce5d2c3080e5660d51a4f"}, + {file = "coverage-7.5.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d1d0d98d95dd18fe29dc66808e1accf59f037d5716f86a501fc0256455219668"}, + {file = "coverage-7.5.1-cp39-cp39-win32.whl", hash = "sha256:1cc0fe9b0b3a8364093c53b0b4c0c2dd4bb23acbec4c9240b5f284095ccf7981"}, + {file = "coverage-7.5.1-cp39-cp39-win_amd64.whl", hash = "sha256:dde0070c40ea8bb3641e811c1cfbf18e265d024deff6de52c5950677a8fb1e0f"}, + {file = "coverage-7.5.1-pp38.pp39.pp310-none-any.whl", hash = "sha256:6537e7c10cc47c595828b8a8be04c72144725c383c4702703ff4e42e44577312"}, + {file = "coverage-7.5.1.tar.gz", hash = "sha256:54de9ef3a9da981f7af93eafde4ede199e0846cd819eb27c88e2b712aae9708c"}, ] [package.extras] @@ -825,43 +830,43 @@ files = [ [[package]] name = "cryptography" -version = "42.0.5" +version = "42.0.6" description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers." optional = false python-versions = ">=3.7" files = [ - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:a30596bae9403a342c978fb47d9b0ee277699fa53bbafad14706af51fe543d16"}, - {file = "cryptography-42.0.5-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:b7ffe927ee6531c78f81aa17e684e2ff617daeba7f189f911065b2ea2d526dec"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2424ff4c4ac7f6b8177b53c17ed5d8fa74ae5955656867f5a8affaca36a27abb"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:329906dcc7b20ff3cad13c069a78124ed8247adcac44b10bea1130e36caae0b4"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:b03c2ae5d2f0fc05f9a2c0c997e1bc18c8229f392234e8a0194f202169ccd278"}, - {file = "cryptography-42.0.5-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f8837fe1d6ac4a8052a9a8ddab256bc006242696f03368a4009be7ee3075cdb7"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:0270572b8bd2c833c3981724b8ee9747b3ec96f699a9665470018594301439ee"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:b8cac287fafc4ad485b8a9b67d0ee80c66bf3574f655d3b97ef2e1082360faf1"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:16a48c23a62a2f4a285699dba2e4ff2d1cff3115b9df052cdd976a18856d8e3d"}, - {file = "cryptography-42.0.5-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:2bce03af1ce5a5567ab89bd90d11e7bbdff56b8af3acbbec1faded8f44cb06da"}, - {file = "cryptography-42.0.5-cp37-abi3-win32.whl", hash = "sha256:b6cd2203306b63e41acdf39aa93b86fb566049aeb6dc489b70e34bcd07adca74"}, - {file = "cryptography-42.0.5-cp37-abi3-win_amd64.whl", hash = "sha256:98d8dc6d012b82287f2c3d26ce1d2dd130ec200c8679b6213b3c73c08b2b7940"}, - {file = "cryptography-42.0.5-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:5e6275c09d2badf57aea3afa80d975444f4be8d3bc58f7f80d2a484c6f9485c8"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4985a790f921508f36f81831817cbc03b102d643b5fcb81cd33df3fa291a1a1"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cde5f38e614f55e28d831754e8a3bacf9ace5d1566235e39d91b35502d6936e"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:7367d7b2eca6513681127ebad53b2582911d1736dc2ffc19f2c3ae49997496bc"}, - {file = "cryptography-42.0.5-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:cd2030f6650c089aeb304cf093f3244d34745ce0cfcc39f20c6fbfe030102e2a"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a2913c5375154b6ef2e91c10b5720ea6e21007412f6437504ffea2109b5a33d7"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:c41fb5e6a5fe9ebcd58ca3abfeb51dffb5d83d6775405305bfa8715b76521922"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:3eaafe47ec0d0ffcc9349e1708be2aaea4c6dd4978d76bf6eb0cb2c13636c6fc"}, - {file = "cryptography-42.0.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:1b95b98b0d2af784078fa69f637135e3c317091b615cd0905f8b8a087e86fa30"}, - {file = "cryptography-42.0.5-cp39-abi3-win32.whl", hash = "sha256:1f71c10d1e88467126f0efd484bd44bca5e14c664ec2ede64c32f20875c0d413"}, - {file = "cryptography-42.0.5-cp39-abi3-win_amd64.whl", hash = "sha256:a011a644f6d7d03736214d38832e030d8268bcff4a41f728e6030325fea3e400"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:9481ffe3cf013b71b2428b905c4f7a9a4f76ec03065b05ff499bb5682a8d9ad8"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:ba334e6e4b1d92442b75ddacc615c5476d4ad55cc29b15d590cc6b86efa487e2"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:ba3e4a42397c25b7ff88cdec6e2a16c2be18720f317506ee25210f6d31925f9c"}, - {file = "cryptography-42.0.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:111a0d8553afcf8eb02a4fea6ca4f59d48ddb34497aa8706a6cf536f1a5ec576"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:cd65d75953847815962c84a4654a84850b2bb4aed3f26fadcc1c13892e1e29f6"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e807b3188f9eb0eaa7bbb579b462c5ace579f1cedb28107ce8b48a9f7ad3679e"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f12764b8fffc7a123f641d7d049d382b73f96a34117e0b637b80643169cec8ac"}, - {file = "cryptography-42.0.5-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:37dd623507659e08be98eec89323469e8c7b4c1407c85112634ae3dbdb926fdd"}, - {file = "cryptography-42.0.5.tar.gz", hash = "sha256:6fe07eec95dfd477eb9530aef5bead34fec819b3aaf6c5bd6d20565da607bfe1"}, + {file = "cryptography-42.0.6-cp37-abi3-macosx_10_12_universal2.whl", hash = "sha256:073104df012fc815eed976cd7d0a386c8725d0d0947cf9c37f6c36a6c20feb1b"}, + {file = "cryptography-42.0.6-cp37-abi3-macosx_10_12_x86_64.whl", hash = "sha256:5967e3632f42b0c0f9dc2c9da88c79eabdda317860b246d1fbbde4a8bbbc3b44"}, + {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b99831397fdc6e6e0aa088b060c278c6e635d25c0d4d14bdf045bf81792fda0a"}, + {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:089aeb297ff89615934b22c7631448598495ffd775b7d540a55cfee35a677bf4"}, + {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:97eeacae9aa526ddafe68b9202a535f581e21d78f16688a84c8dcc063618e121"}, + {file = "cryptography-42.0.6-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f4cece02478d73dacd52be57a521d168af64ae03d2a567c0c4eb6f189c3b9d79"}, + {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:aeb6f56b004e898df5530fa873e598ec78eb338ba35f6fa1449970800b1d97c2"}, + {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:8b90c57b3cd6128e0863b894ce77bd36fcb5f430bf2377bc3678c2f56e232316"}, + {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d16a310c770cc49908c500c2ceb011f2840674101a587d39fa3ea828915b7e83"}, + {file = "cryptography-42.0.6-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e3442601d276bd9e961d618b799761b4e5d892f938e8a4fe1efbe2752be90455"}, + {file = "cryptography-42.0.6-cp37-abi3-win32.whl", hash = "sha256:00c0faa5b021457848d031ecff041262211cc1e2bce5f6e6e6c8108018f6b44a"}, + {file = "cryptography-42.0.6-cp37-abi3-win_amd64.whl", hash = "sha256:b16b90605c62bcb3aa7755d62cf5e746828cfc3f965a65211849e00c46f8348d"}, + {file = "cryptography-42.0.6-cp39-abi3-macosx_10_12_universal2.whl", hash = "sha256:eecca86813c6a923cabff284b82ff4d73d9e91241dc176250192c3a9b9902a54"}, + {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d93080d2b01b292e7ee4d247bf93ed802b0100f5baa3fa5fd6d374716fa480d4"}, + {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff75b88a4d273c06d968ad535e6cb6a039dd32db54fe36f05ed62ac3ef64a44"}, + {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:c05230d8aaaa6b8ab3ab41394dc06eb3d916131df1c9dcb4c94e8f041f704b74"}, + {file = "cryptography-42.0.6-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:9184aff0856261ecb566a3eb26a05dfe13a292c85ce5c59b04e4aa09e5814187"}, + {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:4bdb39ecbf05626e4bfa1efd773bb10346af297af14fb3f4c7cb91a1d2f34a46"}, + {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:e85f433230add2aa26b66d018e21134000067d210c9c68ef7544ba65fc52e3eb"}, + {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:65d529c31bd65d54ce6b926a01e1b66eacf770b7e87c0622516a840e400ec732"}, + {file = "cryptography-42.0.6-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f1e933b238978ccfa77b1fee0a297b3c04983f4cb84ae1c33b0ea4ae08266cc9"}, + {file = "cryptography-42.0.6-cp39-abi3-win32.whl", hash = "sha256:bc954251edcd8a952eeaec8ae989fec7fe48109ab343138d537b7ea5bb41071a"}, + {file = "cryptography-42.0.6-cp39-abi3-win_amd64.whl", hash = "sha256:9f1a3bc2747166b0643b00e0b56cd9b661afc9d5ff963acaac7a9c7b2b1ef638"}, + {file = "cryptography-42.0.6-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:945a43ebf036dd4b43ebfbbd6b0f2db29ad3d39df824fb77476ca5777a9dde33"}, + {file = "cryptography-42.0.6-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:f567a82b7c2b99257cca2a1c902c1b129787278ff67148f188784245c7ed5495"}, + {file = "cryptography-42.0.6-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3b750279f3e7715df6f68050707a0cee7cbe81ba2eeb2f21d081bd205885ffed"}, + {file = "cryptography-42.0.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:6981acac509cc9415344cb5bfea8130096ea6ebcc917e75503143a1e9e829160"}, + {file = "cryptography-42.0.6-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:076c92b08dd1ab88108bc84545187e10d3693a9299c593f98c4ea195a0b0ead7"}, + {file = "cryptography-42.0.6-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:81dbe47e28b703bc4711ac74a64ef8b758a0cf056ce81d08e39116ab4bc126fa"}, + {file = "cryptography-42.0.6-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e1f5f15c5ddadf6ee4d1d624a2ae940f14bd74536230b0056ccb28bb6248e42a"}, + {file = "cryptography-42.0.6-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:43e521f21c2458038d72e8cdfd4d4d9f1d00906a7b6636c4272e35f650d1699b"}, + {file = "cryptography-42.0.6.tar.gz", hash = "sha256:f987a244dfb0333fbd74a691c36000a2569eaf7c7cc2ac838f85f59f0588ddc9"}, ] [package.dependencies] @@ -894,69 +899,69 @@ tests = ["pytest", "pytest-cov", "pytest-xdist"] [[package]] name = "cython" -version = "3.0.8" +version = "3.0.10" description = "The Cython compiler for writing C extensions in the Python language." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" files = [ - {file = "Cython-3.0.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a846e0a38e2b24e9a5c5dc74b0e54c6e29420d88d1dafabc99e0fc0f3e338636"}, - {file = "Cython-3.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45523fdc2b78d79b32834cc1cc12dc2ca8967af87e22a3ee1bff20e77c7f5520"}, - {file = "Cython-3.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:baa0b7f3f841fe087410cab66778e2d3fb20ae2d2078a2be3dffe66c6574be39"}, - {file = "Cython-3.0.8-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e87294e33e40c289c77a135f491cd721bd089f193f956f7b8ed5aa2d0b8c558f"}, - {file = "Cython-3.0.8-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:a1df7a129344b1215c20096d33c00193437df1a8fcca25b71f17c23b1a44f782"}, - {file = "Cython-3.0.8-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:13c2a5e57a0358da467d97667297bf820b62a1a87ae47c5f87938b9bb593acbd"}, - {file = "Cython-3.0.8-cp310-cp310-win32.whl", hash = "sha256:96b028f044f5880e3cb18ecdcfc6c8d3ce9d0af28418d5ab464509f26d8adf12"}, - {file = "Cython-3.0.8-cp310-cp310-win_amd64.whl", hash = "sha256:8140597a8b5cc4f119a1190f5a2228a84f5ca6d8d9ec386cfce24663f48b2539"}, - {file = "Cython-3.0.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:aae26f9663e50caf9657148403d9874eea41770ecdd6caf381d177c2b1bb82ba"}, - {file = "Cython-3.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:547eb3cdb2f8c6f48e6865d5a741d9dd051c25b3ce076fbca571727977b28ac3"}, - {file = "Cython-3.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a567d4b9ba70b26db89d75b243529de9e649a2f56384287533cf91512705bee"}, - {file = "Cython-3.0.8-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:51d1426263b0e82fb22bda8ea60dc77a428581cc19e97741011b938445d383f1"}, - {file = "Cython-3.0.8-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c26daaeccda072459b48d211415fd1e5507c06bcd976fa0d5b8b9f1063467d7b"}, - {file = "Cython-3.0.8-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:289ce7838208211cd166e975865fd73b0649bf118170b6cebaedfbdaf4a37795"}, - {file = "Cython-3.0.8-cp311-cp311-win32.whl", hash = "sha256:c8aa05f5e17f8042a3be052c24f2edc013fb8af874b0bf76907d16c51b4e7871"}, - {file = "Cython-3.0.8-cp311-cp311-win_amd64.whl", hash = "sha256:000dc9e135d0eec6ecb2b40a5b02d0868a2f8d2e027a41b0fe16a908a9e6de02"}, - {file = "Cython-3.0.8-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:90d3fe31db55685d8cb97d43b0ec39ef614fcf660f83c77ed06aa670cb0e164f"}, - {file = "Cython-3.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e24791ddae2324e88e3c902a765595c738f19ae34ee66bfb1a6dac54b1833419"}, - {file = "Cython-3.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f020fa1c0552052e0660790b8153b79e3fc9a15dbd8f1d0b841fe5d204a6ae6"}, - {file = "Cython-3.0.8-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:18bfa387d7a7f77d7b2526af69a65dbd0b731b8d941aaff5becff8e21f6d7717"}, - {file = "Cython-3.0.8-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:fe81b339cffd87c0069c6049b4d33e28bdd1874625ee515785bf42c9fdff3658"}, - {file = "Cython-3.0.8-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:80fd94c076e1e1b1ee40a309be03080b75f413e8997cddcf401a118879863388"}, - {file = "Cython-3.0.8-cp312-cp312-win32.whl", hash = "sha256:85077915a93e359a9b920280d214dc0cf8a62773e1f3d7d30fab8ea4daed670c"}, - {file = "Cython-3.0.8-cp312-cp312-win_amd64.whl", hash = "sha256:0cb2dcc565c7851f75d496f724a384a790fab12d1b82461b663e66605bec429a"}, - {file = "Cython-3.0.8-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:870d2a0a7e3cbd5efa65aecdb38d715ea337a904ea7bb22324036e78fb7068e7"}, - {file = "Cython-3.0.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e8f2454128974905258d86534f4fd4f91d2f1343605657ecab779d80c9d6d5e"}, - {file = "Cython-3.0.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c1949d6aa7bc792554bee2b67a9fe41008acbfe22f4f8df7b6ec7b799613a4b3"}, - {file = "Cython-3.0.8-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c9f2c6e1b8f3bcd6cb230bac1843f85114780bb8be8614855b1628b36bb510e0"}, - {file = "Cython-3.0.8-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:05d7eddc668ae7993643f32c7661f25544e791edb745758672ea5b1a82ecffa6"}, - {file = "Cython-3.0.8-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:bfabe115deef4ada5d23c87bddb11289123336dcc14347011832c07db616dd93"}, - {file = "Cython-3.0.8-cp36-cp36m-win32.whl", hash = "sha256:0c38c9f0bcce2df0c3347285863621be904ac6b64c5792d871130569d893efd7"}, - {file = "Cython-3.0.8-cp36-cp36m-win_amd64.whl", hash = "sha256:6c46939c3983217d140999de7c238c3141f56b1ea349e47ca49cae899969aa2c"}, - {file = "Cython-3.0.8-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:115f0a50f752da6c99941b103b5cb090da63eb206abbc7c2ad33856ffc73f064"}, - {file = "Cython-3.0.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9c0f29246734561c90f36e70ed0506b61aa3d044e4cc4cba559065a2a741fae"}, - {file = "Cython-3.0.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ab75242869ff71e5665fe5c96f3378e79e792fa3c11762641b6c5afbbbbe026"}, - {file = "Cython-3.0.8-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6717c06e9cfc6c1df18543cd31a21f5d8e378a40f70c851fa2d34f0597037abc"}, - {file = "Cython-3.0.8-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9d3f74388db378a3c6fd06e79a809ed98df3f56484d317b81ee762dbf3c263e0"}, - {file = "Cython-3.0.8-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae7ac561fd8253a9ae96311e91d12af5f701383564edc11d6338a7b60b285a6f"}, - {file = "Cython-3.0.8-cp37-cp37m-win32.whl", hash = "sha256:97b2a45845b993304f1799664fa88da676ee19442b15fdcaa31f9da7e1acc434"}, - {file = "Cython-3.0.8-cp37-cp37m-win_amd64.whl", hash = "sha256:9e2be2b340fea46fb849d378f9b80d3c08ff2e81e2bfbcdb656e2e3cd8c6b2dc"}, - {file = "Cython-3.0.8-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2cde23c555470db3f149ede78b518e8274853745289c956a0e06ad8d982e4db9"}, - {file = "Cython-3.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7990ca127e1f1beedaf8fc8bf66541d066ef4723ad7d8d47a7cbf842e0f47580"}, - {file = "Cython-3.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b983c8e6803f016146c26854d9150ddad5662960c804ea7f0c752c9266752f0"}, - {file = "Cython-3.0.8-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a973268d7ca1a2bdf78575e459a94a78e1a0a9bb62a7db0c50041949a73b02ff"}, - {file = "Cython-3.0.8-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:61a237bc9dd23c7faef0fcfce88c11c65d0c9bb73c74ccfa408b3a012073c20e"}, - {file = "Cython-3.0.8-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3a3d67f079598af49e90ff9655bf85bd358f093d727eb21ca2708f467c489cae"}, - {file = "Cython-3.0.8-cp38-cp38-win32.whl", hash = "sha256:17a642bb01a693e34c914106566f59844b4461665066613913463a719e0dd15d"}, - {file = "Cython-3.0.8-cp38-cp38-win_amd64.whl", hash = "sha256:2cdfc32252f3b6dc7c94032ab744dcedb45286733443c294d8f909a4854e7f83"}, - {file = "Cython-3.0.8-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa97893d99385386925d00074654aeae3a98867f298d1e12ceaf38a9054a9bae"}, - {file = "Cython-3.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f05c0bf9d085c031df8f583f0d506aa3be1692023de18c45d0aaf78685bbb944"}, - {file = "Cython-3.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de892422582f5758bd8de187e98ac829330ec1007bc42c661f687792999988a7"}, - {file = "Cython-3.0.8-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:314f2355a1f1d06e3c431eaad4708cf10037b5e91e4b231d89c913989d0bdafd"}, - {file = "Cython-3.0.8-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:78825a3774211e7d5089730f00cdf7f473042acc9ceb8b9eeebe13ed3a5541de"}, - {file = "Cython-3.0.8-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:df8093deabc55f37028190cf5e575c26aad23fc673f34b85d5f45076bc37ce39"}, - {file = "Cython-3.0.8-cp39-cp39-win32.whl", hash = "sha256:1aca1b97e0095b3a9a6c33eada3f661a4ed0d499067d121239b193e5ba3bb4f0"}, - {file = "Cython-3.0.8-cp39-cp39-win_amd64.whl", hash = "sha256:16873d78be63bd38ffb759da7ab82814b36f56c769ee02b1d5859560e4c3ac3c"}, - {file = "Cython-3.0.8-py2.py3-none-any.whl", hash = "sha256:171b27051253d3f9108e9759e504ba59ff06e7f7ba944457f94deaf9c21bf0b6"}, - {file = "Cython-3.0.8.tar.gz", hash = "sha256:8333423d8fd5765e7cceea3a9985dd1e0a5dfeb2734629e1a2ed2d6233d39de6"}, + {file = "Cython-3.0.10-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:e876272548d73583e90babda94c1299537006cad7a34e515a06c51b41f8657aa"}, + {file = "Cython-3.0.10-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:adc377aa33c3309191e617bf675fdbb51ca727acb9dc1aa23fc698d8121f7e23"}, + {file = "Cython-3.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:401aba1869a57aba2922ccb656a6320447e55ace42709b504c2f8e8b166f46e1"}, + {file = "Cython-3.0.10-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:541fbe725d6534a90b93f8c577eb70924d664b227a4631b90a6e0506d1469591"}, + {file = "Cython-3.0.10-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:86998b01f6a6d48398df8467292c7637e57f7e3a2ca68655367f13f66fed7734"}, + {file = "Cython-3.0.10-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:d092c0ddba7e9e530a5c5be4ac06db8360258acc27675d1fc86294a5dc8994c5"}, + {file = "Cython-3.0.10-cp310-cp310-win32.whl", hash = "sha256:3cffb666e649dba23810732497442fb339ee67ba4e0be1f0579991e83fcc2436"}, + {file = "Cython-3.0.10-cp310-cp310-win_amd64.whl", hash = "sha256:9ea31184c7b3a728ef1f81fccb161d8948c05aa86c79f63b74fb6f3ddec860ec"}, + {file = "Cython-3.0.10-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:051069638abfb076900b0c2bcb6facf545655b3f429e80dd14365192074af5a4"}, + {file = "Cython-3.0.10-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:712760879600907189c7d0d346851525545484e13cd8b787e94bfd293da8ccf0"}, + {file = "Cython-3.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38d40fa1324ac47c04483d151f5e092406a147eac88a18aec789cf01c089c3f2"}, + {file = "Cython-3.0.10-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5bd49a3a9fdff65446a3e1c2bfc0ec85c6ce4c3cad27cd4ad7ba150a62b7fb59"}, + {file = "Cython-3.0.10-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:e8df79b596633b8295eaa48b1157d796775c2bb078f32267d32f3001b687f2fd"}, + {file = "Cython-3.0.10-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bcc9795990e525c192bc5c0775e441d7d56d7a7d02210451e9e13c0448dba51b"}, + {file = "Cython-3.0.10-cp311-cp311-win32.whl", hash = "sha256:09f2000041db482cad3bfce94e1fa3a4c82b0e57390a164c02566cbbda8c4f12"}, + {file = "Cython-3.0.10-cp311-cp311-win_amd64.whl", hash = "sha256:3919a55ec9b6c7db6f68a004c21c05ed540c40dbe459ced5d801d5a1f326a053"}, + {file = "Cython-3.0.10-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:8f2864ab5fcd27a346f0b50f901ebeb8f60b25a60a575ccfd982e7f3e9674914"}, + {file = "Cython-3.0.10-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:407840c56385b9c085826fe300213e0e76ba15d1d47daf4b58569078ecb94446"}, + {file = "Cython-3.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a036d00caa73550a3a976432ef21c1e3fa12637e1616aab32caded35331ae96"}, + {file = "Cython-3.0.10-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cc6a0e7e23a96dec3f3c9d39690d4281beabd5297855140d0d30855f950275e"}, + {file = "Cython-3.0.10-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a5e14a8c6a8157d2b0cdc2e8e3444905d20a0e78e19d2a097e89fb8b04b51f6b"}, + {file = "Cython-3.0.10-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f8a2b8fa0fd8358bccb5f3304be563c4750aae175100463d212d5ea0ec74cbe0"}, + {file = "Cython-3.0.10-cp312-cp312-win32.whl", hash = "sha256:2d29e617fd23cf4b83afe8f93f2966566c9f565918ad1e86a4502fe825cc0a79"}, + {file = "Cython-3.0.10-cp312-cp312-win_amd64.whl", hash = "sha256:6c5af936940a38c300977b81598d9c0901158f220a58c177820e17e1774f1cf1"}, + {file = "Cython-3.0.10-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:5f465443917d5c0f69825fca3b52b64c74ac3de0143b1fff6db8ba5b48c9fb4a"}, + {file = "Cython-3.0.10-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4fadb84193c25641973666e583df8df4e27c52cdc05ddce7c6f6510d690ba34a"}, + {file = "Cython-3.0.10-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fa9e7786083b6aa61594c16979d621b62e61fcd9c2edd4761641b95c7fb34b2"}, + {file = "Cython-3.0.10-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f4780d0f98ce28191c4d841c4358b5d5e79d96520650910cd59904123821c52d"}, + {file = "Cython-3.0.10-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:32fbad02d1189be75eb96456d9c73f5548078e5338d8fa153ecb0115b6ee279f"}, + {file = "Cython-3.0.10-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:90e2f514fc753b55245351305a399463103ec18666150bb1c36779b9862388e9"}, + {file = "Cython-3.0.10-cp36-cp36m-win32.whl", hash = "sha256:a9c976e9ec429539a4367cb4b24d15a1e46b925976f4341143f49f5f161171f5"}, + {file = "Cython-3.0.10-cp36-cp36m-win_amd64.whl", hash = "sha256:a9bb402674788a7f4061aeef8057632ec440123e74ed0fb425308a59afdfa10e"}, + {file = "Cython-3.0.10-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:206e803598010ecc3813db8748ed685f7beeca6c413f982df9f8a505fce56563"}, + {file = "Cython-3.0.10-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15b6d397f4ee5ad54e373589522af37935a32863f1b23fa8c6922adf833e28e2"}, + {file = "Cython-3.0.10-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a181144c2f893ed8e6a994d43d0b96300bc99873f21e3b7334ca26c61c37b680"}, + {file = "Cython-3.0.10-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b74b700d6a793113d03fb54b63bdbadba6365379424bac7c0470605672769260"}, + {file = "Cython-3.0.10-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:076e9fd4e0ca33c5fa00a7479180dbfb62f17fe928e2909f82da814536e96d2b"}, + {file = "Cython-3.0.10-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:269f06e6961e8591d56e30b46e1a51b6ccb42cab04c29fa3b30d3e8723485fb4"}, + {file = "Cython-3.0.10-cp37-cp37m-win32.whl", hash = "sha256:d4e83a8ceff7af60064da4ccfce0ac82372544dd5392f1b350c34f1b04d0fae6"}, + {file = "Cython-3.0.10-cp37-cp37m-win_amd64.whl", hash = "sha256:40fac59c3a7fbcd9c25aea64c342c890a5e2270ce64a1525e840807800167799"}, + {file = "Cython-3.0.10-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f43a58bf2434870d2fc42ac2e9ff8138c9e00c6251468de279d93fa279e9ba3b"}, + {file = "Cython-3.0.10-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e9a885ec63d3955a08cefc4eec39fefa9fe14989c6e5e2382bd4aeb6bdb9bc3"}, + {file = "Cython-3.0.10-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:acfbe0fff364d54906058fc61f2393f38cd7fa07d344d80923937b87e339adcf"}, + {file = "Cython-3.0.10-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8adcde00a8a88fab27509b558cd8c2959ab0c70c65d3814cfea8c68b83fa6dcd"}, + {file = "Cython-3.0.10-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:2c9c1e3e78909488f3b16fabae02308423fa6369ed96ab1e250807d344cfffd7"}, + {file = "Cython-3.0.10-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:fc6e0faf5b57523b073f0cdefadcaef3a51235d519a0594865925cadb3aeadf0"}, + {file = "Cython-3.0.10-cp38-cp38-win32.whl", hash = "sha256:35f6ede7c74024ed1982832ae61c9fad7cf60cc3f5b8c6a63bb34e38bc291936"}, + {file = "Cython-3.0.10-cp38-cp38-win_amd64.whl", hash = "sha256:950c0c7b770d2a7cec74fb6f5ccc321d0b51d151f48c075c0d0db635a60ba1b5"}, + {file = "Cython-3.0.10-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:077b61ee789e48700e25d4a16daa4258b8e65167136e457174df400cf9b4feab"}, + {file = "Cython-3.0.10-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f1f8bba9d8f37c0cffc934792b4ac7c42d0891077127c11deebe9fa0a0f7e4"}, + {file = "Cython-3.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:651a15a8534ebfb9b58cb0b87c269c70984b6f9c88bfe65e4f635f0e3f07dfcd"}, + {file = "Cython-3.0.10-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d10fc9aa82e5e53a0b7fd118f9771199cddac8feb4a6d8350b7d4109085aa775"}, + {file = "Cython-3.0.10-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4f610964ab252a83e573a427e28b103e2f1dd3c23bee54f32319f9e73c3c5499"}, + {file = "Cython-3.0.10-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8c9c4c4f3ab8f8c02817b0e16e8fa7b8cc880f76e9b63fe9c010e60c1a6c2b13"}, + {file = "Cython-3.0.10-cp39-cp39-win32.whl", hash = "sha256:0bac3ccdd4e03924028220c62ae3529e17efa8ca7e9df9330de95de02f582b26"}, + {file = "Cython-3.0.10-cp39-cp39-win_amd64.whl", hash = "sha256:81f356c1c8c0885b8435bfc468025f545c5d764aa9c75ab662616dd1193c331e"}, + {file = "Cython-3.0.10-py2.py3-none-any.whl", hash = "sha256:fcbb679c0b43514d591577fd0d20021c55c240ca9ccafbdb82d3fb95e5edfee2"}, + {file = "Cython-3.0.10.tar.gz", hash = "sha256:dcc96739331fb854dcf503f94607576cfe8488066c61ca50dfd55836f132de99"}, ] [[package]] @@ -1018,15 +1023,32 @@ files = [ {file = "docutils-0.20.1.tar.gz", hash = "sha256:f08a4e276c3a1583a86dce3e34aba3fe04d02bba2dd51ed16106244e8a923e3b"}, ] +[[package]] +name = "ewmhlib" +version = "0.2" +description = "Extended Window Manager Hints implementation in Python 3" +optional = false +python-versions = "*" +files = [ + {file = "EWMHlib-0.2-py3-none-any.whl", hash = "sha256:f5b07d8cfd4c7734462ee744c32d490f2f3233fa7ab354240069344208d2f6f5"}, +] + +[package.dependencies] +python-xlib = {version = ">=0.21", markers = "sys_platform == \"linux\""} +typing-extensions = ">=4.4.0" + +[package.extras] +dev = ["mypy (>=0.990)", "types-python-xlib (>=0.32)", "types-setuptools (>=65.5)"] + [[package]] name = "execnet" -version = "2.0.2" +version = "2.1.1" description = "execnet: rapid multi-Python deployment" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "execnet-2.0.2-py3-none-any.whl", hash = "sha256:88256416ae766bc9e8895c76a87928c0012183da3cc4fc18016e6f050e025f41"}, - {file = "execnet-2.0.2.tar.gz", hash = "sha256:cc59bc4423742fd71ad227122eb0dd44db51efb3dc4095b45ac9a08c770096af"}, + {file = "execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc"}, + {file = "execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3"}, ] [package.extras] @@ -1045,51 +1067,51 @@ files = [ [[package]] name = "filelock" -version = "3.13.1" +version = "3.14.0" description = "A platform independent file lock." optional = false python-versions = ">=3.8" files = [ - {file = "filelock-3.13.1-py3-none-any.whl", hash = "sha256:57dbda9b35157b05fb3e58ee91448612eb674172fab98ee235ccb0b5bee19a1c"}, - {file = "filelock-3.13.1.tar.gz", hash = "sha256:521f5f56c50f8426f5e03ad3b281b490a87ef15bc6c526f168290f0c7148d44e"}, + {file = "filelock-3.14.0-py3-none-any.whl", hash = "sha256:43339835842f110ca7ae60f1e1c160714c5a6afd15a2873419ab185334975c0f"}, + {file = "filelock-3.14.0.tar.gz", hash = "sha256:6ea72da3be9b8c82afd3edcf99f2fffbb5076335a5ae4d03248bb5b6c3eae78a"}, ] [package.extras] -docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.24)"] -testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] +docs = ["furo (>=2023.9.10)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] +testing = ["covdefaults (>=2.3)", "coverage (>=7.3.2)", "diff-cover (>=8.0.1)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)", "pytest-timeout (>=2.2)"] typing = ["typing-extensions (>=4.8)"] [[package]] name = "fiona" -version = "1.9.5" +version = "1.9.6" description = "Fiona reads and writes spatial data files" optional = false python-versions = ">=3.7" files = [ - {file = "fiona-1.9.5-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:5f40a40529ecfca5294260316cf987a0420c77a2f0cf0849f529d1afbccd093e"}, - {file = "fiona-1.9.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:374efe749143ecb5cfdd79b585d83917d2bf8ecfbfc6953c819586b336ce9c63"}, - {file = "fiona-1.9.5-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:35dae4b0308eb44617cdc4461ceb91f891d944fdebbcba5479efe524ec5db8de"}, - {file = "fiona-1.9.5-cp310-cp310-win_amd64.whl", hash = "sha256:5b4c6a3df53bee8f85bb46685562b21b43346be1fe96419f18f70fa1ab8c561c"}, - {file = "fiona-1.9.5-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:6ad04c1877b9fd742871b11965606c6a52f40706f56a48d66a87cc3073943828"}, - {file = "fiona-1.9.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fb9a24a8046c724787719e20557141b33049466145fc3e665764ac7caf5748c"}, - {file = "fiona-1.9.5-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:d722d7f01a66f4ab6cd08d156df3fdb92f0669cf5f8708ddcb209352f416f241"}, - {file = "fiona-1.9.5-cp311-cp311-win_amd64.whl", hash = "sha256:7ede8ddc798f3d447536080c6db9a5fb73733ad8bdb190cb65eed4e289dd4c50"}, - {file = "fiona-1.9.5-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:8b098054a27c12afac4f819f98cb4d4bf2db9853f70b0c588d7d97d26e128c39"}, - {file = "fiona-1.9.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d9f29e9bcbb33232ff7fa98b4a3c2234db910c1dc6c4147fc36c0b8b930f2e0"}, - {file = "fiona-1.9.5-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:f1af08da4ecea5036cb81c9131946be4404245d1b434b5b24fd3871a1d4030d9"}, - {file = "fiona-1.9.5-cp312-cp312-win_amd64.whl", hash = "sha256:c521e1135c78dec0d7774303e5a1b4c62e0efb0e602bb8f167550ef95e0a2691"}, - {file = "fiona-1.9.5-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:fce4b1dd98810cabccdaa1828430c7402d283295c2ae31bea4f34188ea9e88d7"}, - {file = "fiona-1.9.5-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:3ea04ec2d8c57b5f81a31200fb352cb3242aa106fc3e328963f30ffbdf0ff7c8"}, - {file = "fiona-1.9.5-cp37-cp37m-win_amd64.whl", hash = "sha256:4877cc745d9e82b12b3eafce3719db75759c27bd8a695521202135b36b58c2e7"}, - {file = "fiona-1.9.5-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:ac2c250f509ec19fad7959d75b531984776517ef3c1222d1cc5b4f962825880b"}, - {file = "fiona-1.9.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4df21906235928faad856c288cfea0298e9647f09c9a69a230535cbc8eadfa21"}, - {file = "fiona-1.9.5-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:81d502369493687746cb8d3cd77e5ada4447fb71d513721c9a1826e4fb32b23a"}, - {file = "fiona-1.9.5-cp38-cp38-win_amd64.whl", hash = "sha256:ce3b29230ef70947ead4e701f3f82be81082b7f37fd4899009b1445cc8fc276a"}, - {file = "fiona-1.9.5-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:8b53ce8de773fcd5e2e102e833c8c58479edd8796a522f3d83ef9e08b62bfeea"}, - {file = "fiona-1.9.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:bd2355e859a1cd24a3e485c6dc5003129f27a2051629def70036535ffa7e16a4"}, - {file = "fiona-1.9.5-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:9a2da52f865db1aff0eaf41cdd4c87a7c079b3996514e8e7a1ca38457309e825"}, - {file = "fiona-1.9.5-cp39-cp39-win_amd64.whl", hash = "sha256:cfef6db5b779d463298b1113b50daa6c5b55f26f834dc9e37752116fa17277c1"}, - {file = "fiona-1.9.5.tar.gz", hash = "sha256:99e2604332caa7692855c2ae6ed91e1fffdf9b59449aa8032dd18e070e59a2f7"}, + {file = "fiona-1.9.6-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:63e528b5ea3d8b1038d788e7c65117835c787ba7fdc94b1b42f09c2cbc0aaff2"}, + {file = "fiona-1.9.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:918bd27d8625416672e834593970f96dff63215108f81efb876fe5c0bc58a3b4"}, + {file = "fiona-1.9.6-cp310-cp310-manylinux2014_x86_64.whl", hash = "sha256:e313210b30d09ed8f829bf625599e248dadd78622728030221f6526580ff26c5"}, + {file = "fiona-1.9.6-cp310-cp310-win_amd64.whl", hash = "sha256:89095c2d542325ee45894b8837e8048cdbb2f22274934e1be3b673ca628010d7"}, + {file = "fiona-1.9.6-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98cea6f435843b2119731c6b0470e5b7386aa16b6aa7edabbf1ed93aefe029c3"}, + {file = "fiona-1.9.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f4230eccbd896a79d1ebfa551d84bf90f512f7bcbe1ca61e3f82231321f1a532"}, + {file = "fiona-1.9.6-cp311-cp311-manylinux2014_x86_64.whl", hash = "sha256:48b6218224e96de5e36b5eb259f37160092260e5de0dcd82ca200b1887aa9884"}, + {file = "fiona-1.9.6-cp311-cp311-win_amd64.whl", hash = "sha256:c1dd5fbc29b7303bb87eb683455e8451e1a53bb8faf20ef97fdcd843c9e4a7f6"}, + {file = "fiona-1.9.6-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:42d8a0e5570948d3821c493b6141866d9a4d7a64edad2be4ecbb89f81904baac"}, + {file = "fiona-1.9.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:39819fb8f5ec6d9971cb01b912b4431615a3d3f50c83798565d8ce41917930db"}, + {file = "fiona-1.9.6-cp312-cp312-manylinux2014_x86_64.whl", hash = "sha256:9b53034efdf93ada9295b081e6a8280af7c75496a20df82d4c2ca46d65b85905"}, + {file = "fiona-1.9.6-cp312-cp312-win_amd64.whl", hash = "sha256:1dcd6eca7524535baf2a39d7981b4a46d33ae28c313934a7c3eae62eecf9dfa5"}, + {file = "fiona-1.9.6-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:e5404ed08c711489abcb3a50a184816825b8af06eb73ad2a99e18b8e7b47c96a"}, + {file = "fiona-1.9.6-cp37-cp37m-manylinux2014_x86_64.whl", hash = "sha256:53bedd2989e255df1bf3378ae9c06d6d241ec273c280c544bb44ffffebb97fb0"}, + {file = "fiona-1.9.6-cp37-cp37m-win_amd64.whl", hash = "sha256:77653a08564a44e634c44cd74a068d2f55d1d4029edd16d1c8aadcc4d8cc1d2c"}, + {file = "fiona-1.9.6-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:e7617563b36d2be99f048f0d0054b4d765f4aae454398f88f19de9c2c324b7f8"}, + {file = "fiona-1.9.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:50037c3b7a5f6f434b562b5b1a5b664f1caa7a4383b00af23cdb59bfc6ba852c"}, + {file = "fiona-1.9.6-cp38-cp38-manylinux2014_x86_64.whl", hash = "sha256:bf51846ad602757bf27876f458c5c9f14b09421fac612f64273cc4e3fcabc441"}, + {file = "fiona-1.9.6-cp38-cp38-win_amd64.whl", hash = "sha256:11af1afc1255642a7787fe112c29d01f968f1053e4d4700fc6f3bb879c1622e0"}, + {file = "fiona-1.9.6-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:52e8fec650b72fc5253d8f86b63859acc687182281c29bfacd3930496cf982d1"}, + {file = "fiona-1.9.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c9b92aa1badb2773e7cac19bef3064d73e9d80c67c42f0928db2520a04be6f2f"}, + {file = "fiona-1.9.6-cp39-cp39-manylinux2014_x86_64.whl", hash = "sha256:0eaffbf3bfae9960484c0c08ea461b0c40e111497f04e9475ebf15ac7a22d9dc"}, + {file = "fiona-1.9.6-cp39-cp39-win_amd64.whl", hash = "sha256:f1b49d51a744874608b689f029766aa1e078dd72e94b44cf8eeef6d7bd2e9051"}, + {file = "fiona-1.9.6.tar.gz", hash = "sha256:791b3494f8b218c06ea56f892bd6ba893dfa23525347761d066fb7738acda3b1"}, ] [package.dependencies] @@ -1098,86 +1120,85 @@ certifi = "*" click = ">=8.0,<9.0" click-plugins = ">=1.0" cligj = ">=0.5" -setuptools = "*" six = "*" [package.extras] -all = ["Fiona[calc,s3,test]"] +all = ["fiona[calc,s3,test]"] calc = ["shapely"] s3 = ["boto3 (>=1.3.1)"] -test = ["Fiona[s3]", "pytest (>=7)", "pytest-cov", "pytz"] +test = ["fiona[s3]", "pytest (>=7)", "pytest-cov", "pytz"] [[package]] name = "flaky" -version = "3.7.0" -description = "Plugin for nose or pytest that automatically reruns flaky tests." +version = "3.8.1" +description = "Plugin for pytest that automatically reruns flaky tests." optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.5" files = [ - {file = "flaky-3.7.0-py2.py3-none-any.whl", hash = "sha256:d6eda73cab5ae7364504b7c44670f70abed9e75f77dd116352f662817592ec9c"}, - {file = "flaky-3.7.0.tar.gz", hash = "sha256:3ad100780721a1911f57a165809b7ea265a7863305acb66708220820caf8aa0d"}, + {file = "flaky-3.8.1-py2.py3-none-any.whl", hash = "sha256:194ccf4f0d3a22b2de7130f4b62e45e977ac1b5ccad74d4d48f3005dcc38815e"}, + {file = "flaky-3.8.1.tar.gz", hash = "sha256:47204a81ec905f3d5acfbd61daeabcada8f9d4031616d9bcb0618461729699f5"}, ] [[package]] name = "flatbuffers" -version = "23.5.26" +version = "24.3.25" description = "The FlatBuffers serialization format for Python" optional = false python-versions = "*" files = [ - {file = "flatbuffers-23.5.26-py2.py3-none-any.whl", hash = "sha256:c0ff356da363087b915fde4b8b45bdda73432fc17cddb3c8157472eab1422ad1"}, - {file = "flatbuffers-23.5.26.tar.gz", hash = "sha256:9ea1144cac05ce5d86e2859f431c6cd5e66cd9c78c558317c7955fb8d4c78d89"}, + {file = "flatbuffers-24.3.25-py2.py3-none-any.whl", hash = "sha256:8dbdec58f935f3765e4f7f3cf635ac3a77f83568138d6a2311f524ec96364812"}, + {file = "flatbuffers-24.3.25.tar.gz", hash = "sha256:de2ec5b203f21441716617f38443e0a8ebf3d25bf0d9c0bb0ce68fa00ad546a4"}, ] [[package]] name = "fonttools" -version = "4.49.0" +version = "4.51.0" description = "Tools to manipulate font files" optional = false python-versions = ">=3.8" files = [ - {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d970ecca0aac90d399e458f0b7a8a597e08f95de021f17785fb68e2dc0b99717"}, - {file = "fonttools-4.49.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac9a745b7609f489faa65e1dc842168c18530874a5f5b742ac3dd79e26bca8bc"}, - {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ba0e00620ca28d4ca11fc700806fd69144b463aa3275e1b36e56c7c09915559"}, - {file = "fonttools-4.49.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cdee3ab220283057e7840d5fb768ad4c2ebe65bdba6f75d5d7bf47f4e0ed7d29"}, - {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ce7033cb61f2bb65d8849658d3786188afd80f53dad8366a7232654804529532"}, - {file = "fonttools-4.49.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:07bc5ea02bb7bc3aa40a1eb0481ce20e8d9b9642a9536cde0218290dd6085828"}, - {file = "fonttools-4.49.0-cp310-cp310-win32.whl", hash = "sha256:86eef6aab7fd7c6c8545f3ebd00fd1d6729ca1f63b0cb4d621bccb7d1d1c852b"}, - {file = "fonttools-4.49.0-cp310-cp310-win_amd64.whl", hash = "sha256:1fac1b7eebfce75ea663e860e7c5b4a8831b858c17acd68263bc156125201abf"}, - {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:edc0cce355984bb3c1d1e89d6a661934d39586bb32191ebff98c600f8957c63e"}, - {file = "fonttools-4.49.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:83a0d9336de2cba86d886507dd6e0153df333ac787377325a39a2797ec529814"}, - {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36c8865bdb5cfeec88f5028e7e592370a0657b676c6f1d84a2108e0564f90e22"}, - {file = "fonttools-4.49.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33037d9e56e2562c710c8954d0f20d25b8386b397250d65581e544edc9d6b942"}, - {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:8fb022d799b96df3eaa27263e9eea306bd3d437cc9aa981820850281a02b6c9a"}, - {file = "fonttools-4.49.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:33c584c0ef7dc54f5dd4f84082eabd8d09d1871a3d8ca2986b0c0c98165f8e86"}, - {file = "fonttools-4.49.0-cp311-cp311-win32.whl", hash = "sha256:cbe61b158deb09cffdd8540dc4a948d6e8f4d5b4f3bf5cd7db09bd6a61fee64e"}, - {file = "fonttools-4.49.0-cp311-cp311-win_amd64.whl", hash = "sha256:fc11e5114f3f978d0cea7e9853627935b30d451742eeb4239a81a677bdee6bf6"}, - {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:d647a0e697e5daa98c87993726da8281c7233d9d4ffe410812a4896c7c57c075"}, - {file = "fonttools-4.49.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:f3bbe672df03563d1f3a691ae531f2e31f84061724c319652039e5a70927167e"}, - {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bebd91041dda0d511b0d303180ed36e31f4f54b106b1259b69fade68413aa7ff"}, - {file = "fonttools-4.49.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4145f91531fd43c50f9eb893faa08399816bb0b13c425667c48475c9f3a2b9b5"}, - {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ea329dafb9670ffbdf4dbc3b0e5c264104abcd8441d56de77f06967f032943cb"}, - {file = "fonttools-4.49.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:c076a9e548521ecc13d944b1d261ff3d7825048c338722a4bd126d22316087b7"}, - {file = "fonttools-4.49.0-cp312-cp312-win32.whl", hash = "sha256:b607ea1e96768d13be26d2b400d10d3ebd1456343eb5eaddd2f47d1c4bd00880"}, - {file = "fonttools-4.49.0-cp312-cp312-win_amd64.whl", hash = "sha256:a974c49a981e187381b9cc2c07c6b902d0079b88ff01aed34695ec5360767034"}, - {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:b85ec0bdd7bdaa5c1946398cbb541e90a6dfc51df76dfa88e0aaa41b335940cb"}, - {file = "fonttools-4.49.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:af20acbe198a8a790618ee42db192eb128afcdcc4e96d99993aca0b60d1faeb4"}, - {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d418b1fee41a1d14931f7ab4b92dc0bc323b490e41d7a333eec82c9f1780c75"}, - {file = "fonttools-4.49.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b44a52b8e6244b6548851b03b2b377a9702b88ddc21dcaf56a15a0393d425cb9"}, - {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7c7125068e04a70739dad11857a4d47626f2b0bd54de39e8622e89701836eabd"}, - {file = "fonttools-4.49.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:29e89d0e1a7f18bc30f197cfadcbef5a13d99806447c7e245f5667579a808036"}, - {file = "fonttools-4.49.0-cp38-cp38-win32.whl", hash = "sha256:9d95fa0d22bf4f12d2fb7b07a46070cdfc19ef5a7b1c98bc172bfab5bf0d6844"}, - {file = "fonttools-4.49.0-cp38-cp38-win_amd64.whl", hash = "sha256:768947008b4dc552d02772e5ebd49e71430a466e2373008ce905f953afea755a"}, - {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:08877e355d3dde1c11973bb58d4acad1981e6d1140711230a4bfb40b2b937ccc"}, - {file = "fonttools-4.49.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fdb54b076f25d6b0f0298dc706acee5052de20c83530fa165b60d1f2e9cbe3cb"}, - {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0af65c720520710cc01c293f9c70bd69684365c6015cc3671db2b7d807fe51f2"}, - {file = "fonttools-4.49.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1f255ce8ed7556658f6d23f6afd22a6d9bbc3edb9b96c96682124dc487e1bf42"}, - {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:d00af0884c0e65f60dfaf9340e26658836b935052fdd0439952ae42e44fdd2be"}, - {file = "fonttools-4.49.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:263832fae27481d48dfafcc43174644b6706639661e242902ceb30553557e16c"}, - {file = "fonttools-4.49.0-cp39-cp39-win32.whl", hash = "sha256:0404faea044577a01bb82d47a8fa4bc7a54067fa7e324785dd65d200d6dd1133"}, - {file = "fonttools-4.49.0-cp39-cp39-win_amd64.whl", hash = "sha256:b050d362df50fc6e38ae3954d8c29bf2da52be384649ee8245fdb5186b620836"}, - {file = "fonttools-4.49.0-py3-none-any.whl", hash = "sha256:af281525e5dd7fa0b39fb1667b8d5ca0e2a9079967e14c4bfe90fd1cd13e0f18"}, - {file = "fonttools-4.49.0.tar.gz", hash = "sha256:ebf46e7f01b7af7861310417d7c49591a85d99146fc23a5ba82fdb28af156321"}, + {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:84d7751f4468dd8cdd03ddada18b8b0857a5beec80bce9f435742abc9a851a74"}, + {file = "fonttools-4.51.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8b4850fa2ef2cfbc1d1f689bc159ef0f45d8d83298c1425838095bf53ef46308"}, + {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5b48a1121117047d82695d276c2af2ee3a24ffe0f502ed581acc2673ecf1037"}, + {file = "fonttools-4.51.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:180194c7fe60c989bb627d7ed5011f2bef1c4d36ecf3ec64daec8302f1ae0716"}, + {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:96a48e137c36be55e68845fc4284533bda2980f8d6f835e26bca79d7e2006438"}, + {file = "fonttools-4.51.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:806e7912c32a657fa39d2d6eb1d3012d35f841387c8fc6cf349ed70b7c340039"}, + {file = "fonttools-4.51.0-cp310-cp310-win32.whl", hash = "sha256:32b17504696f605e9e960647c5f64b35704782a502cc26a37b800b4d69ff3c77"}, + {file = "fonttools-4.51.0-cp310-cp310-win_amd64.whl", hash = "sha256:c7e91abdfae1b5c9e3a543f48ce96013f9a08c6c9668f1e6be0beabf0a569c1b"}, + {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a8feca65bab31479d795b0d16c9a9852902e3a3c0630678efb0b2b7941ea9c74"}, + {file = "fonttools-4.51.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ac27f436e8af7779f0bb4d5425aa3535270494d3bc5459ed27de3f03151e4c2"}, + {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e19bd9e9964a09cd2433a4b100ca7f34e34731e0758e13ba9a1ed6e5468cc0f"}, + {file = "fonttools-4.51.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b2b92381f37b39ba2fc98c3a45a9d6383bfc9916a87d66ccb6553f7bdd129097"}, + {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5f6bc991d1610f5c3bbe997b0233cbc234b8e82fa99fc0b2932dc1ca5e5afec0"}, + {file = "fonttools-4.51.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9696fe9f3f0c32e9a321d5268208a7cc9205a52f99b89479d1b035ed54c923f1"}, + {file = "fonttools-4.51.0-cp311-cp311-win32.whl", hash = "sha256:3bee3f3bd9fa1d5ee616ccfd13b27ca605c2b4270e45715bd2883e9504735034"}, + {file = "fonttools-4.51.0-cp311-cp311-win_amd64.whl", hash = "sha256:0f08c901d3866a8905363619e3741c33f0a83a680d92a9f0e575985c2634fcc1"}, + {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:4060acc2bfa2d8e98117828a238889f13b6f69d59f4f2d5857eece5277b829ba"}, + {file = "fonttools-4.51.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:1250e818b5f8a679ad79660855528120a8f0288f8f30ec88b83db51515411fcc"}, + {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:76f1777d8b3386479ffb4a282e74318e730014d86ce60f016908d9801af9ca2a"}, + {file = "fonttools-4.51.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b5ad456813d93b9c4b7ee55302208db2b45324315129d85275c01f5cb7e61a2"}, + {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:68b3fb7775a923be73e739f92f7e8a72725fd333eab24834041365d2278c3671"}, + {file = "fonttools-4.51.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8e2f1a4499e3b5ee82c19b5ee57f0294673125c65b0a1ff3764ea1f9db2f9ef5"}, + {file = "fonttools-4.51.0-cp312-cp312-win32.whl", hash = "sha256:278e50f6b003c6aed19bae2242b364e575bcb16304b53f2b64f6551b9c000e15"}, + {file = "fonttools-4.51.0-cp312-cp312-win_amd64.whl", hash = "sha256:b3c61423f22165541b9403ee39874dcae84cd57a9078b82e1dce8cb06b07fa2e"}, + {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1621ee57da887c17312acc4b0e7ac30d3a4fb0fec6174b2e3754a74c26bbed1e"}, + {file = "fonttools-4.51.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d9298be7a05bb4801f558522adbe2feea1b0b103d5294ebf24a92dd49b78e5"}, + {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ee1af4be1c5afe4c96ca23badd368d8dc75f611887fb0c0dac9f71ee5d6f110e"}, + {file = "fonttools-4.51.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c18b49adc721a7d0b8dfe7c3130c89b8704baf599fb396396d07d4aa69b824a1"}, + {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:de7c29bdbdd35811f14493ffd2534b88f0ce1b9065316433b22d63ca1cd21f14"}, + {file = "fonttools-4.51.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:cadf4e12a608ef1d13e039864f484c8a968840afa0258b0b843a0556497ea9ed"}, + {file = "fonttools-4.51.0-cp38-cp38-win32.whl", hash = "sha256:aefa011207ed36cd280babfaa8510b8176f1a77261833e895a9d96e57e44802f"}, + {file = "fonttools-4.51.0-cp38-cp38-win_amd64.whl", hash = "sha256:865a58b6e60b0938874af0968cd0553bcd88e0b2cb6e588727117bd099eef836"}, + {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:60a3409c9112aec02d5fb546f557bca6efa773dcb32ac147c6baf5f742e6258b"}, + {file = "fonttools-4.51.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:f7e89853d8bea103c8e3514b9f9dc86b5b4120afb4583b57eb10dfa5afbe0936"}, + {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56fc244f2585d6c00b9bcc59e6593e646cf095a96fe68d62cd4da53dd1287b55"}, + {file = "fonttools-4.51.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0d145976194a5242fdd22df18a1b451481a88071feadf251221af110ca8f00ce"}, + {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:c5b8cab0c137ca229433570151b5c1fc6af212680b58b15abd797dcdd9dd5051"}, + {file = "fonttools-4.51.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:54dcf21a2f2d06ded676e3c3f9f74b2bafded3a8ff12f0983160b13e9f2fb4a7"}, + {file = "fonttools-4.51.0-cp39-cp39-win32.whl", hash = "sha256:0118ef998a0699a96c7b28457f15546815015a2710a1b23a7bf6c1be60c01636"}, + {file = "fonttools-4.51.0-cp39-cp39-win_amd64.whl", hash = "sha256:599bdb75e220241cedc6faebfafedd7670335d2e29620d207dd0378a4e9ccc5a"}, + {file = "fonttools-4.51.0-py3-none-any.whl", hash = "sha256:15c94eeef6b095831067f72c825eb0e2d48bb4cea0647c1b05c981ecba2bf39f"}, + {file = "fonttools-4.51.0.tar.gz", hash = "sha256:dc0673361331566d7a663d7ce0f6fdcbfbdc1f59c6e3ed1165ad7202ca183c68"}, ] [package.extras] @@ -1340,17 +1361,18 @@ rewrite = ["tokenize-rt (>=3)"] [[package]] name = "geopandas" -version = "0.14.3" +version = "0.14.4" description = "Geographic pandas extensions" optional = false python-versions = ">=3.9" files = [ - {file = "geopandas-0.14.3-py3-none-any.whl", hash = "sha256:41b31ad39e21bc9e8c4254f78f8dc4ce3d33d144e22e630a00bb336c83160204"}, - {file = "geopandas-0.14.3.tar.gz", hash = "sha256:748af035d4a068a4ae00cab384acb61d387685c833b0022e0729aa45216b23ac"}, + {file = "geopandas-0.14.4-py3-none-any.whl", hash = "sha256:3bb6473cb59d51e1a7fe2dbc24a1a063fb0ebdeddf3ce08ddbf8c7ddc99689aa"}, + {file = "geopandas-0.14.4.tar.gz", hash = "sha256:56765be9d58e2c743078085db3bd07dc6be7719f0dbe1dfdc1d705cb80be7c25"}, ] [package.dependencies] fiona = ">=1.8.21" +numpy = ">=1.22" packaging = "*" pandas = ">=1.4.0" pyproj = ">=3.3.0" @@ -1469,49 +1491,51 @@ toy-text = ["pygame (==2.1.3)", "pygame (==2.1.3)"] [[package]] name = "h3" -version = "3.7.6" +version = "3.7.7" description = "Hierarchical hexagonal geospatial indexing system" optional = false python-versions = "*" files = [ - {file = "h3-3.7.6-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:cd4a5103a86a7d98cffa3be77eb82080aa2e9d676bbd1661f3db9ecad7a4ef2b"}, - {file = "h3-3.7.6-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:231959dceb4cc4ae86fe4fe2c385b176ed81712549e787b889dfa66f583676df"}, - {file = "h3-3.7.6-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:b9de9da755c90bbc90d6c041396a20c91816cd86a0bafa3b8899681cfdc2c4c6"}, - {file = "h3-3.7.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:cda9a427b0de0d4069115ec765118888f180d0db915b5bc0dba52f5ae957b789"}, - {file = "h3-3.7.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8bf1e080b9a47774754834e7f10155f3d2e3542bf895488a0519b2ae7d5b15db"}, - {file = "h3-3.7.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1d3b93e3f38eb6c8fc5051d1b289b74614fb5f2415d272fea18085dea260d6b0"}, - {file = "h3-3.7.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:783b2ca4448360c5a184fd43b84fc5554e3a8fd02738ff31349506189c5b4b49"}, - {file = "h3-3.7.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:3bae8b95f21f20f04141a35f15c8caa74f2046eb01ef49e35fc45e6a8edfc8df"}, - {file = "h3-3.7.6-cp310-cp310-win_amd64.whl", hash = "sha256:6ca9dd410e250d37f24a87c4ecb0615bb6d44a3f90eb5dbbf1b5e3d4489b8703"}, - {file = "h3-3.7.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:991ee991f2ae41f629feb1cd32fa677b8512c72696eb0ad94fcf359d61184b2e"}, - {file = "h3-3.7.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fcbfff87d223279f8e38bbee3ebf52b1b96ae280e9e7de24674d3c284373d946"}, - {file = "h3-3.7.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eddf10d1d2139b3ea3ad1618c2074e1c47d3d36bddb5359e4955f5fd0b089d93"}, - {file = "h3-3.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76abc02f14a8df42fb5d80e6045023fb756c49d3cb08d69a8ceb9362b95d4bec"}, - {file = "h3-3.7.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:fc8030968586a7810aa192397ad9a4f7d7a963f57c9b3e210fc38de0aa5c2533"}, - {file = "h3-3.7.6-cp311-cp311-win_amd64.whl", hash = "sha256:1bdc790d91138e781973dcaade5231db7fe8a876330939e0903f602acc4fb64c"}, - {file = "h3-3.7.6-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:198718ab20a06ebe52f0aaafc02469e4a51964e5ba7990c3cc1d2fc32e7a54d9"}, - {file = "h3-3.7.6-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:02faa911f2d8425c641a1f7c08f3dc9c10a5a3d81408832afa40748534b999c8"}, - {file = "h3-3.7.6-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b4db92ceaeb9a51cc875c302cdc5e1aa27eed776d95943ee55c941bc2f219a3"}, - {file = "h3-3.7.6-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4810ddb3d91411a6cbf87a28108fe31712f618ef223c349e1f6675602af2c473"}, - {file = "h3-3.7.6-cp36-cp36m-win_amd64.whl", hash = "sha256:211ef3317dcf7863e2d01a97ab6da319b8451d78cd1633dd28faaf69e66bc321"}, - {file = "h3-3.7.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:99b81620608378fc9910a5c630b0f17eb939156fa13e1adc55229d31f8c3f5ca"}, - {file = "h3-3.7.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:26f3175bd3ea3ee528dbf49308e7215a58351ce425e1c3a9838ae22526663311"}, - {file = "h3-3.7.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7d7b69015f5bab2525914fad370b96dc386437e19a14cfed3eb13868589263db"}, - {file = "h3-3.7.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d0c2890fa10fa8695c020569c8d55da79e2c552a39533de4ae6991c7acb122e1"}, - {file = "h3-3.7.6-cp37-cp37m-win_amd64.whl", hash = "sha256:1cd4f07c49721023c5fef401a4de03c47000705dfd116579dc6b61cad821305d"}, - {file = "h3-3.7.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f8d1db3dcd8f6ce7f54e061e6c9fbecbb5c3978b9e54e44af05a53787c4f99b3"}, - {file = "h3-3.7.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:495e37b1dee0ec46ccd88b278e571234b0d0d30648f161799d65a8d7f390b3f2"}, - {file = "h3-3.7.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2e2c4808b7691b176c89ebf23c173b3b23dd4ce42f8f494b32c6e31ceee49af"}, - {file = "h3-3.7.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b58b1298bf1068704c6d9426749c8ae6021b53d982d5153cc4161c7042ecd810"}, - {file = "h3-3.7.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:a2872f695168c4700c73edd6eab9c6181387d7ea177de13b130ae61e613ff7de"}, - {file = "h3-3.7.6-cp38-cp38-win_amd64.whl", hash = "sha256:98c3951c3b67ca3de06ef70aa74a9752640a3eca9b4d68e0d5d8e4fc6fa72337"}, - {file = "h3-3.7.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0724d4645c1da59e02b3305050c52b93ce1d8971d1d139433d464fcc103249a6"}, - {file = "h3-3.7.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e1f6ec0f2246381ce3a7f72da1ce825a5474eb7c8fb25a2ea1f16c6606ce34a7"}, - {file = "h3-3.7.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1471ff4d3875b25b521eeec5c2b72abe27b8e6af10ab99b7da5c0de545b0e832"}, - {file = "h3-3.7.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eb96f2caae519d0ed17acde625af528476dca121b0336d3eb776429d40284ef6"}, - {file = "h3-3.7.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b1b1bce0dee05175f8d422e50ffa1afacb9a7e78ae0963059aebfbef50e10175"}, - {file = "h3-3.7.6-cp39-cp39-win_amd64.whl", hash = "sha256:36ea935833c37fdfd7ffbfc000d7cd20addcdf67f30b26a6b9bccb9210b03704"}, - {file = "h3-3.7.6.tar.gz", hash = "sha256:9bbd3dbac99532fa521d7d2e288ff55877bea3223b070f659ed7b5f8f1f213eb"}, + {file = "h3-3.7.7-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:951ecc9da0bcd5091670b13636928747bc98bc76891da0fa725524ec017cd9de"}, + {file = "h3-3.7.7-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:26b9dd605541223ef927cc913deccb236cee024b16032f4a3e4387e2791479f2"}, + {file = "h3-3.7.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:996ebb32dc26dd607af7493149f94ce316117be6f42971f7b33bbd326ec695d2"}, + {file = "h3-3.7.7-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa2a4aa888cd9476788b874b4e11e178293f5b86e8461c36596bf183c242d417"}, + {file = "h3-3.7.7-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0256e42687470c6f0044ca78fe375fe32a654be8b5a8313b4a68f52f513389c6"}, + {file = "h3-3.7.7-cp310-cp310-win_amd64.whl", hash = "sha256:a3e2bc125490f900e0513c30480722f129bab1415f23040b6cd3a3f8d5a39336"}, + {file = "h3-3.7.7-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7d59018a50cd3b6d0ff0b18a54fdfcbaf2f79c13c831842f54fd2780c4b561ea"}, + {file = "h3-3.7.7-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9e74526d941c1656fe162cc63b459b61aa83a15e257e9477b1570f26c544b51a"}, + {file = "h3-3.7.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c7398dbab685fcf3fe92f7c4c5901ab258bc66f7fa05fd1da8693375a10a549"}, + {file = "h3-3.7.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d22ea488ab5fe01c94070e9a6b3222916905a4d3f7a9d33cb2298c93fa0ffd3"}, + {file = "h3-3.7.7-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c94836155e8169be393980fc059f06481a14dd1913bd9cba609f6f1e8864c171"}, + {file = "h3-3.7.7-cp311-cp311-win_amd64.whl", hash = "sha256:836e74313ff55324485cd7e07783bc67df3191ec08a318035d7cd8ee0b0badab"}, + {file = "h3-3.7.7-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:51c2f63ef5a57e4b18ebc9c0eb56656433e280ec45ab487a514127bb6e7d6a1f"}, + {file = "h3-3.7.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4d6e38dea47c220d9802af8e8bebc806f9f39358aee07b736191ff21e2c9921d"}, + {file = "h3-3.7.7-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e408342e94f558802a97bfcbe1baae2af8b1fd926ad9041d970ff9dbd0502099"}, + {file = "h3-3.7.7-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:644c3c84585aa4df62e81bc54fd305c4d6686324731de230b0ddbd7036ed172c"}, + {file = "h3-3.7.7-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:bb4a3d5e82d0c89512dc71b4eac17976a29be29da250ba76bc94bc5b9e824f0e"}, + {file = "h3-3.7.7-cp312-cp312-win_amd64.whl", hash = "sha256:2ccff5f02589e80202597ed0b9f61ebd114e262e7dd0fe88059298602898192f"}, + {file = "h3-3.7.7-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:ef2e71b619f984e71c4bd9d128152e2c7e3e788e2d2ec571b32cef1d295ddf38"}, + {file = "h3-3.7.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8cb13f0213ed6da80e739355e5b62cfc81b7b1469af997be3384a6cbc3a1a750"}, + {file = "h3-3.7.7-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:701f72f703d892fb17e66b9fd7b6b2ad125e135b091eb7dd0ec11858b84d84d2"}, + {file = "h3-3.7.7-cp36-cp36m-win_amd64.whl", hash = "sha256:796622be7cb052690404c0ac03768183e51ae22505ce4a424b4537b2b7609fba"}, + {file = "h3-3.7.7-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:bcd88a72d6aa97d0f3b3b87b7bfd9725a8909501e6cb9d0057d5b690b6bb37b0"}, + {file = "h3-3.7.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a7358ba3f91193a2551c4a8d7ad7fd348e567b3a3581c9c161630029dfb23e07"}, + {file = "h3-3.7.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8f34b204edc2e8f7d99a6db4ed1b5d202b7ea3ec6817d373ec432dee14efe04"}, + {file = "h3-3.7.7-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:2aa0f8ce89b5e694815ee7a5172a782d58f2652267329de7008354b110b53955"}, + {file = "h3-3.7.7-cp37-cp37m-win_amd64.whl", hash = "sha256:4c851baa1c2d4f29b01157ce2a4cdb1f3879fff5c36ff7861dad1526963a17a7"}, + {file = "h3-3.7.7-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6f3a9da5472820b0a4add342f96fe52f65fbb8f46984383885738517b38af69e"}, + {file = "h3-3.7.7-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:1c57da776a3c1a01e2986b1f6a31d497ee0be8fcdbaaf9b23bb90f5a90eb8f0b"}, + {file = "h3-3.7.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7a5c0c0ddd9c57694ecc3b9ba99cbef2842882f8943d6edc676a365e139dbc6d"}, + {file = "h3-3.7.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c1b5a0a652719b645387231bf6d7d4dd85150e4440a4ce72a804a10e86592ae"}, + {file = "h3-3.7.7-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:64f76dc827fef94e9f43f95a1daea2e11f2ad2e8c55deac072f3d59bd62412d4"}, + {file = "h3-3.7.7-cp38-cp38-win_amd64.whl", hash = "sha256:c993a36120d7f5607f24ba9e39caf715eaf9cd9d44f5d5660fd85e3f4e0c6bf7"}, + {file = "h3-3.7.7-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:eb154d2af699870b888e10476e327c895078009d2d2a6ef2d053d7dcf0e2c270"}, + {file = "h3-3.7.7-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c96ad74e246bb7638d413efa8199dd4c58ee929424a4dcaadb16365195f77f87"}, + {file = "h3-3.7.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52901f14f8b6e2c82075fd52c0e70176b868f621d47b5dc93f468c510e963722"}, + {file = "h3-3.7.7-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa9d82a0fcc647e7bab36ab2e7a7392d141edc95d113ccf972e0fb7b0ddf80a0"}, + {file = "h3-3.7.7-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9f4417d09acb36f0452346052f576923d6e4334bff3459f217d6278d40397424"}, + {file = "h3-3.7.7-cp39-cp39-win_amd64.whl", hash = "sha256:7ae774cd43b057f68dc10c99e4522fa40ed6b32ab90b2df0025595ffa15e77a0"}, + {file = "h3-3.7.7.tar.gz", hash = "sha256:33d141c3cef0725a881771fd8cb80c06a0db84a6e4ca5c647ce095ae07c61e94"}, ] [package.extras] @@ -1563,13 +1587,13 @@ zoneinfo = ["backports.zoneinfo (>=0.2.1)", "tzdata (>=2022.1)"] [[package]] name = "identify" -version = "2.5.35" +version = "2.5.36" description = "File identification library for Python" optional = false python-versions = ">=3.8" files = [ - {file = "identify-2.5.35-py2.py3-none-any.whl", hash = "sha256:c4de0081837b211594f8e877a6b4fad7ca32bbfc1a9307fdd61c28bfe923f13e"}, - {file = "identify-2.5.35.tar.gz", hash = "sha256:10a7ca245cfcd756a554a7288159f72ff105ad233c7c4b9c6f0f4d108f5f6791"}, + {file = "identify-2.5.36-py2.py3-none-any.whl", hash = "sha256:37d93f380f4de590500d9dba7db359d0d3da95ffe7f9de1753faa159e71e7dfa"}, + {file = "identify-2.5.36.tar.gz", hash = "sha256:e5e00f54165f9047fbebeb4a560f9acfb8af4c88232be60a488e9b68d122745d"}, ] [package.extras] @@ -1577,13 +1601,13 @@ license = ["ukkonen"] [[package]] name = "idna" -version = "3.6" +version = "3.7" description = "Internationalized Domain Names in Applications (IDNA)" optional = false python-versions = ">=3.5" files = [ - {file = "idna-3.6-py3-none-any.whl", hash = "sha256:c05567e9c24a6b9faaa835c4821bad0590fbb9d5779e7caa6e1cc4978e7eb24f"}, - {file = "idna-3.6.tar.gz", hash = "sha256:9ecdbbd083b06798ae1e86adcbfe8ab1479cf864e4ee30fe4e46a003d12491ca"}, + {file = "idna-3.7-py3-none-any.whl", hash = "sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0"}, + {file = "idna-3.7.tar.gz", hash = "sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc"}, ] [[package]] @@ -1610,22 +1634,22 @@ files = [ [[package]] name = "importlib-metadata" -version = "7.0.1" +version = "7.1.0" description = "Read metadata from Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "importlib_metadata-7.0.1-py3-none-any.whl", hash = "sha256:4805911c3a4ec7c3966410053e9ec6a1fecd629117df5adee56dfc9432a1081e"}, - {file = "importlib_metadata-7.0.1.tar.gz", hash = "sha256:f238736bb06590ae52ac1fab06a3a9ef1d8dce2b7a35b5ab329371d6c8f5d2cc"}, + {file = "importlib_metadata-7.1.0-py3-none-any.whl", hash = "sha256:30962b96c0c223483ed6cc7280e7f0199feb01a0e40cfae4d4450fc6fab1f570"}, + {file = "importlib_metadata-7.1.0.tar.gz", hash = "sha256:b78938b926ee8d5f020fc4772d487045805a55ddbad2ecf21c6d60938dc7fcd2"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "iniconfig" @@ -1683,13 +1707,13 @@ testing = ["pytest (==7.1.3)"] [[package]] name = "jinja2" -version = "3.1.3" +version = "3.1.4" description = "A very fast and expressive template engine." optional = false python-versions = ">=3.7" files = [ - {file = "Jinja2-3.1.3-py3-none-any.whl", hash = "sha256:7d6d50dd97d52cbc355597bd845fabfbac3f551e1f99619e39a35ce8c370b5fa"}, - {file = "Jinja2-3.1.3.tar.gz", hash = "sha256:ac8bd6544d4bb2c9792bf3a159e80bba8fda7f07e81bc3aed565432d5925ba90"}, + {file = "jinja2-3.1.4-py3-none-any.whl", hash = "sha256:bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d"}, + {file = "jinja2-3.1.4.tar.gz", hash = "sha256:4a3aee7acbbe7303aede8e9648d13b8bf88a429282aa6122a993f0ac800cb369"}, ] [package.dependencies] @@ -1930,96 +1954,173 @@ test = ["pytest"] [[package]] name = "lxml" -version = "5.1.0" +version = "5.2.1" description = "Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API." optional = false python-versions = ">=3.6" files = [ - {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:704f5572ff473a5f897745abebc6df40f22d4133c1e0a1f124e4f2bd3330ff7e"}, - {file = "lxml-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9d3c0f8567ffe7502d969c2c1b809892dc793b5d0665f602aad19895f8d508da"}, - {file = "lxml-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5fcfbebdb0c5d8d18b84118842f31965d59ee3e66996ac842e21f957eb76138c"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f37c6d7106a9d6f0708d4e164b707037b7380fcd0b04c5bd9cae1fb46a856fb"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2befa20a13f1a75c751f47e00929fb3433d67eb9923c2c0b364de449121f447c"}, - {file = "lxml-5.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22b7ee4c35f374e2c20337a95502057964d7e35b996b1c667b5c65c567d2252a"}, - {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf8443781533b8d37b295016a4b53c1494fa9a03573c09ca5104550c138d5c05"}, - {file = "lxml-5.1.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:82bddf0e72cb2af3cbba7cec1d2fd11fda0de6be8f4492223d4a268713ef2147"}, - {file = "lxml-5.1.0-cp310-cp310-win32.whl", hash = "sha256:b66aa6357b265670bb574f050ffceefb98549c721cf28351b748be1ef9577d93"}, - {file = "lxml-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:4946e7f59b7b6a9e27bef34422f645e9a368cb2be11bf1ef3cafc39a1f6ba68d"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:14deca1460b4b0f6b01f1ddc9557704e8b365f55c63070463f6c18619ebf964f"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ed8c3d2cd329bf779b7ed38db176738f3f8be637bb395ce9629fc76f78afe3d4"}, - {file = "lxml-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:436a943c2900bb98123b06437cdd30580a61340fbdb7b28aaf345a459c19046a"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:acb6b2f96f60f70e7f34efe0c3ea34ca63f19ca63ce90019c6cbca6b676e81fa"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:af8920ce4a55ff41167ddbc20077f5698c2e710ad3353d32a07d3264f3a2021e"}, - {file = "lxml-5.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7cfced4a069003d8913408e10ca8ed092c49a7f6cefee9bb74b6b3e860683b45"}, - {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:9e5ac3437746189a9b4121db2a7b86056ac8786b12e88838696899328fc44bb2"}, - {file = "lxml-5.1.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4c9bda132ad108b387c33fabfea47866af87f4ea6ffb79418004f0521e63204"}, - {file = "lxml-5.1.0-cp311-cp311-win32.whl", hash = "sha256:bc64d1b1dab08f679fb89c368f4c05693f58a9faf744c4d390d7ed1d8223869b"}, - {file = "lxml-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:a5ab722ae5a873d8dcee1f5f45ddd93c34210aed44ff2dc643b5025981908cda"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9aa543980ab1fbf1720969af1d99095a548ea42e00361e727c58a40832439114"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6f11b77ec0979f7e4dc5ae081325a2946f1fe424148d3945f943ceaede98adb8"}, - {file = "lxml-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a36c506e5f8aeb40680491d39ed94670487ce6614b9d27cabe45d94cd5d63e1e"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f643ffd2669ffd4b5a3e9b41c909b72b2a1d5e4915da90a77e119b8d48ce867a"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16dd953fb719f0ffc5bc067428fc9e88f599e15723a85618c45847c96f11f431"}, - {file = "lxml-5.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16018f7099245157564d7148165132c70adb272fb5a17c048ba70d9cc542a1a1"}, - {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:82cd34f1081ae4ea2ede3d52f71b7be313756e99b4b5f829f89b12da552d3aa3"}, - {file = "lxml-5.1.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:19a1bc898ae9f06bccb7c3e1dfd73897ecbbd2c96afe9095a6026016e5ca97b8"}, - {file = "lxml-5.1.0-cp312-cp312-win32.whl", hash = "sha256:13521a321a25c641b9ea127ef478b580b5ec82aa2e9fc076c86169d161798b01"}, - {file = "lxml-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:1ad17c20e3666c035db502c78b86e58ff6b5991906e55bdbef94977700c72623"}, - {file = "lxml-5.1.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:24ef5a4631c0b6cceaf2dbca21687e29725b7c4e171f33a8f8ce23c12558ded1"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8d2900b7f5318bc7ad8631d3d40190b95ef2aa8cc59473b73b294e4a55e9f30f"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:601f4a75797d7a770daed8b42b97cd1bb1ba18bd51a9382077a6a247a12aa38d"}, - {file = "lxml-5.1.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b4b68c961b5cc402cbd99cca5eb2547e46ce77260eb705f4d117fd9c3f932b95"}, - {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:afd825e30f8d1f521713a5669b63657bcfe5980a916c95855060048b88e1adb7"}, - {file = "lxml-5.1.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:262bc5f512a66b527d026518507e78c2f9c2bd9eb5c8aeeb9f0eb43fcb69dc67"}, - {file = "lxml-5.1.0-cp36-cp36m-win32.whl", hash = "sha256:e856c1c7255c739434489ec9c8aa9cdf5179785d10ff20add308b5d673bed5cd"}, - {file = "lxml-5.1.0-cp36-cp36m-win_amd64.whl", hash = "sha256:c7257171bb8d4432fe9d6fdde4d55fdbe663a63636a17f7f9aaba9bcb3153ad7"}, - {file = "lxml-5.1.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b9e240ae0ba96477682aa87899d94ddec1cc7926f9df29b1dd57b39e797d5ab5"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a96f02ba1bcd330807fc060ed91d1f7a20853da6dd449e5da4b09bfcc08fdcf5"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e3898ae2b58eeafedfe99e542a17859017d72d7f6a63de0f04f99c2cb125936"}, - {file = "lxml-5.1.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:61c5a7edbd7c695e54fca029ceb351fc45cd8860119a0f83e48be44e1c464862"}, - {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:3aeca824b38ca78d9ee2ab82bd9883083d0492d9d17df065ba3b94e88e4d7ee6"}, - {file = "lxml-5.1.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:8f52fe6859b9db71ee609b0c0a70fea5f1e71c3462ecf144ca800d3f434f0764"}, - {file = "lxml-5.1.0-cp37-cp37m-win32.whl", hash = "sha256:d42e3a3fc18acc88b838efded0e6ec3edf3e328a58c68fbd36a7263a874906c8"}, - {file = "lxml-5.1.0-cp37-cp37m-win_amd64.whl", hash = "sha256:eac68f96539b32fce2c9b47eb7c25bb2582bdaf1bbb360d25f564ee9e04c542b"}, - {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:ae15347a88cf8af0949a9872b57a320d2605ae069bcdf047677318bc0bba45b1"}, - {file = "lxml-5.1.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c26aab6ea9c54d3bed716b8851c8bfc40cb249b8e9880e250d1eddde9f709bf5"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:342e95bddec3a698ac24378d61996b3ee5ba9acfeb253986002ac53c9a5f6f84"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:725e171e0b99a66ec8605ac77fa12239dbe061482ac854d25720e2294652eeaa"}, - {file = "lxml-5.1.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d184e0d5c918cff04cdde9dbdf9600e960161d773666958c9d7b565ccc60c45"}, - {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:98f3f020a2b736566c707c8e034945c02aa94e124c24f77ca097c446f81b01f1"}, - {file = "lxml-5.1.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6d48fc57e7c1e3df57be5ae8614bab6d4e7b60f65c5457915c26892c41afc59e"}, - {file = "lxml-5.1.0-cp38-cp38-win32.whl", hash = "sha256:7ec465e6549ed97e9f1e5ed51c657c9ede767bc1c11552f7f4d022c4df4a977a"}, - {file = "lxml-5.1.0-cp38-cp38-win_amd64.whl", hash = "sha256:b21b4031b53d25b0858d4e124f2f9131ffc1530431c6d1321805c90da78388d1"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:52427a7eadc98f9e62cb1368a5079ae826f94f05755d2d567d93ee1bc3ceb354"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6a2a2c724d97c1eb8cf966b16ca2915566a4904b9aad2ed9a09c748ffe14f969"}, - {file = "lxml-5.1.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:843b9c835580d52828d8f69ea4302537337a21e6b4f1ec711a52241ba4a824f3"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9b99f564659cfa704a2dd82d0684207b1aadf7d02d33e54845f9fc78e06b7581"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f8b0c78e7aac24979ef09b7f50da871c2de2def043d468c4b41f512d831e912"}, - {file = "lxml-5.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bcf86dfc8ff3e992fed847c077bd875d9e0ba2fa25d859c3a0f0f76f07f0c8d"}, - {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:49a9b4af45e8b925e1cd6f3b15bbba2c81e7dba6dce170c677c9cda547411e14"}, - {file = "lxml-5.1.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:280f3edf15c2a967d923bcfb1f8f15337ad36f93525828b40a0f9d6c2ad24890"}, - {file = "lxml-5.1.0-cp39-cp39-win32.whl", hash = "sha256:ed7326563024b6e91fef6b6c7a1a2ff0a71b97793ac33dbbcf38f6005e51ff6e"}, - {file = "lxml-5.1.0-cp39-cp39-win_amd64.whl", hash = "sha256:8d7b4beebb178e9183138f552238f7e6613162a42164233e2bda00cb3afac58f"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9bd0ae7cc2b85320abd5e0abad5ccee5564ed5f0cc90245d2f9a8ef330a8deae"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8c1d679df4361408b628f42b26a5d62bd3e9ba7f0c0e7969f925021554755aa"}, - {file = "lxml-5.1.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2ad3a8ce9e8a767131061a22cd28fdffa3cd2dc193f399ff7b81777f3520e372"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:304128394c9c22b6569eba2a6d98392b56fbdfbad58f83ea702530be80d0f9df"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d74fcaf87132ffc0447b3c685a9f862ffb5b43e70ea6beec2fb8057d5d2a1fea"}, - {file = "lxml-5.1.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:8cf5877f7ed384dabfdcc37922c3191bf27e55b498fecece9fd5c2c7aaa34c33"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:877efb968c3d7eb2dad540b6cabf2f1d3c0fbf4b2d309a3c141f79c7e0061324"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f14a4fb1c1c402a22e6a341a24c1341b4a3def81b41cd354386dcb795f83897"}, - {file = "lxml-5.1.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:25663d6e99659544ee8fe1b89b1a8c0aaa5e34b103fab124b17fa958c4a324a6"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8b9f19df998761babaa7f09e6bc169294eefafd6149aaa272081cbddc7ba4ca3"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e53d7e6a98b64fe54775d23a7c669763451340c3d44ad5e3a3b48a1efbdc96f"}, - {file = "lxml-5.1.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:c3cd1fc1dc7c376c54440aeaaa0dcc803d2126732ff5c6b68ccd619f2e64be4f"}, - {file = "lxml-5.1.0.tar.gz", hash = "sha256:3eea6ed6e6c918e468e693c41ef07f3c3acc310b70ddd9cc72d9ef84bc9564ca"}, + {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:1f7785f4f789fdb522729ae465adcaa099e2a3441519df750ebdccc481d961a1"}, + {file = "lxml-5.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6cc6ee342fb7fa2471bd9b6d6fdfc78925a697bf5c2bcd0a302e98b0d35bfad3"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:794f04eec78f1d0e35d9e0c36cbbb22e42d370dda1609fb03bcd7aeb458c6377"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c817d420c60a5183953c783b0547d9eb43b7b344a2c46f69513d5952a78cddf3"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2213afee476546a7f37c7a9b4ad4d74b1e112a6fafffc9185d6d21f043128c81"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b070bbe8d3f0f6147689bed981d19bbb33070225373338df755a46893528104a"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e02c5175f63effbd7c5e590399c118d5db6183bbfe8e0d118bdb5c2d1b48d937"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:3dc773b2861b37b41a6136e0b72a1a44689a9c4c101e0cddb6b854016acc0aa8"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_ppc64le.whl", hash = "sha256:d7520db34088c96cc0e0a3ad51a4fd5b401f279ee112aa2b7f8f976d8582606d"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_s390x.whl", hash = "sha256:bcbf4af004f98793a95355980764b3d80d47117678118a44a80b721c9913436a"}, + {file = "lxml-5.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:a2b44bec7adf3e9305ce6cbfa47a4395667e744097faed97abb4728748ba7d47"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:1c5bb205e9212d0ebddf946bc07e73fa245c864a5f90f341d11ce7b0b854475d"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:2c9d147f754b1b0e723e6afb7ba1566ecb162fe4ea657f53d2139bbf894d050a"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:3545039fa4779be2df51d6395e91a810f57122290864918b172d5dc7ca5bb433"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a91481dbcddf1736c98a80b122afa0f7296eeb80b72344d7f45dc9f781551f56"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2ddfe41ddc81f29a4c44c8ce239eda5ade4e7fc305fb7311759dd6229a080052"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a7baf9ffc238e4bf401299f50e971a45bfcc10a785522541a6e3179c83eabf0a"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:31e9a882013c2f6bd2f2c974241bf4ba68c85eba943648ce88936d23209a2e01"}, + {file = "lxml-5.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0a15438253b34e6362b2dc41475e7f80de76320f335e70c5528b7148cac253a1"}, + {file = "lxml-5.2.1-cp310-cp310-win32.whl", hash = "sha256:6992030d43b916407c9aa52e9673612ff39a575523c5f4cf72cdef75365709a5"}, + {file = "lxml-5.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:da052e7962ea2d5e5ef5bc0355d55007407087392cf465b7ad84ce5f3e25fe0f"}, + {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:70ac664a48aa64e5e635ae5566f5227f2ab7f66a3990d67566d9907edcbbf867"}, + {file = "lxml-5.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1ae67b4e737cddc96c99461d2f75d218bdf7a0c3d3ad5604d1f5e7464a2f9ffe"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f18a5a84e16886898e51ab4b1d43acb3083c39b14c8caeb3589aabff0ee0b270"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c6f2c8372b98208ce609c9e1d707f6918cc118fea4e2c754c9f0812c04ca116d"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:394ed3924d7a01b5bd9a0d9d946136e1c2f7b3dc337196d99e61740ed4bc6fe1"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5d077bc40a1fe984e1a9931e801e42959a1e6598edc8a3223b061d30fbd26bbc"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:764b521b75701f60683500d8621841bec41a65eb739b8466000c6fdbc256c240"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:3a6b45da02336895da82b9d472cd274b22dc27a5cea1d4b793874eead23dd14f"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_ppc64le.whl", hash = "sha256:5ea7b6766ac2dfe4bcac8b8595107665a18ef01f8c8343f00710b85096d1b53a"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_s390x.whl", hash = "sha256:e196a4ff48310ba62e53a8e0f97ca2bca83cdd2fe2934d8b5cb0df0a841b193a"}, + {file = "lxml-5.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:200e63525948e325d6a13a76ba2911f927ad399ef64f57898cf7c74e69b71095"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dae0ed02f6b075426accbf6b2863c3d0a7eacc1b41fb40f2251d931e50188dad"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:ab31a88a651039a07a3ae327d68ebdd8bc589b16938c09ef3f32a4b809dc96ef"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:df2e6f546c4df14bc81f9498bbc007fbb87669f1bb707c6138878c46b06f6510"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:5dd1537e7cc06efd81371f5d1a992bd5ab156b2b4f88834ca852de4a8ea523fa"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9b9ec9c9978b708d488bec36b9e4c94d88fd12ccac3e62134a9d17ddba910ea9"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:8e77c69d5892cb5ba71703c4057091e31ccf534bd7f129307a4d084d90d014b8"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:a8d5c70e04aac1eda5c829a26d1f75c6e5286c74743133d9f742cda8e53b9c2f"}, + {file = "lxml-5.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c94e75445b00319c1fad60f3c98b09cd63fe1134a8a953dcd48989ef42318534"}, + {file = "lxml-5.2.1-cp311-cp311-win32.whl", hash = "sha256:4951e4f7a5680a2db62f7f4ab2f84617674d36d2d76a729b9a8be4b59b3659be"}, + {file = "lxml-5.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:5c670c0406bdc845b474b680b9a5456c561c65cf366f8db5a60154088c92d102"}, + {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:abc25c3cab9ec7fcd299b9bcb3b8d4a1231877e425c650fa1c7576c5107ab851"}, + {file = "lxml-5.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6935bbf153f9a965f1e07c2649c0849d29832487c52bb4a5c5066031d8b44fd5"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d793bebb202a6000390a5390078e945bbb49855c29c7e4d56a85901326c3b5d9"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afd5562927cdef7c4f5550374acbc117fd4ecc05b5007bdfa57cc5355864e0a4"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0e7259016bc4345a31af861fdce942b77c99049d6c2107ca07dc2bba2435c1d9"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:530e7c04f72002d2f334d5257c8a51bf409db0316feee7c87e4385043be136af"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:59689a75ba8d7ffca577aefd017d08d659d86ad4585ccc73e43edbfc7476781a"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:f9737bf36262046213a28e789cc82d82c6ef19c85a0cf05e75c670a33342ac2c"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_ppc64le.whl", hash = "sha256:3a74c4f27167cb95c1d4af1c0b59e88b7f3e0182138db2501c353555f7ec57f4"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_s390x.whl", hash = "sha256:68a2610dbe138fa8c5826b3f6d98a7cfc29707b850ddcc3e21910a6fe51f6ca0"}, + {file = "lxml-5.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f0a1bc63a465b6d72569a9bba9f2ef0334c4e03958e043da1920299100bc7c08"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c2d35a1d047efd68027817b32ab1586c1169e60ca02c65d428ae815b593e65d4"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:79bd05260359170f78b181b59ce871673ed01ba048deef4bf49a36ab3e72e80b"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:865bad62df277c04beed9478fe665b9ef63eb28fe026d5dedcb89b537d2e2ea6"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:44f6c7caff88d988db017b9b0e4ab04934f11e3e72d478031efc7edcac6c622f"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71e97313406ccf55d32cc98a533ee05c61e15d11b99215b237346171c179c0b0"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:057cdc6b86ab732cf361f8b4d8af87cf195a1f6dc5b0ff3de2dced242c2015e0"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:f3bbbc998d42f8e561f347e798b85513ba4da324c2b3f9b7969e9c45b10f6169"}, + {file = "lxml-5.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:491755202eb21a5e350dae00c6d9a17247769c64dcf62d8c788b5c135e179dc4"}, + {file = "lxml-5.2.1-cp312-cp312-win32.whl", hash = "sha256:8de8f9d6caa7f25b204fc861718815d41cbcf27ee8f028c89c882a0cf4ae4134"}, + {file = "lxml-5.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:f2a9efc53d5b714b8df2b4b3e992accf8ce5bbdfe544d74d5c6766c9e1146a3a"}, + {file = "lxml-5.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:70a9768e1b9d79edca17890175ba915654ee1725975d69ab64813dd785a2bd5c"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c38d7b9a690b090de999835f0443d8aa93ce5f2064035dfc48f27f02b4afc3d0"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5670fb70a828663cc37552a2a85bf2ac38475572b0e9b91283dc09efb52c41d1"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_28_x86_64.whl", hash = "sha256:958244ad566c3ffc385f47dddde4145088a0ab893504b54b52c041987a8c1863"}, + {file = "lxml-5.2.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:b6241d4eee5f89453307c2f2bfa03b50362052ca0af1efecf9fef9a41a22bb4f"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2a66bf12fbd4666dd023b6f51223aed3d9f3b40fef06ce404cb75bafd3d89536"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:9123716666e25b7b71c4e1789ec829ed18663152008b58544d95b008ed9e21e9"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:0c3f67e2aeda739d1cc0b1102c9a9129f7dc83901226cc24dd72ba275ced4218"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:5d5792e9b3fb8d16a19f46aa8208987cfeafe082363ee2745ea8b643d9cc5b45"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_aarch64.whl", hash = "sha256:88e22fc0a6684337d25c994381ed8a1580a6f5ebebd5ad41f89f663ff4ec2885"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_ppc64le.whl", hash = "sha256:21c2e6b09565ba5b45ae161b438e033a86ad1736b8c838c766146eff8ceffff9"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_s390x.whl", hash = "sha256:afbbdb120d1e78d2ba8064a68058001b871154cc57787031b645c9142b937a62"}, + {file = "lxml-5.2.1-cp36-cp36m-musllinux_1_2_x86_64.whl", hash = "sha256:627402ad8dea044dde2eccde4370560a2b750ef894c9578e1d4f8ffd54000461"}, + {file = "lxml-5.2.1-cp36-cp36m-win32.whl", hash = "sha256:e89580a581bf478d8dcb97d9cd011d567768e8bc4095f8557b21c4d4c5fea7d0"}, + {file = "lxml-5.2.1-cp36-cp36m-win_amd64.whl", hash = "sha256:59565f10607c244bc4c05c0c5fa0c190c990996e0c719d05deec7030c2aa8289"}, + {file = "lxml-5.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:857500f88b17a6479202ff5fe5f580fc3404922cd02ab3716197adf1ef628029"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:56c22432809085b3f3ae04e6e7bdd36883d7258fcd90e53ba7b2e463efc7a6af"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a55ee573116ba208932e2d1a037cc4b10d2c1cb264ced2184d00b18ce585b2c0"}, + {file = "lxml-5.2.1-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:6cf58416653c5901e12624e4013708b6e11142956e7f35e7a83f1ab02f3fe456"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:64c2baa7774bc22dd4474248ba16fe1a7f611c13ac6123408694d4cc93d66dbd"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:74b28c6334cca4dd704e8004cba1955af0b778cf449142e581e404bd211fb619"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:7221d49259aa1e5a8f00d3d28b1e0b76031655ca74bb287123ef56c3db92f213"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:3dbe858ee582cbb2c6294dc85f55b5f19c918c2597855e950f34b660f1a5ede6"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_aarch64.whl", hash = "sha256:04ab5415bf6c86e0518d57240a96c4d1fcfc3cb370bb2ac2a732b67f579e5a04"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_ppc64le.whl", hash = "sha256:6ab833e4735a7e5533711a6ea2df26459b96f9eec36d23f74cafe03631647c41"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_s390x.whl", hash = "sha256:f443cdef978430887ed55112b491f670bba6462cea7a7742ff8f14b7abb98d75"}, + {file = "lxml-5.2.1-cp37-cp37m-musllinux_1_2_x86_64.whl", hash = "sha256:9e2addd2d1866fe112bc6f80117bcc6bc25191c5ed1bfbcf9f1386a884252ae8"}, + {file = "lxml-5.2.1-cp37-cp37m-win32.whl", hash = "sha256:f51969bac61441fd31f028d7b3b45962f3ecebf691a510495e5d2cd8c8092dbd"}, + {file = "lxml-5.2.1-cp37-cp37m-win_amd64.whl", hash = "sha256:b0b58fbfa1bf7367dde8a557994e3b1637294be6cf2169810375caf8571a085c"}, + {file = "lxml-5.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:804f74efe22b6a227306dd890eecc4f8c59ff25ca35f1f14e7482bbce96ef10b"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:08802f0c56ed150cc6885ae0788a321b73505d2263ee56dad84d200cab11c07a"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0f8c09ed18ecb4ebf23e02b8e7a22a05d6411911e6fabef3a36e4f371f4f2585"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e3d30321949861404323c50aebeb1943461a67cd51d4200ab02babc58bd06a86"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:b560e3aa4b1d49e0e6c847d72665384db35b2f5d45f8e6a5c0072e0283430533"}, + {file = "lxml-5.2.1-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:058a1308914f20784c9f4674036527e7c04f7be6fb60f5d61353545aa7fcb739"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:adfb84ca6b87e06bc6b146dc7da7623395db1e31621c4785ad0658c5028b37d7"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:417d14450f06d51f363e41cace6488519038f940676ce9664b34ebf5653433a5"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a2dfe7e2473f9b59496247aad6e23b405ddf2e12ef0765677b0081c02d6c2c0b"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:bf2e2458345d9bffb0d9ec16557d8858c9c88d2d11fed53998512504cd9df49b"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:58278b29cb89f3e43ff3e0c756abbd1518f3ee6adad9e35b51fb101c1c1daaec"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:64641a6068a16201366476731301441ce93457eb8452056f570133a6ceb15fca"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:78bfa756eab503673991bdcf464917ef7845a964903d3302c5f68417ecdc948c"}, + {file = "lxml-5.2.1-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:11a04306fcba10cd9637e669fd73aa274c1c09ca64af79c041aa820ea992b637"}, + {file = "lxml-5.2.1-cp38-cp38-win32.whl", hash = "sha256:66bc5eb8a323ed9894f8fa0ee6cb3e3fb2403d99aee635078fd19a8bc7a5a5da"}, + {file = "lxml-5.2.1-cp38-cp38-win_amd64.whl", hash = "sha256:9676bfc686fa6a3fa10cd4ae6b76cae8be26eb5ec6811d2a325636c460da1806"}, + {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:cf22b41fdae514ee2f1691b6c3cdeae666d8b7fa9434de445f12bbeee0cf48dd"}, + {file = "lxml-5.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:ec42088248c596dbd61d4ae8a5b004f97a4d91a9fd286f632e42e60b706718d7"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cd53553ddad4a9c2f1f022756ae64abe16da1feb497edf4d9f87f99ec7cf86bd"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feaa45c0eae424d3e90d78823f3828e7dc42a42f21ed420db98da2c4ecf0a2cb"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddc678fb4c7e30cf830a2b5a8d869538bc55b28d6c68544d09c7d0d8f17694dc"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:853e074d4931dbcba7480d4dcab23d5c56bd9607f92825ab80ee2bd916edea53"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4691d60512798304acb9207987e7b2b7c44627ea88b9d77489bbe3e6cc3bd4"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:beb72935a941965c52990f3a32d7f07ce869fe21c6af8b34bf6a277b33a345d3"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_ppc64le.whl", hash = "sha256:6588c459c5627fefa30139be4d2e28a2c2a1d0d1c265aad2ba1935a7863a4913"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_s390x.whl", hash = "sha256:588008b8497667f1ddca7c99f2f85ce8511f8f7871b4a06ceede68ab62dff64b"}, + {file = "lxml-5.2.1-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6787b643356111dfd4032b5bffe26d2f8331556ecb79e15dacb9275da02866e"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7c17b64b0a6ef4e5affae6a3724010a7a66bda48a62cfe0674dabd46642e8b54"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:27aa20d45c2e0b8cd05da6d4759649170e8dfc4f4e5ef33a34d06f2d79075d57"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d4f2cc7060dc3646632d7f15fe68e2fa98f58e35dd5666cd525f3b35d3fed7f8"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ff46d772d5f6f73564979cd77a4fffe55c916a05f3cb70e7c9c0590059fb29ef"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:96323338e6c14e958d775700ec8a88346014a85e5de73ac7967db0367582049b"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:52421b41ac99e9d91934e4d0d0fe7da9f02bfa7536bb4431b4c05c906c8c6919"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:7a7efd5b6d3e30d81ec68ab8a88252d7c7c6f13aaa875009fe3097eb4e30b84c"}, + {file = "lxml-5.2.1-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:0ed777c1e8c99b63037b91f9d73a6aad20fd035d77ac84afcc205225f8f41188"}, + {file = "lxml-5.2.1-cp39-cp39-win32.whl", hash = "sha256:644df54d729ef810dcd0f7732e50e5ad1bd0a135278ed8d6bcb06f33b6b6f708"}, + {file = "lxml-5.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:9ca66b8e90daca431b7ca1408cae085d025326570e57749695d6a01454790e95"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:9b0ff53900566bc6325ecde9181d89afadc59c5ffa39bddf084aaedfe3b06a11"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fd6037392f2d57793ab98d9e26798f44b8b4da2f2464388588f48ac52c489ea1"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b9c07e7a45bb64e21df4b6aa623cb8ba214dfb47d2027d90eac197329bb5e94"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3249cc2989d9090eeac5467e50e9ec2d40704fea9ab72f36b034ea34ee65ca98"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f42038016852ae51b4088b2862126535cc4fc85802bfe30dea3500fdfaf1864e"}, + {file = "lxml-5.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:533658f8fbf056b70e434dff7e7aa611bcacb33e01f75de7f821810e48d1bb66"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:622020d4521e22fb371e15f580d153134bfb68d6a429d1342a25f051ec72df1c"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efa7b51824aa0ee957ccd5a741c73e6851de55f40d807f08069eb4c5a26b2baa"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c6ad0fbf105f6bcc9300c00010a2ffa44ea6f555df1a2ad95c88f5656104817"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:e233db59c8f76630c512ab4a4daf5a5986da5c3d5b44b8e9fc742f2a24dbd460"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:6a014510830df1475176466b6087fc0c08b47a36714823e58d8b8d7709132a96"}, + {file = "lxml-5.2.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:d38c8f50ecf57f0463399569aa388b232cf1a2ffb8f0a9a5412d0db57e054860"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:5aea8212fb823e006b995c4dda533edcf98a893d941f173f6c9506126188860d"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff097ae562e637409b429a7ac958a20aab237a0378c42dabaa1e3abf2f896e5f"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f5d65c39f16717a47c36c756af0fb36144069c4718824b7533f803ecdf91138"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:3d0c3dd24bb4605439bf91068598d00c6370684f8de4a67c2992683f6c309d6b"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e32be23d538753a8adb6c85bd539f5fd3b15cb987404327c569dfc5fd8366e85"}, + {file = "lxml-5.2.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cc518cea79fd1e2f6c90baafa28906d4309d24f3a63e801d855e7424c5b34144"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a0af35bd8ebf84888373630f73f24e86bf016642fb8576fba49d3d6b560b7cbc"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8aca2e3a72f37bfc7b14ba96d4056244001ddcc18382bd0daa087fd2e68a354"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ca1e8188b26a819387b29c3895c47a5e618708fe6f787f3b1a471de2c4a94d9"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c8ba129e6d3b0136a0f50345b2cb3db53f6bda5dd8c7f5d83fbccba97fb5dcb5"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e998e304036198b4f6914e6a1e2b6f925208a20e2042563d9734881150c6c246"}, + {file = "lxml-5.2.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:d3be9b2076112e51b323bdf6d5a7f8a798de55fb8d95fcb64bd179460cdc0704"}, + {file = "lxml-5.2.1.tar.gz", hash = "sha256:3f7765e69bbce0906a7c74d5fe46d2c7a7596147318dbc08e4a2431f3060e306"}, ] [package.extras] cssselect = ["cssselect (>=0.7)"] +html-clean = ["lxml-html-clean"] html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] -source = ["Cython (>=3.0.7)"] +source = ["Cython (>=3.0.10)"] [[package]] name = "markdown-it-py" @@ -2116,39 +2217,39 @@ files = [ [[package]] name = "matplotlib" -version = "3.8.3" +version = "3.8.4" description = "Python plotting package" optional = false python-versions = ">=3.9" files = [ - {file = "matplotlib-3.8.3-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:cf60138ccc8004f117ab2a2bad513cc4d122e55864b4fe7adf4db20ca68a078f"}, - {file = "matplotlib-3.8.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5f557156f7116be3340cdeef7f128fa99b0d5d287d5f41a16e169819dcf22357"}, - {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f386cf162b059809ecfac3bcc491a9ea17da69fa35c8ded8ad154cd4b933d5ec"}, - {file = "matplotlib-3.8.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b3c5f96f57b0369c288bf6f9b5274ba45787f7e0589a34d24bdbaf6d3344632f"}, - {file = "matplotlib-3.8.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:83e0f72e2c116ca7e571c57aa29b0fe697d4c6425c4e87c6e994159e0c008635"}, - {file = "matplotlib-3.8.3-cp310-cp310-win_amd64.whl", hash = "sha256:1c5c8290074ba31a41db1dc332dc2b62def469ff33766cbe325d32a3ee291aea"}, - {file = "matplotlib-3.8.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5184e07c7e1d6d1481862ee361905b7059f7fe065fc837f7c3dc11eeb3f2f900"}, - {file = "matplotlib-3.8.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d7e7e0993d0758933b1a241a432b42c2db22dfa37d4108342ab4afb9557cbe3e"}, - {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04b36ad07eac9740fc76c2aa16edf94e50b297d6eb4c081e3add863de4bb19a7"}, - {file = "matplotlib-3.8.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c42dae72a62f14982f1474f7e5c9959fc4bc70c9de11cc5244c6e766200ba65"}, - {file = "matplotlib-3.8.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bf5932eee0d428192c40b7eac1399d608f5d995f975cdb9d1e6b48539a5ad8d0"}, - {file = "matplotlib-3.8.3-cp311-cp311-win_amd64.whl", hash = "sha256:40321634e3a05ed02abf7c7b47a50be50b53ef3eaa3a573847431a545585b407"}, - {file = "matplotlib-3.8.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:09074f8057917d17ab52c242fdf4916f30e99959c1908958b1fc6032e2d0f6d4"}, - {file = "matplotlib-3.8.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:5745f6d0fb5acfabbb2790318db03809a253096e98c91b9a31969df28ee604aa"}, - {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b97653d869a71721b639714b42d87cda4cfee0ee74b47c569e4874c7590c55c5"}, - {file = "matplotlib-3.8.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:242489efdb75b690c9c2e70bb5c6550727058c8a614e4c7716f363c27e10bba1"}, - {file = "matplotlib-3.8.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:83c0653c64b73926730bd9ea14aa0f50f202ba187c307a881673bad4985967b7"}, - {file = "matplotlib-3.8.3-cp312-cp312-win_amd64.whl", hash = "sha256:ef6c1025a570354297d6c15f7d0f296d95f88bd3850066b7f1e7b4f2f4c13a39"}, - {file = "matplotlib-3.8.3-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:c4af3f7317f8a1009bbb2d0bf23dfaba859eb7dd4ccbd604eba146dccaaaf0a4"}, - {file = "matplotlib-3.8.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c6e00a65d017d26009bac6808f637b75ceade3e1ff91a138576f6b3065eeeba"}, - {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e7b49ab49a3bea17802df6872f8d44f664ba8f9be0632a60c99b20b6db2165b7"}, - {file = "matplotlib-3.8.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6728dde0a3997396b053602dbd907a9bd64ec7d5cf99e728b404083698d3ca01"}, - {file = "matplotlib-3.8.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:813925d08fb86aba139f2d31864928d67511f64e5945ca909ad5bc09a96189bb"}, - {file = "matplotlib-3.8.3-cp39-cp39-win_amd64.whl", hash = "sha256:cd3a0c2be76f4e7be03d34a14d49ded6acf22ef61f88da600a18a5cd8b3c5f3c"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:fa93695d5c08544f4a0dfd0965f378e7afc410d8672816aff1e81be1f45dbf2e"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9764df0e8778f06414b9d281a75235c1e85071f64bb5d71564b97c1306a2afc"}, - {file = "matplotlib-3.8.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:5e431a09e6fab4012b01fc155db0ce6dccacdbabe8198197f523a4ef4805eb26"}, - {file = "matplotlib-3.8.3.tar.gz", hash = "sha256:7b416239e9ae38be54b028abbf9048aff5054a9aba5416bef0bd17f9162ce161"}, + {file = "matplotlib-3.8.4-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:abc9d838f93583650c35eca41cfcec65b2e7cb50fd486da6f0c49b5e1ed23014"}, + {file = "matplotlib-3.8.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f65c9f002d281a6e904976007b2d46a1ee2bcea3a68a8c12dda24709ddc9106"}, + {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ce1edd9f5383b504dbc26eeea404ed0a00656c526638129028b758fd43fc5f10"}, + {file = "matplotlib-3.8.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ecd79298550cba13a43c340581a3ec9c707bd895a6a061a78fa2524660482fc0"}, + {file = "matplotlib-3.8.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:90df07db7b599fe7035d2f74ab7e438b656528c68ba6bb59b7dc46af39ee48ef"}, + {file = "matplotlib-3.8.4-cp310-cp310-win_amd64.whl", hash = "sha256:ac24233e8f2939ac4fd2919eed1e9c0871eac8057666070e94cbf0b33dd9c338"}, + {file = "matplotlib-3.8.4-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:72f9322712e4562e792b2961971891b9fbbb0e525011e09ea0d1f416c4645661"}, + {file = "matplotlib-3.8.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:232ce322bfd020a434caaffbd9a95333f7c2491e59cfc014041d95e38ab90d1c"}, + {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6addbd5b488aedb7f9bc19f91cd87ea476206f45d7116fcfe3d31416702a82fa"}, + {file = "matplotlib-3.8.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc4ccdc64e3039fc303defd119658148f2349239871db72cd74e2eeaa9b80b71"}, + {file = "matplotlib-3.8.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b7a2a253d3b36d90c8993b4620183b55665a429da8357a4f621e78cd48b2b30b"}, + {file = "matplotlib-3.8.4-cp311-cp311-win_amd64.whl", hash = "sha256:8080d5081a86e690d7688ffa542532e87f224c38a6ed71f8fbed34dd1d9fedae"}, + {file = "matplotlib-3.8.4-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:6485ac1f2e84676cff22e693eaa4fbed50ef5dc37173ce1f023daef4687df616"}, + {file = "matplotlib-3.8.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:c89ee9314ef48c72fe92ce55c4e95f2f39d70208f9f1d9db4e64079420d8d732"}, + {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50bac6e4d77e4262c4340d7a985c30912054745ec99756ce213bfbc3cb3808eb"}, + {file = "matplotlib-3.8.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f51c4c869d4b60d769f7b4406eec39596648d9d70246428745a681c327a8ad30"}, + {file = "matplotlib-3.8.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b12ba985837e4899b762b81f5b2845bd1a28f4fdd1a126d9ace64e9c4eb2fb25"}, + {file = "matplotlib-3.8.4-cp312-cp312-win_amd64.whl", hash = "sha256:7a6769f58ce51791b4cb8b4d7642489df347697cd3e23d88266aaaee93b41d9a"}, + {file = "matplotlib-3.8.4-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:843cbde2f0946dadd8c5c11c6d91847abd18ec76859dc319362a0964493f0ba6"}, + {file = "matplotlib-3.8.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c13f041a7178f9780fb61cc3a2b10423d5e125480e4be51beaf62b172413b67"}, + {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb44f53af0a62dc80bba4443d9b27f2fde6acfdac281d95bc872dc148a6509cc"}, + {file = "matplotlib-3.8.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:606e3b90897554c989b1e38a258c626d46c873523de432b1462f295db13de6f9"}, + {file = "matplotlib-3.8.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9bb0189011785ea794ee827b68777db3ca3f93f3e339ea4d920315a0e5a78d54"}, + {file = "matplotlib-3.8.4-cp39-cp39-win_amd64.whl", hash = "sha256:6209e5c9aaccc056e63b547a8152661324404dd92340a6e479b3a7f24b42a5d0"}, + {file = "matplotlib-3.8.4-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:c7064120a59ce6f64103c9cefba8ffe6fba87f2c61d67c401186423c9a20fd35"}, + {file = "matplotlib-3.8.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a0e47eda4eb2614300fc7bb4657fced3e83d6334d03da2173b09e447418d499f"}, + {file = "matplotlib-3.8.4-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:493e9f6aa5819156b58fce42b296ea31969f2aab71c5b680b4ea7a3cb5c07d94"}, + {file = "matplotlib-3.8.4.tar.gz", hash = "sha256:8aac397d5e9ec158960e31c381c5ffc52ddd52bd9a47717e2a694038167dffea"}, ] [package.dependencies] @@ -2156,7 +2257,7 @@ contourpy = ">=1.0.1" cycler = ">=0.10" fonttools = ">=4.22.0" kiwisolver = ">=1.3.1" -numpy = ">=1.21,<2" +numpy = ">=1.21" packaging = ">=20.0" pillow = ">=8" pyparsing = ">=2.3.1" @@ -2281,13 +2382,13 @@ tests = ["pytest (>=4.6)"] [[package]] name = "msal" -version = "1.27.0" +version = "1.28.0" description = "The Microsoft Authentication Library (MSAL) for Python library enables your app to access the Microsoft Cloud by supporting authentication of users with Microsoft Azure Active Directory accounts (AAD) and Microsoft Accounts (MSA) using industry standard OAuth2 and OpenID Connect." optional = false -python-versions = ">=2.7" +python-versions = ">=3.7" files = [ - {file = "msal-1.27.0-py2.py3-none-any.whl", hash = "sha256:572d07149b83e7343a85a3bcef8e581167b4ac76befcbbb6eef0c0e19643cdc0"}, - {file = "msal-1.27.0.tar.gz", hash = "sha256:3109503c038ba6b307152b0e8d34f98113f2e7a78986e28d0baf5b5303afda52"}, + {file = "msal-1.28.0-py3-none-any.whl", hash = "sha256:3064f80221a21cd535ad8c3fafbb3a3582cd9c7e9af0bb789ae14f726a0ca99b"}, + {file = "msal-1.28.0.tar.gz", hash = "sha256:80bbabe34567cb734efd2ec1869b2d98195c927455369d8077b3c542088c5c9d"}, ] [package.dependencies] @@ -2418,38 +2519,38 @@ files = [ [[package]] name = "mypy" -version = "1.8.0" +version = "1.10.0" description = "Optional static typing for Python" optional = false python-versions = ">=3.8" files = [ - {file = "mypy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:485a8942f671120f76afffff70f259e1cd0f0cfe08f81c05d8816d958d4577d3"}, - {file = "mypy-1.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:df9824ac11deaf007443e7ed2a4a26bebff98d2bc43c6da21b2b64185da011c4"}, - {file = "mypy-1.8.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2afecd6354bbfb6e0160f4e4ad9ba6e4e003b767dd80d85516e71f2e955ab50d"}, - {file = "mypy-1.8.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8963b83d53ee733a6e4196954502b33567ad07dfd74851f32be18eb932fb1cb9"}, - {file = "mypy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:e46f44b54ebddbeedbd3d5b289a893219065ef805d95094d16a0af6630f5d410"}, - {file = "mypy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:855fe27b80375e5c5878492f0729540db47b186509c98dae341254c8f45f42ae"}, - {file = "mypy-1.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4c886c6cce2d070bd7df4ec4a05a13ee20c0aa60cb587e8d1265b6c03cf91da3"}, - {file = "mypy-1.8.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d19c413b3c07cbecf1f991e2221746b0d2a9410b59cb3f4fb9557f0365a1a817"}, - {file = "mypy-1.8.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9261ed810972061388918c83c3f5cd46079d875026ba97380f3e3978a72f503d"}, - {file = "mypy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:51720c776d148bad2372ca21ca29256ed483aa9a4cdefefcef49006dff2a6835"}, - {file = "mypy-1.8.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:52825b01f5c4c1c4eb0db253ec09c7aa17e1a7304d247c48b6f3599ef40db8bd"}, - {file = "mypy-1.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:f5ac9a4eeb1ec0f1ccdc6f326bcdb464de5f80eb07fb38b5ddd7b0de6bc61e55"}, - {file = "mypy-1.8.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:afe3fe972c645b4632c563d3f3eff1cdca2fa058f730df2b93a35e3b0c538218"}, - {file = "mypy-1.8.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:42c6680d256ab35637ef88891c6bd02514ccb7e1122133ac96055ff458f93fc3"}, - {file = "mypy-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:720a5ca70e136b675af3af63db533c1c8c9181314d207568bbe79051f122669e"}, - {file = "mypy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:028cf9f2cae89e202d7b6593cd98db6759379f17a319b5faf4f9978d7084cdc6"}, - {file = "mypy-1.8.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4e6d97288757e1ddba10dd9549ac27982e3e74a49d8d0179fc14d4365c7add66"}, - {file = "mypy-1.8.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f1478736fcebb90f97e40aff11a5f253af890c845ee0c850fe80aa060a267c6"}, - {file = "mypy-1.8.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:42419861b43e6962a649068a61f4a4839205a3ef525b858377a960b9e2de6e0d"}, - {file = "mypy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:2b5b6c721bd4aabaadead3a5e6fa85c11c6c795e0c81a7215776ef8afc66de02"}, - {file = "mypy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5c1538c38584029352878a0466f03a8ee7547d7bd9f641f57a0f3017a7c905b8"}, - {file = "mypy-1.8.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ef4be7baf08a203170f29e89d79064463b7fc7a0908b9d0d5114e8009c3a259"}, - {file = "mypy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7178def594014aa6c35a8ff411cf37d682f428b3b5617ca79029d8ae72f5402b"}, - {file = "mypy-1.8.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:ab3c84fa13c04aeeeabb2a7f67a25ef5d77ac9d6486ff33ded762ef353aa5592"}, - {file = "mypy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:99b00bc72855812a60d253420d8a2eae839b0afa4938f09f4d2aa9bb4654263a"}, - {file = "mypy-1.8.0-py3-none-any.whl", hash = "sha256:538fd81bb5e430cc1381a443971c0475582ff9f434c16cd46d2c66763ce85d9d"}, - {file = "mypy-1.8.0.tar.gz", hash = "sha256:6ff8b244d7085a0b425b56d327b480c3b29cafbd2eff27316a004f9a7391ae07"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:da1cbf08fb3b851ab3b9523a884c232774008267b1f83371ace57f412fe308c2"}, + {file = "mypy-1.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:12b6bfc1b1a66095ab413160a6e520e1dc076a28f3e22f7fb25ba3b000b4ef99"}, + {file = "mypy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e36fb078cce9904c7989b9693e41cb9711e0600139ce3970c6ef814b6ebc2b2"}, + {file = "mypy-1.10.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2b0695d605ddcd3eb2f736cd8b4e388288c21e7de85001e9f85df9187f2b50f9"}, + {file = "mypy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:cd777b780312ddb135bceb9bc8722a73ec95e042f911cc279e2ec3c667076051"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3be66771aa5c97602f382230165b856c231d1277c511c9a8dd058be4784472e1"}, + {file = "mypy-1.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8b2cbaca148d0754a54d44121b5825ae71868c7592a53b7292eeb0f3fdae95ee"}, + {file = "mypy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1ec404a7cbe9fc0e92cb0e67f55ce0c025014e26d33e54d9e506a0f2d07fe5de"}, + {file = "mypy-1.10.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:e22e1527dc3d4aa94311d246b59e47f6455b8729f4968765ac1eacf9a4760bc7"}, + {file = "mypy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:a87dbfa85971e8d59c9cc1fcf534efe664d8949e4c0b6b44e8ca548e746a8d53"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a781f6ad4bab20eef8b65174a57e5203f4be627b46291f4589879bf4e257b97b"}, + {file = "mypy-1.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b808e12113505b97d9023b0b5e0c0705a90571c6feefc6f215c1df9381256e30"}, + {file = "mypy-1.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f55583b12156c399dce2df7d16f8a5095291354f1e839c252ec6c0611e86e2e"}, + {file = "mypy-1.10.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4cf18f9d0efa1b16478c4c129eabec36148032575391095f73cae2e722fcf9d5"}, + {file = "mypy-1.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:bc6ac273b23c6b82da3bb25f4136c4fd42665f17f2cd850771cb600bdd2ebeda"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9fd50226364cd2737351c79807775136b0abe084433b55b2e29181a4c3c878c0"}, + {file = "mypy-1.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f90cff89eea89273727d8783fef5d4a934be2fdca11b47def50cf5d311aff727"}, + {file = "mypy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fcfc70599efde5c67862a07a1aaf50e55bce629ace26bb19dc17cece5dd31ca4"}, + {file = "mypy-1.10.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:075cbf81f3e134eadaf247de187bd604748171d6b79736fa9b6c9685b4083061"}, + {file = "mypy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:3f298531bca95ff615b6e9f2fc0333aae27fa48052903a0ac90215021cdcfa4f"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:fa7ef5244615a2523b56c034becde4e9e3f9b034854c93639adb667ec9ec2976"}, + {file = "mypy-1.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3236a4c8f535a0631f85f5fcdffba71c7feeef76a6002fcba7c1a8e57c8be1ec"}, + {file = "mypy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a2b5cdbb5dd35aa08ea9114436e0d79aceb2f38e32c21684dcf8e24e1e92821"}, + {file = "mypy-1.10.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92f93b21c0fe73dc00abf91022234c79d793318b8a96faac147cd579c1671746"}, + {file = "mypy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:28d0e038361b45f099cc086d9dd99c15ff14d0188f44ac883010e172ce86c38a"}, + {file = "mypy-1.10.0-py3-none-any.whl", hash = "sha256:f8c083976eb530019175aabadb60921e73b4f45736760826aa1689dda8208aee"}, + {file = "mypy-1.10.0.tar.gz", hash = "sha256:3d087fcbec056c4ee34974da493a826ce316947485cef3901f511848e687c131"}, ] [package.dependencies] @@ -2475,17 +2576,17 @@ files = [ [[package]] name = "myst-parser" -version = "2.0.0" +version = "3.0.1" description = "An extended [CommonMark](https://spec.commonmark.org/) compliant parser," optional = false python-versions = ">=3.8" files = [ - {file = "myst_parser-2.0.0-py3-none-any.whl", hash = "sha256:7c36344ae39c8e740dad7fdabf5aa6fc4897a813083c6cc9990044eb93656b14"}, - {file = "myst_parser-2.0.0.tar.gz", hash = "sha256:ea929a67a6a0b1683cdbe19b8d2e724cd7643f8aa3e7bb18dd65beac3483bead"}, + {file = "myst_parser-3.0.1-py3-none-any.whl", hash = "sha256:6457aaa33a5d474aca678b8ead9b3dc298e89c68e67012e73146ea6fd54babf1"}, + {file = "myst_parser-3.0.1.tar.gz", hash = "sha256:88f0cb406cb363b077d176b51c476f62d60604d68a8dcdf4832e080441301a87"}, ] [package.dependencies] -docutils = ">=0.16,<0.21" +docutils = ">=0.18,<0.22" jinja2 = "*" markdown-it-py = ">=3.0,<4.0" mdit-py-plugins = ">=0.4,<1.0" @@ -2495,9 +2596,9 @@ sphinx = ">=6,<8" [package.extras] code-style = ["pre-commit (>=3.0,<4.0)"] linkify = ["linkify-it-py (>=2.0,<3.0)"] -rtd = ["ipython", "pydata-sphinx-theme (==v0.13.0rc4)", "sphinx-autodoc2 (>=0.4.2,<0.5.0)", "sphinx-book-theme (==1.0.0rc2)", "sphinx-copybutton", "sphinx-design2", "sphinx-pyscript", "sphinx-tippy (>=0.3.1)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.8.2,<0.9.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] -testing = ["beautifulsoup4", "coverage[toml]", "pytest (>=7,<8)", "pytest-cov", "pytest-param-files (>=0.3.4,<0.4.0)", "pytest-regressions", "sphinx-pytest"] -testing-docutils = ["pygments", "pytest (>=7,<8)", "pytest-param-files (>=0.3.4,<0.4.0)"] +rtd = ["ipython", "sphinx (>=7)", "sphinx-autodoc2 (>=0.5.0,<0.6.0)", "sphinx-book-theme (>=1.1,<2.0)", "sphinx-copybutton", "sphinx-design", "sphinx-pyscript", "sphinx-tippy (>=0.4.3)", "sphinx-togglebutton", "sphinxext-opengraph (>=0.9.0,<0.10.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)"] +testing = ["beautifulsoup4", "coverage[toml]", "defusedxml", "pytest (>=8,<9)", "pytest-cov", "pytest-param-files (>=0.6.0,<0.7.0)", "pytest-regressions", "sphinx-pytest"] +testing-docutils = ["pygments", "pytest (>=8,<9)", "pytest-param-files (>=0.6.0,<0.7.0)"] [[package]] name = "natsort" @@ -2567,40 +2668,46 @@ files = [ [[package]] name = "onnx" -version = "1.15.0" +version = "1.16.0" description = "Open Neural Network Exchange" optional = false python-versions = ">=3.8" files = [ - {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_universal2.whl", hash = "sha256:51cacb6aafba308aaf462252ced562111f6991cdc7bc57a6c554c3519453a8ff"}, - {file = "onnx-1.15.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:0aee26b6f7f7da7e840de75ad9195a77a147d0662c94eaa6483be13ba468ffc1"}, - {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baf6ef6c93b3b843edb97a8d5b3d229a1301984f3f8dee859c29634d2083e6f9"}, - {file = "onnx-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96ed899fe6000edc05bb2828863d3841cfddd5a7cf04c1a771f112e94de75d9f"}, - {file = "onnx-1.15.0-cp310-cp310-win32.whl", hash = "sha256:f1ad3d77fc2f4b4296f0ac2c8cadd8c1dcf765fc586b737462d3a0fe8f7c696a"}, - {file = "onnx-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:ca4ebc4f47109bfb12c8c9e83dd99ec5c9f07d2e5f05976356c6ccdce3552010"}, - {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_universal2.whl", hash = "sha256:233ffdb5ca8cc2d960b10965a763910c0830b64b450376da59207f454701f343"}, - {file = "onnx-1.15.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:51fa79c9ea9af033638ec51f9177b8e76c55fad65bb83ea96ee88fafade18ee7"}, - {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f277d4861729f5253a51fa41ce91bfec1c4574ee41b5637056b43500917295ce"}, - {file = "onnx-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8a7c94d2ebead8f739fdb70d1ce5a71726f4e17b3e5b8ad64455ea1b2801a85"}, - {file = "onnx-1.15.0-cp311-cp311-win32.whl", hash = "sha256:17dcfb86a8c6bdc3971443c29b023dd9c90ff1d15d8baecee0747a6b7f74e650"}, - {file = "onnx-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:60a3e28747e305cd2e766e6a53a0a6d952cf9e72005ec6023ce5e07666676a4e"}, - {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_universal2.whl", hash = "sha256:6b5c798d9e0907eaf319e3d3e7c89a2ed9a854bcb83da5fefb6d4c12d5e90721"}, - {file = "onnx-1.15.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:a4f774ff50092fe19bd8f46b2c9b27b1d30fbd700c22abde48a478142d464322"}, - {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b2b0e7f3938f2d994c34616bfb8b4b1cebbc4a0398483344fe5e9f2fe95175e6"}, - {file = "onnx-1.15.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49cebebd0020a4b12c1dd0909d426631212ef28606d7e4d49463d36abe7639ad"}, - {file = "onnx-1.15.0-cp38-cp38-win32.whl", hash = "sha256:1fdf8a3ff75abc2b32c83bf27fb7c18d6b976c9c537263fadd82b9560fe186fa"}, - {file = "onnx-1.15.0-cp38-cp38-win_amd64.whl", hash = "sha256:763e55c26e8de3a2dce008d55ae81b27fa8fb4acbb01a29b9f3c01f200c4d676"}, - {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_universal2.whl", hash = "sha256:b2d5e802837629fc9c86f19448d19dd04d206578328bce202aeb3d4bedab43c4"}, - {file = "onnx-1.15.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:9a9cfbb5e5d5d88f89d0dfc9df5fb858899db874e1d5ed21e76c481f3cafc90d"}, - {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f472bbe5cb670a0a4a4db08f41fde69b187a009d0cb628f964840d3f83524e9"}, - {file = "onnx-1.15.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bf2de9bef64792e5b8080c678023ac7d2b9e05d79a3e17e92cf6a4a624831d2"}, - {file = "onnx-1.15.0-cp39-cp39-win32.whl", hash = "sha256:ef4d9eb44b111e69e4534f3233fc2c13d1e26920d24ae4359d513bd54694bc6d"}, - {file = "onnx-1.15.0-cp39-cp39-win_amd64.whl", hash = "sha256:95d7a3e2d79d371e272e39ae3f7547e0b116d0c7f774a4004e97febe6c93507f"}, - {file = "onnx-1.15.0.tar.gz", hash = "sha256:b18461a7d38f286618ca2a6e78062a2a9c634ce498e631e708a8041b00094825"}, + {file = "onnx-1.16.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:9eadbdce25b19d6216f426d6d99b8bc877a65ed92cbef9707751c6669190ba4f"}, + {file = "onnx-1.16.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:034ae21a2aaa2e9c14119a840d2926d213c27aad29e5e3edaa30145a745048e1"}, + {file = "onnx-1.16.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ec22a43d74eb1f2303373e2fbe7fbcaa45fb225f4eb146edfed1356ada7a9aea"}, + {file = "onnx-1.16.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:298f28a2b5ac09145fa958513d3d1e6b349ccf86a877dbdcccad57713fe360b3"}, + {file = "onnx-1.16.0-cp310-cp310-win32.whl", hash = "sha256:66300197b52beca08bc6262d43c103289c5d45fde43fb51922ed1eb83658cf0c"}, + {file = "onnx-1.16.0-cp310-cp310-win_amd64.whl", hash = "sha256:ae0029f5e47bf70a1a62e7f88c80bca4ef39b844a89910039184221775df5e43"}, + {file = "onnx-1.16.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:f51179d4af3372b4f3800c558d204b592c61e4b4a18b8f61e0eea7f46211221a"}, + {file = "onnx-1.16.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:5202559070afec5144332db216c20f2fff8323cf7f6512b0ca11b215eacc5bf3"}, + {file = "onnx-1.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77579e7c15b4df39d29465b216639a5f9b74026bdd9e4b6306cd19a32dcfe67c"}, + {file = "onnx-1.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e60ca76ac24b65c25860d0f2d2cdd96d6320d062a01dd8ce87c5743603789b8"}, + {file = "onnx-1.16.0-cp311-cp311-win32.whl", hash = "sha256:81b4ee01bc554e8a2b11ac6439882508a5377a1c6b452acd69a1eebb83571117"}, + {file = "onnx-1.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:7449241e70b847b9c3eb8dae622df8c1b456d11032a9d7e26e0ee8a698d5bf86"}, + {file = "onnx-1.16.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:03a627488b1a9975d95d6a55582af3e14c7f3bb87444725b999935ddd271d352"}, + {file = "onnx-1.16.0-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:c392faeabd9283ee344ccb4b067d1fea9dfc614fa1f0de7c47589efd79e15e78"}, + {file = "onnx-1.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0efeb46985de08f0efe758cb54ad3457e821a05c2eaf5ba2ccb8cd1602c08084"}, + {file = "onnx-1.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddf14a3d32234f23e44abb73a755cb96a423fac7f004e8f046f36b10214151ee"}, + {file = "onnx-1.16.0-cp312-cp312-win32.whl", hash = "sha256:62a2e27ae8ba5fc9b4a2620301446a517b5ffaaf8566611de7a7c2160f5bcf4c"}, + {file = "onnx-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:3e0860fea94efde777e81a6f68f65761ed5e5f3adea2e050d7fbe373a9ae05b3"}, + {file = "onnx-1.16.0-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:70a90649318f3470985439ea078277c9fb2a2e6e2fd7c8f3f2b279402ad6c7e6"}, + {file = "onnx-1.16.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:71839546b7f93be4fa807995b182ab4b4414c9dbf049fee11eaaced16fcf8df2"}, + {file = "onnx-1.16.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7665217c45a61eb44718c8e9349d2ad004efa0cb9fbc4be5c6d5e18b9fe12b52"}, + {file = "onnx-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5752bbbd5717304a7643643dba383a2fb31e8eb0682f4e7b7d141206328a73b"}, + {file = "onnx-1.16.0-cp38-cp38-win32.whl", hash = "sha256:257858cbcb2055284f09fa2ae2b1cfd64f5850367da388d6e7e7b05920a40c90"}, + {file = "onnx-1.16.0-cp38-cp38-win_amd64.whl", hash = "sha256:209fe84995a28038e29ae8369edd35f33e0ef1ebc3bddbf6584629823469deb1"}, + {file = "onnx-1.16.0-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:8cf3e518b1b1b960be542e7c62bed4e5219e04c85d540817b7027029537dec92"}, + {file = "onnx-1.16.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:30f02beaf081c7d9fa3a8c566a912fc4408e28fc33b1452d58f890851691d364"}, + {file = "onnx-1.16.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7fb29a9a692b522deef1f6b8f2145da62c0c43ea1ed5b4c0f66f827fdc28847d"}, + {file = "onnx-1.16.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7755cbd5f4e47952e37276ea5978a46fc8346684392315902b5ed4a719d87d06"}, + {file = "onnx-1.16.0-cp39-cp39-win32.whl", hash = "sha256:7532343dc5b8b5e7c3e3efa441a3100552f7600155c4db9120acd7574f64ffbf"}, + {file = "onnx-1.16.0-cp39-cp39-win_amd64.whl", hash = "sha256:d7886c05aa6d583ec42f6287678923c1e343afc4350e49d5b36a0023772ffa22"}, + {file = "onnx-1.16.0.tar.gz", hash = "sha256:237c6987c6c59d9f44b6136f5819af79574f8d96a760a1fa843bede11f3822f7"}, ] [package.dependencies] -numpy = "*" +numpy = ">=1.20" protobuf = ">=3.20.2" [package.extras] @@ -2608,36 +2715,36 @@ reference = ["Pillow", "google-re2"] [[package]] name = "onnxruntime" -version = "1.17.1" +version = "1.17.3" description = "ONNX Runtime is a runtime accelerator for Machine Learning models" optional = false python-versions = "*" files = [ - {file = "onnxruntime-1.17.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d43ac17ac4fa3c9096ad3c0e5255bb41fd134560212dc124e7f52c3159af5d21"}, - {file = "onnxruntime-1.17.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:55b5e92a4c76a23981c998078b9bf6145e4fb0b016321a8274b1607bd3c6bd35"}, - {file = "onnxruntime-1.17.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ebbcd2bc3a066cf54e6f18c75708eb4d309ef42be54606d22e5bdd78afc5b0d7"}, - {file = "onnxruntime-1.17.1-cp310-cp310-win32.whl", hash = "sha256:5e3716b5eec9092e29a8d17aab55e737480487deabfca7eac3cd3ed952b6ada9"}, - {file = "onnxruntime-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:fbb98cced6782ae1bb799cc74ddcbbeeae8819f3ad1d942a74d88e72b6511337"}, - {file = "onnxruntime-1.17.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:36fd6f87a1ecad87e9c652e42407a50fb305374f9a31d71293eb231caae18784"}, - {file = "onnxruntime-1.17.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99a8bddeb538edabc524d468edb60ad4722cff8a49d66f4e280c39eace70500b"}, - {file = "onnxruntime-1.17.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fd7fddb4311deb5a7d3390cd8e9b3912d4d963efbe4dfe075edbaf18d01c024e"}, - {file = "onnxruntime-1.17.1-cp311-cp311-win32.whl", hash = "sha256:606a7cbfb6680202b0e4f1890881041ffc3ac6e41760a25763bd9fe146f0b335"}, - {file = "onnxruntime-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:53e4e06c0a541696ebdf96085fd9390304b7b04b748a19e02cf3b35c869a1e76"}, - {file = "onnxruntime-1.17.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:40f08e378e0f85929712a2b2c9b9a9cc400a90c8a8ca741d1d92c00abec60843"}, - {file = "onnxruntime-1.17.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ac79da6d3e1bb4590f1dad4bb3c2979d7228555f92bb39820889af8b8e6bd472"}, - {file = "onnxruntime-1.17.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ae9ba47dc099004e3781f2d0814ad710a13c868c739ab086fc697524061695ea"}, - {file = "onnxruntime-1.17.1-cp312-cp312-win32.whl", hash = "sha256:2dff1a24354220ac30e4a4ce2fb1df38cb1ea59f7dac2c116238d63fe7f4c5ff"}, - {file = "onnxruntime-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:6226a5201ab8cafb15e12e72ff2a4fc8f50654e8fa5737c6f0bd57c5ff66827e"}, - {file = "onnxruntime-1.17.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:cd0c07c0d1dfb8629e820b05fda5739e4835b3b82faf43753d2998edf2cf00aa"}, - {file = "onnxruntime-1.17.1-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:617ebdf49184efa1ba6e4467e602fbfa029ed52c92f13ce3c9f417d303006381"}, - {file = "onnxruntime-1.17.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9dae9071e3facdf2920769dceee03b71c684b6439021defa45b830d05e148924"}, - {file = "onnxruntime-1.17.1-cp38-cp38-win32.whl", hash = "sha256:835d38fa1064841679433b1aa8138b5e1218ddf0cfa7a3ae0d056d8fd9cec713"}, - {file = "onnxruntime-1.17.1-cp38-cp38-win_amd64.whl", hash = "sha256:96621e0c555c2453bf607606d08af3f70fbf6f315230c28ddea91754e17ad4e6"}, - {file = "onnxruntime-1.17.1-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:7a9539935fb2d78ebf2cf2693cad02d9930b0fb23cdd5cf37a7df813e977674d"}, - {file = "onnxruntime-1.17.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:45c6a384e9d9a29c78afff62032a46a993c477b280247a7e335df09372aedbe9"}, - {file = "onnxruntime-1.17.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:4e19f966450f16863a1d6182a685ca33ae04d7772a76132303852d05b95411ea"}, - {file = "onnxruntime-1.17.1-cp39-cp39-win32.whl", hash = "sha256:e2ae712d64a42aac29ed7a40a426cb1e624a08cfe9273dcfe681614aa65b07dc"}, - {file = "onnxruntime-1.17.1-cp39-cp39-win_amd64.whl", hash = "sha256:f7e9f7fb049825cdddf4a923cfc7c649d84d63c0134315f8e0aa9e0c3004672c"}, + {file = "onnxruntime-1.17.3-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:d86dde9c0bb435d709e51bd25991c9fe5b9a5b168df45ce119769edc4d198b15"}, + {file = "onnxruntime-1.17.3-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9d87b68bf931ac527b2d3c094ead66bb4381bac4298b65f46c54fe4d1e255865"}, + {file = "onnxruntime-1.17.3-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:26e950cf0333cf114a155f9142e71da344d2b08dfe202763a403ae81cc02ebd1"}, + {file = "onnxruntime-1.17.3-cp310-cp310-win32.whl", hash = "sha256:0962a4d0f5acebf62e1f0bf69b6e0adf16649115d8de854c1460e79972324d68"}, + {file = "onnxruntime-1.17.3-cp310-cp310-win_amd64.whl", hash = "sha256:468ccb8a0faa25c681a41787b1594bf4448b0252d3efc8b62fd8b2411754340f"}, + {file = "onnxruntime-1.17.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:e8cd90c1c17d13d47b89ab076471e07fb85467c01dcd87a8b8b5cdfbcb40aa51"}, + {file = "onnxruntime-1.17.3-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a058b39801baefe454eeb8acf3ada298c55a06a4896fafc224c02d79e9037f60"}, + {file = "onnxruntime-1.17.3-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2f823d5eb4807007f3da7b27ca972263df6a1836e6f327384eb266274c53d05d"}, + {file = "onnxruntime-1.17.3-cp311-cp311-win32.whl", hash = "sha256:b66b23f9109e78ff2791628627a26f65cd335dcc5fbd67ff60162733a2f7aded"}, + {file = "onnxruntime-1.17.3-cp311-cp311-win_amd64.whl", hash = "sha256:570760ca53a74cdd751ee49f13de70d1384dcf73d9888b8deac0917023ccda6d"}, + {file = "onnxruntime-1.17.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:77c318178d9c16e9beadd9a4070d8aaa9f57382c3f509b01709f0f010e583b99"}, + {file = "onnxruntime-1.17.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:23da8469049b9759082e22c41a444f44a520a9c874b084711b6343672879f50b"}, + {file = "onnxruntime-1.17.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2949730215af3f9289008b2e31e9bbef952012a77035b911c4977edea06f3f9e"}, + {file = "onnxruntime-1.17.3-cp312-cp312-win32.whl", hash = "sha256:6c7555a49008f403fb3b19204671efb94187c5085976ae526cb625f6ede317bc"}, + {file = "onnxruntime-1.17.3-cp312-cp312-win_amd64.whl", hash = "sha256:58672cf20293a1b8a277a5c6c55383359fcdf6119b2f14df6ce3b140f5001c39"}, + {file = "onnxruntime-1.17.3-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:4395ba86e3c1e93c794a00619ef1aec597ab78f5a5039f3c6d2e9d0695c0a734"}, + {file = "onnxruntime-1.17.3-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bdf354c04344ec38564fc22394e1fe08aa6d70d790df00159205a0055c4a4d3f"}, + {file = "onnxruntime-1.17.3-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a94b600b7af50e922d44b95a57981e3e35103c6e3693241a03d3ca204740bbda"}, + {file = "onnxruntime-1.17.3-cp38-cp38-win32.whl", hash = "sha256:5a335c76f9c002a8586c7f38bc20fe4b3725ced21f8ead835c3e4e507e42b2ab"}, + {file = "onnxruntime-1.17.3-cp38-cp38-win_amd64.whl", hash = "sha256:8f56a86fbd0ddc8f22696ddeda0677b041381f4168a2ca06f712ef6ec6050d6d"}, + {file = "onnxruntime-1.17.3-cp39-cp39-macosx_11_0_universal2.whl", hash = "sha256:e0ae39f5452278cd349520c296e7de3e90d62dc5b0157c6868e2748d7f28b871"}, + {file = "onnxruntime-1.17.3-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3ff2dc012bd930578aff5232afd2905bf16620815f36783a941aafabf94b3702"}, + {file = "onnxruntime-1.17.3-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cf6c37483782e4785019b56e26224a25e9b9a35b849d0169ce69189867a22bb1"}, + {file = "onnxruntime-1.17.3-cp39-cp39-win32.whl", hash = "sha256:351bf5a1140dcc43bfb8d3d1a230928ee61fcd54b0ea664c8e9a889a8e3aa515"}, + {file = "onnxruntime-1.17.3-cp39-cp39-win_amd64.whl", hash = "sha256:57a3de15778da8d6cc43fbf6cf038e1e746146300b5f0b1fbf01f6f795dc6440"}, ] [package.dependencies] @@ -2715,13 +2822,13 @@ numpy = {version = ">=1.23.5", markers = "python_version >= \"3.11\""} [[package]] name = "packaging" -version = "23.2" +version = "24.0" description = "Core utilities for Python packages" optional = false python-versions = ">=3.7" files = [ - {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, - {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, + {file = "packaging-24.0-py3-none-any.whl", hash = "sha256:2ddfb553fdf02fb784c234c7ba6ccc288296ceabec964ad2eae3777778130bc5"}, + {file = "packaging-24.0.tar.gz", hash = "sha256:eb82c5e3e56209074766e6885bb04b8c38a0c015d0a30036ebe7ece34c9989e9"}, ] [[package]] @@ -2826,13 +2933,13 @@ panda3d-simplepbr = ">=0.6" [[package]] name = "panda3d-simplepbr" -version = "0.11.2" -description = "A simple, lightweight PBR render pipeline for Panda3D" +version = "0.12.0" +description = "A straight-forward, easy-to-use, drop-in, PBR replacement for Panda3D's builtin auto shader" optional = false python-versions = ">=3.8" files = [ - {file = "panda3d-simplepbr-0.11.2.tar.gz", hash = "sha256:89469f9be0e15fd8888a277f60ba08eb31b90354dcba80fc5aa7ccccee56be2a"}, - {file = "panda3d_simplepbr-0.11.2-py3-none-any.whl", hash = "sha256:eca198004ed4a6635ac9180695440390d52c73eec0b6e02c317d000e1e4d1518"}, + {file = "panda3d-simplepbr-0.12.0.tar.gz", hash = "sha256:c71d490afeeb3a90455dcfde1d30c41f321a38742a97d18834e5c31016331ed5"}, + {file = "panda3d_simplepbr-0.12.0-py3-none-any.whl", hash = "sha256:6c43d1990ff07840cf1c557561d6122fd1250d8e76aacf227b61c3789149bcf9"}, ] [package.dependencies] @@ -2844,44 +2951,44 @@ test = ["pylint (>=3.0.0,<3.1.0)", "pytest", "pytest-pylint"] [[package]] name = "pandas" -version = "2.2.1" +version = "2.2.2" description = "Powerful data structures for data analysis, time series, and statistics" optional = false python-versions = ">=3.9" files = [ - {file = "pandas-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8df8612be9cd1c7797c93e1c5df861b2ddda0b48b08f2c3eaa0702cf88fb5f88"}, - {file = "pandas-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0f573ab277252ed9aaf38240f3b54cfc90fff8e5cab70411ee1d03f5d51f3944"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f02a3a6c83df4026e55b63c1f06476c9aa3ed6af3d89b4f04ea656ccdaaaa359"}, - {file = "pandas-2.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c38ce92cb22a4bea4e3929429aa1067a454dcc9c335799af93ba9be21b6beb51"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c2ce852e1cf2509a69e98358e8458775f89599566ac3775e70419b98615f4b06"}, - {file = "pandas-2.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:53680dc9b2519cbf609c62db3ed7c0b499077c7fefda564e330286e619ff0dd9"}, - {file = "pandas-2.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:94e714a1cca63e4f5939cdce5f29ba8d415d85166be3441165edd427dc9f6bc0"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f821213d48f4ab353d20ebc24e4faf94ba40d76680642fb7ce2ea31a3ad94f9b"}, - {file = "pandas-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c70e00c2d894cb230e5c15e4b1e1e6b2b478e09cf27cc593a11ef955b9ecc81a"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e97fbb5387c69209f134893abc788a6486dbf2f9e511070ca05eed4b930b1b02"}, - {file = "pandas-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101d0eb9c5361aa0146f500773395a03839a5e6ecde4d4b6ced88b7e5a1a6403"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7d2ed41c319c9fb4fd454fe25372028dfa417aacb9790f68171b2e3f06eae8cd"}, - {file = "pandas-2.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:af5d3c00557d657c8773ef9ee702c61dd13b9d7426794c9dfeb1dc4a0bf0ebc7"}, - {file = "pandas-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:06cf591dbaefb6da9de8472535b185cba556d0ce2e6ed28e21d919704fef1a9e"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:88ecb5c01bb9ca927ebc4098136038519aa5d66b44671861ffab754cae75102c"}, - {file = "pandas-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:04f6ec3baec203c13e3f8b139fb0f9f86cd8c0b94603ae3ae8ce9a422e9f5bee"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a935a90a76c44fe170d01e90a3594beef9e9a6220021acfb26053d01426f7dc2"}, - {file = "pandas-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c391f594aae2fd9f679d419e9a4d5ba4bce5bb13f6a989195656e7dc4b95c8f0"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:9d1265545f579edf3f8f0cb6f89f234f5e44ba725a34d86535b1a1d38decbccc"}, - {file = "pandas-2.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:11940e9e3056576ac3244baef2fedade891977bcc1cb7e5cc8f8cc7d603edc89"}, - {file = "pandas-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:4acf681325ee1c7f950d058b05a820441075b0dd9a2adf5c4835b9bc056bf4fb"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9bd8a40f47080825af4317d0340c656744f2bfdb6819f818e6ba3cd24c0e1397"}, - {file = "pandas-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:df0c37ebd19e11d089ceba66eba59a168242fc6b7155cba4ffffa6eccdfb8f16"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:739cc70eaf17d57608639e74d63387b0d8594ce02f69e7a0b046f117974b3019"}, - {file = "pandas-2.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d3558d263073ed95e46f4650becff0c5e1ffe0fc3a015de3c79283dfbdb3df"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4aa1d8707812a658debf03824016bf5ea0d516afdea29b7dc14cf687bc4d4ec6"}, - {file = "pandas-2.2.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:76f27a809cda87e07f192f001d11adc2b930e93a2b0c4a236fde5429527423be"}, - {file = "pandas-2.2.1-cp39-cp39-win_amd64.whl", hash = "sha256:1ba21b1d5c0e43416218db63037dbe1a01fc101dc6e6024bcad08123e48004ab"}, - {file = "pandas-2.2.1.tar.gz", hash = "sha256:0ab90f87093c13f3e8fa45b48ba9f39181046e8f3317d3aadb2fffbb1b978572"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:90c6fca2acf139569e74e8781709dccb6fe25940488755716d1d354d6bc58bce"}, + {file = "pandas-2.2.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c7adfc142dac335d8c1e0dcbd37eb8617eac386596eb9e1a1b77791cf2498238"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4abfe0be0d7221be4f12552995e58723c7422c80a659da13ca382697de830c08"}, + {file = "pandas-2.2.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8635c16bf3d99040fdf3ca3db669a7250ddf49c55dc4aa8fe0ae0fa8d6dcc1f0"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:40ae1dffb3967a52203105a077415a86044a2bea011b5f321c6aa64b379a3f51"}, + {file = "pandas-2.2.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:8e5a0b00e1e56a842f922e7fae8ae4077aee4af0acb5ae3622bd4b4c30aedf99"}, + {file = "pandas-2.2.2-cp310-cp310-win_amd64.whl", hash = "sha256:ddf818e4e6c7c6f4f7c8a12709696d193976b591cc7dc50588d3d1a6b5dc8772"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:696039430f7a562b74fa45f540aca068ea85fa34c244d0deee539cb6d70aa288"}, + {file = "pandas-2.2.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8e90497254aacacbc4ea6ae5e7a8cd75629d6ad2b30025a4a8b09aa4faf55151"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58b84b91b0b9f4bafac2a0ac55002280c094dfc6402402332c0913a59654ab2b"}, + {file = "pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:2925720037f06e89af896c70bca73459d7e6a4be96f9de79e2d440bd499fe0db"}, + {file = "pandas-2.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:0cace394b6ea70c01ca1595f839cf193df35d1575986e484ad35c4aeae7266c1"}, + {file = "pandas-2.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:873d13d177501a28b2756375d59816c365e42ed8417b41665f346289adc68d24"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:9dfde2a0ddef507a631dc9dc4af6a9489d5e2e740e226ad426a05cabfbd7c8ef"}, + {file = "pandas-2.2.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:e9b79011ff7a0f4b1d6da6a61aa1aa604fb312d6647de5bad20013682d1429ce"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1cb51fe389360f3b5a4d57dbd2848a5f033350336ca3b340d1c53a1fad33bcad"}, + {file = "pandas-2.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eee3a87076c0756de40b05c5e9a6069c035ba43e8dd71c379e68cab2c20f16ad"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3e374f59e440d4ab45ca2fffde54b81ac3834cf5ae2cdfa69c90bc03bde04d76"}, + {file = "pandas-2.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:43498c0bdb43d55cb162cdc8c06fac328ccb5d2eabe3cadeb3529ae6f0517c32"}, + {file = "pandas-2.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:d187d355ecec3629624fccb01d104da7d7f391db0311145817525281e2804d23"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:0ca6377b8fca51815f382bd0b697a0814c8bda55115678cbc94c30aacbb6eff2"}, + {file = "pandas-2.2.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:9057e6aa78a584bc93a13f0a9bf7e753a5e9770a30b4d758b8d5f2a62a9433cd"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:001910ad31abc7bf06f49dcc903755d2f7f3a9186c0c040b827e522e9cef0863"}, + {file = "pandas-2.2.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66b479b0bd07204e37583c191535505410daa8df638fd8e75ae1b383851fe921"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a77e9d1c386196879aa5eb712e77461aaee433e54c68cf253053a73b7e49c33a"}, + {file = "pandas-2.2.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:92fd6b027924a7e178ac202cfbe25e53368db90d56872d20ffae94b96c7acc57"}, + {file = "pandas-2.2.2-cp39-cp39-win_amd64.whl", hash = "sha256:640cef9aa381b60e296db324337a554aeeb883ead99dc8f6c18e81a93942f5f4"}, + {file = "pandas-2.2.2.tar.gz", hash = "sha256:9e79019aba43cb4fda9e4d983f8e88ca0373adbb697ae9c6c43093218de28b54"}, ] [package.dependencies] -numpy = {version = ">=1.23.2,<2", markers = "python_version == \"3.11\""} +numpy = {version = ">=1.23.2", markers = "python_version == \"3.11\""} python-dateutil = ">=2.8.2" pytz = ">=2020.1" tzdata = ">=2022.7" @@ -2927,79 +3034,80 @@ dev = ["jinja2"] [[package]] name = "pillow" -version = "10.2.0" +version = "10.3.0" description = "Python Imaging Library (Fork)" optional = false python-versions = ">=3.8" files = [ - {file = "pillow-10.2.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:7823bdd049099efa16e4246bdf15e5a13dbb18a51b68fa06d6c1d4d8b99a796e"}, - {file = "pillow-10.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:83b2021f2ade7d1ed556bc50a399127d7fb245e725aa0113ebd05cfe88aaf588"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6fad5ff2f13d69b7e74ce5b4ecd12cc0ec530fcee76356cac6742785ff71c452"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:da2b52b37dad6d9ec64e653637a096905b258d2fc2b984c41ae7d08b938a67e4"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:47c0995fc4e7f79b5cfcab1fc437ff2890b770440f7696a3ba065ee0fd496563"}, - {file = "pillow-10.2.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:322bdf3c9b556e9ffb18f93462e5f749d3444ce081290352c6070d014c93feb2"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:51f1a1bffc50e2e9492e87d8e09a17c5eea8409cda8d3f277eb6edc82813c17c"}, - {file = "pillow-10.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:69ffdd6120a4737710a9eee73e1d2e37db89b620f702754b8f6e62594471dee0"}, - {file = "pillow-10.2.0-cp310-cp310-win32.whl", hash = "sha256:c6dafac9e0f2b3c78df97e79af707cdc5ef8e88208d686a4847bab8266870023"}, - {file = "pillow-10.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:aebb6044806f2e16ecc07b2a2637ee1ef67a11840a66752751714a0d924adf72"}, - {file = "pillow-10.2.0-cp310-cp310-win_arm64.whl", hash = "sha256:7049e301399273a0136ff39b84c3678e314f2158f50f517bc50285fb5ec847ad"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35bb52c37f256f662abdfa49d2dfa6ce5d93281d323a9af377a120e89a9eafb5"}, - {file = "pillow-10.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9c23f307202661071d94b5e384e1e1dc7dfb972a28a2310e4ee16103e66ddb67"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:773efe0603db30c281521a7c0214cad7836c03b8ccff897beae9b47c0b657d61"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11fa2e5984b949b0dd6d7a94d967743d87c577ff0b83392f17cb3990d0d2fd6e"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:716d30ed977be8b37d3ef185fecb9e5a1d62d110dfbdcd1e2a122ab46fddb03f"}, - {file = "pillow-10.2.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a086c2af425c5f62a65e12fbf385f7c9fcb8f107d0849dba5839461a129cf311"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c8de2789052ed501dd829e9cae8d3dcce7acb4777ea4a479c14521c942d395b1"}, - {file = "pillow-10.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:609448742444d9290fd687940ac0b57fb35e6fd92bdb65386e08e99af60bf757"}, - {file = "pillow-10.2.0-cp311-cp311-win32.whl", hash = "sha256:823ef7a27cf86df6597fa0671066c1b596f69eba53efa3d1e1cb8b30f3533068"}, - {file = "pillow-10.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:1da3b2703afd040cf65ec97efea81cfba59cdbed9c11d8efc5ab09df9509fc56"}, - {file = "pillow-10.2.0-cp311-cp311-win_arm64.whl", hash = "sha256:edca80cbfb2b68d7b56930b84a0e45ae1694aeba0541f798e908a49d66b837f1"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:1b5e1b74d1bd1b78bc3477528919414874748dd363e6272efd5abf7654e68bef"}, - {file = "pillow-10.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0eae2073305f451d8ecacb5474997c08569fb4eb4ac231ffa4ad7d342fdc25ac"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b7c2286c23cd350b80d2fc9d424fc797575fb16f854b831d16fd47ceec078f2c"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e23412b5c41e58cec602f1135c57dfcf15482013ce6e5f093a86db69646a5aa"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:52a50aa3fb3acb9cf7213573ef55d31d6eca37f5709c69e6858fe3bc04a5c2a2"}, - {file = "pillow-10.2.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:127cee571038f252a552760076407f9cff79761c3d436a12af6000cd182a9d04"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:8d12251f02d69d8310b046e82572ed486685c38f02176bd08baf216746eb947f"}, - {file = "pillow-10.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:54f1852cd531aa981bc0965b7d609f5f6cc8ce8c41b1139f6ed6b3c54ab82bfb"}, - {file = "pillow-10.2.0-cp312-cp312-win32.whl", hash = "sha256:257d8788df5ca62c980314053197f4d46eefedf4e6175bc9412f14412ec4ea2f"}, - {file = "pillow-10.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:154e939c5f0053a383de4fd3d3da48d9427a7e985f58af8e94d0b3c9fcfcf4f9"}, - {file = "pillow-10.2.0-cp312-cp312-win_arm64.whl", hash = "sha256:f379abd2f1e3dddb2b61bc67977a6b5a0a3f7485538bcc6f39ec76163891ee48"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:8373c6c251f7ef8bda6675dd6d2b3a0fcc31edf1201266b5cf608b62a37407f9"}, - {file = "pillow-10.2.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:870ea1ada0899fd0b79643990809323b389d4d1d46c192f97342eeb6ee0b8483"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4b6b1e20608493548b1f32bce8cca185bf0480983890403d3b8753e44077129"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3031709084b6e7852d00479fd1d310b07d0ba82765f973b543c8af5061cf990e"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:3ff074fc97dd4e80543a3e91f69d58889baf2002b6be64347ea8cf5533188213"}, - {file = "pillow-10.2.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:cb4c38abeef13c61d6916f264d4845fab99d7b711be96c326b84df9e3e0ff62d"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b1b3020d90c2d8e1dae29cf3ce54f8094f7938460fb5ce8bc5c01450b01fbaf6"}, - {file = "pillow-10.2.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:170aeb00224ab3dc54230c797f8404507240dd868cf52066f66a41b33169bdbe"}, - {file = "pillow-10.2.0-cp38-cp38-win32.whl", hash = "sha256:c4225f5220f46b2fde568c74fca27ae9771536c2e29d7c04f4fb62c83275ac4e"}, - {file = "pillow-10.2.0-cp38-cp38-win_amd64.whl", hash = "sha256:0689b5a8c5288bc0504d9fcee48f61a6a586b9b98514d7d29b840143d6734f39"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:b792a349405fbc0163190fde0dc7b3fef3c9268292586cf5645598b48e63dc67"}, - {file = "pillow-10.2.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:c570f24be1e468e3f0ce7ef56a89a60f0e05b30a3669a459e419c6eac2c35364"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8ecd059fdaf60c1963c58ceb8997b32e9dc1b911f5da5307aab614f1ce5c2fb"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c365fd1703040de1ec284b176d6af5abe21b427cb3a5ff68e0759e1e313a5e7e"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:70c61d4c475835a19b3a5aa42492409878bbca7438554a1f89d20d58a7c75c01"}, - {file = "pillow-10.2.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:b6f491cdf80ae540738859d9766783e3b3c8e5bd37f5dfa0b76abdecc5081f13"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9d189550615b4948f45252d7f005e53c2040cea1af5b60d6f79491a6e147eef7"}, - {file = "pillow-10.2.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:49d9ba1ed0ef3e061088cd1e7538a0759aab559e2e0a80a36f9fd9d8c0c21591"}, - {file = "pillow-10.2.0-cp39-cp39-win32.whl", hash = "sha256:babf5acfede515f176833ed6028754cbcd0d206f7f614ea3447d67c33be12516"}, - {file = "pillow-10.2.0-cp39-cp39-win_amd64.whl", hash = "sha256:0304004f8067386b477d20a518b50f3fa658a28d44e4116970abfcd94fac34a8"}, - {file = "pillow-10.2.0-cp39-cp39-win_arm64.whl", hash = "sha256:0fb3e7fc88a14eacd303e90481ad983fd5b69c761e9e6ef94c983f91025da869"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:322209c642aabdd6207517e9739c704dc9f9db943015535783239022002f054a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eedd52442c0a5ff4f887fab0c1c0bb164d8635b32c894bc1faf4c618dd89df2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb28c753fd5eb3dd859b4ee95de66cc62af91bcff5db5f2571d32a520baf1f04"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:33870dc4653c5017bf4c8873e5488d8f8d5f8935e2f1fb9a2208c47cdd66efd2"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3c31822339516fb3c82d03f30e22b1d038da87ef27b6a78c9549888f8ceda39a"}, - {file = "pillow-10.2.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a2b56ba36e05f973d450582fb015594aaa78834fefe8dfb8fcd79b93e64ba4c6"}, - {file = "pillow-10.2.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:d8e6aeb9201e655354b3ad049cb77d19813ad4ece0df1249d3c793de3774f8c7"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:2247178effb34a77c11c0e8ac355c7a741ceca0a732b27bf11e747bbc950722f"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15587643b9e5eb26c48e49a7b33659790d28f190fc514a322d55da2fb5c2950e"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:753cd8f2086b2b80180d9b3010dd4ed147efc167c90d3bf593fe2af21265e5a5"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:7c8f97e8e7a9009bcacbe3766a36175056c12f9a44e6e6f2d5caad06dcfbf03b"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:d1b35bcd6c5543b9cb547dee3150c93008f8dd0f1fef78fc0cd2b141c5baf58a"}, - {file = "pillow-10.2.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:fe4c15f6c9285dc54ce6553a3ce908ed37c8f3825b5a51a15c91442bb955b868"}, - {file = "pillow-10.2.0.tar.gz", hash = "sha256:e87f0b2c78157e12d7686b27d63c070fd65d994e8ddae6f328e0dcf4a0cd007e"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:90b9e29824800e90c84e4022dd5cc16eb2d9605ee13f05d47641eb183cd73d45"}, + {file = "pillow-10.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2c405445c79c3f5a124573a051062300936b0281fee57637e706453e452746c"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78618cdbccaa74d3f88d0ad6cb8ac3007f1a6fa5c6f19af64b55ca170bfa1edf"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:261ddb7ca91fcf71757979534fb4c128448b5b4c55cb6152d280312062f69599"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:ce49c67f4ea0609933d01c0731b34b8695a7a748d6c8d186f95e7d085d2fe475"}, + {file = "pillow-10.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:b14f16f94cbc61215115b9b1236f9c18403c15dd3c52cf629072afa9d54c1cbf"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d33891be6df59d93df4d846640f0e46f1a807339f09e79a8040bc887bdcd7ed3"}, + {file = "pillow-10.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b50811d664d392f02f7761621303eba9d1b056fb1868c8cdf4231279645c25f5"}, + {file = "pillow-10.3.0-cp310-cp310-win32.whl", hash = "sha256:ca2870d5d10d8726a27396d3ca4cf7976cec0f3cb706debe88e3a5bd4610f7d2"}, + {file = "pillow-10.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f0d0591a0aeaefdaf9a5e545e7485f89910c977087e7de2b6c388aec32011e9f"}, + {file = "pillow-10.3.0-cp310-cp310-win_arm64.whl", hash = "sha256:ccce24b7ad89adb5a1e34a6ba96ac2530046763912806ad4c247356a8f33a67b"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:5f77cf66e96ae734717d341c145c5949c63180842a545c47a0ce7ae52ca83795"}, + {file = "pillow-10.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e4b878386c4bf293578b48fc570b84ecfe477d3b77ba39a6e87150af77f40c57"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fdcbb4068117dfd9ce0138d068ac512843c52295ed996ae6dd1faf537b6dbc27"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9797a6c8fe16f25749b371c02e2ade0efb51155e767a971c61734b1bf6293994"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:9e91179a242bbc99be65e139e30690e081fe6cb91a8e77faf4c409653de39451"}, + {file = "pillow-10.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:1b87bd9d81d179bd8ab871603bd80d8645729939f90b71e62914e816a76fc6bd"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:81d09caa7b27ef4e61cb7d8fbf1714f5aec1c6b6c5270ee53504981e6e9121ad"}, + {file = "pillow-10.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:048ad577748b9fa4a99a0548c64f2cb8d672d5bf2e643a739ac8faff1164238c"}, + {file = "pillow-10.3.0-cp311-cp311-win32.whl", hash = "sha256:7161ec49ef0800947dc5570f86568a7bb36fa97dd09e9827dc02b718c5643f09"}, + {file = "pillow-10.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:8eb0908e954d093b02a543dc963984d6e99ad2b5e36503d8a0aaf040505f747d"}, + {file = "pillow-10.3.0-cp311-cp311-win_arm64.whl", hash = "sha256:4e6f7d1c414191c1199f8996d3f2282b9ebea0945693fb67392c75a3a320941f"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_10_10_x86_64.whl", hash = "sha256:e46f38133e5a060d46bd630faa4d9fa0202377495df1f068a8299fd78c84de84"}, + {file = "pillow-10.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:50b8eae8f7334ec826d6eeffaeeb00e36b5e24aa0b9df322c247539714c6df19"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d3bea1c75f8c53ee4d505c3e67d8c158ad4df0d83170605b50b64025917f338"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19aeb96d43902f0a783946a0a87dbdad5c84c936025b8419da0a0cd7724356b1"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:74d28c17412d9caa1066f7a31df8403ec23d5268ba46cd0ad2c50fb82ae40462"}, + {file = "pillow-10.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ff61bfd9253c3915e6d41c651d5f962da23eda633cf02262990094a18a55371a"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d886f5d353333b4771d21267c7ecc75b710f1a73d72d03ca06df49b09015a9ef"}, + {file = "pillow-10.3.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4b5ec25d8b17217d635f8935dbc1b9aa5907962fae29dff220f2659487891cd3"}, + {file = "pillow-10.3.0-cp312-cp312-win32.whl", hash = "sha256:51243f1ed5161b9945011a7360e997729776f6e5d7005ba0c6879267d4c5139d"}, + {file = "pillow-10.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:412444afb8c4c7a6cc11a47dade32982439925537e483be7c0ae0cf96c4f6a0b"}, + {file = "pillow-10.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:798232c92e7665fe82ac085f9d8e8ca98826f8e27859d9a96b41d519ecd2e49a"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:4eaa22f0d22b1a7e93ff0a596d57fdede2e550aecffb5a1ef1106aaece48e96b"}, + {file = "pillow-10.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cd5e14fbf22a87321b24c88669aad3a51ec052eb145315b3da3b7e3cc105b9a2"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1530e8f3a4b965eb6a7785cf17a426c779333eb62c9a7d1bbcf3ffd5bf77a4aa"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d512aafa1d32efa014fa041d38868fda85028e3f930a96f85d49c7d8ddc0383"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:339894035d0ede518b16073bdc2feef4c991ee991a29774b33e515f1d308e08d"}, + {file = "pillow-10.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:aa7e402ce11f0885305bfb6afb3434b3cd8f53b563ac065452d9d5654c7b86fd"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0ea2a783a2bdf2a561808fe4a7a12e9aa3799b701ba305de596bc48b8bdfce9d"}, + {file = "pillow-10.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:c78e1b00a87ce43bb37642c0812315b411e856a905d58d597750eb79802aaaa3"}, + {file = "pillow-10.3.0-cp38-cp38-win32.whl", hash = "sha256:72d622d262e463dfb7595202d229f5f3ab4b852289a1cd09650362db23b9eb0b"}, + {file = "pillow-10.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:2034f6759a722da3a3dbd91a81148cf884e91d1b747992ca288ab88c1de15999"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:2ed854e716a89b1afcedea551cd85f2eb2a807613752ab997b9974aaa0d56936"}, + {file = "pillow-10.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:dc1a390a82755a8c26c9964d457d4c9cbec5405896cba94cf51f36ea0d855002"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4203efca580f0dd6f882ca211f923168548f7ba334c189e9eab1178ab840bf60"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3102045a10945173d38336f6e71a8dc71bcaeed55c3123ad4af82c52807b9375"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:6fb1b30043271ec92dc65f6d9f0b7a830c210b8a96423074b15c7bc999975f57"}, + {file = "pillow-10.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:1dfc94946bc60ea375cc39cff0b8da6c7e5f8fcdc1d946beb8da5c216156ddd8"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:b09b86b27a064c9624d0a6c54da01c1beaf5b6cadfa609cf63789b1d08a797b9"}, + {file = "pillow-10.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d3b2348a78bc939b4fed6552abfd2e7988e0f81443ef3911a4b8498ca084f6eb"}, + {file = "pillow-10.3.0-cp39-cp39-win32.whl", hash = "sha256:45ebc7b45406febf07fef35d856f0293a92e7417ae7933207e90bf9090b70572"}, + {file = "pillow-10.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:0ba26351b137ca4e0db0342d5d00d2e355eb29372c05afd544ebf47c0956ffeb"}, + {file = "pillow-10.3.0-cp39-cp39-win_arm64.whl", hash = "sha256:50fd3f6b26e3441ae07b7c979309638b72abc1a25da31a81a7fbd9495713ef4f"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_10_10_x86_64.whl", hash = "sha256:6b02471b72526ab8a18c39cb7967b72d194ec53c1fd0a70b050565a0f366d355"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8ab74c06ffdab957d7670c2a5a6e1a70181cd10b727cd788c4dd9005b6a8acd9"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:048eeade4c33fdf7e08da40ef402e748df113fd0b4584e32c4af74fe78baaeb2"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9e2ec1e921fd07c7cda7962bad283acc2f2a9ccc1b971ee4b216b75fad6f0463"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:4c8e73e99da7db1b4cad7f8d682cf6abad7844da39834c288fbfa394a47bbced"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:16563993329b79513f59142a6b02055e10514c1a8e86dca8b48a893e33cf91e3"}, + {file = "pillow-10.3.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:dd78700f5788ae180b5ee8902c6aea5a5726bac7c364b202b4b3e3ba2d293170"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:aff76a55a8aa8364d25400a210a65ff59d0168e0b4285ba6bf2bd83cf675ba32"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-macosx_11_0_arm64.whl", hash = "sha256:b7bc2176354defba3edc2b9a777744462da2f8e921fbaf61e52acb95bafa9828"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:793b4e24db2e8742ca6423d3fde8396db336698c55cd34b660663ee9e45ed37f"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d93480005693d247f8346bc8ee28c72a2191bdf1f6b5db469c096c0c867ac015"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c83341b89884e2b2e55886e8fbbf37c3fa5efd6c8907124aeb72f285ae5696e5"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1a1d1915db1a4fdb2754b9de292642a39a7fb28f1736699527bb649484fb966a"}, + {file = "pillow-10.3.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a0eaa93d054751ee9964afa21c06247779b90440ca41d184aeb5d410f20ff591"}, + {file = "pillow-10.3.0.tar.gz", hash = "sha256:9d2455fbf44c914840c793e89aa82d0e1763a14253a000743719ae5946814b2d"}, ] [package.extras] @@ -3012,28 +3120,29 @@ xmp = ["defusedxml"] [[package]] name = "platformdirs" -version = "4.2.0" -description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +version = "4.2.1" +description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`." optional = false python-versions = ">=3.8" files = [ - {file = "platformdirs-4.2.0-py3-none-any.whl", hash = "sha256:0614df2a2f37e1a662acbd8e2b25b92ccf8632929bc6d43467e17fe89c75e068"}, - {file = "platformdirs-4.2.0.tar.gz", hash = "sha256:ef0cc731df711022c174543cb70a9b5bd22e5a9337c8624ef2c2ceb8ddad8768"}, + {file = "platformdirs-4.2.1-py3-none-any.whl", hash = "sha256:17d5a1161b3fd67b390023cb2d3b026bbd40abde6fdb052dfbd3a29c3ba22ee1"}, + {file = "platformdirs-4.2.1.tar.gz", hash = "sha256:031cd18d4ec63ec53e82dceaac0417d218a6863f7745dfcc9efe7793b7039bdf"}, ] [package.extras] docs = ["furo (>=2023.9.10)", "proselint (>=0.13)", "sphinx (>=7.2.6)", "sphinx-autodoc-typehints (>=1.25.2)"] test = ["appdirs (==1.4.4)", "covdefaults (>=2.3)", "pytest (>=7.4.3)", "pytest-cov (>=4.1)", "pytest-mock (>=3.12)"] +type = ["mypy (>=1.8)"] [[package]] name = "pluggy" -version = "1.4.0" +version = "1.5.0" description = "plugin and hook calling mechanisms for python" optional = false python-versions = ">=3.8" files = [ - {file = "pluggy-1.4.0-py3-none-any.whl", hash = "sha256:7db9f7b503d67d1c5b95f59773ebb58a8c1c288129a88665838012cfb07b8981"}, - {file = "pluggy-1.4.0.tar.gz", hash = "sha256:8c85c2876142a764e5b7548e7d9a0e0ddb46f5185161049a79b7e974454223be"}, + {file = "pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669"}, + {file = "pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1"}, ] [package.extras] @@ -3086,13 +3195,13 @@ files = [ [[package]] name = "pre-commit" -version = "3.6.2" +version = "3.7.0" description = "A framework for managing and maintaining multi-language pre-commit hooks." optional = false python-versions = ">=3.9" files = [ - {file = "pre_commit-3.6.2-py2.py3-none-any.whl", hash = "sha256:ba637c2d7a670c10daedc059f5c49b5bd0aadbccfcd7ec15592cf9665117532c"}, - {file = "pre_commit-3.6.2.tar.gz", hash = "sha256:c3ef34f463045c88658c5b99f38c1e297abdcc0ff13f98d3370055fbbfabc67e"}, + {file = "pre_commit-3.7.0-py2.py3-none-any.whl", hash = "sha256:5eae9e10c2b5ac51577c3452ec0a490455c45a0533f7960f993a0d01e59decab"}, + {file = "pre_commit-3.7.0.tar.gz", hash = "sha256:e209d61b8acdcf742404408531f0c37d49d2c734fd7cff2d6076083d191cb060"}, ] [package.dependencies] @@ -3114,22 +3223,22 @@ files = [ [[package]] name = "protobuf" -version = "4.25.3" +version = "5.26.1" description = "" optional = false python-versions = ">=3.8" files = [ - {file = "protobuf-4.25.3-cp310-abi3-win32.whl", hash = "sha256:d4198877797a83cbfe9bffa3803602bbe1625dc30d8a097365dbc762e5790faa"}, - {file = "protobuf-4.25.3-cp310-abi3-win_amd64.whl", hash = "sha256:209ba4cc916bab46f64e56b85b090607a676f66b473e6b762e6f1d9d591eb2e8"}, - {file = "protobuf-4.25.3-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:f1279ab38ecbfae7e456a108c5c0681e4956d5b1090027c1de0f934dfdb4b35c"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:e7cb0ae90dd83727f0c0718634ed56837bfeeee29a5f82a7514c03ee1364c019"}, - {file = "protobuf-4.25.3-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:7c8daa26095f82482307bc717364e7c13f4f1c99659be82890dcfc215194554d"}, - {file = "protobuf-4.25.3-cp38-cp38-win32.whl", hash = "sha256:f4f118245c4a087776e0a8408be33cf09f6c547442c00395fbfb116fac2f8ac2"}, - {file = "protobuf-4.25.3-cp38-cp38-win_amd64.whl", hash = "sha256:c053062984e61144385022e53678fbded7aea14ebb3e0305ae3592fb219ccfa4"}, - {file = "protobuf-4.25.3-cp39-cp39-win32.whl", hash = "sha256:19b270aeaa0099f16d3ca02628546b8baefe2955bbe23224aaf856134eccf1e4"}, - {file = "protobuf-4.25.3-cp39-cp39-win_amd64.whl", hash = "sha256:e3c97a1555fd6388f857770ff8b9703083de6bf1f9274a002a332d65fbb56c8c"}, - {file = "protobuf-4.25.3-py3-none-any.whl", hash = "sha256:f0700d54bcf45424477e46a9f0944155b46fb0639d69728739c0e47bab83f2b9"}, - {file = "protobuf-4.25.3.tar.gz", hash = "sha256:25b5d0b42fd000320bd7830b349e3b696435f3b329810427a6bcce6a5492cc5c"}, + {file = "protobuf-5.26.1-cp310-abi3-win32.whl", hash = "sha256:3c388ea6ddfe735f8cf69e3f7dc7611e73107b60bdfcf5d0f024c3ccd3794e23"}, + {file = "protobuf-5.26.1-cp310-abi3-win_amd64.whl", hash = "sha256:e6039957449cb918f331d32ffafa8eb9255769c96aa0560d9a5bf0b4e00a2a33"}, + {file = "protobuf-5.26.1-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:38aa5f535721d5bb99861166c445c4105c4e285c765fbb2ac10f116e32dcd46d"}, + {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_aarch64.whl", hash = "sha256:fbfe61e7ee8c1860855696e3ac6cfd1b01af5498facc6834fcc345c9684fb2ca"}, + {file = "protobuf-5.26.1-cp37-abi3-manylinux2014_x86_64.whl", hash = "sha256:f7417703f841167e5a27d48be13389d52ad705ec09eade63dfc3180a959215d7"}, + {file = "protobuf-5.26.1-cp38-cp38-win32.whl", hash = "sha256:d693d2504ca96750d92d9de8a103102dd648fda04540495535f0fec7577ed8fc"}, + {file = "protobuf-5.26.1-cp38-cp38-win_amd64.whl", hash = "sha256:9b557c317ebe6836835ec4ef74ec3e994ad0894ea424314ad3552bc6e8835b4e"}, + {file = "protobuf-5.26.1-cp39-cp39-win32.whl", hash = "sha256:b9ba3ca83c2e31219ffbeb9d76b63aad35a3eb1544170c55336993d7a18ae72c"}, + {file = "protobuf-5.26.1-cp39-cp39-win_amd64.whl", hash = "sha256:7ee014c2c87582e101d6b54260af03b6596728505c79f17c8586e7523aaa8f8c"}, + {file = "protobuf-5.26.1-py3-none-any.whl", hash = "sha256:da612f2720c0183417194eeaa2523215c4fcc1a1949772dc65f05047e08d5932"}, + {file = "protobuf-5.26.1.tar.gz", hash = "sha256:8ca2a1d97c290ec7b16e4e5dff2e5ae150cc1582f55b5ab300d45cb0dfa90e51"}, ] [[package]] @@ -3205,53 +3314,93 @@ pytweening = ">=1.0.4" [[package]] name = "pycapnp" -version = "1.3.0" +version = "2.0.0" description = "A cython wrapping of the C++ Cap'n Proto library" optional = false -python-versions = "*" +python-versions = ">=3.8" files = [ - {file = "pycapnp-1.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1410e38d1cd1d08fb36c781e8a91b2044306d18775524dfd6c8a3b83e665f47f"}, - {file = "pycapnp-1.3.0-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:debb37f96db664c140e557855ba433ea59fdf714cff358a50a619e007387692b"}, - {file = "pycapnp-1.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:108582647317c0f3a52ab1c615333d48546cede475887ebf8a055d1d6f20f249"}, - {file = "pycapnp-1.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1451d131ae0715b840eda1d0c84ea3909b637ac28554a13e57c089aef09e4f36"}, - {file = "pycapnp-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c09d0ea8bc6d6d101a1642f4d9366d929cacd3966bc510a7cd5b14df2fa2986"}, - {file = "pycapnp-1.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:f26bb24bd28db2a6f99b7d17178112103dedef0ee275204f705e86936513c240"}, - {file = "pycapnp-1.3.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:90c07b969d90d012d0d309ec4c44605ad2d8f91595dcdf8ccc1ee798bf723b77"}, - {file = "pycapnp-1.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:70a9d155d0dc17d343f295ae2228fb0436af329eab941e3b6637d5f5a050616d"}, - {file = "pycapnp-1.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cb575ab47069f990dc353d0c12f62013b08d0c00ba10c1aebffdc3150abd292"}, - {file = "pycapnp-1.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1ba3adae76801b1a4c7c0f96367bdd153286469c45223bf6b50057e5d077e5d2"}, - {file = "pycapnp-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc939f85720451b1d4a05603b127c0ae241e67fcc43121685b906aa3da08d624"}, - {file = "pycapnp-1.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:9d6af7aba49eda201243b0fbcb410b3a8a789a2f7b86adafbde7e95234a07e85"}, - {file = "pycapnp-1.3.0-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:32e56829e05fc54e14a8b40076d0a0958acef835379c6e39c26648cb754b9011"}, - {file = "pycapnp-1.3.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:f9d29bf65a5fb6cca1d0ed56cd2b0e6b1f63d47af72dfced80bbf6a8315aa2ae"}, - {file = "pycapnp-1.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8389da70ff8c4008a0aabcdbf04e272aebb0c71476bc29cb7fbefb9ae579c947"}, - {file = "pycapnp-1.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:432b9d49bde68eca83b10f04791c65dc9a2070afcbd406703c4f4a073f02061c"}, - {file = "pycapnp-1.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cda76deffa45e567354234d2c21e084251dc270ba226e8d9863406c54e9cb87f"}, - {file = "pycapnp-1.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:e351748b9a1bc3e6379183a24e1e68ecf4f76943872f63c8d42f206523b78cbb"}, - {file = "pycapnp-1.3.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:ff4a67282af21fb6a16b99f7d2397c4c6462b3a59b9b751e6860ccfb5c838398"}, - {file = "pycapnp-1.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f6f011ce96049cff07502e76d91e2a037234aa89bd4fc299c95e403797a73dae"}, - {file = "pycapnp-1.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b02fd11a155aca4e1b507bc7bd91963ec9a7695d5235837229d105d920385514"}, - {file = "pycapnp-1.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c0bfdbae7344835c287be2ca9f3e9fdf8f208941933fb77f6252a937917347de"}, - {file = "pycapnp-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa7d2e0c22fb4f1c7bf44630170ba06df4e1fb47f0977df1d5fe425dc74ce354"}, - {file = "pycapnp-1.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:b82d5c2ed388157b01ae7fbf754fd677d069150336ee74d6f286936af8ce0f18"}, - {file = "pycapnp-1.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:02acfc8d94ed0c2e1b68cde6c845149b5c89eb4c5a71c7fe4978a70370cb17b5"}, - {file = "pycapnp-1.3.0-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:9333029a4c4f71942666ee1eb051740c38c27b034eca4c73d09f26217e2b2dc4"}, - {file = "pycapnp-1.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:886c09a5802b3ec232a8cd64f44c092bbf3daa1c0ff66942f1f6b9943a71a909"}, - {file = "pycapnp-1.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:77c95991b4fc30fd336e3cbed4ffd3fb23aa647427bc96cafd0f77ec5b046766"}, - {file = "pycapnp-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:223f600854f46009715231237a02c18a6e5b28492c0976d6602c0d73021c9d3a"}, - {file = "pycapnp-1.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:45e52d201d4d2ae9ee3290cae8f62c1af982ca2d7a7eaa0b58f53ada9a07c877"}, - {file = "pycapnp-1.3.0.tar.gz", hash = "sha256:7cf514c3068064e593d0401503f7a623c24c55776702a7a2d9cad9854710aa56"}, + {file = "pycapnp-2.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:12fc023da9acd062884c9b394113457908b3c5e26aeb85f668b59c0e84b7b150"}, + {file = "pycapnp-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c8f5e4e68a1b59ae73cd77550b95f8719aea624aa424cd77aa193c6d45ea97ab"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50ff7f45d77dc2ef0c44a0aef41f37433a0c395b6a1db99b7e6f45e0e9237bd4"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc68ef3d80d9e7e9b96ba2077d8e2effd42f936bda1024f1aedc05022c9401bb"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74a75e5c190e4d722aa0d2702bd04fedc2cb8e0a893031813e7a50cc067a054a"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db1bc53cbe5222f4fd0748ba6b53da9ec58e8f7b2219dc9cd50d15266a3fa85c"}, + {file = "pycapnp-2.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a0509ef856239634be21375cbad73dc7cf7fdfb32c03c312ad41e994f0674f7"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:48372a19b59e8d533768c12988a92af4ea6c2daa1a8ba1c42202cd0dd24a1d24"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:46c16a98cec9ae6dce5ebf488bb0c8425484d7710eed1ee008a26b60470ee755"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:be91cdb7895c4e2f1e1cd6b701ed66050c285d2c228f476a775bfd76bbd697f1"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:21db83e5f0c3a944b567cd20e4df47dba023e936a45d7057f2a615b8c19356f8"}, + {file = "pycapnp-2.0.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:825a8a86e034d66d8df8d82b7bf9fdd3f344bd84ff43a838ec08f08fe7461be0"}, + {file = "pycapnp-2.0.0-cp310-cp310-win32.whl", hash = "sha256:13ff9dca5741079d7bbe4e2512634b8ce859b709a1b126481eed404bda0b3d4a"}, + {file = "pycapnp-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:279d9f7c34527d15a62dde0dfc82cb918ed0a900dfa9713960d64bed3f9236a4"}, + {file = "pycapnp-2.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:829c7eb4e5f23dbcac25466110faf72a691035cf87c5d46e5053da15790e428d"}, + {file = "pycapnp-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:dab60fbe3e4eaf99ec97918a0a776216c6c149b6d49261383d91c2201adb475d"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c48a0582078bb74d7326d28571db0b8e6919563365537a5a13e8f5360c12bfc"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcb5ab54aff857e3711d2c0cc934194aaffacdeb3481daa56863daef07d27941"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9600778036e6fe9dbea68f0c37678c5f4d561d2f2306b3cb741de5e1670ef2ae"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7278ba0262fab8c398e77d634ae7ba026866d44b52cbfc27262be8d396ecacd1"}, + {file = "pycapnp-2.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:23b2458d43c82302980a96518c96df257429204d2cc02bfff0c8cb6ebb371e01"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:dd7755cc3fedc2ad8cc7864a0729471ddeff10c184963fe0f3689e295130f1b2"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:d47baf6b3db9981625ffc5ff188e089f2ebca8e7e1afb97aa5eb7bebb7bf3650"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b375be92d93fdb6f7ac127ea9390bcec0fed4e485db137b084f9e7114dde7c83"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:959bfdf1cddb3e5528e2293c4a375382be9a1bf044b073bc2e7eca1eb6b3a9a2"}, + {file = "pycapnp-2.0.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:d873af167cf5cc7578ce5432eefcb442f866c8f7a6c57d188baf8c5e709fa39d"}, + {file = "pycapnp-2.0.0-cp311-cp311-win32.whl", hash = "sha256:40ca8018e0b7686d549b920f087049b92a3e6f06976d9f5a8112603fc560cac4"}, + {file = "pycapnp-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:d15cd8e46d541a899c84809095d7d7b3951f43642d1859e7a39bd91910778479"}, + {file = "pycapnp-2.0.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:0c111ef96676df25b8afef98f369d45f838ad4434e2898e48199eb43ef704efe"}, + {file = "pycapnp-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0d18906eb1fd1b9f206d93a9591ceedce1d52e7766b66e68f271453f104e9dca"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f5d1ed365ab1beabb8838068907a7190cc0b6f16de3499d783627e670fcc0eb2"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:495b39a7aa2629931bbca27ad743ce591c6c41e8f81792276be424742d9cd1c1"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:50e814fbde072dcc3d868b5b5cbb9b7a66a70bff9ad03942f3be9baf3ca1cfc6"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:920fdda62d5fdef7a48339104dff0ceb9dcc21b138491f854457ba3a3d4d63ec"}, + {file = "pycapnp-2.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3f9142eb4714c152b09dda0b055ea9dd43fd8fd894132e7eb4fa235fb4915edd"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:c98f1d0c4d32109d03e42828ce3c65236afc895033633cbed3ca092993702e7b"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4d3250c1875a309d67551843cd8bf3c5e7fccf159b7f5c118a92aee36c0e871c"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_ppc64le.whl", hash = "sha256:174e6babe01f5507111c0ed226cd0b5e9325a9d2850751cfe4a57c1670f13881"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:ed38ece414341285695526792e020f391f29f5064b2126d0367c8bdeef28e3e9"}, + {file = "pycapnp-2.0.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8a20b7dc55ef83a1fa446bf12680bce25caeb8f81788b623b072c3ec820db50d"}, + {file = "pycapnp-2.0.0-cp312-cp312-win32.whl", hash = "sha256:145eea66233fb5ac9152cd1c06b999ddb691815126f87f5cc37b9cda5d569f8a"}, + {file = "pycapnp-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:b8b03000769b29b36a8810f458b931f0f706f42027ee6676821eff28092d7734"}, + {file = "pycapnp-2.0.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6b1d547af10ecf4a3da25143c71ce64a3b0817bf229c560c9f9729d355c3b48d"}, + {file = "pycapnp-2.0.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:ecbbdbc2251d5e9d16148601e224ffaf9612d07751af72496472a3e285a1baed"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8158ebb967f7b103d2d5514d6a8cc643b1744cc8e14e14a5c19697507719de7b"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:999068b371fd4f21dddfff97640609f325cd8498c2a9d6a6c253164466628ba0"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb46a9191a64ce532f82800e6885abe61e63ae4f612ed1d98c7a493dd6ee6d2b"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fe49a1be55fb01f794434bab42643de7b4e37e774c3d63635f4a9ca9064437e"}, + {file = "pycapnp-2.0.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ab6c94687908003fced23ce8c415d85e521e923b0bcbcc5323bac66d14911d5"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6a5b814578f4f29c787deef30226c54f11188caef9b375776e8b1d73649e4119"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:f169bdc0a683f1cb716c1ab83c5028e75d7bf34674c00b302ca1ebf66e0d27ca"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:5f348f8487df6a67891684e3c9c6476930fbb09258fe33f96c9bbdc4c51e6d4e"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:57940b9898d8b2565671bdf8d8aa67e6b91c3ba879594b58287134ee20b242c7"}, + {file = "pycapnp-2.0.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:68a8d2ae0c078df11a5dbf2d2b5b5d48c3893584fe9bb6fa9b88dd6eadf65dda"}, + {file = "pycapnp-2.0.0-cp38-cp38-win32.whl", hash = "sha256:81bbaf65c70dfbe8bc67ea715778bd764f4b1126fd905c0778ab6fd4e358f8f4"}, + {file = "pycapnp-2.0.0-cp38-cp38-win_amd64.whl", hash = "sha256:34acb733c3a4a2a13607f0d905f776d4567d0c9697e5a9865035d38d3b4fb53b"}, + {file = "pycapnp-2.0.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:87931c9322679c733bd522a0d73704d804d6531a8a5258fd8ec65930bf89f2dd"}, + {file = "pycapnp-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7d08748e55f0f49c86f0a1e2c0f96c4e6880c1c8fd5df98c12c3eae557aa441"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ffd25a63c92f0ef85bccabc7c2c13fe6da7eadf5525025d49206d967afb670d"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c8b9b9ea78df282f5ce63ccd435b83b83aabb931807066e84d967444ea005571"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:829b071216ae51c2ea55fd41476adaf3044a303038399276bdba6144b58157c0"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16b78b58969924dd499c7c24627cf392368a3354fcc900667fcabda2621d8250"}, + {file = "pycapnp-2.0.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6a365a7dff8cb05145616aecc04ea73ed493cd630c10d7ef67d833347ba264b6"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:82ebe35487dcb8061e2f80403d29c20686d1d539562162f1658d36ef43e38cfa"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:f496c59face3195f32a50df141a7a042cd3504bd4da123c5dced096eae76699d"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:f2ed0033b56b1836a8b99de11b939d93aa93d01f5d52650da65447f4f3c03e21"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d66097f70b0a0bff5d9431b117d359a0abe46c73ac0eb3b64ad252cf7e99d780"}, + {file = "pycapnp-2.0.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:245942fe441d5e7a6511110ddea44ea91f0544385ef8afbef7155bec4aaa266f"}, + {file = "pycapnp-2.0.0-cp39-cp39-win32.whl", hash = "sha256:1bcbb55fc12ff41d5e456991e9d4d368ca26ba11c65c41bd384f4edf1307b6f7"}, + {file = "pycapnp-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:d4bee40372c02bcce647084faa6a831d9884a80033f77c7aacbaac697c4bbe46"}, + {file = "pycapnp-2.0.0.tar.gz", hash = "sha256:503ab9b7b16773590ee226f2460408972c6b1c2cb2d819037115b919bef682be"}, ] [[package]] name = "pycparser" -version = "2.21" +version = "2.22" description = "C parser in Python" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +python-versions = ">=3.8" files = [ - {file = "pycparser-2.21-py2.py3-none-any.whl", hash = "sha256:8ee45429555515e1f6b185e78100aea234072576aa43ab53aefcae078162fca9"}, - {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, + {file = "pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc"}, + {file = "pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6"}, ] [[package]] @@ -3393,17 +3542,16 @@ pyrect = "*" [[package]] name = "pygments" -version = "2.17.2" +version = "2.18.0" description = "Pygments is a syntax highlighting package written in Python." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pygments-2.17.2-py3-none-any.whl", hash = "sha256:b27c2826c47d0f3219f29554824c30c5e8945175d888647acd804ddd04af846c"}, - {file = "pygments-2.17.2.tar.gz", hash = "sha256:da46cec9fd2de5be3a8a784f434e4c4ab670b4ff54d605c4c2717e9d49c4c367"}, + {file = "pygments-2.18.0-py3-none-any.whl", hash = "sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a"}, + {file = "pygments-2.18.0.tar.gz", hash = "sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199"}, ] [package.extras] -plugins = ["importlib-metadata"] windows-terminal = ["colorama (>=0.4.6)"] [[package]] @@ -3466,22 +3614,23 @@ dev = ["coverage[toml] (>=7.2.2)"] [[package]] name = "pymonctl" -version = "0.7" +version = "0.92" description = "Cross-Platform toolkit to get info on and control monitors connected" optional = false python-versions = "*" files = [ - {file = "PyMonCtl-0.7-py3-none-any.whl", hash = "sha256:20c1f7f4cf46ff3349fa60d4e63c4ac300a2b907c0d984a1dd64d452b85ea781"}, + {file = "PyMonCtl-0.92-py3-none-any.whl", hash = "sha256:2495d8dab78f9a7dbce37e74543e60b8bd404a35c3108935697dda7768611b5a"}, ] [package.dependencies] +ewmhlib = {version = ">=0.1", markers = "sys_platform == \"linux\""} pyobjc = {version = ">=8.1", markers = "sys_platform == \"darwin\""} python-xlib = {version = ">=0.21", markers = "sys_platform == \"linux\""} pywin32 = {version = ">=302", markers = "sys_platform == \"win32\""} typing-extensions = ">=4.4.0" [package.extras] -dev = ["mypy (>=0.990)", "types-python-xlib (>=0.32)", "types-pywin32 (>=305.0.0.3)", "types-setuptools (>=65.5)"] +dev = ["mypy (>=0.990)", "pywinctl (>=0.3)", "types-python-xlib (>=0.32)", "types-pywin32 (>=305.0.0.3)", "types-setuptools (>=65.5)"] [[package]] name = "pymsgbox" @@ -3495,2741 +3644,2762 @@ files = [ [[package]] name = "pyobjc" -version = "10.1" +version = "10.2" description = "Python<->ObjC Interoperability Module" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-10.1-py3-none-any.whl", hash = "sha256:2687ff02217e7b2aba52c6b948bccea864a8f034af6c90528564d496b343c418"}, - {file = "pyobjc-10.1.tar.gz", hash = "sha256:f54baff4c40d53c3fb3812816ebd130d3186805936628cc1f212f95979af5b98"}, + {file = "pyobjc-10.2-py3-none-any.whl", hash = "sha256:976c8f8af49a91195307b3efbc2d63517be63aae2b4b3689dcff4f317669c23a"}, + {file = "pyobjc-10.2.tar.gz", hash = "sha256:bfea9891750ce3af6439ee102e8e417917f1a7ed7fc4f54b5da9d7457fbb7fc6"}, ] [package.dependencies] -pyobjc-core = "10.1" -pyobjc-framework-Accessibility = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-Accounts = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-AddressBook = "10.1" -pyobjc-framework-AdServices = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-AdSupport = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-AppleScriptKit = "10.1" -pyobjc-framework-AppleScriptObjC = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-ApplicationServices = "10.1" -pyobjc-framework-AppTrackingTransparency = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-AudioVideoBridging = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-AuthenticationServices = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-AutomaticAssessmentConfiguration = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-Automator = "10.1" -pyobjc-framework-AVFoundation = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-AVKit = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-AVRouting = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-BackgroundAssets = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-BusinessChat = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-CalendarStore = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-CallKit = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-CFNetwork = "10.1" -pyobjc-framework-Cinematic = {version = "10.1", markers = "platform_release >= \"23.0\""} -pyobjc-framework-ClassKit = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-CloudKit = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-Cocoa = "10.1" -pyobjc-framework-Collaboration = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-ColorSync = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-Contacts = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-ContactsUI = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-CoreAudio = "10.1" -pyobjc-framework-CoreAudioKit = "10.1" -pyobjc-framework-CoreBluetooth = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-CoreData = "10.1" -pyobjc-framework-CoreHaptics = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-CoreLocation = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-CoreMedia = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-CoreMediaIO = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-CoreMIDI = "10.1" -pyobjc-framework-CoreML = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-CoreMotion = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-CoreServices = "10.1" -pyobjc-framework-CoreSpotlight = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-CoreText = "10.1" -pyobjc-framework-CoreWLAN = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-CryptoTokenKit = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-DataDetection = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-DeviceCheck = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-DictionaryServices = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-DiscRecording = "10.1" -pyobjc-framework-DiscRecordingUI = "10.1" -pyobjc-framework-DiskArbitration = "10.1" -pyobjc-framework-DVDPlayback = "10.1" -pyobjc-framework-EventKit = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-ExceptionHandling = "10.1" -pyobjc-framework-ExecutionPolicy = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-ExtensionKit = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-ExternalAccessory = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-FileProvider = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-FileProviderUI = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-FinderSync = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-FSEvents = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-GameCenter = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-GameController = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-GameKit = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-GameplayKit = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-HealthKit = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-ImageCaptureCore = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-InputMethodKit = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-InstallerPlugins = "10.1" -pyobjc-framework-InstantMessage = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-Intents = {version = "10.1", markers = "platform_release >= \"16.0\""} -pyobjc-framework-IntentsUI = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-IOBluetooth = "10.1" -pyobjc-framework-IOBluetoothUI = "10.1" -pyobjc-framework-IOSurface = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-iTunesLibrary = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-KernelManagement = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-LatentSemanticMapping = "10.1" -pyobjc-framework-LaunchServices = "10.1" -pyobjc-framework-libdispatch = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-libxpc = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-LinkPresentation = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-LocalAuthentication = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-LocalAuthenticationEmbeddedUI = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-MailKit = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-MapKit = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-MediaAccessibility = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-MediaLibrary = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-MediaPlayer = {version = "10.1", markers = "platform_release >= \"16.0\""} -pyobjc-framework-MediaToolbox = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-Metal = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-MetalFX = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-MetalKit = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-MetalPerformanceShaders = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-MetalPerformanceShadersGraph = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-MetricKit = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-MLCompute = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-ModelIO = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-MultipeerConnectivity = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-NaturalLanguage = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-NetFS = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-Network = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-NetworkExtension = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-NotificationCenter = {version = "10.1", markers = "platform_release >= \"14.0\""} -pyobjc-framework-OpenDirectory = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-OSAKit = "10.1" -pyobjc-framework-OSLog = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-PassKit = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-PencilKit = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-PHASE = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-Photos = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-PhotosUI = {version = "10.1", markers = "platform_release >= \"15.0\""} -pyobjc-framework-PreferencePanes = "10.1" -pyobjc-framework-PubSub = {version = "10.1", markers = "platform_release >= \"9.0\" and platform_release < \"18.0\""} -pyobjc-framework-PushKit = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-Quartz = "10.1" -pyobjc-framework-QuickLookThumbnailing = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-ReplayKit = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-SafariServices = {version = "10.1", markers = "platform_release >= \"16.0\""} -pyobjc-framework-SafetyKit = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-SceneKit = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-ScreenCaptureKit = {version = "10.1", markers = "platform_release >= \"21.4\""} -pyobjc-framework-ScreenSaver = "10.1" -pyobjc-framework-ScreenTime = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-ScriptingBridge = {version = "10.1", markers = "platform_release >= \"9.0\""} -pyobjc-framework-SearchKit = "10.1" -pyobjc-framework-Security = "10.1" -pyobjc-framework-SecurityFoundation = "10.1" -pyobjc-framework-SecurityInterface = "10.1" -pyobjc-framework-SensitiveContentAnalysis = {version = "10.1", markers = "platform_release >= \"23.0\""} -pyobjc-framework-ServiceManagement = {version = "10.1", markers = "platform_release >= \"10.0\""} -pyobjc-framework-SharedWithYou = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-SharedWithYouCore = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-ShazamKit = {version = "10.1", markers = "platform_release >= \"21.0\""} -pyobjc-framework-Social = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-SoundAnalysis = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-Speech = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-SpriteKit = {version = "10.1", markers = "platform_release >= \"13.0\""} -pyobjc-framework-StoreKit = {version = "10.1", markers = "platform_release >= \"11.0\""} -pyobjc-framework-Symbols = {version = "10.1", markers = "platform_release >= \"23.0\""} -pyobjc-framework-SyncServices = "10.1" -pyobjc-framework-SystemConfiguration = "10.1" -pyobjc-framework-SystemExtensions = {version = "10.1", markers = "platform_release >= \"19.0\""} -pyobjc-framework-ThreadNetwork = {version = "10.1", markers = "platform_release >= \"22.0\""} -pyobjc-framework-UniformTypeIdentifiers = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-UserNotifications = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-UserNotificationsUI = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-VideoSubscriberAccount = {version = "10.1", markers = "platform_release >= \"18.0\""} -pyobjc-framework-VideoToolbox = {version = "10.1", markers = "platform_release >= \"12.0\""} -pyobjc-framework-Virtualization = {version = "10.1", markers = "platform_release >= \"20.0\""} -pyobjc-framework-Vision = {version = "10.1", markers = "platform_release >= \"17.0\""} -pyobjc-framework-WebKit = "10.1" +pyobjc-core = "10.2" +pyobjc-framework-Accessibility = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-Accounts = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-AddressBook = "10.2" +pyobjc-framework-AdServices = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-AdSupport = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-AppleScriptKit = "10.2" +pyobjc-framework-AppleScriptObjC = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-ApplicationServices = "10.2" +pyobjc-framework-AppTrackingTransparency = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-AudioVideoBridging = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-AuthenticationServices = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-AutomaticAssessmentConfiguration = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-Automator = "10.2" +pyobjc-framework-AVFoundation = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-AVKit = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-AVRouting = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-BackgroundAssets = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-BrowserEngineKit = {version = "10.2", markers = "platform_release >= \"23.4\""} +pyobjc-framework-BusinessChat = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-CalendarStore = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-CallKit = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-CFNetwork = "10.2" +pyobjc-framework-Cinematic = {version = "10.2", markers = "platform_release >= \"23.0\""} +pyobjc-framework-ClassKit = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-CloudKit = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-Cocoa = "10.2" +pyobjc-framework-Collaboration = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-ColorSync = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-Contacts = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-ContactsUI = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-CoreAudio = "10.2" +pyobjc-framework-CoreAudioKit = "10.2" +pyobjc-framework-CoreBluetooth = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-CoreData = "10.2" +pyobjc-framework-CoreHaptics = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-CoreLocation = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-CoreMedia = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-CoreMediaIO = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-CoreMIDI = "10.2" +pyobjc-framework-CoreML = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-CoreMotion = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-CoreServices = "10.2" +pyobjc-framework-CoreSpotlight = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-CoreText = "10.2" +pyobjc-framework-CoreWLAN = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-CryptoTokenKit = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-DataDetection = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-DeviceCheck = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-DictionaryServices = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-DiscRecording = "10.2" +pyobjc-framework-DiscRecordingUI = "10.2" +pyobjc-framework-DiskArbitration = "10.2" +pyobjc-framework-DVDPlayback = "10.2" +pyobjc-framework-EventKit = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-ExceptionHandling = "10.2" +pyobjc-framework-ExecutionPolicy = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-ExtensionKit = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-ExternalAccessory = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-FileProvider = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-FileProviderUI = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-FinderSync = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-FSEvents = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-GameCenter = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-GameController = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-GameKit = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-GameplayKit = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-HealthKit = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-ImageCaptureCore = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-InputMethodKit = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-InstallerPlugins = "10.2" +pyobjc-framework-InstantMessage = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-Intents = {version = "10.2", markers = "platform_release >= \"16.0\""} +pyobjc-framework-IntentsUI = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-IOBluetooth = "10.2" +pyobjc-framework-IOBluetoothUI = "10.2" +pyobjc-framework-IOSurface = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-iTunesLibrary = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-KernelManagement = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-LatentSemanticMapping = "10.2" +pyobjc-framework-LaunchServices = "10.2" +pyobjc-framework-libdispatch = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-libxpc = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-LinkPresentation = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-LocalAuthentication = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-LocalAuthenticationEmbeddedUI = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-MailKit = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-MapKit = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-MediaAccessibility = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-MediaLibrary = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-MediaPlayer = {version = "10.2", markers = "platform_release >= \"16.0\""} +pyobjc-framework-MediaToolbox = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-Metal = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-MetalFX = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-MetalKit = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-MetalPerformanceShaders = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-MetalPerformanceShadersGraph = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-MetricKit = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-MLCompute = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-ModelIO = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-MultipeerConnectivity = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-NaturalLanguage = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-NetFS = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-Network = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-NetworkExtension = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-NotificationCenter = {version = "10.2", markers = "platform_release >= \"14.0\""} +pyobjc-framework-OpenDirectory = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-OSAKit = "10.2" +pyobjc-framework-OSLog = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-PassKit = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-PencilKit = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-PHASE = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-Photos = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-PhotosUI = {version = "10.2", markers = "platform_release >= \"15.0\""} +pyobjc-framework-PreferencePanes = "10.2" +pyobjc-framework-PubSub = {version = "10.2", markers = "platform_release >= \"9.0\" and platform_release < \"18.0\""} +pyobjc-framework-PushKit = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-Quartz = "10.2" +pyobjc-framework-QuickLookThumbnailing = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-ReplayKit = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-SafariServices = {version = "10.2", markers = "platform_release >= \"16.0\""} +pyobjc-framework-SafetyKit = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-SceneKit = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-ScreenCaptureKit = {version = "10.2", markers = "platform_release >= \"21.4\""} +pyobjc-framework-ScreenSaver = "10.2" +pyobjc-framework-ScreenTime = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-ScriptingBridge = {version = "10.2", markers = "platform_release >= \"9.0\""} +pyobjc-framework-SearchKit = "10.2" +pyobjc-framework-Security = "10.2" +pyobjc-framework-SecurityFoundation = "10.2" +pyobjc-framework-SecurityInterface = "10.2" +pyobjc-framework-SensitiveContentAnalysis = {version = "10.2", markers = "platform_release >= \"23.0\""} +pyobjc-framework-ServiceManagement = {version = "10.2", markers = "platform_release >= \"10.0\""} +pyobjc-framework-SharedWithYou = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-SharedWithYouCore = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-ShazamKit = {version = "10.2", markers = "platform_release >= \"21.0\""} +pyobjc-framework-Social = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-SoundAnalysis = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-Speech = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-SpriteKit = {version = "10.2", markers = "platform_release >= \"13.0\""} +pyobjc-framework-StoreKit = {version = "10.2", markers = "platform_release >= \"11.0\""} +pyobjc-framework-Symbols = {version = "10.2", markers = "platform_release >= \"23.0\""} +pyobjc-framework-SyncServices = "10.2" +pyobjc-framework-SystemConfiguration = "10.2" +pyobjc-framework-SystemExtensions = {version = "10.2", markers = "platform_release >= \"19.0\""} +pyobjc-framework-ThreadNetwork = {version = "10.2", markers = "platform_release >= \"22.0\""} +pyobjc-framework-UniformTypeIdentifiers = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-UserNotifications = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-UserNotificationsUI = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-VideoSubscriberAccount = {version = "10.2", markers = "platform_release >= \"18.0\""} +pyobjc-framework-VideoToolbox = {version = "10.2", markers = "platform_release >= \"12.0\""} +pyobjc-framework-Virtualization = {version = "10.2", markers = "platform_release >= \"20.0\""} +pyobjc-framework-Vision = {version = "10.2", markers = "platform_release >= \"17.0\""} +pyobjc-framework-WebKit = "10.2" [package.extras] -allbindings = ["pyobjc-core (==10.1)", "pyobjc-framework-AVFoundation (==10.1)", "pyobjc-framework-AVKit (==10.1)", "pyobjc-framework-AVRouting (==10.1)", "pyobjc-framework-Accessibility (==10.1)", "pyobjc-framework-Accounts (==10.1)", "pyobjc-framework-AdServices (==10.1)", "pyobjc-framework-AdSupport (==10.1)", "pyobjc-framework-AddressBook (==10.1)", "pyobjc-framework-AppTrackingTransparency (==10.1)", "pyobjc-framework-AppleScriptKit (==10.1)", "pyobjc-framework-AppleScriptObjC (==10.1)", "pyobjc-framework-ApplicationServices (==10.1)", "pyobjc-framework-AudioVideoBridging (==10.1)", "pyobjc-framework-AuthenticationServices (==10.1)", "pyobjc-framework-AutomaticAssessmentConfiguration (==10.1)", "pyobjc-framework-Automator (==10.1)", "pyobjc-framework-BackgroundAssets (==10.1)", "pyobjc-framework-BusinessChat (==10.1)", "pyobjc-framework-CFNetwork (==10.1)", "pyobjc-framework-CalendarStore (==10.1)", "pyobjc-framework-CallKit (==10.1)", "pyobjc-framework-Cinematic (==10.1)", "pyobjc-framework-ClassKit (==10.1)", "pyobjc-framework-CloudKit (==10.1)", "pyobjc-framework-Cocoa (==10.1)", "pyobjc-framework-Collaboration (==10.1)", "pyobjc-framework-ColorSync (==10.1)", "pyobjc-framework-Contacts (==10.1)", "pyobjc-framework-ContactsUI (==10.1)", "pyobjc-framework-CoreAudio (==10.1)", "pyobjc-framework-CoreAudioKit (==10.1)", "pyobjc-framework-CoreBluetooth (==10.1)", "pyobjc-framework-CoreData (==10.1)", "pyobjc-framework-CoreHaptics (==10.1)", "pyobjc-framework-CoreLocation (==10.1)", "pyobjc-framework-CoreMIDI (==10.1)", "pyobjc-framework-CoreML (==10.1)", "pyobjc-framework-CoreMedia (==10.1)", "pyobjc-framework-CoreMediaIO (==10.1)", "pyobjc-framework-CoreMotion (==10.1)", "pyobjc-framework-CoreServices (==10.1)", "pyobjc-framework-CoreSpotlight (==10.1)", "pyobjc-framework-CoreText (==10.1)", "pyobjc-framework-CoreWLAN (==10.1)", "pyobjc-framework-CryptoTokenKit (==10.1)", "pyobjc-framework-DVDPlayback (==10.1)", "pyobjc-framework-DataDetection (==10.1)", "pyobjc-framework-DeviceCheck (==10.1)", "pyobjc-framework-DictionaryServices (==10.1)", "pyobjc-framework-DiscRecording (==10.1)", "pyobjc-framework-DiscRecordingUI (==10.1)", "pyobjc-framework-DiskArbitration (==10.1)", "pyobjc-framework-EventKit (==10.1)", "pyobjc-framework-ExceptionHandling (==10.1)", "pyobjc-framework-ExecutionPolicy (==10.1)", "pyobjc-framework-ExtensionKit (==10.1)", "pyobjc-framework-ExternalAccessory (==10.1)", "pyobjc-framework-FSEvents (==10.1)", "pyobjc-framework-FileProvider (==10.1)", "pyobjc-framework-FileProviderUI (==10.1)", "pyobjc-framework-FinderSync (==10.1)", "pyobjc-framework-GameCenter (==10.1)", "pyobjc-framework-GameController (==10.1)", "pyobjc-framework-GameKit (==10.1)", "pyobjc-framework-GameplayKit (==10.1)", "pyobjc-framework-HealthKit (==10.1)", "pyobjc-framework-IOBluetooth (==10.1)", "pyobjc-framework-IOBluetoothUI (==10.1)", "pyobjc-framework-IOSurface (==10.1)", "pyobjc-framework-ImageCaptureCore (==10.1)", "pyobjc-framework-InputMethodKit (==10.1)", "pyobjc-framework-InstallerPlugins (==10.1)", "pyobjc-framework-InstantMessage (==10.1)", "pyobjc-framework-Intents (==10.1)", "pyobjc-framework-IntentsUI (==10.1)", "pyobjc-framework-KernelManagement (==10.1)", "pyobjc-framework-LatentSemanticMapping (==10.1)", "pyobjc-framework-LaunchServices (==10.1)", "pyobjc-framework-LinkPresentation (==10.1)", "pyobjc-framework-LocalAuthentication (==10.1)", "pyobjc-framework-LocalAuthenticationEmbeddedUI (==10.1)", "pyobjc-framework-MLCompute (==10.1)", "pyobjc-framework-MailKit (==10.1)", "pyobjc-framework-MapKit (==10.1)", "pyobjc-framework-MediaAccessibility (==10.1)", "pyobjc-framework-MediaLibrary (==10.1)", "pyobjc-framework-MediaPlayer (==10.1)", "pyobjc-framework-MediaToolbox (==10.1)", "pyobjc-framework-Metal (==10.1)", "pyobjc-framework-MetalFX (==10.1)", "pyobjc-framework-MetalKit (==10.1)", "pyobjc-framework-MetalPerformanceShaders (==10.1)", "pyobjc-framework-MetalPerformanceShadersGraph (==10.1)", "pyobjc-framework-MetricKit (==10.1)", "pyobjc-framework-ModelIO (==10.1)", "pyobjc-framework-MultipeerConnectivity (==10.1)", "pyobjc-framework-NaturalLanguage (==10.1)", "pyobjc-framework-NetFS (==10.1)", "pyobjc-framework-Network (==10.1)", "pyobjc-framework-NetworkExtension (==10.1)", "pyobjc-framework-NotificationCenter (==10.1)", "pyobjc-framework-OSAKit (==10.1)", "pyobjc-framework-OSLog (==10.1)", "pyobjc-framework-OpenDirectory (==10.1)", "pyobjc-framework-PHASE (==10.1)", "pyobjc-framework-PassKit (==10.1)", "pyobjc-framework-PencilKit (==10.1)", "pyobjc-framework-Photos (==10.1)", "pyobjc-framework-PhotosUI (==10.1)", "pyobjc-framework-PreferencePanes (==10.1)", "pyobjc-framework-PubSub (==10.1)", "pyobjc-framework-PushKit (==10.1)", "pyobjc-framework-Quartz (==10.1)", "pyobjc-framework-QuickLookThumbnailing (==10.1)", "pyobjc-framework-ReplayKit (==10.1)", "pyobjc-framework-SafariServices (==10.1)", "pyobjc-framework-SafetyKit (==10.1)", "pyobjc-framework-SceneKit (==10.1)", "pyobjc-framework-ScreenCaptureKit (==10.1)", "pyobjc-framework-ScreenSaver (==10.1)", "pyobjc-framework-ScreenTime (==10.1)", "pyobjc-framework-ScriptingBridge (==10.1)", "pyobjc-framework-SearchKit (==10.1)", "pyobjc-framework-Security (==10.1)", "pyobjc-framework-SecurityFoundation (==10.1)", "pyobjc-framework-SecurityInterface (==10.1)", "pyobjc-framework-SensitiveContentAnalysis (==10.1)", "pyobjc-framework-ServiceManagement (==10.1)", "pyobjc-framework-SharedWithYou (==10.1)", "pyobjc-framework-SharedWithYouCore (==10.1)", "pyobjc-framework-ShazamKit (==10.1)", "pyobjc-framework-Social (==10.1)", "pyobjc-framework-SoundAnalysis (==10.1)", "pyobjc-framework-Speech (==10.1)", "pyobjc-framework-SpriteKit (==10.1)", "pyobjc-framework-StoreKit (==10.1)", "pyobjc-framework-Symbols (==10.1)", "pyobjc-framework-SyncServices (==10.1)", "pyobjc-framework-SystemConfiguration (==10.1)", "pyobjc-framework-SystemExtensions (==10.1)", "pyobjc-framework-ThreadNetwork (==10.1)", "pyobjc-framework-UniformTypeIdentifiers (==10.1)", "pyobjc-framework-UserNotifications (==10.1)", "pyobjc-framework-UserNotificationsUI (==10.1)", "pyobjc-framework-VideoSubscriberAccount (==10.1)", "pyobjc-framework-VideoToolbox (==10.1)", "pyobjc-framework-Virtualization (==10.1)", "pyobjc-framework-Vision (==10.1)", "pyobjc-framework-WebKit (==10.1)", "pyobjc-framework-iTunesLibrary (==10.1)", "pyobjc-framework-libdispatch (==10.1)", "pyobjc-framework-libxpc (==10.1)"] +allbindings = ["pyobjc-core (==10.2)", "pyobjc-framework-AVFoundation (==10.2)", "pyobjc-framework-AVKit (==10.2)", "pyobjc-framework-AVRouting (==10.2)", "pyobjc-framework-Accessibility (==10.2)", "pyobjc-framework-Accounts (==10.2)", "pyobjc-framework-AdServices (==10.2)", "pyobjc-framework-AdSupport (==10.2)", "pyobjc-framework-AddressBook (==10.2)", "pyobjc-framework-AppTrackingTransparency (==10.2)", "pyobjc-framework-AppleScriptKit (==10.2)", "pyobjc-framework-AppleScriptObjC (==10.2)", "pyobjc-framework-ApplicationServices (==10.2)", "pyobjc-framework-AudioVideoBridging (==10.2)", "pyobjc-framework-AuthenticationServices (==10.2)", "pyobjc-framework-AutomaticAssessmentConfiguration (==10.2)", "pyobjc-framework-Automator (==10.2)", "pyobjc-framework-BackgroundAssets (==10.2)", "pyobjc-framework-BrowserEngineKit (==10.2)", "pyobjc-framework-BusinessChat (==10.2)", "pyobjc-framework-CFNetwork (==10.2)", "pyobjc-framework-CalendarStore (==10.2)", "pyobjc-framework-CallKit (==10.2)", "pyobjc-framework-Cinematic (==10.2)", "pyobjc-framework-ClassKit (==10.2)", "pyobjc-framework-CloudKit (==10.2)", "pyobjc-framework-Cocoa (==10.2)", "pyobjc-framework-Collaboration (==10.2)", "pyobjc-framework-ColorSync (==10.2)", "pyobjc-framework-Contacts (==10.2)", "pyobjc-framework-ContactsUI (==10.2)", "pyobjc-framework-CoreAudio (==10.2)", "pyobjc-framework-CoreAudioKit (==10.2)", "pyobjc-framework-CoreBluetooth (==10.2)", "pyobjc-framework-CoreData (==10.2)", "pyobjc-framework-CoreHaptics (==10.2)", "pyobjc-framework-CoreLocation (==10.2)", "pyobjc-framework-CoreMIDI (==10.2)", "pyobjc-framework-CoreML (==10.2)", "pyobjc-framework-CoreMedia (==10.2)", "pyobjc-framework-CoreMediaIO (==10.2)", "pyobjc-framework-CoreMotion (==10.2)", "pyobjc-framework-CoreServices (==10.2)", "pyobjc-framework-CoreSpotlight (==10.2)", "pyobjc-framework-CoreText (==10.2)", "pyobjc-framework-CoreWLAN (==10.2)", "pyobjc-framework-CryptoTokenKit (==10.2)", "pyobjc-framework-DVDPlayback (==10.2)", "pyobjc-framework-DataDetection (==10.2)", "pyobjc-framework-DeviceCheck (==10.2)", "pyobjc-framework-DictionaryServices (==10.2)", "pyobjc-framework-DiscRecording (==10.2)", "pyobjc-framework-DiscRecordingUI (==10.2)", "pyobjc-framework-DiskArbitration (==10.2)", "pyobjc-framework-EventKit (==10.2)", "pyobjc-framework-ExceptionHandling (==10.2)", "pyobjc-framework-ExecutionPolicy (==10.2)", "pyobjc-framework-ExtensionKit (==10.2)", "pyobjc-framework-ExternalAccessory (==10.2)", "pyobjc-framework-FSEvents (==10.2)", "pyobjc-framework-FileProvider (==10.2)", "pyobjc-framework-FileProviderUI (==10.2)", "pyobjc-framework-FinderSync (==10.2)", "pyobjc-framework-GameCenter (==10.2)", "pyobjc-framework-GameController (==10.2)", "pyobjc-framework-GameKit (==10.2)", "pyobjc-framework-GameplayKit (==10.2)", "pyobjc-framework-HealthKit (==10.2)", "pyobjc-framework-IOBluetooth (==10.2)", "pyobjc-framework-IOBluetoothUI (==10.2)", "pyobjc-framework-IOSurface (==10.2)", "pyobjc-framework-ImageCaptureCore (==10.2)", "pyobjc-framework-InputMethodKit (==10.2)", "pyobjc-framework-InstallerPlugins (==10.2)", "pyobjc-framework-InstantMessage (==10.2)", "pyobjc-framework-Intents (==10.2)", "pyobjc-framework-IntentsUI (==10.2)", "pyobjc-framework-KernelManagement (==10.2)", "pyobjc-framework-LatentSemanticMapping (==10.2)", "pyobjc-framework-LaunchServices (==10.2)", "pyobjc-framework-LinkPresentation (==10.2)", "pyobjc-framework-LocalAuthentication (==10.2)", "pyobjc-framework-LocalAuthenticationEmbeddedUI (==10.2)", "pyobjc-framework-MLCompute (==10.2)", "pyobjc-framework-MailKit (==10.2)", "pyobjc-framework-MapKit (==10.2)", "pyobjc-framework-MediaAccessibility (==10.2)", "pyobjc-framework-MediaLibrary (==10.2)", "pyobjc-framework-MediaPlayer (==10.2)", "pyobjc-framework-MediaToolbox (==10.2)", "pyobjc-framework-Metal (==10.2)", "pyobjc-framework-MetalFX (==10.2)", "pyobjc-framework-MetalKit (==10.2)", "pyobjc-framework-MetalPerformanceShaders (==10.2)", "pyobjc-framework-MetalPerformanceShadersGraph (==10.2)", "pyobjc-framework-MetricKit (==10.2)", "pyobjc-framework-ModelIO (==10.2)", "pyobjc-framework-MultipeerConnectivity (==10.2)", "pyobjc-framework-NaturalLanguage (==10.2)", "pyobjc-framework-NetFS (==10.2)", "pyobjc-framework-Network (==10.2)", "pyobjc-framework-NetworkExtension (==10.2)", "pyobjc-framework-NotificationCenter (==10.2)", "pyobjc-framework-OSAKit (==10.2)", "pyobjc-framework-OSLog (==10.2)", "pyobjc-framework-OpenDirectory (==10.2)", "pyobjc-framework-PHASE (==10.2)", "pyobjc-framework-PassKit (==10.2)", "pyobjc-framework-PencilKit (==10.2)", "pyobjc-framework-Photos (==10.2)", "pyobjc-framework-PhotosUI (==10.2)", "pyobjc-framework-PreferencePanes (==10.2)", "pyobjc-framework-PubSub (==10.2)", "pyobjc-framework-PushKit (==10.2)", "pyobjc-framework-Quartz (==10.2)", "pyobjc-framework-QuickLookThumbnailing (==10.2)", "pyobjc-framework-ReplayKit (==10.2)", "pyobjc-framework-SafariServices (==10.2)", "pyobjc-framework-SafetyKit (==10.2)", "pyobjc-framework-SceneKit (==10.2)", "pyobjc-framework-ScreenCaptureKit (==10.2)", "pyobjc-framework-ScreenSaver (==10.2)", "pyobjc-framework-ScreenTime (==10.2)", "pyobjc-framework-ScriptingBridge (==10.2)", "pyobjc-framework-SearchKit (==10.2)", "pyobjc-framework-Security (==10.2)", "pyobjc-framework-SecurityFoundation (==10.2)", "pyobjc-framework-SecurityInterface (==10.2)", "pyobjc-framework-SensitiveContentAnalysis (==10.2)", "pyobjc-framework-ServiceManagement (==10.2)", "pyobjc-framework-SharedWithYou (==10.2)", "pyobjc-framework-SharedWithYouCore (==10.2)", "pyobjc-framework-ShazamKit (==10.2)", "pyobjc-framework-Social (==10.2)", "pyobjc-framework-SoundAnalysis (==10.2)", "pyobjc-framework-Speech (==10.2)", "pyobjc-framework-SpriteKit (==10.2)", "pyobjc-framework-StoreKit (==10.2)", "pyobjc-framework-Symbols (==10.2)", "pyobjc-framework-SyncServices (==10.2)", "pyobjc-framework-SystemConfiguration (==10.2)", "pyobjc-framework-SystemExtensions (==10.2)", "pyobjc-framework-ThreadNetwork (==10.2)", "pyobjc-framework-UniformTypeIdentifiers (==10.2)", "pyobjc-framework-UserNotifications (==10.2)", "pyobjc-framework-UserNotificationsUI (==10.2)", "pyobjc-framework-VideoSubscriberAccount (==10.2)", "pyobjc-framework-VideoToolbox (==10.2)", "pyobjc-framework-Virtualization (==10.2)", "pyobjc-framework-Vision (==10.2)", "pyobjc-framework-WebKit (==10.2)", "pyobjc-framework-iTunesLibrary (==10.2)", "pyobjc-framework-libdispatch (==10.2)", "pyobjc-framework-libxpc (==10.2)"] [[package]] name = "pyobjc-core" -version = "10.1" +version = "10.2" description = "Python<->ObjC Interoperability Module" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-core-10.1.tar.gz", hash = "sha256:1844f1c8e282839e6fdcb9a9722396c1c12fb1e9331eb68828a26f28a3b2b2b1"}, - {file = "pyobjc_core-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2a72a88222539ad07b5c8be411edc52ff9147d7cef311a2c849869d7bb9603fd"}, - {file = "pyobjc_core-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fe1b9987b7b0437685fb529832876c2a8463500114960d4e76bb8ae96b6bf208"}, - {file = "pyobjc_core-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9f628779c345d3abd0e20048fb0e256d894c22254577a81a6dcfdb92c3647682"}, - {file = "pyobjc_core-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:25a9e5a2de19238787d24cfa7def6b7fbb94bbe89c0e3109f71c1cb108e8ab44"}, - {file = "pyobjc_core-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:2d43205d3a784aa87055b84c0ec0dfa76498e5f18d1ad16bdc58a3dcf5a7d5d0"}, - {file = "pyobjc_core-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0aa9799b5996a893944999a2f1afcf1de119cab3551c169ad9f54d12e1d38c99"}, + {file = "pyobjc-core-10.2.tar.gz", hash = "sha256:0153206e15d0e0d7abd53ee8a7fbaf5606602a032e177a028fc8589516a8771c"}, + {file = "pyobjc_core-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b8eab50ce7f17017a0f1d68c3b7e88bb1bb033415fdff62b8e0a9ee4ab72f242"}, + {file = "pyobjc_core-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f2115971463073426ab926416e17e5c16de5b90d1a1f2a2d8724637eb1c21308"}, + {file = "pyobjc_core-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:a70546246177c23acb323c9324330e37638f1a0a3d13664abcba3bb75e43012c"}, + {file = "pyobjc_core-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a9b5a215080d13bd7526031d21d5eb27a410780878d863f486053a0eba7ca9a5"}, + {file = "pyobjc_core-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:eb1ab700a44bcc4ceb125091dfaae0b998b767b49990df5fdc83eb58158d8e3f"}, + {file = "pyobjc_core-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:c9a7163aff9c47d654f835f80361c1b112886ec754800d34e75d1e02ff52c3d7"}, ] [[package]] name = "pyobjc-framework-accessibility" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Accessibility on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Accessibility-10.1.tar.gz", hash = "sha256:70b812cf2b04b57a520c3fde9df4184c2783795fb355b416a8058114e52ad24a"}, - {file = "pyobjc_framework_Accessibility-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ef8524f2b67240fb3c3f7928f2d73e9050a8b80e18db8336e7ba4d4ba1d368df"}, - {file = "pyobjc_framework_Accessibility-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d351d7799b197524a200c54bebe450e87f9c52812f6162811b7e84823e8946df"}, - {file = "pyobjc_framework_Accessibility-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1dc4e0acedaa0232103714dd2daa3244a628426bee6e933078c89e8eb86b7961"}, + {file = "pyobjc-framework-Accessibility-10.2.tar.gz", hash = "sha256:275c9ac0df1350bf751dbddc81d98f7702cf03ad66e0271876cef9aa70ca5c24"}, + {file = "pyobjc_framework_Accessibility-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c801ad06fadc17f281102408d8a98a844739b3496b9799e2cef2b630a8bec312"}, + {file = "pyobjc_framework_Accessibility-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:861c6f7683c1bd769df85e677905a051f17f01a99a59cbba63b68c2f4bf46066"}, + {file = "pyobjc_framework_Accessibility-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7e0a716b0cc89fbfb68d4ac0eba4bbd9c50a092255efa2794c4bb93b27b05b98"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-accounts" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Accounts on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Accounts-10.1.tar.gz", hash = "sha256:cb436af5b60f1d6a8a59f94d84ea6decba663598d5624fce29a0babf6fad0a89"}, - {file = "pyobjc_framework_Accounts-10.1-py2.py3-none-any.whl", hash = "sha256:30da31a76f2cfd0a4021eff4d4ff69e0a70b2f293290372f5909ae267d15a010"}, + {file = "pyobjc-framework-Accounts-10.2.tar.gz", hash = "sha256:40c8d7299b58b2300db0a6189a7c7056d38385e58700cb40137a744bb03708b7"}, + {file = "pyobjc_framework_Accounts-10.2-py2.py3-none-any.whl", hash = "sha256:9616c8c27f08baadfeea7c27fb1efac043e0785fbbbfbe05f20021402ac5295f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-addressbook" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AddressBook on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AddressBook-10.1.tar.gz", hash = "sha256:9b8e01da07703990f0e745945b01cc75c59ade41913edbd6824194e21522efff"}, - {file = "pyobjc_framework_AddressBook-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2c6cb2278161ed55fba8b47515ff777a95265e484c51ad7a1c952747d8a411ee"}, - {file = "pyobjc_framework_AddressBook-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:10236b9112c8e5d83526804ca734a5f176bba435c2451c4b43c1247e76d9f73d"}, - {file = "pyobjc_framework_AddressBook-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e4305cf6366fa2e01040f490360283f572103be0a45d190774869915c2707c54"}, + {file = "pyobjc-framework-AddressBook-10.2.tar.gz", hash = "sha256:d6969fcbde1d78ec9fa0ebcefc2f453090e35d7590c4b4baf62174e060de6bce"}, + {file = "pyobjc_framework_AddressBook-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6558b05e9d40a7f40650cddde9b71cb6fb536edf891985c977d4abc626f07a63"}, + {file = "pyobjc_framework_AddressBook-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c57347c04b11310f980e3d6cadc84ebc701d2216853108f9b708c03b0d295a59"}, + {file = "pyobjc_framework_AddressBook-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ba6eff580e4764dc9616b73cf4794cd44b4389b98f95696bac0bb5190f6a1211"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-adservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AdServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AdServices-10.1.tar.gz", hash = "sha256:54d2dd3084374213e31760bae9df1e6e9da3b3f1cc04787dae3ad53f8fc12f69"}, - {file = "pyobjc_framework_AdServices-10.1-py2.py3-none-any.whl", hash = "sha256:79ec6eb744635b72ffd0bdd5e55cb5ec57603633716861bbf40b236d8dba0dfd"}, + {file = "pyobjc-framework-AdServices-10.2.tar.gz", hash = "sha256:76eafba018c819c1770f88daa68d25fc5f06dc93a9f5e369d329d0f341dec3af"}, + {file = "pyobjc_framework_AdServices-10.2-py2.py3-none-any.whl", hash = "sha256:b03fcd460b632fc1b3fd8275060255e518933d1d0da06d6eda9b128b4e2999ec"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-adsupport" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AdSupport on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AdSupport-10.1.tar.gz", hash = "sha256:df6b2d1cc1202905dcf6bcdbf35121acc45c346a57b1048f5f4d1ea15bc29c9c"}, - {file = "pyobjc_framework_AdSupport-10.1-py2.py3-none-any.whl", hash = "sha256:d61f2e44f6c2ed5c33b6520754ef8ea22470f8ac3154912aa44bee4fb792255c"}, + {file = "pyobjc-framework-AdSupport-10.2.tar.gz", hash = "sha256:1eb76dc039d081e6d25b4fd334a3987bd9f73527a17844c421bcc8289dd16968"}, + {file = "pyobjc_framework_AdSupport-10.2-py2.py3-none-any.whl", hash = "sha256:4883ac30f1d78d764b57aacb46af78018f2302b9f7e8f4e1fccb25c3cb44ab74"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-applescriptkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AppleScriptKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AppleScriptKit-10.1.tar.gz", hash = "sha256:e41cd0037cbe0af4ffecc42339d1b6255f2539dfb6dedf4f2ae00ac1a260eecf"}, - {file = "pyobjc_framework_AppleScriptKit-10.1-py2.py3-none-any.whl", hash = "sha256:b88bc8ae9e000d382c3e1d72b3c4f39499323fbe88cc84af259925448c187387"}, + {file = "pyobjc-framework-AppleScriptKit-10.2.tar.gz", hash = "sha256:871452c17b15ce33337cd7ebd293fe31daef9f02f16ebb649efc36165cfb02da"}, + {file = "pyobjc_framework_AppleScriptKit-10.2-py2.py3-none-any.whl", hash = "sha256:15af7d97f017563ff3771127a2b7c515496aa6083497415cbe8c27dd5811c50f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-applescriptobjc" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AppleScriptObjC on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AppleScriptObjC-10.1.tar.gz", hash = "sha256:cfcec31b25a4c201188936347697ff3eb1f79885a43af26559a572391c50cdf9"}, - {file = "pyobjc_framework_AppleScriptObjC-10.1-py2.py3-none-any.whl", hash = "sha256:500ed0e39bf2a4f2413d8d6dc398bb58f233ca3670f6946aa5c6d14d1b563465"}, + {file = "pyobjc-framework-AppleScriptObjC-10.2.tar.gz", hash = "sha256:71f90e41be6beb392a833d915d3af13d10526bfb29bf35cb9af1578b5ec52566"}, + {file = "pyobjc_framework_AppleScriptObjC-10.2-py2.py3-none-any.whl", hash = "sha256:41156fcc36acc3ca7bd0a62af47af4ab8089330c6072db6047b91b52f815f049"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-applicationservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ApplicationServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ApplicationServices-10.1.tar.gz", hash = "sha256:bb780eabadad0fbf36a128041dccfd71e30bbeb6b110852d37fd5c98f4a2ec04"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a74a0922b48ad5ac4e402a1ac5dda5d6ee0d177870b7e244be61bc95d639ba85"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff352c33cad3f7bf8dd9b955ebb5db02d451d88eb04478d83edf0edd0cc8bf5d"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:6d0706d5d9436298c8d619a1bb5be11a1f4ff9f4733797a393c6a706568de110"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:95bd111583c3bf20656393c2a056a457b0cf08c76c0ab27cfcaedf92f707e8a9"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:90a2350ddae3d9fb7b2e35e3b672b64854edae497fda8d7d4d798679c8280fed"}, - {file = "pyobjc_framework_ApplicationServices-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8bc830ac60b73a4cab24d1b1fdd8b044f25fe02e0af63a92cd96c43a51808c96"}, + {file = "pyobjc-framework-ApplicationServices-10.2.tar.gz", hash = "sha256:f83d6ed3320afb6648be6defafe0f05bac00d0281fc84ee4766ff977309b659f"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2aebfed888f9bcb4f11d93f9ef9a76d561e92848dcb6011da5d5e9d3593371be"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:edfd3153e64ee9573bcff7ccaa1fbbbd6964658f187464c461ad34f24552bc85"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:9d2c89b246c19a041221ff36e9121c92e86a4422016f809a40f5ce3d647882d9"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ee1e69947f31aad5fdec44921ce37f7f921faf50a0ceb27ed40b6d54f4b15d0e"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:101f5b09d71e55bd39e6e91f0787433805d422622336b72fde969a7c54528045"}, + {file = "pyobjc_framework_ApplicationServices-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7a3ef00c9aea09c5ef5840b8749d0753249869bc30e124145b763cd0b4b81155"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreText = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreText = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-apptrackingtransparency" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AppTrackingTransparency on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AppTrackingTransparency-10.1.tar.gz", hash = "sha256:7d75a1d2c07b4d60e79c014b509f7a217b8e43ffb856b05aac5e12dfb03aa662"}, - {file = "pyobjc_framework_AppTrackingTransparency-10.1-py2.py3-none-any.whl", hash = "sha256:5dee7e163a6b325315410ca4929f1e07162403fc0f62d7d6a8dd504b544e1626"}, + {file = "pyobjc-framework-AppTrackingTransparency-10.2.tar.gz", hash = "sha256:2eb7276fc70c676562e33c3f7b2fe254175236f968516c63cc8507f325ac56db"}, + {file = "pyobjc_framework_AppTrackingTransparency-10.2-py2.py3-none-any.whl", hash = "sha256:de140b6b6ca1df928d13d986b093f19b8be0c9ab7c42f4121bdbf58f5c69df48"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-audiovideobridging" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AudioVideoBridging on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AudioVideoBridging-10.1.tar.gz", hash = "sha256:73d049a9d203541c12a672af37676c8dddf68217a3e9212510544cb457e77db0"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:574ead9349db4d37ec6db865cf71d8fdf74d5b4d4b577aa5c56c77a5c17f4fff"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e9ea894545e5ed1fa9b772dcea876bdb16dac9300e021a81f8b92ec8ed876efb"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:be025276db7bf431361f908c45af631c5c97a138069127ca43e679640fd2b935"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a8d470904288e9ea7a9fb758cb704cbbebaec941c1e11d358c5260f117cbcad6"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a4ad2cb237ffaa3868eed2ed8869488cb44a8a85a63b2dfe6421be2cb5cbde9e"}, - {file = "pyobjc_framework_AudioVideoBridging-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:41e9ed25b14b30e5eb488a8278fd86cb0973a5677698b534a18c4917b7ec9f9d"}, + {file = "pyobjc-framework-AudioVideoBridging-10.2.tar.gz", hash = "sha256:94d77284aae3a151124aa170074c2902537f540debb076376d49f5ee54fb9ce1"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:180e0d1862ba7748a8e4dff0bfeb5dc162bc4d7b0c0888a333f11dbf2569af74"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1d68f51143e8da14940ea54edd1236e5cd229dcbc83350551945df285b482704"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e0bd4ed2f8a16795b1b46ea9bed746995044f2cd6afb808018ac9c1549dc60b4"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2300d1c9ac22cfa8ef80a86dcdf3bc0be1cfa26a61c560f976fbcd0abfb4f13c"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:a5d48b8192385ef2e0bea47c7b65ca1e0d06d1bdc4a7da59f3d1df3932c5f11c"}, + {file = "pyobjc_framework_AudioVideoBridging-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3883a0f76187a120ad1478f674be245d2949d1bae436d697786ad4086d878b18"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-authenticationservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AuthenticationServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AuthenticationServices-10.1.tar.gz", hash = "sha256:2d686019564f18390ac16d3b225c6c8fead03d929e8cee16942fc532599e15be"}, - {file = "pyobjc_framework_AuthenticationServices-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:364b4f94171c78d5da9172fdf30ef71958da010d923f6fc8f673f8d2e3c8e9ef"}, - {file = "pyobjc_framework_AuthenticationServices-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:09636bd6614d440e0475ba05beba42aa79a73c4fe310e9e79dea4821e57685ae"}, - {file = "pyobjc_framework_AuthenticationServices-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:dd03dc0c4ad5c40a688ceca813b5c05ae99b72e6201a5a700d1d2722eee8fba3"}, + {file = "pyobjc-framework-AuthenticationServices-10.2.tar.gz", hash = "sha256:1be0f05458c4ebfc3e018cb59b4a8bd9022c42b18fea449b0fbf5def0b5f7ef7"}, + {file = "pyobjc_framework_AuthenticationServices-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c797abcd8fb1d9f0f48849093fcbf480814256fca9f1a835445f551a369541e2"}, + {file = "pyobjc_framework_AuthenticationServices-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cf172a06ffab3faa98a95041ce5205ec6c516b59513390d48cfafe17ff4add08"}, + {file = "pyobjc_framework_AuthenticationServices-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3d6b81342caa28dbdc44c3f32820958e0b3865bd3e5bac7ba5ce9efc293e0d75"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-automaticassessmentconfiguration" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AutomaticAssessmentConfiguration on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AutomaticAssessmentConfiguration-10.1.tar.gz", hash = "sha256:c8f32f5586f7d7f9fd12343714c7439a1dfad5b5393f403aee440b5f91ef9f7d"}, - {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf009cddaa8d62eedaeb4878cc7acab80f4e9bb0bd83a5dff79590bab08b81ce"}, - {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c0ea6fa98e07a9cbcd90b7482022be5e1dc99e3170dcf2d4937ab17c5c2879dd"}, - {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4d47b95c515781fa5553443f38782f5e9b1aa7c1938449bcbb2377776441c54c"}, + {file = "pyobjc-framework-AutomaticAssessmentConfiguration-10.2.tar.gz", hash = "sha256:ead3f75200ad74dd013b4a6372054b84b2adeacdac656ca31e763e42fb76cf7b"}, + {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f4a60e1f1dae0d8d9223cb09c945aeb5688c09b3dffa9c6e9457981b05902874"}, + {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1ca34d71b7def8bf4e820e0ee64cae0d732309c6ddc126699a5bbd0c5719dc48"}, + {file = "pyobjc_framework_AutomaticAssessmentConfiguration-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:cb3242e2943768e02208c13b4eef47068f0e1ff8ad5572fabfaef7964737daaa"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-automator" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Automator on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Automator-10.1.tar.gz", hash = "sha256:0e95fc90a2930d108d38b61b4365f3678edd5aa25d26598fe39924c890813e80"}, - {file = "pyobjc_framework_Automator-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5c46ca5a97f6193432ad5195f6dfc261d66f70aea8371aa04f5c0ef85eb959f9"}, - {file = "pyobjc_framework_Automator-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e16540ca8f432de665997566e1cf1b43e8c7bea90a3460ab0aaccdb51bdac13c"}, - {file = "pyobjc_framework_Automator-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0a8b26890e1b0728c7150cd81dfb7c3d091752e71550a5a8db27c703915b7f40"}, + {file = "pyobjc-framework-Automator-10.2.tar.gz", hash = "sha256:fb753e5bd40bfe720fa9e60e2ea5a1777b4c92082ffeba42b4055cdd56cb022d"}, + {file = "pyobjc_framework_Automator-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0034f9e64c3e77b8e1adc54170868954af67b50457b768982de705d8cd170792"}, + {file = "pyobjc_framework_Automator-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e3b66af8ecd2effca8d51b512518137173b026ab13c30dbdac3d0d7ee059fc48"}, + {file = "pyobjc_framework_Automator-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d7f26be322fee0476125bfb2658a08db81b705ce0e8880e91c627562419a9821"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-avfoundation" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AVFoundation on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AVFoundation-10.1.tar.gz", hash = "sha256:07e065c6904fbd6afc434a79888461cdd4097b4153dd592dcbe9c8bef01ee701"}, - {file = "pyobjc_framework_AVFoundation-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3475f2a5c18cab80a23266470bc7014a88c8e1e8894e96f9f75e960b82679723"}, - {file = "pyobjc_framework_AVFoundation-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fad5c9190d633f51193a62c4354f2fb7be3511c31a0c58f17e351bb30bfadad3"}, - {file = "pyobjc_framework_AVFoundation-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:6ee76be15a6ad7caf9db71c682fb677d29df6c1bb2972ed2f21283f1b3e99f45"}, + {file = "pyobjc-framework-AVFoundation-10.2.tar.gz", hash = "sha256:4d394014f2477c0c6a596dbb01ef5d92944058d0e0d954ce6121a676ae9395ce"}, + {file = "pyobjc_framework_AVFoundation-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5f20c11a8870d7d58f0e4f20f918e45e922520aa5c9dbee61dc59ca4bc4bd26d"}, + {file = "pyobjc_framework_AVFoundation-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:283355d1f96c184e5f5f479870eb3bf510747307697616737bbc5d224af3abcb"}, + {file = "pyobjc_framework_AVFoundation-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a63a4e26c088023b0b1cb29d7da2c2246aa8eca2b56767fe1cc36a18c6fb650b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreAudio = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreAudio = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-avkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AVKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AVKit-10.1.tar.gz", hash = "sha256:15779995d4bb3b231a09d9032cf42e8f2681e4271ee677076a08c60a1b45fac7"}, - {file = "pyobjc_framework_AVKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e73da23397f0d9397a5f78223b06a49873d11cce71f06d486316a006220b587"}, - {file = "pyobjc_framework_AVKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2ea71aa0c9230c37da6dab710b237ea67ea16a5ed2cd5f6123a562c8c6b6fa20"}, - {file = "pyobjc_framework_AVKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3c00b4448d0480e92d7a0dfe62d92d42554ddb45c7183c256931e47dafca1dce"}, + {file = "pyobjc-framework-AVKit-10.2.tar.gz", hash = "sha256:6497a5109a29235a7fd8bddcb6d79bd495ccd9373b41e84ca3f012a642e5b880"}, + {file = "pyobjc_framework_AVKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:480766be9da6bb1a6272a4f13f6a327ec952fe1cd41eb0e7c3a07abb07a3491f"}, + {file = "pyobjc_framework_AVKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c9cfdc9ef8f7c9abe53841e8e548b2671f0a425ce9e0e4961314f5d080401e68"}, + {file = "pyobjc_framework_AVKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ff811fc88fb9d676a4892adea21a1a82384777af53153c74bb829501721f3374"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-avrouting" -version = "10.1" +version = "10.2" description = "Wrappers for the framework AVRouting on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-AVRouting-10.1.tar.gz", hash = "sha256:148fc29d0d5e73fb23ed64edede3f74d902ec41b7a7869435816a7a1b37aa038"}, - {file = "pyobjc_framework_AVRouting-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2a2d6524ac870a0b022beb33f0a9ec8870dfb62524d778b7cb54b7946705a3ac"}, - {file = "pyobjc_framework_AVRouting-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:643412674490719dc05c3e4c010e464d50b51e834428e97739510f513ecc008d"}, - {file = "pyobjc_framework_AVRouting-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:103e99db20099331afe637d4bcc39ec7c5d8fe3edefa2dd0a865d6f5d15b0f65"}, + {file = "pyobjc-framework-AVRouting-10.2.tar.gz", hash = "sha256:133d646cf36cfa329c2b3a060c7b81368a95bfbb24f30e2bae2804be65b93ec9"}, + {file = "pyobjc_framework_AVRouting-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1f72c23e92981311e218a04f3cfcd0ef4c3a93058af6e0042c7cf835320300cc"}, + {file = "pyobjc_framework_AVRouting-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a91d65fda866e64bd249c0f11017d0d9f569b3e9d6d159c38e64e1b144a04d85"}, + {file = "pyobjc_framework_AVRouting-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3357ed6b9bf583ded7eee4531ac1854c6e1cdfe91a278f2dec18593d2381d488"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-backgroundassets" -version = "10.1" +version = "10.2" description = "Wrappers for the framework BackgroundAssets on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-BackgroundAssets-10.1.tar.gz", hash = "sha256:0a770f77f7fe6d715cf02e95a5efb70895ee19736cf0fa0ecbb3c320f4fa3430"}, - {file = "pyobjc_framework_BackgroundAssets-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:82bfc758b8c542e0b155a922e0dc901fdcd6b6a7574f4575725cfadb8d248825"}, - {file = "pyobjc_framework_BackgroundAssets-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a4f6e2dea9f2cb507e94e0c3c621e2e6af613770a8595ff17aedb34dc2fa56b4"}, - {file = "pyobjc_framework_BackgroundAssets-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4dfe00a649dd7c7aee0f25daf96c8c35438ed69ec324bcad81d5a87110759a72"}, + {file = "pyobjc-framework-BackgroundAssets-10.2.tar.gz", hash = "sha256:97ad7b0c693e406950c0c4af2edc9320eac9aef7fdf33274903f526b4682fcb7"}, + {file = "pyobjc_framework_BackgroundAssets-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a71de388248ed05eda85abc440dbe3f04ff39567745785df25b1d5316b2aa9f1"}, + {file = "pyobjc_framework_BackgroundAssets-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:476a7fc80a4083405c82b0bb0d8551cccd10f998a2a9d35c8eab76c82915d25e"}, + {file = "pyobjc_framework_BackgroundAssets-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:9c8721ea4695f1cd5f1f7d6b2a70b3e2b9cefe484289b7427cfda5d23b48e7b6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" + +[[package]] +name = "pyobjc-framework-browserenginekit" +version = "10.2" +description = "Wrappers for the framework BrowserEngineKit on macOS" +optional = false +python-versions = ">=3.8" +files = [ + {file = "pyobjc-framework-BrowserEngineKit-10.2.tar.gz", hash = "sha256:a47648e62d3482d39179ffe51543322817dd7a639cef9dcd555dfcc7d6a6497f"}, + {file = "pyobjc_framework_BrowserEngineKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:98563b461e2c96ad387abe1885e91f7bc0686868b39c273774e087bbf1b500ac"}, + {file = "pyobjc_framework_BrowserEngineKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5eb3d8f9e198aaeb01a4a85aa739624942c39b626400d232271d632f1ee30e09"}, + {file = "pyobjc_framework_BrowserEngineKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:6824c528e10da1b560d83f55e258232b8916d49d12a578dd00d3ec4e702d3011"}, +] + +[package.dependencies] +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreAudio = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-businesschat" -version = "10.1" +version = "10.2" description = "Wrappers for the framework BusinessChat on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-BusinessChat-10.1.tar.gz", hash = "sha256:f361139464532d84bb29d520f2b045a4a63e960d07a0dd574c6c15dd67f890ed"}, - {file = "pyobjc_framework_BusinessChat-10.1-py2.py3-none-any.whl", hash = "sha256:60df5660a9a90a461c68a6cb49326c25e81f3412e951e84be7ccc98b62eb5404"}, + {file = "pyobjc-framework-BusinessChat-10.2.tar.gz", hash = "sha256:44ecf240da59ce36f2d75d1ed9f58e05f2df46b9b1989ee0cc184a46c779fb4e"}, + {file = "pyobjc_framework_BusinessChat-10.2-py2.py3-none-any.whl", hash = "sha256:aa51d4d0b3b3eb050242e0d0e48b29e020ccfeb82a39c0d3a2289512734f53e4"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-calendarstore" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CalendarStore on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CalendarStore-10.1.tar.gz", hash = "sha256:6274d7eb94353813aefca236276c5b6dc6445a48fff39e832478db17c47e34c1"}, - {file = "pyobjc_framework_CalendarStore-10.1-py2.py3-none-any.whl", hash = "sha256:cbd8ec495d9b13cc986b018d8740e25a4e18a25732ee19de1311f0c30ab53120"}, + {file = "pyobjc-framework-CalendarStore-10.2.tar.gz", hash = "sha256:131c14faa227a251d7254afd9c00fef203361dd76224d9700ba5e99682e191d8"}, + {file = "pyobjc_framework_CalendarStore-10.2-py2.py3-none-any.whl", hash = "sha256:e289236df651953a41be8ee4ce548f477a6ab8e90aa8bbd73f46ad29032ff13f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-callkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CallKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CallKit-10.1.tar.gz", hash = "sha256:9a5165f35e31d98b7d1539c9b979cabd01064926903389fc558cbc71bf86ddd4"}, - {file = "pyobjc_framework_CallKit-10.1-py2.py3-none-any.whl", hash = "sha256:f82e791b2dbae4adfcc596949975573309a0127ba02d4c35743501f6665ec610"}, + {file = "pyobjc-framework-CallKit-10.2.tar.gz", hash = "sha256:45cd81a5b6b0107ba56e26d8e54e852b8a15b3487b7291b5818e10e94beee6d0"}, + {file = "pyobjc_framework_CallKit-10.2-py2.py3-none-any.whl", hash = "sha256:f3f26c877743a340718e0647ccee4604f9d87aa8ad5c3268c794d94f6f9246ee"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-cfnetwork" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CFNetwork on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CFNetwork-10.1.tar.gz", hash = "sha256:898fa3ec863b9d72b3262135e1b0a24bc73879b65c69a2a7b213fe840e2a11de"}, - {file = "pyobjc_framework_CFNetwork-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:82f6fa09d67e25ef1cd92596b25328a6c295341c40a572e899c9e858ce949a1d"}, - {file = "pyobjc_framework_CFNetwork-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c598f18e50480a92df3c69c22cd1752844eb487176ada5e1c1b80670fb05e4eb"}, - {file = "pyobjc_framework_CFNetwork-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:90697ae10c7fb83d81f25d3800f33846329121bedefd495b45d47a0f0d996a73"}, + {file = "pyobjc-framework-CFNetwork-10.2.tar.gz", hash = "sha256:18ebd22c645b5b77c1df6d973a91cc035ddd4666346912b2a0c847803c23f4d4"}, + {file = "pyobjc_framework_CFNetwork-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6050428c99505e09db1fe5d0eafaaca4ead407ffaaab8a5c1e5ec09e7ad31053"}, + {file = "pyobjc_framework_CFNetwork-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f7a305d7f94a11dd32d3ab9159cde1f9655f107282373841668624b124935af8"}, + {file = "pyobjc_framework_CFNetwork-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:41a211b934afebbc9dd9ce76cb5c2862244a699a41badb660ab46c198414c4cb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-cinematic" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Cinematic on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Cinematic-10.1.tar.gz", hash = "sha256:a1210338de5a739b00304555ce15b70b36deebdbd3c6940f8e9531253219edce"}, - {file = "pyobjc_framework_Cinematic-10.1-py2.py3-none-any.whl", hash = "sha256:73408d3bfd9b08389eb6787b0b5df4fe9c351c936fa9b1f95a9c723951e9a988"}, + {file = "pyobjc-framework-Cinematic-10.2.tar.gz", hash = "sha256:514effad241be5c8df4ef870683fa1387909970a7f7d8bbf343c06e840931854"}, + {file = "pyobjc_framework_Cinematic-10.2-py2.py3-none-any.whl", hash = "sha256:962af237b284605ecd30d584d2d7fb75fda40e429327578de5d651644d0316da"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-AVFoundation = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" -pyobjc-framework-Metal = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-AVFoundation = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Metal = ">=10.2" [[package]] name = "pyobjc-framework-classkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ClassKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ClassKit-10.1.tar.gz", hash = "sha256:baf79b1296662525d0fa486d4488720cceebe63595765cfeade61aeb78a4216f"}, - {file = "pyobjc_framework_ClassKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:502949573701363947bf64f7ac9dedab7247037c0e53c7db080c871f3ca52aa8"}, - {file = "pyobjc_framework_ClassKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e6d7c2e8b87b285ce21582c602be23960349e23111c8d02bcc3b9192090b437e"}, - {file = "pyobjc_framework_ClassKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5ac34c1d491e15f81df83b406a281d3176fff8476e053bb8476cad7e4fa102e7"}, + {file = "pyobjc-framework-ClassKit-10.2.tar.gz", hash = "sha256:252e47e3284491e48000d4d87948b31e396aaa78eaf2447ba03a71f4b97cb989"}, + {file = "pyobjc_framework_ClassKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:9d5f69e7bba660ca989e699d4b38a93db7ee3f8cff45e67a23fb852ac3caab49"}, + {file = "pyobjc_framework_ClassKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e1acc7231ef030125eaf7302f324909c56ba1c58ff91f4e160b6632938db64df"}, + {file = "pyobjc_framework_ClassKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:87158ca3d7cd78c50af353c23f32e1e8eb0adec47dc15fa4e4d777017d308b80"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-cloudkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CloudKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CloudKit-10.1.tar.gz", hash = "sha256:8f0109f29ac6554c22cc21c06f6fd0a23e3e49556b0ab2532eb1d69ac2a7cd96"}, - {file = "pyobjc_framework_CloudKit-10.1-py2.py3-none-any.whl", hash = "sha256:ffdedaaa8384a64df6b30d45c834dffa002a63b8e74578012b6261780f31c28c"}, + {file = "pyobjc-framework-CloudKit-10.2.tar.gz", hash = "sha256:497a0dda5f5a9aafc795e1941ef3e3662c2f3240096ce68893d0d5de6d54a474"}, + {file = "pyobjc_framework_CloudKit-10.2-py2.py3-none-any.whl", hash = "sha256:32bd77c2b9109113b2321feb6ed6d754af99df6569d953371f1547123be80467"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Accounts = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreData = ">=10.1" -pyobjc-framework-CoreLocation = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Accounts = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreData = ">=10.2" +pyobjc-framework-CoreLocation = ">=10.2" [[package]] name = "pyobjc-framework-cocoa" -version = "10.1" +version = "10.2" description = "Wrappers for the Cocoa frameworks on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Cocoa-10.1.tar.gz", hash = "sha256:8faaf1292a112e488b777d0c19862d993f3f384f3927dc6eca0d8d2221906a14"}, - {file = "pyobjc_framework_Cocoa-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:2e82c2e20b89811d92a7e6e487b6980f360b7c142e2576e90f0e7569caf8202b"}, - {file = "pyobjc_framework_Cocoa-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0860a9beb7e5c72a1f575679a6d1428a398fa19ad710fb116df899972912e304"}, - {file = "pyobjc_framework_Cocoa-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:34b791ea740e1afce211f19334e45469fea9a48d8fce5072e146199fd19ff49f"}, - {file = "pyobjc_framework_Cocoa-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1398c1a9bebad1a0f2549980e20f4aade00c341b9bac56b4493095a65917d34a"}, - {file = "pyobjc_framework_Cocoa-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:22be21226e223d26c9e77645564225787f2b12a750dd17c7ad99c36f428eda14"}, - {file = "pyobjc_framework_Cocoa-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0280561f4fb98a864bd23f2c480d907b0edbffe1048654f5dfab160cea8198e6"}, + {file = "pyobjc-framework-Cocoa-10.2.tar.gz", hash = "sha256:6383141379636b13855dca1b39c032752862b829f93a49d7ddb35046abfdc035"}, + {file = "pyobjc_framework_Cocoa-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f9227b4f271fda2250f5a88cbc686ff30ae02c0f923bb7854bb47972397496b2"}, + {file = "pyobjc_framework_Cocoa-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6a6042b7703bdc33b7491959c715c1e810a3f8c7a560c94b36e00ef321480797"}, + {file = "pyobjc_framework_Cocoa-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:18886d5013cd7dc7ecd6e0df5134c767569b5247fc10a5e293c72ee3937b217b"}, + {file = "pyobjc_framework_Cocoa-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1ecf01400ee698d2e0ff4c907bcf9608d9d710e97203fbb97b37d208507a9362"}, + {file = "pyobjc_framework_Cocoa-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:0def036a7b24e3ae37a244c77bec96b7c9c8384bf6bb4d33369f0a0c8807a70d"}, + {file = "pyobjc_framework_Cocoa-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5f47ecc393bc1019c4b47e8653207188df784ac006ad54d8c2eb528906ff7013"}, ] [package.dependencies] -pyobjc-core = ">=10.1" +pyobjc-core = ">=10.2" [[package]] name = "pyobjc-framework-collaboration" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Collaboration on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Collaboration-10.1.tar.gz", hash = "sha256:e85c6bd8b74b1707f66847ed71de077565d5e9fe6e7ed4db3cdafc2408723da5"}, - {file = "pyobjc_framework_Collaboration-10.1-py2.py3-none-any.whl", hash = "sha256:9a2137aaed1ad71bf6c92c7c275253c2dc6f0062af9d2d8a1590d00bf30c1ecb"}, + {file = "pyobjc-framework-Collaboration-10.2.tar.gz", hash = "sha256:32e3a7fe8447f38fd3be5ea1fe9c1e52efef3889f4bd5781dffa3c5fa044fe20"}, + {file = "pyobjc_framework_Collaboration-10.2-py2.py3-none-any.whl", hash = "sha256:239a0505d702d49b5c3f0a3524531f9be63d599ea2cd3cbb5953147b34dbdcc1"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-colorsync" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ColorSync on Mac OS X" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ColorSync-10.1.tar.gz", hash = "sha256:2c6ee65dfca6bc41f0e9dffaf1adebc78a7fb5cee63740b092ade226710c1c32"}, - {file = "pyobjc_framework_ColorSync-10.1-py2.py3-none-any.whl", hash = "sha256:58596365b270453c3ce10bb168383c615321fa377a983eba3021f664c98f852a"}, + {file = "pyobjc-framework-ColorSync-10.2.tar.gz", hash = "sha256:108105c281b375dff7d226fcc3f860621a4880dcbab711660b74dc458a506231"}, + {file = "pyobjc_framework_ColorSync-10.2-py2.py3-none-any.whl", hash = "sha256:2fcc68eb6fa6300d34b95b1da1cc8d244f6999aed4b83099a3323d32e0349f98"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-contacts" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Contacts on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Contacts-10.1.tar.gz", hash = "sha256:949d61ff7f4f07956949f8945ad627ffa89cce3d10af9442591e519791a25cc4"}, - {file = "pyobjc_framework_Contacts-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b10c068b5a79fcb0240ea4cd1048162277f36567a84333a0bd0168f851168f99"}, - {file = "pyobjc_framework_Contacts-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a3bb6fb24deae41a0879ac321e6401b43e5fbedba0a75ced67b2048a4852c3ff"}, - {file = "pyobjc_framework_Contacts-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:16556f06202b1b4fd9da8e3186b6140b582a4032437cdab2f5f8b32b24f3e3ed"}, + {file = "pyobjc-framework-Contacts-10.2.tar.gz", hash = "sha256:5a9de975f41c7dac3c219b4c60cd08b8ba385685db7997c8622f19e0a43e6857"}, + {file = "pyobjc_framework_Contacts-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b5ff801009c9346927b7efc82434ac14a0c2798bd018daf1e7d8aad74484b490"}, + {file = "pyobjc_framework_Contacts-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:52dd5e4b4574b2438420a56867ca2069e29414087dc27ad03e7c46d536f1e641"}, + {file = "pyobjc_framework_Contacts-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8a387c47e90c74a3e6f4bc81187f1fde18a020bb1d08067497a0c35f462299f9"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-contactsui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ContactsUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ContactsUI-10.1.tar.gz", hash = "sha256:0b97e4c5599ab269f53597dd8f47a45599434c833e72185d5d3a257413a6faf4"}, - {file = "pyobjc_framework_ContactsUI-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5c70ff6b07e48331f25138bc159f7215d9b5d6825da844fec26ba403aad53f52"}, - {file = "pyobjc_framework_ContactsUI-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:876c1280fcb13c89a5fd89e7c3ace04bfd3c3b418cb64b6579dcbee1e9156377"}, - {file = "pyobjc_framework_ContactsUI-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a5ee22f1e893eb79633ed425972e50c5ec9b0a1d20cf6fbf21bf68d1bbfec436"}, + {file = "pyobjc-framework-ContactsUI-10.2.tar.gz", hash = "sha256:2dd5f1993c36caf13527de0890c6c49c08a339e58bc3b3fa303d5a04b672b418"}, + {file = "pyobjc_framework_ContactsUI-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c8af8b52853ba2a09664dad40255613f01089c9bc77e5316b29d27c65603863c"}, + {file = "pyobjc_framework_ContactsUI-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:47a8fd0aa5cb680b0ba0f1fdd37f56525729e5ed998df2a312e9f81feea8fbb0"}, + {file = "pyobjc_framework_ContactsUI-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0575650e6e5985950bcd424da0b50e981ea5e6819d1c6fbccb075585e424e121"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Contacts = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Contacts = ">=10.2" [[package]] name = "pyobjc-framework-coreaudio" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreAudio on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreAudio-10.1.tar.gz", hash = "sha256:713ca82fc363ea6cf373d2db0b183f39058bcadceb8229d9e8839b783104f8e2"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9348f613a1f35bbeb7d1d899e2ee3876881cd0433e59f584f30ba96e179d960a"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e0192dddd2f99db51cdb0959e80f29f9f531ba8bd0421e06ae9212f34a05c48a"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:b1a4612ce87dfcca3c939ec5885d4578955f5ff4d017f95d4459d5fb3bdc8970"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:678d2b916850daf7fe38a95af0f73b4dd39b463ea87ec36fe287d81d050c31f7"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:807fa54de91d53ff64537e50aa123c5b262952c57eea6928ecb3d526078229c2"}, - {file = "pyobjc_framework_CoreAudio-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:db149cabae1b91ea437536e1741b6e7573a71ec2aae4274318172936a5ac7190"}, + {file = "pyobjc-framework-CoreAudio-10.2.tar.gz", hash = "sha256:5e97ae7a65be85aee83aef004b31146c5fbf28325d870362959f7312b303fb67"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:65ce01a9963692d9cf94aef36d8e342eb2e75b855a2f362f9cbcef9f3782a690"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:22b5017ed340f9d3137baacb5f0c2354266017a4ed21890a795a0667788fc0cd"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:32608ce881b5e6a7cb332c2732762fa93829ac495c5344c33e8e8b72a2431b23"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d5182342257be1cdaa64bc38045cd81aca5b60bb86a9444194adbff58706ce91"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:94ec138f95801019ec7f3e7010ad6f2c575aea69d2428aa9f5b159bf0355034a"}, + {file = "pyobjc_framework_CoreAudio-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:04ad3dddff27cb65d31a432aa1aa6290ff5d82a54bc5825da44ed7d80bcdb925"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coreaudiokit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreAudioKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreAudioKit-10.1.tar.gz", hash = "sha256:85472aaee6360940f679a5e068b5a21160f8cee676d9fd0937b43b39c447d78e"}, - {file = "pyobjc_framework_CoreAudioKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bde3012be239328fdc928d0ff9da9f4627e6ab4832e05faaa0c0ea4e11078d14"}, - {file = "pyobjc_framework_CoreAudioKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:43e9643ce390e36c64dca98a1bbcb0c2c282c527d31eb52aa2b7a18e2f7c97d1"}, - {file = "pyobjc_framework_CoreAudioKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:65bb2c5870b1739703fce056cdc4daddcdcf644c1ddcb590e4b88b5ed2fc45a4"}, + {file = "pyobjc-framework-CoreAudioKit-10.2.tar.gz", hash = "sha256:38dfafba8eddb655aac352a967c0e713a90e10a4dd40d4ea1abbb4db01c5d33f"}, + {file = "pyobjc_framework_CoreAudioKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:aede4cd58a67008b014757178a01b984ee585cc055133a9eb8f10b310d764de8"}, + {file = "pyobjc_framework_CoreAudioKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4fb992025df80b8799fbd1605b0dd4b4b3f6b467c375a16da1b286f6ac2e2854"}, + {file = "pyobjc_framework_CoreAudioKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:28f17803e5eaf35a73caa327cbd0c857efbfdea57307637a60ff8309834b7a95"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreAudio = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreAudio = ">=10.2" [[package]] name = "pyobjc-framework-corebluetooth" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreBluetooth on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreBluetooth-10.1.tar.gz", hash = "sha256:81f50fcd9ee24332f1ad85798d489cfc05be739fcc1389caa6d682e034215efd"}, - {file = "pyobjc_framework_CoreBluetooth-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:145540ae4f35992774e559840a778554f3d3d29b359ff6d7f450c954cacccf0f"}, - {file = "pyobjc_framework_CoreBluetooth-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1ef97e8479895048fa96d5afa2f88139a8432158d6b0fb80ad1db03666c1d4ad"}, - {file = "pyobjc_framework_CoreBluetooth-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e8bce7f425caa55a87b7519eff03eaa7d08ff5e5e09e9318706d3f5087b63b08"}, + {file = "pyobjc-framework-CoreBluetooth-10.2.tar.gz", hash = "sha256:fb69d2c61082935b2b12827c1ba4bb22146eb3d251695fa1d58bbd5835260729"}, + {file = "pyobjc_framework_CoreBluetooth-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6e118f08ae08289195841e0066389632206b68a8377ac384b30ac0c7e262b779"}, + {file = "pyobjc_framework_CoreBluetooth-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:411de4f937264b5e2935be25b78362c58118e2ab9f6a7af4d4d005813c458354"}, + {file = "pyobjc_framework_CoreBluetooth-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:81da4426a492089f9dd9ca50814766101f97574675782f7be7ce1a63197d497a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coredata" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreData on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreData-10.1.tar.gz", hash = "sha256:01dfbf2bfdaa4e0aa3e636025dc868ddb62aedf710890e6af94106278f1659aa"}, - {file = "pyobjc_framework_CoreData-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ff280c893c6d472168696fa0732690809af2694167081b5db87395c25cdf6e27"}, - {file = "pyobjc_framework_CoreData-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c51d8e4723ed113684d0ddd4240900a937682859a9e75d830f35783098f04e95"}, - {file = "pyobjc_framework_CoreData-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a8a8d509ff17f65f4cec7fb35d77a21937f2c8232b5ce357e783cbf971616ad9"}, + {file = "pyobjc-framework-CoreData-10.2.tar.gz", hash = "sha256:0260bbf8f4ce6071749686fdc079618b3bd2b07976db7db4c864ecc62316bb3b"}, + {file = "pyobjc_framework_CoreData-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:41a22fe04544ba35e82232d89ad751b452c2314f07df6c72129a5ad6c3e4cbec"}, + {file = "pyobjc_framework_CoreData-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c29c6dce8ce155e15e960b9c542618516923c3ef55a50bf98ec95e60afe0aa3d"}, + {file = "pyobjc_framework_CoreData-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:cd7c419d9067ce9a9f83f6abd3c072caeb3aa20091f779881375067f7c1c417b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-corehaptics" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreHaptics on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreHaptics-10.1.tar.gz", hash = "sha256:87c1913078963b2d7dba231839566f831f47499c4c029f8beaa46209630e75e1"}, - {file = "pyobjc_framework_CoreHaptics-10.1-py2.py3-none-any.whl", hash = "sha256:ae6143c041b0846a58199826c0094cfb2fb9080f139c93e6b63f51a6b2766552"}, + {file = "pyobjc-framework-CoreHaptics-10.2.tar.gz", hash = "sha256:7b98bd70b63506aef63401a6e03f67391d7582f39fbe8aa7bb7258dd66ab0e55"}, + {file = "pyobjc_framework_CoreHaptics-10.2-py2.py3-none-any.whl", hash = "sha256:c67fae4b543fc070cece622cfe5803796016a36d1020812428e0f22e5f5674aa"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-corelocation" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreLocation on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreLocation-10.1.tar.gz", hash = "sha256:f43637443c4386233c52b0af3131a545968229543f7b0050764298cac1604fd8"}, - {file = "pyobjc_framework_CoreLocation-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:66bad050f37966526017763e5a8c424e257a0974cfbe0c8875fa149bdc1d41c2"}, - {file = "pyobjc_framework_CoreLocation-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:eaa4ff8e3cc388f045a6c15f3ee5a950860164f6fb5a13aed29e37b6cb481607"}, - {file = "pyobjc_framework_CoreLocation-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f4dcf52c4934e99b20056f2ebc8398c9f8f8a61ceac0e5de1e2bb719b0f844c2"}, + {file = "pyobjc-framework-CoreLocation-10.2.tar.gz", hash = "sha256:59497cc210023479e03191495c880e61fb6f44ad6c435ed1c8dd8def39f3aada"}, + {file = "pyobjc_framework_CoreLocation-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c2e02352a4dfbc090cebc9c0d3716470031e584d4d33f22d97307f04c23ef01f"}, + {file = "pyobjc_framework_CoreLocation-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f7eda101abb366be52d2fd85e15c79fdf0b9f64de9aab87dc0577653375595de"}, + {file = "pyobjc_framework_CoreLocation-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8f67af17b8267aa2a066684b518e66bbe7fee9651b779e372d6286d65914df82"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coremedia" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreMedia on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreMedia-10.1.tar.gz", hash = "sha256:8210d03ff9533d5cef3244515c1aa4bb54abaeb93dfc20be6d87e3a6b3377b36"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7bd43d614f0427732ce1690e0640f1d7a40a73dd90142ac08c5dab2ba0d49e8d"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5c1f849ce7de96da6fc81dc8975ecf04444c7179129976b3fe064d9f85a91082"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ab9e44e0d3ce584a119c3b3d539de9d228b635cb98bf60f1e1a221f8aa20681e"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fffc355c038dfaa83f7d7c01497fb20590f9090421564b275cd8fd12e8e10e8e"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:e4e9221c5a4c0b7ff7484eb8a21e06be0cafc1c95b9bcc27a57c139b64692dbe"}, - {file = "pyobjc_framework_CoreMedia-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b61e986b686d4e928208c26a4a2163210e101fcec56eeb61d62b969802eaa8ca"}, + {file = "pyobjc-framework-CoreMedia-10.2.tar.gz", hash = "sha256:d726d86636217eaa135e5626d05c7eb0f9b4529ce1ed504e08069fe1e0421483"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0c91037fd4f9995021be9e849f1d7ac74579291d0130ad6898e3cb1940f870e1"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:63ed4f6dbe33e5f3d5293a78674329cb516a256df34ef92e7c1fefacdb5c32db"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7fa13166a14d384bb6442e5f635310dd075c2a4b3b3bd67ac63b1e2e1fd2d65e"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:bd7da9da1fad7168a63466d5c267dea8bce706808557baa960b6a931010dca48"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c48c7f0c3709a900cd11002018950a72626af39a096d1001bb9a871574db794f"}, + {file = "pyobjc_framework_CoreMedia-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d3e86d03c6d7909058b8f1b8e54d9b5d93679049c7980eb0a5d930a5a63410e0"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coremediaio" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreMediaIO on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreMediaIO-10.1.tar.gz", hash = "sha256:c07177c58c88b6de229f88f3b88b4d97bfc59d2406f751b5aff6bed5cac4d938"}, - {file = "pyobjc_framework_CoreMediaIO-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d44781e21632f3af8eab86194b2fe32ce235b6c6a03ff87f09e0ba034a1e7a73"}, - {file = "pyobjc_framework_CoreMediaIO-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c97bd803a17204a2ec2d9f22c14176009067359efe80b9df69e8ec197783091c"}, - {file = "pyobjc_framework_CoreMediaIO-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d137b0eef1533af244c70ab02f1ed5716dcc8739b0ba6b6c703d36a61d9bab2e"}, + {file = "pyobjc-framework-CoreMediaIO-10.2.tar.gz", hash = "sha256:12f9fd93e610e61258f1acb023b868ed196e9444c69e38dfd314f8c256d07c9e"}, + {file = "pyobjc_framework_CoreMediaIO-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4ede4da59fa2a611b4a9d5a532e0c09731f448186af6cc957ab733b388f86d5b"}, + {file = "pyobjc_framework_CoreMediaIO-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:184854c2ebc3d12466ad39e640b5f3d2bdb3792d8675c83f499bb48b078d3d91"}, + {file = "pyobjc_framework_CoreMediaIO-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:aa9418277d16a1d5c0b576ad8a35f8e239d3461da60bb296df310090147331f7"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coremidi" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreMIDI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreMIDI-10.1.tar.gz", hash = "sha256:e2e407dcb9d5ed53e0a8ed4622429a56c9770c26e2e4455dcb76a6620a12eba6"}, - {file = "pyobjc_framework_CoreMIDI-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b632773bea0c943a1f733166aece7560f32237a42706124d1f001b10620c4bcc"}, - {file = "pyobjc_framework_CoreMIDI-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:065cf89ee58b01700780fbbed0c00e1c5f5f383ac3d54f31642ee6d59e3c03c2"}, - {file = "pyobjc_framework_CoreMIDI-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8984ad04837efc8bc7cbf1d48ff3433eb7fea1d298ed8b72344ec1641826df48"}, + {file = "pyobjc-framework-CoreMIDI-10.2.tar.gz", hash = "sha256:8168cb1e57e5dbc31648cd68d9afe3306cd2751de03275ef5f7f9b6483f17c07"}, + {file = "pyobjc_framework_CoreMIDI-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:809a79fbf384df94884dfddcab4dad3e68eba9e85591f7b55d24f4af2fb8db94"}, + {file = "pyobjc_framework_CoreMIDI-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a48176d5f49f9e893f5a7ac86f7cd7ee63b66dc7941ef74c04876f87a1ae3475"}, + {file = "pyobjc_framework_CoreMIDI-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:cce95647865c7f374d3c9cf853a3a8a44ae06fda6fa2e65fc7ad6450dc60e50f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coreml" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreML on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreML-10.1.tar.gz", hash = "sha256:4cda220d5ad5b677a95d4d29256b076b411b692b64219c2dcb81c702fc34d57d"}, - {file = "pyobjc_framework_CoreML-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:fb85e653a0f7984fff908890b7988d9d5ac42ff92b213cd9371bb255982ee787"}, - {file = "pyobjc_framework_CoreML-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a361d35c75e749a975330f7647084a58c2166f076ecc5573491542b96bc84c28"}, - {file = "pyobjc_framework_CoreML-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4c3b43da4afb279b02bbb6a57a3c5fb4d24ad6d48ef40c20efcda783e41077d2"}, + {file = "pyobjc-framework-CoreML-10.2.tar.gz", hash = "sha256:a1d7743a91160d096ccd3f5f5d824dafdd6b99d0c4342e8c18852333c9b3318e"}, + {file = "pyobjc_framework_CoreML-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ab99248b8ace0bebb11d15eb4094d8017093ebf76dadf828e324cacc9f1866f1"}, + {file = "pyobjc_framework_CoreML-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:074b81c0e0e4177d33b2da8267d377fb7842b47eb7b977bb07d674b9b05c32b5"}, + {file = "pyobjc_framework_CoreML-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:baedffd5ab34dc0294c2c30ad1b5bcff175957f51f107b1f9f8b20f80e15cc9c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coremotion" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreMotion on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreMotion-10.1.tar.gz", hash = "sha256:907a2f6da592f61d49f06559b34fc5addd8c0f2b85f9f277c5e4ea5d95247b67"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:630487c14e22c0c05ddc33a149db673d8a28a876b59a78ed672f1a4825ebf40e"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2219096ceb41aea91819df747c08059885f94ca14c66a078d3161ba49c1cb56e"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:de694971994df2791047c2a1039556ea54683fd09cdc30c23ee5891c63414232"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:81b138a672519ecbea8a2f2392a7f015f3d7caf150368f83b3b278cb60743e8c"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b6cbbee7d26ef1837e382566316cb5d5fae6bca10418437608ebc312f396f898"}, - {file = "pyobjc_framework_CoreMotion-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9968b07199532b1c4ff56d1d6a6195e8ce8bc2beabbf55dc53193f473b3741f9"}, + {file = "pyobjc-framework-CoreMotion-10.2.tar.gz", hash = "sha256:1e1827f2f811ada123dd42809bc86f04a4c1ae3cec619ccf0f05a9387412bec1"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:804abc6b22db933e7fb7ba3e60b30f4c60e8921f8bb5790c3612375f7b4a6f03"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:76d5a2ed1cba375e3c423887bd93bbaab849c7a961156c5cead8e1429c26c24d"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c0a8022dca1404795e93cd7317bca9f8ad601f3ecec7bed71312d80adad296e4"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b727d5301ec386b8aa94de69a9257a412a4edbd69ca394d76b83d9f2bec6bc96"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:7e4571a08475428a8171a237284036a990011f212497f141222d281fa7e2ca5c"}, + {file = "pyobjc_framework_CoreMotion-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:bef81c52af0d1be75b3bd7514d5f9ef7c6e868f385f0dd8c28ad62e5d3faeeb6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coreservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreServices-10.1.tar.gz", hash = "sha256:43d507f2b3d84a5aab808c3f67bf21fb6a7d1367d506e2e9877bf1cac9bad2eb"}, - {file = "pyobjc_framework_CoreServices-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:73162798c506f6d767e2684d7c739907c96a5547045d42e01bee47639130b848"}, - {file = "pyobjc_framework_CoreServices-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:eba7abba8f5ba194a5ef1ffeb5f9d3c0daa751e07ef0d3662e35e27e75a24d73"}, - {file = "pyobjc_framework_CoreServices-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:924bca5a67e9046e8c6146dbc1301fe22c2a1bd49bef92358fd6330ef19cfa65"}, + {file = "pyobjc-framework-CoreServices-10.2.tar.gz", hash = "sha256:90fa09e68e840fdd229b33354f4b2e55e9f95a221fcc30612f4bd92cdc530518"}, + {file = "pyobjc_framework_CoreServices-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2b0c6142490c7099c5be0a2fa10b1816e4280bc04ac4e5a4a9af17a9c2006482"}, + {file = "pyobjc_framework_CoreServices-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c2c05674d9d142abc62fcc8e39c8484bdcdfd3ad8a17f009b8aa7c631e227571"}, + {file = "pyobjc_framework_CoreServices-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f87ad202d896e596b31c98a9d0378b2e6d2e6732a2dfc7b82ceae4c70863364d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-FSEvents = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-FSEvents = ">=10.2" [[package]] name = "pyobjc-framework-corespotlight" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreSpotlight on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreSpotlight-10.1.tar.gz", hash = "sha256:b50e13d55d90b88800c2cc2955c000ea6b1de6481ff6e0092c7b7bf94fceea69"}, - {file = "pyobjc_framework_CoreSpotlight-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:421e18ded971c212fd3f2878658c209c81d1f8859eb62dd6a965abcb19a4ce5a"}, - {file = "pyobjc_framework_CoreSpotlight-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c775e0d42ee21f7d6b9374b01df1a0d4ece0b765e99c7011cb2ea74a2c2ef275"}, - {file = "pyobjc_framework_CoreSpotlight-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7dc11f607429e21c2aee18f950cdde141a414c874369dbb66920930802cfd0fa"}, + {file = "pyobjc-framework-CoreSpotlight-10.2.tar.gz", hash = "sha256:bc4ac490953db29f6a58bc6fca6f819f8a810d0bb15d5f067451b3a8cad1cb50"}, + {file = "pyobjc_framework_CoreSpotlight-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f69dc88ddfa116262009b15ac302b880aef2dad878bf472cbf574f4473f4b059"}, + {file = "pyobjc_framework_CoreSpotlight-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:09912188648e658a0f579bbfd2cf6765afb8e0f466ee666e24019cc9931b6bc5"}, + {file = "pyobjc_framework_CoreSpotlight-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:75ba49ee4bfdbf4df733bc8c508b4417f47c442a56b83ffe5527e76e1c5bad67"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-coretext" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreText on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreText-10.1.tar.gz", hash = "sha256:b6a112e2ae8720be42af19e0fe9b866b43d7e9196726caa366d61d18294e6248"}, - {file = "pyobjc_framework_CoreText-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6ea2920c126a8a39e8a13b6de731b78b391300cec242812c9fbcf65a66ae40cf"}, - {file = "pyobjc_framework_CoreText-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:37b203d832dd82bd9566c72eea815eb89f00f128a4c9a2f352843914da4effec"}, - {file = "pyobjc_framework_CoreText-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:083700483b18f337b0c43bdfaafc43467846f8555075669d4962d460d9d6cd00"}, - {file = "pyobjc_framework_CoreText-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:59472cd1a33e83803fa62b3db20ac0e899f5ed706d22704ea81129d3f49ff0c7"}, - {file = "pyobjc_framework_CoreText-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:cc1a63ca2c6921768b1c794ce60e2a278e0177731aa4bf8f620fdde857e4835e"}, - {file = "pyobjc_framework_CoreText-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:fbbdde4ce747bcad45c2aded36167ad00fead309a265d89ab22289c221038e57"}, + {file = "pyobjc-framework-CoreText-10.2.tar.gz", hash = "sha256:59ef8ca8d88bb53ce9980dda0b8094daa3e2dabe355847365ba965ff0b49f961"}, + {file = "pyobjc_framework_CoreText-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:44052f752f42b62d342fa8aced5d1b8928831e70830eccddc594726d40500d5c"}, + {file = "pyobjc_framework_CoreText-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0bc278f509a3fd3eea89124d81e77de11af10167c0df0d0cc15a369f060465a0"}, + {file = "pyobjc_framework_CoreText-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7b819119dc859e49c0ce9040ae09d6a3bd66658003793f486ef5a21e46a2d34f"}, + {file = "pyobjc_framework_CoreText-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2719c57ff08af6e4fdcddd0fa5eda56113808a1690c3325f1c6926740817f9a1"}, + {file = "pyobjc_framework_CoreText-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:8239ce92f9496587a60fc1bfd4994136832bad99405bb45572f92d960cbe746e"}, + {file = "pyobjc_framework_CoreText-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:80a1d207fcdb2999841daa430c83d760ac1a3f2f65c605949fc5ff789425b1f6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-corewlan" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CoreWLAN on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CoreWLAN-10.1.tar.gz", hash = "sha256:a4316e992521878fb75ccff6bd633ee9c9a9bf72d5e2741e8804b43e8eeef8ac"}, - {file = "pyobjc_framework_CoreWLAN-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e5374ebd6e258d6cdaa9fdeb21c10830c50fc1c00eaa91b2293833b0182479f7"}, - {file = "pyobjc_framework_CoreWLAN-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:57cb3fbb69500df92a111655c129b0f658ec16e14e57b08b9c1ef400f33f3bb5"}, - {file = "pyobjc_framework_CoreWLAN-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:eb2360b20ab14a0f6cc7d06dc7bf2b0832d0c95892d9f364e03c6ecf77dfc328"}, + {file = "pyobjc-framework-CoreWLAN-10.2.tar.gz", hash = "sha256:f47dcf735145eb2f817db5c2134321a7cfb9274a634161ff3069617fd2afff42"}, + {file = "pyobjc_framework_CoreWLAN-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8dc102d7d08437b5421856ae8aac32e3e9846e546c1742e4d57343abd694688f"}, + {file = "pyobjc_framework_CoreWLAN-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:85bcf84fd38a2e949760dda3201f13f8bef73b341a623f6736834b7420386f16"}, + {file = "pyobjc_framework_CoreWLAN-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ada346a6da1075e16bf5f022ccad488632fe6de972d2d925616add87e3eb9fad"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-cryptotokenkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework CryptoTokenKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-CryptoTokenKit-10.1.tar.gz", hash = "sha256:ad8fb3c4f314cc5f35cd26a5e3fdd68dd71ea0f7b063f31cffb9d78050ce76f0"}, - {file = "pyobjc_framework_CryptoTokenKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e691877b2e96c8f257873943147315561cda79b63c911afa8d0103d6b351a88f"}, - {file = "pyobjc_framework_CryptoTokenKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5a4ce0650ad70eedadc46091d61878e28a4cf491d1c2e8da32feab2f661a4ee5"}, - {file = "pyobjc_framework_CryptoTokenKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c0013c7795d208547d9f92c0539bc7fec09ca049d791458b62c177585552abc4"}, + {file = "pyobjc-framework-CryptoTokenKit-10.2.tar.gz", hash = "sha256:c0adfde2d53da7df1f8827bdf0cbf4419590151dd1041711ab2f66a32bd986f5"}, + {file = "pyobjc_framework_CryptoTokenKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:89264d38ca58e8b5a586a3c13260d490ee2cdc9c1498211a804cec67f7659cd7"}, + {file = "pyobjc_framework_CryptoTokenKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e13d92966273420a154cde6694b4bc7dd3dc7679e93d651534dcf2b0c5246546"}, + {file = "pyobjc_framework_CryptoTokenKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a56af323d597332090a0787c00d16c40152c62cb278d951a59723006cd3e10de"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-datadetection" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DataDetection on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DataDetection-10.1.tar.gz", hash = "sha256:f81d1ca971aa8034faeb6e457144df0832f870d7e19905886593bafe4cbfe21f"}, - {file = "pyobjc_framework_DataDetection-10.1-py2.py3-none-any.whl", hash = "sha256:f23fa282297ed385c9df384a0765e4f9743b8916de8a58137f981ab0425b80f5"}, + {file = "pyobjc-framework-DataDetection-10.2.tar.gz", hash = "sha256:9532bb697b96ec4ffc04310550bf21c45c8494fc07d8067fc41cbfd94c8ba27d"}, + {file = "pyobjc_framework_DataDetection-10.2-py2.py3-none-any.whl", hash = "sha256:4435ebaa3b3fa3de855690469fefd2d8a3568f702f51540707efaf4363ec94aa"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-devicecheck" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DeviceCheck on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DeviceCheck-10.1.tar.gz", hash = "sha256:f89e3acd15ec48134f95bf027778ca1d7e3088b9c2204e48f8c6e3bdcb28cf82"}, - {file = "pyobjc_framework_DeviceCheck-10.1-py2.py3-none-any.whl", hash = "sha256:31d5a83d85a4d95e238f432ac66cbf110a7b70afa82fd230ab4b911a5e2b9cb4"}, + {file = "pyobjc-framework-DeviceCheck-10.2.tar.gz", hash = "sha256:f620ede18e12dd36d92f24d1a68278821bcf7aeaea6577993fbfb328c118569d"}, + {file = "pyobjc_framework_DeviceCheck-10.2-py2.py3-none-any.whl", hash = "sha256:c9c87ae40af41c4c296af40317018732bba85e589111f5286b2f136f022c8ecd"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-dictionaryservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DictionaryServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DictionaryServices-10.1.tar.gz", hash = "sha256:03b3b19a9b911beb3bdc8809f5d02356a497a75dbefa0f355825ec610c050a3e"}, - {file = "pyobjc_framework_DictionaryServices-10.1-py2.py3-none-any.whl", hash = "sha256:7ace031cc3df1fa9a4eb663ff55eee0a4c7c8c34653aa1529988d579d273150b"}, + {file = "pyobjc-framework-DictionaryServices-10.2.tar.gz", hash = "sha256:858b4edce36dfbb0f906f17c6aac1aae06350d508cf0b295949113ebf383bfb4"}, + {file = "pyobjc_framework_DictionaryServices-10.2-py2.py3-none-any.whl", hash = "sha256:39b577b35c52a033cbac030df1fdcd16fb109144e8c59cb2044a13fcd803ab49"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-CoreServices = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-CoreServices = ">=10.2" [[package]] name = "pyobjc-framework-discrecording" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DiscRecording on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DiscRecording-10.1.tar.gz", hash = "sha256:321c69b6494c57d75d4a0ecf5d90ceac3800441bf877eac8196ab25dcf15ebde"}, - {file = "pyobjc_framework_DiscRecording-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:581141bd645436d009cc6b42ca6255322de9a3a36052e7dcf497e90959c7bc77"}, - {file = "pyobjc_framework_DiscRecording-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2c4144c4d1d7bf7ad537c6159cefb490876b7eff62ec95d4af7bc857813b95cd"}, - {file = "pyobjc_framework_DiscRecording-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1c52f7ace5936edbe160aa4d6cb456a49e7bc1a43a5e34572d48cd65dee22d1e"}, + {file = "pyobjc-framework-DiscRecording-10.2.tar.gz", hash = "sha256:9670018a0970553882feb10e066585ad791c502539712f4117bad4a6647c79b3"}, + {file = "pyobjc_framework_DiscRecording-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cbf0d9904a24bece47a71b56f87090a769e96338c0acb3f33385c3e584ed1c96"}, + {file = "pyobjc_framework_DiscRecording-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:0a7d9980ab9f59903d60d09172de4085028bbb97a63112f78b9cca0051a73639"}, + {file = "pyobjc_framework_DiscRecording-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8a6512d0b7e61064ca167ca0a9c95a3f49f8fa7216fe5e1d77eab01ce56a9414"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-discrecordingui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DiscRecordingUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DiscRecordingUI-10.1.tar.gz", hash = "sha256:2a44278b19738e8d4f2180433df37b59a0b645d9ddc0f3c3a6c81e506afc1953"}, - {file = "pyobjc_framework_DiscRecordingUI-10.1-py2.py3-none-any.whl", hash = "sha256:684925119e4c8f8ea43cfede1a3e39f785b5aa94a48f1aa7a98fd4cdc4c1d2e3"}, + {file = "pyobjc-framework-DiscRecordingUI-10.2.tar.gz", hash = "sha256:afda9756a8f9e8ce1f83930eca3b1a263a29f48c1618269457f4aba63fc1644f"}, + {file = "pyobjc_framework_DiscRecordingUI-10.2-py2.py3-none-any.whl", hash = "sha256:e0423c548851cd9eb4ad7e9e085da4db2cde2420e1f3e05d46e649498edf97d8"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-DiscRecording = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-DiscRecording = ">=10.2" [[package]] name = "pyobjc-framework-diskarbitration" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DiskArbitration on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DiskArbitration-10.1.tar.gz", hash = "sha256:c3ab3dc91375dabaf4d3470e01358e4acfecf6b425abf9ad95a26a7a56398f56"}, - {file = "pyobjc_framework_DiskArbitration-10.1-py2.py3-none-any.whl", hash = "sha256:a3bd1883b60aa1d8cff3bc18957f81ed14e5d0406d18a4a9095539ddf51dd72e"}, + {file = "pyobjc-framework-DiskArbitration-10.2.tar.gz", hash = "sha256:25b74db4f39a7128599e153533db0f88c680ad55f366c5ab6a6d7dede96eeb57"}, + {file = "pyobjc_framework_DiskArbitration-10.2-py2.py3-none-any.whl", hash = "sha256:dd14eb448865ca4c49e15a543f748f1ef6501ea0044eaa2cf04860547205c84f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-dvdplayback" -version = "10.1" +version = "10.2" description = "Wrappers for the framework DVDPlayback on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-DVDPlayback-10.1.tar.gz", hash = "sha256:2af92907a50a47c44a8dd1521217a564ad9a3dd9e9056f0a76b13275d380bee1"}, - {file = "pyobjc_framework_DVDPlayback-10.1-py2.py3-none-any.whl", hash = "sha256:bcbfb832a3f04e47aef03606a21fd58458bc28e25e1a444e7a9388bfee2f9dd3"}, + {file = "pyobjc-framework-DVDPlayback-10.2.tar.gz", hash = "sha256:0869a6e8da1c2d93713699785b4f0bbe5dd1b2820a0ff4a6adf06227b1bb96ac"}, + {file = "pyobjc_framework_DVDPlayback-10.2-py2.py3-none-any.whl", hash = "sha256:f3fb90eb3d616290d2ab652214ce682130cd19d1fd3205def6ab0ba295535dd9"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-eventkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Accounts on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-EventKit-10.1.tar.gz", hash = "sha256:53473df48000b39dec276e3b8ead88b153c66cf0fdc07b016f759b42f0b2ec50"}, - {file = "pyobjc_framework_EventKit-10.1-py2.py3-none-any.whl", hash = "sha256:3265ef0bfab38508c50febfa922b4abf6ebc55a44f105d499e19231c225a027c"}, + {file = "pyobjc-framework-EventKit-10.2.tar.gz", hash = "sha256:13c8262344f06096514d1e72d3c026fa4002d917846ce81217d4258acd861324"}, + {file = "pyobjc_framework_EventKit-10.2-py2.py3-none-any.whl", hash = "sha256:c9afa63fc2924281fdf1ef6c86cc2ba01b7b84a8545a826ddd89e4abd7077e81"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-exceptionhandling" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ExceptionHandling on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ExceptionHandling-10.1.tar.gz", hash = "sha256:ac75ac230249d6f26f750beb406c133a49d4a284e7ee62ba1139e9d9bc5ec44d"}, - {file = "pyobjc_framework_ExceptionHandling-10.1-py2.py3-none-any.whl", hash = "sha256:b8eb9142f141361982e498610bfd33803acb4f471f80b5cd9df8d382142449e9"}, + {file = "pyobjc-framework-ExceptionHandling-10.2.tar.gz", hash = "sha256:cf4cd143c24504d66ef9d4e67b4b88e2ac892716e6ead2aa9585a7d39278d943"}, + {file = "pyobjc_framework_ExceptionHandling-10.2-py2.py3-none-any.whl", hash = "sha256:fd7dfc197c29ccf187718dbb0b1dcd966a8c04ee6549ee9472959912e76a0609"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-executionpolicy" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ExecutionPolicy on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ExecutionPolicy-10.1.tar.gz", hash = "sha256:5ab7da37722b468a5e230354fa45a6a96e545c6c2aab5a76029e2227b1bae326"}, - {file = "pyobjc_framework_ExecutionPolicy-10.1-py2.py3-none-any.whl", hash = "sha256:556aa28220438b64e6f75f539f133616a343abe3e2565f0d016091f4dc4a9c3d"}, + {file = "pyobjc-framework-ExecutionPolicy-10.2.tar.gz", hash = "sha256:8976c35a58c2e51d6574123ecfcd58459bbdb32b3992716119a3c001d3cc2bcf"}, + {file = "pyobjc_framework_ExecutionPolicy-10.2-py2.py3-none-any.whl", hash = "sha256:4d95d55f82a15286035bb5bc01b339d6c36103a1cbf7d6a3d7a9feac71663626"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-extensionkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ExtensionKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ExtensionKit-10.1.tar.gz", hash = "sha256:4f0a5256149502eeb1b4e1af1455de629a3c3326aaf4d766937212e56355ad58"}, - {file = "pyobjc_framework_ExtensionKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:82eece8d6d807bafb5cf8a220c58f2b42b350a0bc9131cb0cdfd29e90294858d"}, - {file = "pyobjc_framework_ExtensionKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9936cfe8a17c09457aa10c21f90f77151328596bd72b55fd9b6c3e78a11384"}, - {file = "pyobjc_framework_ExtensionKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:94cdc24e19ed554bc1d8e9d11139839033b26997f5b29a381ed4be8633ad2569"}, + {file = "pyobjc-framework-ExtensionKit-10.2.tar.gz", hash = "sha256:343c17ec1696947cde6764b32f741d00d7424a620cdbaa91d9bcf47025b77718"}, + {file = "pyobjc_framework_ExtensionKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:69981d3a0f7146b57b16f1132c114419a2b89fa201677c7e240f861bc7e56670"}, + {file = "pyobjc_framework_ExtensionKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:30fa27de3f97436c867ca3e89d8e95f141337a9377f71be3c8a036795b5557fb"}, + {file = "pyobjc_framework_ExtensionKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:09e1402c9fd7c6fcacd662caa2198d79342b812665980fd9a66e906743bddf69"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-externalaccessory" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ExternalAccessory on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ExternalAccessory-10.1.tar.gz", hash = "sha256:1c206f2e27aedb0258a3cf425ed89cbea0657521829f061362b4fca586e033a8"}, - {file = "pyobjc_framework_ExternalAccessory-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:519c36e63011a797f1747306132957168eed53456e801973c38c52b06b265a0e"}, - {file = "pyobjc_framework_ExternalAccessory-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8c54367b52cc74231df057c9bbf722896d98efd91f6d6a7415e0ca7227f311b9"}, - {file = "pyobjc_framework_ExternalAccessory-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:64facb48377840e72e459f9ae88d482d0d17a1726733b2d79205de4e4449eb89"}, + {file = "pyobjc-framework-ExternalAccessory-10.2.tar.gz", hash = "sha256:e62af0029b2fd7e07c17a4abe52b20495dba05cba45d7e901acbd43ad19c4cc3"}, + {file = "pyobjc_framework_ExternalAccessory-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b279672b05f0f8a11201a5ed8754bcea5b8d3e6226ec16c6b59127e2c6e25259"}, + {file = "pyobjc_framework_ExternalAccessory-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5fbe16bb4831a30659cba6a53b77dca94b72ff12bfd318c76f118f39557427c5"}, + {file = "pyobjc_framework_ExternalAccessory-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f446ce468a369650c4c49947bb7329c58c68cd44aee801506e60be1f26cd6265"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-fileprovider" -version = "10.1" +version = "10.2" description = "Wrappers for the framework FileProvider on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-FileProvider-10.1.tar.gz", hash = "sha256:617811be28bd5d9b0cc87389073ade7593f89ee342a5d6d5ce619912748d8e00"}, - {file = "pyobjc_framework_FileProvider-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:9e98efd27f69c8275dc8220dfb2bb41a486400c1fb839940cd298b8d1e44adca"}, - {file = "pyobjc_framework_FileProvider-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7046144d86b94707fea6d8bb00b2850f99e0ebaef136ee2b3db884516b585529"}, - {file = "pyobjc_framework_FileProvider-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:2f4c816b87237ab2ddfb0314296e5824411cec11f9c1b5919f8b4e8c02069ff1"}, - {file = "pyobjc_framework_FileProvider-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8476daf2c291f6bc1c9f4a26f4492236a2e427774fd02a03c561c667e9ec0931"}, - {file = "pyobjc_framework_FileProvider-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:de3dcbe70943b3bf057f634be4003fdcc112e3d7296f1631be1bf20f494db212"}, - {file = "pyobjc_framework_FileProvider-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a53ebe7e4a6ef24cf3ade1c936a96a1cb0c40dd7639899e3e238e050d4813417"}, + {file = "pyobjc-framework-FileProvider-10.2.tar.gz", hash = "sha256:1accc2965c59395152d04b2f4a096cb4a5364bca8094695ce2b60d2f794bff74"}, + {file = "pyobjc_framework_FileProvider-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e69d294b0ac9fdcafb28fbb1b9770e1e851cc5467dc0ae1d7b182882ce16d1d"}, + {file = "pyobjc_framework_FileProvider-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1d5cc02d43f2c6851934c8208cd4a66ad007daf0db673f72d1938677c90b1208"}, + {file = "pyobjc_framework_FileProvider-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:0ae00a293e3ac511cc9eb54ee05b67583ea35d490b47f23f448a3da6652c189b"}, + {file = "pyobjc_framework_FileProvider-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fab7da3c7961e77b09f34cb71a876205ea8d73f9d10d5db78080f7282dd5066f"}, + {file = "pyobjc_framework_FileProvider-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:5d2b581c8cb1c15304676f5a77c42e430aaad886ac92d8b2d4e5cec57cb86be3"}, + {file = "pyobjc_framework_FileProvider-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:8c471c0d27d9d6a7bba3d06f679f14ac8d719ed3660d9a8e6788a31e1521e71d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-fileproviderui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework FileProviderUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-FileProviderUI-10.1.tar.gz", hash = "sha256:e8f40b41f63d51401fb2aa5881dbf57ef6eacaa6c4d95f3dd1d9eb1b392a2d84"}, - {file = "pyobjc_framework_FileProviderUI-10.1-py2.py3-none-any.whl", hash = "sha256:ef85cead617c3e9b851589505503d201197bbc0ee27117a77243a1a4e99fad7d"}, + {file = "pyobjc-framework-FileProviderUI-10.2.tar.gz", hash = "sha256:a22204c1fad818e4c8d94ecb544fec59387e01a0074cbe2ca6e58de1a12c157e"}, + {file = "pyobjc_framework_FileProviderUI-10.2-py2.py3-none-any.whl", hash = "sha256:5fac2067c09a23a436708e05d71faf65d64f4c36b45ad254617720b1a682aad6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-FileProvider = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-FileProvider = ">=10.2" [[package]] name = "pyobjc-framework-findersync" -version = "10.1" +version = "10.2" description = "Wrappers for the framework FinderSync on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-FinderSync-10.1.tar.gz", hash = "sha256:5b1fb13c10d0f9bf8bccdacd0ecd894d79376747bd13aca5a410f65306bcbc29"}, - {file = "pyobjc_framework_FinderSync-10.1-py2.py3-none-any.whl", hash = "sha256:e5a5ff1e7d55edb5208ce04868fcf2f92611053476fbbf8f48daa3064d56deb5"}, + {file = "pyobjc-framework-FinderSync-10.2.tar.gz", hash = "sha256:5ecbe9bf7fe77f28204fbe358ee541fdd2786fc076a631c4f11b74377d60ea05"}, + {file = "pyobjc_framework_FinderSync-10.2-py2.py3-none-any.whl", hash = "sha256:11d569492efe74a52883e6086038ca9d5a712a08db828f3ca43c03e756013801"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-fsevents" -version = "10.1" +version = "10.2" description = "Wrappers for the framework FSEvents on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-FSEvents-10.1.tar.gz", hash = "sha256:f5dee8cfbd878006814db264c5f70aeb1a43c06620e98f628ca6c0008beb1b1d"}, - {file = "pyobjc_framework_FSEvents-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3c2bf6ffd49fd21df73a39e61b81d7c6651e1063f72b62b2218c6ab4bf91dc02"}, - {file = "pyobjc_framework_FSEvents-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e57dccf14720c0789811580cb99e325353259cc96514e2622ca512e70f392c2"}, - {file = "pyobjc_framework_FSEvents-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f026f417b25f804c6994d49af0743177ca7119d5d9e885a80d71c624e12a5d47"}, + {file = "pyobjc-framework-FSEvents-10.2.tar.gz", hash = "sha256:3a75f38bb1d5d2cf6a0d3e92801b3510f32e96cf6443d81b9dd92a84d72eff0a"}, + {file = "pyobjc_framework_FSEvents-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:129f9654ab9074eff29ccb8dd09625e3740058744a38f9776d0349387f518715"}, + {file = "pyobjc_framework_FSEvents-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c71699f24482d99ee8f6b7a8d36c4c294655c670d8cbd0f3c6f146a2fda6283c"}, + {file = "pyobjc_framework_FSEvents-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a0ff7bb8c1a357181345ff3a90b7f808cd55c4757df60c723541f0f469323190"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-gamecenter" -version = "10.1" +version = "10.2" description = "Wrappers for the framework GameCenter on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-GameCenter-10.1.tar.gz", hash = "sha256:0d124b3f18bb1b3e134268c99bf92c29791e8c62a97095c1fb1eb912ebe495e0"}, - {file = "pyobjc_framework_GameCenter-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5d6cf2405e5107c8befcb61a5339c0766fbab9448a2c4e8f5dd4401a7ef380ab"}, - {file = "pyobjc_framework_GameCenter-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8ede397f1ca31022e7507cb1cf801617094e407300ee29c19415fd32f64fa758"}, - {file = "pyobjc_framework_GameCenter-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:db4e36a573e91715d8ed5250f6784fe5b03c8b2e769b97f8cf836eb7111c3777"}, + {file = "pyobjc-framework-GameCenter-10.2.tar.gz", hash = "sha256:43341b428cad2e50710cb974728924280e520e04ae9f750bc7beda5006457ae3"}, + {file = "pyobjc_framework_GameCenter-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f14ad00713519b508f4c956a8212bff01f6b6279b2a76e87d99a18262e61dfda"}, + {file = "pyobjc_framework_GameCenter-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b52932e90c6b6d90ce8c895b0ac878dc4e639d493724a5789fc990e1efec3d05"}, + {file = "pyobjc_framework_GameCenter-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:dc9de1b3d0db1921fb197ad964226ebc271744aee0cc792f9fe66afaf92b24f0"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-gamecontroller" -version = "10.1" +version = "10.2" description = "Wrappers for the framework GameController on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-GameController-10.1.tar.gz", hash = "sha256:50a17fdd151f31b3a5eae9ae811f6f48680316a5c2686413b9a607c25b6be4bc"}, - {file = "pyobjc_framework_GameController-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ec7e84c2dbc90065db8d0293c29e34d95b4fa14beeb3fb3c818fa3bcdf24d89a"}, - {file = "pyobjc_framework_GameController-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:672d99f849b803c6c6b8e89445e2c446379ae23f1f0f7e355a2a94f91d591fea"}, - {file = "pyobjc_framework_GameController-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c56232fc2f0e95901e66534d18a008857c59363078ac75fedb2d18dcbd5dda63"}, + {file = "pyobjc-framework-GameController-10.2.tar.gz", hash = "sha256:81ad502346904995ec04b0580bab94ab32ca847fad06bca88cdf2ec6222b80ae"}, + {file = "pyobjc_framework_GameController-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:47e6dfcf10353a17adcfa7649d0f5d0cba4d4dc3ce3a66826d873574ae2afcb1"}, + {file = "pyobjc_framework_GameController-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8ef6fcb5308c1c31d1de3969165a13750b74f52c80249b722383307fc558edff"}, + {file = "pyobjc_framework_GameController-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:89a7aac243b0347c3ef10fc2bcedcb1b2ae9eb14daabccb3f3cfe1cf12c7e572"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-gamekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework GameKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-GameKit-10.1.tar.gz", hash = "sha256:6fa87a29556cdaf78c86851fc61edb6d384f1a7370a75a66bdd208ed1250899f"}, - {file = "pyobjc_framework_GameKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bb00618d256f67b6f784b49db78bde80677a2004af4558266009de30e8804660"}, - {file = "pyobjc_framework_GameKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:38bcce65b781c5967eb7985b551ca015cda89903d18f29eab74518a52f626fec"}, - {file = "pyobjc_framework_GameKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:773e6f645731dac7c2b6e55ec7ecd92928b070f7a33b4c5ce33a3a52565ecd49"}, + {file = "pyobjc-framework-GameKit-10.2.tar.gz", hash = "sha256:0ef877db88e8888ecf682b09b9fb1ee6b879f23d521ce3a738a1b0fb2b885974"}, + {file = "pyobjc_framework_GameKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c23025087bec023a37fe0c84fcdc592cdc100d9187b49250446587f09571dbeb"}, + {file = "pyobjc_framework_GameKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6867159762db0a72046abe42df8dff080620c2f9cdf20927445eec28f3f04124"}, + {file = "pyobjc_framework_GameKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e7d91d28c4c8d240f0fbab80f84545efbeeb5a42db4c6fbd4ccb1f3face88c9c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-gameplaykit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework GameplayKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-GameplayKit-10.1.tar.gz", hash = "sha256:12a5d1dc59668df155436250476af029b1765ca68e7a1e2d440158e7130232a3"}, - {file = "pyobjc_framework_GameplayKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f877d2c449aea09187856540b3d5a3e6a98573673a09af6163b1217040d93e5f"}, - {file = "pyobjc_framework_GameplayKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:86e320c79707ab7a3de2f23d0d32bd151b685865f43d13fb58daa2963b4da5cc"}, - {file = "pyobjc_framework_GameplayKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:93a1e62c2875d7705d1aa70115f646258ecffc4d4702ed940a5214dc0ea580f5"}, + {file = "pyobjc-framework-GameplayKit-10.2.tar.gz", hash = "sha256:068ee6f3586f4033d25ed3b0451eab8f388b2970be1dfbe39be01accca7a9b2e"}, + {file = "pyobjc_framework_GameplayKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c9e87b8221a74599c813640b823f3a2546aa6076b04087f26fd3ecc8c78cbe01"}, + {file = "pyobjc_framework_GameplayKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a1f81c969347d63a1200818ae12350ad39353e85842f34040b9d997e55f7ec89"}, + {file = "pyobjc_framework_GameplayKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f438c4b98e1d00dec84fedc8796761063e99814f913151441bc7147ac8b23068"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-SpriteKit = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-SpriteKit = ">=10.2" [[package]] name = "pyobjc-framework-healthkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework HealthKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-HealthKit-10.1.tar.gz", hash = "sha256:9479c467514c506f9083889f11da6b8f34d705f716ffe9cbbb5a3157000d24de"}, - {file = "pyobjc_framework_HealthKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b32171f6d4ee6fa37718f5b299c6b866a4ae395ff8764ccc040b9d1263a3e74f"}, - {file = "pyobjc_framework_HealthKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a628c777c02df6c5dbbc5f26576f52239dab79ac1afe5ca53d40d561d55adb52"}, - {file = "pyobjc_framework_HealthKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:4d44c5ace78dce1f0c76b96010d9446b90a9474946a25bfb33d373a152e22524"}, + {file = "pyobjc-framework-HealthKit-10.2.tar.gz", hash = "sha256:abcc4e6bd0e11eace7257887958b6cc5332f8aad4efa6b94e930425016540789"}, + {file = "pyobjc_framework_HealthKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:093687705413b88efe47097f09c7be84b6ccbb7ec0f9b943b4ad19fe9fbdc01c"}, + {file = "pyobjc_framework_HealthKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1fb83b08ed28b9adc9a8a2379dbf5f7515e01009160a86847e1a5f71b491a49c"}, + {file = "pyobjc_framework_HealthKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b84d3857c54076a63feea7072ecf98d925f68f96413ca40164d04b2fd865a4dc"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-imagecapturecore" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ImageCaptureCore on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ImageCaptureCore-10.1.tar.gz", hash = "sha256:29b85ee9af77bba7e1ea9191bf84edad39d07681b9bd267c8f5057db3b0cdd64"}, - {file = "pyobjc_framework_ImageCaptureCore-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d8d2dbc09aed984f7d92e7b835e87608d356f5f4b6dd03e84258963391791ae5"}, - {file = "pyobjc_framework_ImageCaptureCore-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5eef95798d340000ddfb9c59c9468b75bb4cd389d311fd27078c3f4a4a3af29a"}, - {file = "pyobjc_framework_ImageCaptureCore-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:832cbe0d957935553183586556d2036cfcc9aae593defe71e6a0726e5c63abf6"}, + {file = "pyobjc-framework-ImageCaptureCore-10.2.tar.gz", hash = "sha256:68f1f96982282e786c9c387c177c3b14202d560d68000136562eba1ed3f45a6e"}, + {file = "pyobjc_framework_ImageCaptureCore-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:69c19e235de32bc707a622fd2865fa53f6e7692b52851d559ea0c23664ee7665"}, + {file = "pyobjc_framework_ImageCaptureCore-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3bdbae9adf6456b4b4e2847135e5da214516545638dd715f01573ec6b6324af6"}, + {file = "pyobjc_framework_ImageCaptureCore-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:46b90bc950646b69b416949bb50ee7d2189b42b7aa77692e01d7c1b4062ddc19"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-inputmethodkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework InputMethodKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-InputMethodKit-10.1.tar.gz", hash = "sha256:b995f43a8859016474098c894c966718afe9fbcc18996ce3c6bebfc6a64cfad7"}, - {file = "pyobjc_framework_InputMethodKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5288d12d1a2a6da9261c0cadbee03f31c80a0a3bb77645b4e7c2836864f54533"}, - {file = "pyobjc_framework_InputMethodKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6e04ac004ac848492242fda193e63322abce87ecdef081f1b7268cac7f2af8ad"}, - {file = "pyobjc_framework_InputMethodKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:538d5955a8ab3a9c7a7286c72dba87634ba0babe7cd0a4cec335100df8789c01"}, + {file = "pyobjc-framework-InputMethodKit-10.2.tar.gz", hash = "sha256:294cf2c50cdbb4cdc8f06946924a01faf45a7356ef86652d73c1f310fc1ce99f"}, + {file = "pyobjc_framework_InputMethodKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f8bcb156dcd1dc77826f720ff70f9a12c72ad45e97d4faa7ca88e85fc2d7843a"}, + {file = "pyobjc_framework_InputMethodKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d96a18dd92dc19f631ed50c524355ab29f79975e081f516ad3cea2d902a277e7"}, + {file = "pyobjc_framework_InputMethodKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:fdea1320a3cf6e409ab8f602b90b167110f7ca58f44f95a52f188c6f59f08753"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-installerplugins" -version = "10.1" +version = "10.2" description = "Wrappers for the framework InstallerPlugins on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-InstallerPlugins-10.1.tar.gz", hash = "sha256:4c9f8b46d43f1277aad3bea648f84754e9f48251a6fb385ad8119c1b44dffe9b"}, - {file = "pyobjc_framework_InstallerPlugins-10.1-py2.py3-none-any.whl", hash = "sha256:195e7d559421bf36479b085bf74d56f8549fff715596fc21e0e0c95989a3149a"}, + {file = "pyobjc-framework-InstallerPlugins-10.2.tar.gz", hash = "sha256:001e9ec6489e49fc22bbec1ef050518213292e8d56239ed004f98ed038b164e2"}, + {file = "pyobjc_framework_InstallerPlugins-10.2-py2.py3-none-any.whl", hash = "sha256:754b8fdf462b6e568f30249255af50f9bd3ac90edacfe6e02d0fe77f276c049b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-instantmessage" -version = "10.1" +version = "10.2" description = "Wrappers for the framework InstantMessage on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-InstantMessage-10.1.tar.gz", hash = "sha256:8e8e7e2c64a3a6b0aa67cace58f7cea1971bb93de57be40b7ba285e305fab0b5"}, - {file = "pyobjc_framework_InstantMessage-10.1-py2.py3-none-any.whl", hash = "sha256:c03a9a99faaa14ff0a477114b691d628117422a15995523deb25ff2d1d07a36d"}, + {file = "pyobjc-framework-InstantMessage-10.2.tar.gz", hash = "sha256:4aa7627697fa57120594477f1f287bc41836ec7a4107215d3060c26416cf72c9"}, + {file = "pyobjc_framework_InstantMessage-10.2-py2.py3-none-any.whl", hash = "sha256:65db5cb1f163700a6cb915506f8f7ae2f28d8d3f6464f7b122b0535b1694859a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-intents" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Intents on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Intents-10.1.tar.gz", hash = "sha256:85a84a5912b8d8a876767ca8fa220dc24bf1c075ed81b58c386d25c835cec804"}, - {file = "pyobjc_framework_Intents-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:64a3cef4af536de1153937d99a4cb8d0568ca20ee5c74458dca4f270b01a3c1a"}, - {file = "pyobjc_framework_Intents-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:89f49f82245d4facb329dd65434a602506246e6585f544ab78b0ab4bd151f4f7"}, - {file = "pyobjc_framework_Intents-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:bc6f93d151c4474150b6c76fe43067d2d0d06446851d66df3bb9968682a2d225"}, + {file = "pyobjc-framework-Intents-10.2.tar.gz", hash = "sha256:ec27d5d19212fcec180ff04e2bc617fee0a018e2eaf29b2590c5512da167aa6a"}, + {file = "pyobjc_framework_Intents-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6a4e2ba2b5319c15ceeabdfd06f258789174e7e31011a24eab489d685066ed69"}, + {file = "pyobjc_framework_Intents-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9a3c08ec0dd199305989786e6e3c68d27f40b9eae3050bbf0207f053190f3513"}, + {file = "pyobjc_framework_Intents-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3dc9233522564ea8850a02961398a591446e0a0a0e63cd42cf7820daa0242f6a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-intentsui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Intents on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-IntentsUI-10.1.tar.gz", hash = "sha256:01948fbd8f956a79d3c2e27f75bc9954ad12cb4113982f58654122cfa8095ebb"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e829659751ff47e3b85980075897ddebbf62d5644478c1bb2ff1dcdc116b8897"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0d6ac451433ec0602c661b32216cd3c44b1c99b9f41781b3af79b7941118552"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1806e6189cf09c0b031594ad445da1a93c30c399298c6fce2369a49bac7eade4"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:33518f549b6c501d7c6c36542154ae5d2255d7223804470e14cd76b325676a48"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:91498d3cf4098fe412ea66c01b080919906dd23d53653d49addc7a26c50e570f"}, - {file = "pyobjc_framework_IntentsUI-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7c73626bfad3f098eed4a446cee90154dec39d9a9c0775532980c5266bc91a4c"}, + {file = "pyobjc-framework-IntentsUI-10.2.tar.gz", hash = "sha256:4b9ca6f868b6cb7945ef4c285e73d220433efc35dfcad6b4a356bfce55e96c09"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7ec579d0f25cba0e1225f7690f52ed092bef5e01962fbe83ffbb70ec39861674"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:91331fec42522596500bd0a580c633b7b84831c6316b2ec7458425d60b37da9e"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:81f9d337473b3cb51f2aa4aa98156d6e294778d24fe011f41f0123b2676d824c"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1c52fa06e8d65a003e384afcc1322051f2fbbfeac2c91ab852b407c552fd5652"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:c514ecef1277ff00c07f78f7890e3a6cbe3c8fe44184f2f6da1a7b4b32851605"}, + {file = "pyobjc_framework_IntentsUI-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:22c40c11d5de5a866a5db2b4ba57e9663e79180c323928709eced30c5c03ac81"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Intents = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Intents = ">=10.2" [[package]] name = "pyobjc-framework-iobluetooth" -version = "10.1" +version = "10.2" description = "Wrappers for the framework IOBluetooth on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-IOBluetooth-10.1.tar.gz", hash = "sha256:9a30554f1c9229ba120b2626d420fb44059e4aa7013c11f36ab9637dc3aba21f"}, - {file = "pyobjc_framework_IOBluetooth-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5fd71294464b9d891d3a7ebb674bcc462feb6fbdf33ebd08c1411ef104460f7f"}, - {file = "pyobjc_framework_IOBluetooth-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:88e44f1bb3495c3104d9b0a73b2155e4326366c5f08a6e31ef431ab17f342b24"}, - {file = "pyobjc_framework_IOBluetooth-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:15c1a049e1431996188352784defe54a37181da38a7e5a378fcda77fdc007aea"}, + {file = "pyobjc-framework-IOBluetooth-10.2.tar.gz", hash = "sha256:8c4d6a82d0f550c84dce72188369adb9347ad6ee1c8adef996ee1a8c376c51ee"}, + {file = "pyobjc_framework_IOBluetooth-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:15e8a35431740d3e4ee484d4af01afef0b6b8aee2bdfe7b6dbe6cf7c7cc563fa"}, + {file = "pyobjc_framework_IOBluetooth-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:03ee5ecc3a2d2f6a0b4de9b36bc1c56f820624e8176abca0014c9ef3c86b0cd0"}, + {file = "pyobjc_framework_IOBluetooth-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b91c0b370047b386e9b333ba3c12ac121089fa94291c721e8b1ad6945b5763dd"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-iobluetoothui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework IOBluetoothUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-IOBluetoothUI-10.1.tar.gz", hash = "sha256:979c0d9638c0f31e62afe90d8089e61a912d08e0db893a47d3e423b9b23e0db2"}, - {file = "pyobjc_framework_IOBluetoothUI-10.1-py2.py3-none-any.whl", hash = "sha256:809eeb98ce71d0d4a7538fb77f14d1e7cd2c2b91c10605fb8c0d69dbac205de5"}, + {file = "pyobjc-framework-IOBluetoothUI-10.2.tar.gz", hash = "sha256:ed9f4cb62eeda769b3f530ce396fd332f82441c5d22b9cf7b58058670c262d10"}, + {file = "pyobjc_framework_IOBluetoothUI-10.2-py2.py3-none-any.whl", hash = "sha256:f833efa3b1636f7a6cf8b5b2d25fc566757c2c7c06ee7945023aeb992493d96e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-IOBluetooth = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-IOBluetooth = ">=10.2" [[package]] name = "pyobjc-framework-iosurface" -version = "10.1" +version = "10.2" description = "Wrappers for the framework IOSurface on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-IOSurface-10.1.tar.gz", hash = "sha256:e41c635c5e259019df243da8910675db10480a36d0c316539a8ab3fa0d941000"}, - {file = "pyobjc_framework_IOSurface-10.1-py2.py3-none-any.whl", hash = "sha256:46239320148b82c1f2364d5468999b48fa9c94fc404aff6c5451d23896ece694"}, + {file = "pyobjc-framework-IOSurface-10.2.tar.gz", hash = "sha256:f1412c2f029aa1d60add57abefe63ea4116b990892ef7530ae27a974efafdb42"}, + {file = "pyobjc_framework_IOSurface-10.2-py2.py3-none-any.whl", hash = "sha256:b571335a2150e865828d3e52e2a742531499c88dd85215c14d07e68e9bed70a7"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-ituneslibrary" -version = "10.1" +version = "10.2" description = "Wrappers for the framework iTunesLibrary on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-iTunesLibrary-10.1.tar.gz", hash = "sha256:18766b2fb016d33cde8ec2c81b05ddfb77d65cb8c92e16864d0c288edd02e812"}, - {file = "pyobjc_framework_iTunesLibrary-10.1-py2.py3-none-any.whl", hash = "sha256:043a2ede182f41a3ca70be50bf95f18641e2945f0077797ff2bb42a3e1984e37"}, + {file = "pyobjc-framework-iTunesLibrary-10.2.tar.gz", hash = "sha256:c60d1dc9eabb28b036b766b89ea7d18198e21deb8925fc5a5753777c905ecddf"}, + {file = "pyobjc_framework_iTunesLibrary-10.2-py2.py3-none-any.whl", hash = "sha256:4e6cf6073a902f77e0b0c33d2d52e3ab3f0c869cb339b7685b5e7f079df8ef4e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-kernelmanagement" -version = "10.1" +version = "10.2" description = "Wrappers for the framework KernelManagement on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-KernelManagement-10.1.tar.gz", hash = "sha256:da8ac0e6a2de33b823e07ce0462a64340cfebd04f24426b1022374933bbd8d0a"}, - {file = "pyobjc_framework_KernelManagement-10.1-py2.py3-none-any.whl", hash = "sha256:923ff2bbab35a92b9becd9762348f6f690fa463ef07a0e5c4a2b8eb1d3e096af"}, + {file = "pyobjc-framework-KernelManagement-10.2.tar.gz", hash = "sha256:effd1d3230c8a3b8628e7fd315f0aac10fbf1ea99f2ed923999cb1ab787c317a"}, + {file = "pyobjc_framework_KernelManagement-10.2-py2.py3-none-any.whl", hash = "sha256:d8dca9dc1f756bfa894a32f56857ecefb4d188aec590433ee302529261dffb68"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-latentsemanticmapping" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LatentSemanticMapping on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LatentSemanticMapping-10.1.tar.gz", hash = "sha256:46e95532c71083d1e63bcfa4b89a56fcf860288f8fb04fc0313e4c40685d1916"}, - {file = "pyobjc_framework_LatentSemanticMapping-10.1-py2.py3-none-any.whl", hash = "sha256:f0b14a1a2a6d6b25b902a2cc5949f0145926f0b0a3132d17210b1a580dc7f0f5"}, + {file = "pyobjc-framework-LatentSemanticMapping-10.2.tar.gz", hash = "sha256:eb3ddd5e04c39b0151a64bd356f7de3c66062257e3802e8abea7a882e972ff21"}, + {file = "pyobjc_framework_LatentSemanticMapping-10.2-py2.py3-none-any.whl", hash = "sha256:dadd4352b9af681dd85d04712a6cf1d2c574acbf0b8178c35f42231ec8c5a6d1"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-launchservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LaunchServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LaunchServices-10.1.tar.gz", hash = "sha256:c0ef72f7cee77556c81e620ae8c511e73bdea4f644a233c8a5e3a333f5cd3d7d"}, - {file = "pyobjc_framework_LaunchServices-10.1-py2.py3-none-any.whl", hash = "sha256:b792a863427a2c59c884952737041e25ef05bdb541471ce94fb26a05b48abbbc"}, + {file = "pyobjc-framework-LaunchServices-10.2.tar.gz", hash = "sha256:d9f78d702dea13a363de8a7c1c382e1ca872993980c164781cb2758ee49353d2"}, + {file = "pyobjc_framework_LaunchServices-10.2-py2.py3-none-any.whl", hash = "sha256:15b7c96e3059550c218ed5cb5de11dddc7aae21c67c0808b130a5d49b8f4cc0f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-CoreServices = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-CoreServices = ">=10.2" [[package]] name = "pyobjc-framework-libdispatch" -version = "10.1" +version = "10.2" description = "Wrappers for libdispatch on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-libdispatch-10.1.tar.gz", hash = "sha256:444ca20e348cbdd2963523b89661d67743a6c87a57caf9e5d546665baf384a5b"}, - {file = "pyobjc_framework_libdispatch-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:da0fa1e63b7e72010c69341bcd2f523ade827c7f30e0ef5c901a2536f43a1262"}, - {file = "pyobjc_framework_libdispatch-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bd72ff7f399079eaf8135503c3658b3ce967076a9e3fdcd155c8a589134e476a"}, - {file = "pyobjc_framework_libdispatch-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ec061cba47247a5fd5788c3b9d5eba30936df3328f91fea63a565d09c53a0a02"}, - {file = "pyobjc_framework_libdispatch-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c71c8c9dca56b0e89ac7c4aff4b53bc74f64a2290e48c31cc77d87771c5203bd"}, - {file = "pyobjc_framework_libdispatch-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:b24a76fe2de4422685323e4f533b7bfd11a27edf06094c0f730f3f243f94a8bd"}, - {file = "pyobjc_framework_libdispatch-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:606954514e5747b05f9c608614f1affa44512888d18805452fade5d9b7938c14"}, + {file = "pyobjc-framework-libdispatch-10.2.tar.gz", hash = "sha256:ae17602efbe628fa0432bcf436ee8137d2239a70669faefad420cd527e3ad567"}, + {file = "pyobjc_framework_libdispatch-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:955d3e3e5ee74f6707ab06cc76ad3fae27e78c180dea13f1b85e2659f9135889"}, + {file = "pyobjc_framework_libdispatch-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:011736d708067d9b21a4722bae0ed776cbf84c8625fc81648de26228ca093f6b"}, + {file = "pyobjc_framework_libdispatch-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:28c2a2ab2b4d2930f7c7865ad96c1157ad50ac93c58ffff64d889f769917a280"}, + {file = "pyobjc_framework_libdispatch-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6cb0879e1f6773ad0bbeb82d495ad0d76d8c24b196a314ac9a6eab8eed1736e0"}, + {file = "pyobjc_framework_libdispatch-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:aa921cd469a1c2e20d8ba9118989fe4e827cbb98e947fd11ae0392f36db3afcc"}, + {file = "pyobjc_framework_libdispatch-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:6f3d57d24f81878d1b5dcb00a13f85465ede5b91589394f4f1b9dcf312f3bd99"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-libxpc" -version = "10.1" +version = "10.2" description = "Wrappers for xpc on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-libxpc-10.1.tar.gz", hash = "sha256:8e768bb3052b30ef3938c41c9b9a52ad9d454c105d2011f5247f9ffb151e3702"}, - {file = "pyobjc_framework_libxpc-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:c5a3efe43b370fdc4d166ddfd8d1f74b5c3ae5f9b273e5738253c3d9a2bebf27"}, - {file = "pyobjc_framework_libxpc-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:dc16190cbcaf8639f4783058ec63b1aa5d03e3586311f171177b9275ed5725d8"}, - {file = "pyobjc_framework_libxpc-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3f0756945995da4cb503dc9ca31b0633b7044722b08348a240ebe6f594d43c0c"}, - {file = "pyobjc_framework_libxpc-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8d5a7f06f437c6a23c469299a3a15b62f8b4661563499b0f04d9fe8ea5e75a95"}, - {file = "pyobjc_framework_libxpc-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9341237ffaedb3169037a666564615fefd921e190e6ec3e951dc75384169a320"}, - {file = "pyobjc_framework_libxpc-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:57eaa7242ef4afe3e8d1fbe48f259613322549353250400c8d508afff251dde4"}, + {file = "pyobjc-framework-libxpc-10.2.tar.gz", hash = "sha256:04deac1f9dbd1c19c10d175846017f8e8e51d2b52a2674482638d6b289e883a6"}, + {file = "pyobjc_framework_libxpc-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b57089f792d51ad687c9933dd2d3669cd5e6f84d1f9213738ecc5833dba9aa8c"}, + {file = "pyobjc_framework_libxpc-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:e31cb4f7fdb76defc53fe0b56c3f1db953c1dcf3519093835527f270c37315c3"}, + {file = "pyobjc_framework_libxpc-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:978cc2a9cc668e0c4aef13af81cec6129e7b98877b44c952232c0083a8fd352e"}, + {file = "pyobjc_framework_libxpc-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5dd057a556398b48982fdae84f8e08ee9b69b6e5918b6782bd842ef9ad97820d"}, + {file = "pyobjc_framework_libxpc-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:df394dc08eab33430f565a2252906f27cd4f7c41fd431f75b4ae35d3a76f4eab"}, + {file = "pyobjc_framework_libxpc-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5fd3608a32ebe65253c24b7590ad96977135aa847dd188e4c2168f0da9e74e47"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-linkpresentation" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LinkPresentation on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LinkPresentation-10.1.tar.gz", hash = "sha256:d35f9436f6a72c0877479083118f57a42c0d01879df41ee832378bebef37e93c"}, - {file = "pyobjc_framework_LinkPresentation-10.1-py2.py3-none-any.whl", hash = "sha256:077c28c038b1aac0e5cd158cbf8b80863627f1254f0a1884440fabf95d46d62f"}, + {file = "pyobjc-framework-LinkPresentation-10.2.tar.gz", hash = "sha256:4ccae5f593b58dfe9cb422645e0ccf5adab906ec008d3e20eb710cd62bbb4717"}, + {file = "pyobjc_framework_LinkPresentation-10.2-py2.py3-none-any.whl", hash = "sha256:1cada96d3eb03e51e1bbb7e7c10b9c08c80fd098132541b4e992234fe43cfa37"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-localauthentication" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LocalAuthentication on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LocalAuthentication-10.1.tar.gz", hash = "sha256:e2b06bf7af1b6f8ba08bd59e1a3616732d801284362dd5482181b0b1488eca2d"}, - {file = "pyobjc_framework_LocalAuthentication-10.1-py2.py3-none-any.whl", hash = "sha256:3df6ac268f79f28e5b5e76b4fd6e095bdc9a200e1908f24cc33e805fa789f716"}, + {file = "pyobjc-framework-LocalAuthentication-10.2.tar.gz", hash = "sha256:26e899e8b4a90632958eb323abbc06d7b55c64d894d4530a9cc92d49dc115a7e"}, + {file = "pyobjc_framework_LocalAuthentication-10.2-py2.py3-none-any.whl", hash = "sha256:442f6cae70300f29c9133ed7f2e01c294976b9aae55fe180c64983d5dee62254"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Security = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Security = ">=10.2" [[package]] name = "pyobjc-framework-localauthenticationembeddedui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework LocalAuthenticationEmbeddedUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-LocalAuthenticationEmbeddedUI-10.1.tar.gz", hash = "sha256:5a201e26c7710f8e8a6507dbb861baa545dc5abcbe0f3f6a19b2e270562c7bec"}, - {file = "pyobjc_framework_LocalAuthenticationEmbeddedUI-10.1-py2.py3-none-any.whl", hash = "sha256:a8e8101ca74441a862ffb8e2309fe382789c759d0951fb7b7b4e46652b4cb068"}, + {file = "pyobjc-framework-LocalAuthenticationEmbeddedUI-10.2.tar.gz", hash = "sha256:52acdef34ea38d1381a95de15b19c9543a607aeff11db603371d0224917a8830"}, + {file = "pyobjc_framework_LocalAuthenticationEmbeddedUI-10.2-py2.py3-none-any.whl", hash = "sha256:eafbbc321082ff012cdb14e38abae7ced94c6d962cb64af43d6d515da976e175"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-LocalAuthentication = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-LocalAuthentication = ">=10.2" [[package]] name = "pyobjc-framework-mailkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MailKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MailKit-10.1.tar.gz", hash = "sha256:a4589b13361a49ff0b3e9be43cd6f935a35acfc7a9f0da8b5db64283401da181"}, - {file = "pyobjc_framework_MailKit-10.1-py2.py3-none-any.whl", hash = "sha256:498d743e56d876d6d128970e6c0674470d9a4bcf9c021f0b115aa0c6ade1f5ae"}, + {file = "pyobjc-framework-MailKit-10.2.tar.gz", hash = "sha256:8d8fceff5498df0cfa630b7088814f8daa8a25794a36d4b57cfde8c2c14cdc70"}, + {file = "pyobjc_framework_MailKit-10.2-py2.py3-none-any.whl", hash = "sha256:d8bc9e6649e7e500d2d4d4ab288304846d9bfa06952ebeee621fe095dc2f51eb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-mapkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MapKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MapKit-10.1.tar.gz", hash = "sha256:4e5b295ce1e94ed38888a0c4e3a5a92004e63e6d2ba9a86b5a277bbe658ddf05"}, - {file = "pyobjc_framework_MapKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:7628e7d8e4181f06fc3138b7426593d09fe3d49a056e7e3d5853f7bbcc62b240"}, - {file = "pyobjc_framework_MapKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d5d78c56b2806148f7b4a2975e580bc039f1898ca8953041405683ba6c22f19b"}, - {file = "pyobjc_framework_MapKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b9c942b3a705021561de2a4e1590c58212131c2c7dc721290f68371558a42f35"}, + {file = "pyobjc-framework-MapKit-10.2.tar.gz", hash = "sha256:35dfe7aa5ec9e51abc47d6ceb0f83d3c2b5876258591a568e85e2db8218427c4"}, + {file = "pyobjc_framework_MapKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ce322299b04eef212706185764771041a1220f7a611606e33f95ac355d913238"}, + {file = "pyobjc_framework_MapKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:339a8c8181047fc9eb612eb47c51f017423a6b074e2a4838cd6b06e36af6c160"}, + {file = "pyobjc_framework_MapKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:85a110693198798234d3edbd3b606d9d9c9b4817e4ed70d2b2e18357422783c6"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreLocation = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreLocation = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-mediaaccessibility" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MediaAccessibility on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MediaAccessibility-10.1.tar.gz", hash = "sha256:f487d83f948c12679c1ce06caabaedade1f4aee1f35163f835213c251a4639c7"}, - {file = "pyobjc_framework_MediaAccessibility-10.1-py2.py3-none-any.whl", hash = "sha256:2301cc554396efe449b079f99a0b5812e8e3dc364195dfcd2cc2b8a9c8915f11"}, + {file = "pyobjc-framework-MediaAccessibility-10.2.tar.gz", hash = "sha256:acce0baf11270c9276a219f5a0dfb6d8241e01ac775144bfe3a83e088dcd1308"}, + {file = "pyobjc_framework_MediaAccessibility-10.2-py2.py3-none-any.whl", hash = "sha256:55dbf7519028fadf3ac6cb1ef185156f6df649655075a015cf87cee370255e82"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-medialibrary" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MediaLibrary on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MediaLibrary-10.1.tar.gz", hash = "sha256:cd4815cb270aa2f28acdad8185a4b9d4b76a6177f70e8ed62a610484f4bd44a9"}, - {file = "pyobjc_framework_MediaLibrary-10.1-py2.py3-none-any.whl", hash = "sha256:420d5006c624aaaf583058666fd5900a5619ff1f230e99cdd3acb76c12351a37"}, + {file = "pyobjc-framework-MediaLibrary-10.2.tar.gz", hash = "sha256:b3e1bd3e70f0013bbaccd0b43727a0f16ecf23f7d708ca81b8474faaa1f8e8fc"}, + {file = "pyobjc_framework_MediaLibrary-10.2-py2.py3-none-any.whl", hash = "sha256:98b9687f1399365889529c337d99d7f19edf3a94beb05884cf15a29f4fc178af"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-mediaplayer" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MediaPlayer on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MediaPlayer-10.1.tar.gz", hash = "sha256:394acea4fb61f8c4605494c7c64c52a105760aa2ec7e2c34db484e576ed10ad6"}, - {file = "pyobjc_framework_MediaPlayer-10.1-py2.py3-none-any.whl", hash = "sha256:10e25a8682cd0d1d8fc0041f0a34e8acf785b541d8c1ebe493c2d17caeef5648"}, + {file = "pyobjc-framework-MediaPlayer-10.2.tar.gz", hash = "sha256:4b6d296b084e01fb6e5c782b7b6308077db09f4051f50b0a6c3298ffbd1f1d70"}, + {file = "pyobjc_framework_MediaPlayer-10.2-py2.py3-none-any.whl", hash = "sha256:c501ea19380bfbf6b04fbe909fcfe9a78c5ff2a9b58dae87be259066b1ae3521"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-AVFoundation = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-AVFoundation = ">=10.2" [[package]] name = "pyobjc-framework-mediatoolbox" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MediaToolbox on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MediaToolbox-10.1.tar.gz", hash = "sha256:56906cd90e1f969656db1fecd5874c6345e160044f54596c288fb0ffdb35cdc5"}, - {file = "pyobjc_framework_MediaToolbox-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:23b02872d910481a75db8eeb9c053a16b9a3cff1e030ca29d855ba8291c9501a"}, - {file = "pyobjc_framework_MediaToolbox-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c96557db9540ed18748f47d4cd0b2ba7273acb756bf7e91d8b2a943211850614"}, - {file = "pyobjc_framework_MediaToolbox-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:17ee7f045f39e3f11945bf951dfb4238c695ca49938e8b43c78fe12a8eb05628"}, + {file = "pyobjc-framework-MediaToolbox-10.2.tar.gz", hash = "sha256:614ec0a28c810395274aa1d5348a447f67bae4629a3a8372d14162f38e2fc597"}, + {file = "pyobjc_framework_MediaToolbox-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ca7443bca94dfd9863d5290d2680247b7d577cf031dcfc854c414e5fdd9cdb03"}, + {file = "pyobjc_framework_MediaToolbox-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c34dca15560507286eb9ef045d6234ac1db1e50f22c63397662155a7f01ea9ac"}, + {file = "pyobjc_framework_MediaToolbox-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:696d6cadbb643f98750f5a791663ca264f0a0f4db2aeec7c8cf59c02face1683"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-metal" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Metal on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Metal-10.1.tar.gz", hash = "sha256:bde76fe5d285c9c875d411a7cf6cdd7617559eabf4fb9a588f90762a0634148c"}, - {file = "pyobjc_framework_Metal-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0701fe5e5aaa5471843fa0d5fe8fe3279313ff83c8bf5230ab6e11f7cba79a78"}, - {file = "pyobjc_framework_Metal-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5f542aaab62b9803e7e644b86dd82718aa9f1bcfc11cb4a666a59f248b3ae2e0"}, - {file = "pyobjc_framework_Metal-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:90ba5118ebf56a152e2404336ad7732dc60f252cd2414d34c9b32c07897f4512"}, + {file = "pyobjc-framework-Metal-10.2.tar.gz", hash = "sha256:652050cf9f5627dba36b31ad134e56c49040d0dcfaf93a7026018ef17330a01e"}, + {file = "pyobjc_framework_Metal-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c68e4025c52e8c8b0fa584abeb058debe49ac3174e8c421408bf873e5951fd02"}, + {file = "pyobjc_framework_Metal-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:49f333f41556f08e28750bb4e09a7053ac55434f4a29a3e228ed4fd9bae8f57d"}, + {file = "pyobjc_framework_Metal-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0cb39a4f4a70f45f88f79c3641b00b6db0c9b9ed90bee21840a725a8d7c7eaca"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-metalfx" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetalFX on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetalFX-10.1.tar.gz", hash = "sha256:64c96595c2489e41d93a1c75d1eace70619d973e5c9e90e7cfca29c934fc5d06"}, - {file = "pyobjc_framework_MetalFX-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3d456581a76fde824a9109f9dfdd3fc4819e81ae27527b23d2855656ed0ab6ed"}, - {file = "pyobjc_framework_MetalFX-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a3fd4384c83c0818484a3a90120131114a0866b2004309cda24ce873e4ff1e50"}, - {file = "pyobjc_framework_MetalFX-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:76a9ef5abf114c1e2d60b1e971619183f87918eafeb0719a281d1475c88592ad"}, + {file = "pyobjc-framework-MetalFX-10.2.tar.gz", hash = "sha256:d98a0fd1f0d2d3ea54efa768e6817a8773566c820ae7a3a23497e1c492e11da7"}, + {file = "pyobjc_framework_MetalFX-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e7f1b50316db47ffb1e9505726dfe5bf552f32188d21b6ef979078fec9f58077"}, + {file = "pyobjc_framework_MetalFX-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:526687ac36b71b9822613bf552bff99930ee2620414b0b932f5e0d327d62809e"}, + {file = "pyobjc_framework_MetalFX-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a8c78a8f9c3ee59cb5ba96e4db56c3ab8cc78860f9d42ca5732168d8691cb17b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Metal = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Metal = ">=10.2" [[package]] name = "pyobjc-framework-metalkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetalKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetalKit-10.1.tar.gz", hash = "sha256:da0357868824e6ec506ff92d18d729f8462c4c5ca8f26ecc86e8c031d78fa80d"}, - {file = "pyobjc_framework_MetalKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8723c6b009bf0ce7eb77aa7bdc54f1ee6d0450a3bc2f8ce85523170e92a62152"}, - {file = "pyobjc_framework_MetalKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e94303a78a883e3aa53115c4ebb8329989fcf36be353e908252bba3ba3dc807d"}, - {file = "pyobjc_framework_MetalKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:184922a11f273e604f2c5af2e14ce1f4ef2dce0f5c09aadda857c5a5ca6acab1"}, + {file = "pyobjc-framework-MetalKit-10.2.tar.gz", hash = "sha256:42fc61371d49c2b86828d2a668b7badb2418c0ecce7595fce790830607bd8040"}, + {file = "pyobjc_framework_MetalKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:abcdabdad3d9810730c67f493b70139254f7438ebba0149b5dcd848384a08a85"}, + {file = "pyobjc_framework_MetalKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7990b05194919d187a6af8be7fe51007ab666cfdb3512b6fb022da9049d9957d"}, + {file = "pyobjc_framework_MetalKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c26c2e2965ae6547edecbc8e250117401c26f62f9a55e351eca42f2e557721e7"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Metal = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Metal = ">=10.2" [[package]] name = "pyobjc-framework-metalperformanceshaders" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetalPerformanceShaders on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetalPerformanceShaders-10.1.tar.gz", hash = "sha256:335a49c69ac95e412c581592a148a32c0fcf434097e50da378f21fe09be13738"}, - {file = "pyobjc_framework_MetalPerformanceShaders-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a410b6dce52f7a2adebdb66891bfc33939ffe24bd75691fc30c1f7539521df86"}, - {file = "pyobjc_framework_MetalPerformanceShaders-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7218e89bccadc451f5ba040d84b049fe8b4a4bf7d9a4fdfb20fe6851e433cd49"}, - {file = "pyobjc_framework_MetalPerformanceShaders-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:9452e07d38c7a199c2eebb1280227285f918b97d3d597940e1e6e6471636b44a"}, + {file = "pyobjc-framework-MetalPerformanceShaders-10.2.tar.gz", hash = "sha256:66e6f671279b1f7edbaed1bea8ab1eb57f617e000c1e871c190b60ad60c1d727"}, + {file = "pyobjc_framework_MetalPerformanceShaders-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a65c201921fffb992955aa143ffcb36be3e7c5aee86334941d3214428f0c7ad8"}, + {file = "pyobjc_framework_MetalPerformanceShaders-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9fd437d0b1a83a3bdc866727ba17a00b49ee239205b2d14b617f5ca4f566c4f7"}, + {file = "pyobjc_framework_MetalPerformanceShaders-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0f862a65ffc0159e6b9ad46115b8d7ecbce5f56fe920c709b943982d4a70d63c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Metal = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Metal = ">=10.2" [[package]] name = "pyobjc-framework-metalperformanceshadersgraph" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetalPerformanceShadersGraph on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetalPerformanceShadersGraph-10.1.tar.gz", hash = "sha256:f587a0728e5240669d23a649f50bb25c10577f9775ba4f2576b19423575464a0"}, - {file = "pyobjc_framework_MetalPerformanceShadersGraph-10.1-py2.py3-none-any.whl", hash = "sha256:467e84983c5ded8cfaea8cb425872d5069eda8c4cc1f803ca3afaed0e184c763"}, + {file = "pyobjc-framework-MetalPerformanceShadersGraph-10.2.tar.gz", hash = "sha256:4fffad1c37e700fc38b2ca8eb006d7532b3b5cb700580ce7dfd31af35e0fb6e8"}, + {file = "pyobjc_framework_MetalPerformanceShadersGraph-10.2-py2.py3-none-any.whl", hash = "sha256:7fedd831f9fc58708f6b01888abd42a2f08151c86db47280fe47be0f709811bf"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-MetalPerformanceShaders = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-MetalPerformanceShaders = ">=10.2" [[package]] name = "pyobjc-framework-metrickit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MetricKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MetricKit-10.1.tar.gz", hash = "sha256:6887cec4b7aa489ec16af2f77f7c447bc0a0493456fe1c4910d95a5b3e587fcd"}, - {file = "pyobjc_framework_MetricKit-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:02c8775000effbb00f6dde0a493b9ae955e54be4f9e72c4d0f2350d0864b46ac"}, - {file = "pyobjc_framework_MetricKit-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:49f6d9d9c46eb6605799fe0d898945cb62fc5c2d2fea1f7e51950765bbf7b03b"}, - {file = "pyobjc_framework_MetricKit-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:6494dac683181dd1ca55b2fc912f693f51483a4e468a3fac05543539a643ca40"}, - {file = "pyobjc_framework_MetricKit-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:cb7b318a2e2f4bb841a5427ab53448c827de0f2617123b804c41e6d595581321"}, - {file = "pyobjc_framework_MetricKit-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:5484980ef21e68389ed452f8a4d357f00dabf8711cb5268efe683f758441f23f"}, - {file = "pyobjc_framework_MetricKit-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:7dc5a4da156e7f8724969ae329c8bae4fab58c2d7376ae96f62e2d646cc1175c"}, + {file = "pyobjc-framework-MetricKit-10.2.tar.gz", hash = "sha256:14cb02fd8fc338f6f15df5fd14c95419871b768cc8f5f71b1e0e99fde46b4712"}, + {file = "pyobjc_framework_MetricKit-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:585a494a5126c5481afc34ac5bfdc28a1a2b7044d8b0e3427fbd5313e72c59fb"}, + {file = "pyobjc_framework_MetricKit-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2b330ccffa45f4ccf2fc23c73112bf3b652515eb025fddeb3e2c81ca25f1a168"}, + {file = "pyobjc_framework_MetricKit-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:fc336ff6db376bff4cab0bd7db962aae1ff11f4584026cd5c4d3f66283018ce7"}, + {file = "pyobjc_framework_MetricKit-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e9d1403302d753686b49aa0d6fc0a4c05e6ead18aa1b9de9668322fd0e81c51f"}, + {file = "pyobjc_framework_MetricKit-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:82b01a838203000c262f9f52420b1387850505f0a7b742b29a73cc8c6a9e0c25"}, + {file = "pyobjc_framework_MetricKit-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:79971789bff04540200bd443ec3c6ae13f83eea827d2dab0f33bc9c6e6af9ab0"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-mlcompute" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MLCompute on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MLCompute-10.1.tar.gz", hash = "sha256:02e947ddb90c236acb2cb34f41838e6c78cb070886ddfb98bb71a8f02f991fd6"}, - {file = "pyobjc_framework_MLCompute-10.1-py2.py3-none-any.whl", hash = "sha256:25ed4d3002bd33c039f4ad9bf05b4830d53f67282a8399df7c65bd1430a01183"}, + {file = "pyobjc-framework-MLCompute-10.2.tar.gz", hash = "sha256:6f5bff2317b2ae45c092a94a05e7831d0dc7a002fc68b03648abbac5a2ce33a3"}, + {file = "pyobjc_framework_MLCompute-10.2-py2.py3-none-any.whl", hash = "sha256:a191abf1c6aef061b4eab1aa8d4cf886fd6c98e53f6fedcd738ddd904571b933"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-modelio" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ModelIO on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ModelIO-10.1.tar.gz", hash = "sha256:75fe5405165264a5059c16bfd492593e3becba50811a47dedbfc699ff73d4bfb"}, - {file = "pyobjc_framework_ModelIO-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6911dfa7821e1b97cf48b593d3ccd6c9f2401ed1715a677df3cdfdfeec7dad14"}, - {file = "pyobjc_framework_ModelIO-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e1a1f3b276999032ff13b1f985ae06a95b5ffc9c53771b10ea3496a70e809d58"}, - {file = "pyobjc_framework_ModelIO-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8c6d43cca1c952858b2f31cab7b9ef01daae5aa1322240895d2e965cc72230cd"}, + {file = "pyobjc-framework-ModelIO-10.2.tar.gz", hash = "sha256:8ae1444375260a346d1c77838f84e2c04dfabaf2769b2970a3588becb670431e"}, + {file = "pyobjc_framework_ModelIO-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6d226b059a4c99669ec3dc03c1dde9b0daeba392a198cdb36398394396512a26"}, + {file = "pyobjc_framework_ModelIO-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c2fff57596d54b95507a1c180a6df877e28e561e5e71941619d70ac67d5bec4d"}, + {file = "pyobjc_framework_ModelIO-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e6b119d66cefde55ce63e406c4fd12d626fb017ee88d9e01fdd25434f6ddc831"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-multipeerconnectivity" -version = "10.1" +version = "10.2" description = "Wrappers for the framework MultipeerConnectivity on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-MultipeerConnectivity-10.1.tar.gz", hash = "sha256:ab83e57953bb3f3476c77ed863e1138ab58a0711a77a1a11924b9d22e90f116b"}, - {file = "pyobjc_framework_MultipeerConnectivity-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:e5770351b75484bbb4f6b0f0a20e0a0197a0b192a35228b087bc06f149242b0f"}, - {file = "pyobjc_framework_MultipeerConnectivity-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a06db4ee86ee85bd085659a965f1448b27bf0018f1842ae3fb6ec1c195b5352c"}, - {file = "pyobjc_framework_MultipeerConnectivity-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:becab88974b1669f5ca9c76dddb5591d4ed9acb4176980d763e22d298b6ba83d"}, + {file = "pyobjc-framework-MultipeerConnectivity-10.2.tar.gz", hash = "sha256:e3c1e5f39715621786f4ad5ecffa2cc9445a218e5ab3e94295c16fbcb754ee5a"}, + {file = "pyobjc_framework_MultipeerConnectivity-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ce68b7b5030e95e78bc94e898adb09f1e3f30c738e7140101146c52c64ff5493"}, + {file = "pyobjc_framework_MultipeerConnectivity-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f158aaaabcfd0d1e6d77585ec24797dbedf6bde640675b26dcfb4e2093d3a0ce"}, + {file = "pyobjc_framework_MultipeerConnectivity-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:0e02f9ecdbf2c4aacd5ab8cd019415584bed7fa1656d525c8f841466d6e58993"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-naturallanguage" -version = "10.1" +version = "10.2" description = "Wrappers for the framework NaturalLanguage on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-NaturalLanguage-10.1.tar.gz", hash = "sha256:b017a75d7275606f1732fef891198e916743871ca7663ddbb1ffae7d4d93a855"}, - {file = "pyobjc_framework_NaturalLanguage-10.1-py2.py3-none-any.whl", hash = "sha256:02bb4df955ecf329cf6da77ca6952777e5b2a10aee67452ea6314ec632cbc475"}, + {file = "pyobjc-framework-NaturalLanguage-10.2.tar.gz", hash = "sha256:eba7de67bea4a6a071e04e79c8a4de0547c25a09635fe3d4ee6cd58fb6aeaf65"}, + {file = "pyobjc_framework_NaturalLanguage-10.2-py2.py3-none-any.whl", hash = "sha256:0165735973a720f09bd5a2333f32e16aac52332fb595425480d7a2215472d4fb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-netfs" -version = "10.1" +version = "10.2" description = "Wrappers for the framework NetFS on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-NetFS-10.1.tar.gz", hash = "sha256:0bd9c58a0939df29729c0ab5c5fe3e7eb7fc066a15bd885ddbbbfc6d6b1524b6"}, - {file = "pyobjc_framework_NetFS-10.1-py2.py3-none-any.whl", hash = "sha256:a317c30a367af22f94858ca73cfe38a0dc4b63d0783f93532cb33780cd98a942"}, + {file = "pyobjc-framework-NetFS-10.2.tar.gz", hash = "sha256:05de46b15d19abecbb9e7d04745ca27dba9ec121f16ea7bafc9dc87a12c0e828"}, + {file = "pyobjc_framework_NetFS-10.2-py2.py3-none-any.whl", hash = "sha256:e7a84497be6114ea2e47776efda640d9d8becaaa07214d712a204b5d446e3d95"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-network" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Network on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Network-10.1.tar.gz", hash = "sha256:39c02fdcac4e487e14296f5d60458b9a0cd58c2a830591a7cfacc0bca191e03f"}, - {file = "pyobjc_framework_Network-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:5a31831cd9949efbc82bcea854ea3c22dcb5dc85072f909710cde666efd5cfb6"}, - {file = "pyobjc_framework_Network-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6704cbbf5f50d73208e7c9d92a1212f581280430da2606e07e88669120c82a36"}, - {file = "pyobjc_framework_Network-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:fe52bac9aa16429f7a138aad4cbb1e95a2be5c052c1cfda7e8c4dd16d1147dec"}, + {file = "pyobjc-framework-Network-10.2.tar.gz", hash = "sha256:b39bc26f89cf9fc56cc9c4a99099aef68c388d45b62dc1ec16772ee290b225d4"}, + {file = "pyobjc_framework_Network-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4f465400cd4402b7495a27de4c9099bcc127afa4d1cb587f75b987750c0ea032"}, + {file = "pyobjc_framework_Network-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:39966aa35d17b00973fa85e334b6360311cfd1a097d26d79b5957bc7cd7fad4a"}, + {file = "pyobjc_framework_Network-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5542660d0c7183dc4599bd20763ed3b59772cf17211ca3720a4175f886a8eada"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-networkextension" -version = "10.1" +version = "10.2" description = "Wrappers for the framework NetworkExtension on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-NetworkExtension-10.1.tar.gz", hash = "sha256:f49a3bd117ca40a1ea8ae751aca630f7b7e7d7305aa5dfa969beb07299eb2784"}, - {file = "pyobjc_framework_NetworkExtension-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bfc5a7b402c8daced465c6b18683930a2ece91e98134cc1801657ad0a9256b1e"}, - {file = "pyobjc_framework_NetworkExtension-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:dfd808295c3b68a2f225410a67645b184187848be86abc2e6ba90db27e5c470f"}, - {file = "pyobjc_framework_NetworkExtension-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a925cfdabb4d882e8b9c3524a729c3b683e7a7ca18e291509625d3e63d3840cb"}, + {file = "pyobjc-framework-NetworkExtension-10.2.tar.gz", hash = "sha256:14f237bd96a822c55374584e99f2d79581b2d60570f34e4863800f934a44b82d"}, + {file = "pyobjc_framework_NetworkExtension-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:280dc76901628b2c9750766bb2424a29de3f1f49b41e5f29634701cfe0ab0524"}, + {file = "pyobjc_framework_NetworkExtension-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ce6cfdff6f65f512137ee382ba04ee2b52e0fb51deacb651e385daf5349d28b7"}, + {file = "pyobjc_framework_NetworkExtension-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ed2cf32a802ec872466c743013ce9ef17757e89e21a49cbeeeffddfaefb89fc4"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-notificationcenter" -version = "10.1" +version = "10.2" description = "Wrappers for the framework NotificationCenter on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-NotificationCenter-10.1.tar.gz", hash = "sha256:697e29da4fdd5899e5db5bda7bdb5afc97f4a6e4d959caf2316aef3b300c5575"}, - {file = "pyobjc_framework_NotificationCenter-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f9078ba52e1cfa77c797a9aed972c182acfcc79cc2eb083c7b06ba76738b5f6d"}, - {file = "pyobjc_framework_NotificationCenter-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:25bf6f521f99ccb057d0df063242d5d28223672525706317134caa887ffd6b07"}, - {file = "pyobjc_framework_NotificationCenter-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7a6876f4b25023562ddf2558fba5e52d72a7ce3ec41c8e96533779d25e2b7722"}, + {file = "pyobjc-framework-NotificationCenter-10.2.tar.gz", hash = "sha256:3771c7a8b8e839d07c7cb51eef2e83666254bdd88bd873b0ba7e385245cda684"}, + {file = "pyobjc_framework_NotificationCenter-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f982ce1d0916f9ba3322ebbffd9b936b5b9aeb6d8ec21bd2c3c5245c467c1a12"}, + {file = "pyobjc_framework_NotificationCenter-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:dd1d8364d2212a671b2224ab6bf7785ba5b2aae46610ec46ae35d27c4d55cb15"}, + {file = "pyobjc_framework_NotificationCenter-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:1e8aaaef40b6c0deaffd979b3741d1f9de7d804995b7b92fa88ba7839615230e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-opendirectory" -version = "10.1" +version = "10.2" description = "Wrappers for the framework OpenDirectory on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-OpenDirectory-10.1.tar.gz", hash = "sha256:5d25c254876378966ce58e0de9e3d3594ca25922773d6526235b5e2f2c4103e1"}, - {file = "pyobjc_framework_OpenDirectory-10.1-py2.py3-none-any.whl", hash = "sha256:83601f3b5694b1087616566019c300aa38b2a15b59d215e96c5dae18430e8c96"}, + {file = "pyobjc-framework-OpenDirectory-10.2.tar.gz", hash = "sha256:ecca3346275e1ee7be812e428da7f243e37258d8152708a2baa246001b7f5996"}, + {file = "pyobjc_framework_OpenDirectory-10.2-py2.py3-none-any.whl", hash = "sha256:7996985a746f4cceee72233eb5671983e9ee9c9bce3fa9c2fd03d65e766a4efd"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-osakit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework OSAKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-OSAKit-10.1.tar.gz", hash = "sha256:59ad344fed2ddbc24c5dad3345f596cd6ecb73e4c97a05051e3680709f66a42f"}, - {file = "pyobjc_framework_OSAKit-10.1-py2.py3-none-any.whl", hash = "sha256:af34b4dccc17a772d80c283c9356bdb5a5a300bd54c2557c26671aca4f2f86cb"}, + {file = "pyobjc-framework-OSAKit-10.2.tar.gz", hash = "sha256:6efba4a1733e9ab0bf0e7b4f2eb3e0c84b2a4af1b0b4bbc3a310ae041ccaf92d"}, + {file = "pyobjc_framework_OSAKit-10.2-py2.py3-none-any.whl", hash = "sha256:fbad23e47e31d795a005c18a20d84bff68d90d6dd0f87b6a343e46f87c00034a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-oslog" -version = "10.1" +version = "10.2" description = "Wrappers for the framework OSLog on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-OSLog-10.1.tar.gz", hash = "sha256:bfce0067351115ae273489768f93692dcda88bd5b54f28bb741c08855c114dfe"}, - {file = "pyobjc_framework_OSLog-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:57b2920c5c9393fb4fe9e1d5d87eabead32ebe821853d06d577bdb5503327a49"}, - {file = "pyobjc_framework_OSLog-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e94a3ce153fe72f7fe463e468d94e3657db54b133aaf5a313fb31b6b52ed60f2"}, - {file = "pyobjc_framework_OSLog-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:09e64565e4a293f3a9d486e1376f2c9651d5cec500b2c2245de9ae0baecfb29e"}, + {file = "pyobjc-framework-OSLog-10.2.tar.gz", hash = "sha256:2377637a0de7dd60f610caab4bcd7efa165d23dba4ac896fd542f1fab2fc588a"}, + {file = "pyobjc_framework_OSLog-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ef1ddc15f98243be9b03f4f4bcb839318333fb135842085ba40499a58c8bd342"}, + {file = "pyobjc_framework_OSLog-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7958957503310ec8df90a0a036ae8a075b90610c0b797769ad117bf635b0caa6"}, + {file = "pyobjc_framework_OSLog-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:67796f02b77c1cc893b3f112f88c58714b1e16a38b59bc52748c25798db71c29"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-passkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PassKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PassKit-10.1.tar.gz", hash = "sha256:bc19a46fad004137f207a5a9643d3f9a3602ea3f1d75c57841de986019a3c805"}, - {file = "pyobjc_framework_PassKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:011e2f32bc465b634d171a2500e6a153b479b807a50659cc164883bbeec74e59"}, - {file = "pyobjc_framework_PassKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:791f7d4317164130e8232e75e40ba565633a01bc5777dc3d0ba0a8b5f4aeab92"}, - {file = "pyobjc_framework_PassKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:58115c31a2e8b8a57ca048de408444cc4ba94da386656e0eeeac919b157f03a4"}, + {file = "pyobjc-framework-PassKit-10.2.tar.gz", hash = "sha256:0c879d632f0f0bf586161a7abbbba3dad9ba9894a3edbce06f4160491c2c134c"}, + {file = "pyobjc_framework_PassKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:15891c8c1e23081961d652946d4750fd3cd1308efc953a1c77713394726798a6"}, + {file = "pyobjc_framework_PassKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d68061729743be30c66f7eb3cb649850ef12a24b1d1896233036a390e7d69aa7"}, + {file = "pyobjc_framework_PassKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7290369b34be3317463a32c9e78a0ed734db4793414851a9e73295413cf17317"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-pencilkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PencilKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PencilKit-10.1.tar.gz", hash = "sha256:712654dc9373014aa5472b10ba269d95f455c722ebb7504caa04dfae209ed63a"}, - {file = "pyobjc_framework_PencilKit-10.1-py2.py3-none-any.whl", hash = "sha256:baf856d274653d74d66099ae81005ddb3923f7128d36d2f87100481cbb8b2b27"}, + {file = "pyobjc-framework-PencilKit-10.2.tar.gz", hash = "sha256:2338ea384b9a9e67a7f34c300a898ccb997bcff9a2a27e5f9bf7642760c016a0"}, + {file = "pyobjc_framework_PencilKit-10.2-py2.py3-none-any.whl", hash = "sha256:d3e605f104548f26c708957ab7939a64147c422c35d45c4ff4c8d01b5c248c4d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-phase" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PHASE on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PHASE-10.1.tar.gz", hash = "sha256:b7e0ef3567359a4f8ab3e5f8319f2201e775e3db6d7498409701664568c8c7c6"}, - {file = "pyobjc_framework_PHASE-10.1-py2.py3-none-any.whl", hash = "sha256:329cd6dd040a7ef8091dda9d8e57d9613bc9c8edf3cfd3af549f5cd9d64a0941"}, + {file = "pyobjc-framework-PHASE-10.2.tar.gz", hash = "sha256:047ba5b7a869ed93c3c7af2cf7e3ffc83299038275d47c8229e7c09006785402"}, + {file = "pyobjc_framework_PHASE-10.2-py2.py3-none-any.whl", hash = "sha256:f29cd40e5be860758d8444e761d43f313915e2750b8b03b8a080dd86260f6f91"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-AVFoundation = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-AVFoundation = ">=10.2" [[package]] name = "pyobjc-framework-photos" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Photos on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Photos-10.1.tar.gz", hash = "sha256:eb0e83d01c8eb0652fac8382e68fd9643b7530f6580c2a51846444cae09ec094"}, - {file = "pyobjc_framework_Photos-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d91ead1ec33e05bf9e42b7df3f8fe7e3d4cf2814482f6878060c259453491d65"}, - {file = "pyobjc_framework_Photos-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:f8415346689213b30488eb023d699c0512fcddeb7e1e4aa833860c312dddf780"}, - {file = "pyobjc_framework_Photos-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:61174248e07025d4696b6164346b43147250d03ae8378f70a458c0583e003656"}, + {file = "pyobjc-framework-Photos-10.2.tar.gz", hash = "sha256:ba05d1208158e6de6d14782c182991c0d157254be7254b8d3bb0a9a53bf113fb"}, + {file = "pyobjc_framework_Photos-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4f2c2aa73f3ac331a84ee1f7b5e0edc26471776b2de2190640f041e3c1cc8ef3"}, + {file = "pyobjc_framework_Photos-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:17d69ce116a7f7db1d78ed12a8a81bec1b580735ad40611c0037d8c2977b2eb8"}, + {file = "pyobjc_framework_Photos-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e53d0759c26c7eac4ebfc7bd0018dfd7e3be8ab88a042684ee45e9184e0ac90e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-photosui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PhotosUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PhotosUI-10.1.tar.gz", hash = "sha256:4b90755c6c62a0668782cf05d92fca6277485f2cb3473981760c0dc0e40de1d8"}, - {file = "pyobjc_framework_PhotosUI-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:206641f2f7f3169fecc0014b9b93c89b5503841014e911d4686684de137c79f9"}, - {file = "pyobjc_framework_PhotosUI-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:02c1861bcce433294b00f6c614559addc87fcf57aaa1ede2b6dfea50a3795378"}, - {file = "pyobjc_framework_PhotosUI-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:8df716fb2e9994bfc2d716d6930defb3e3911a0337788ef36eea0c2eb0f899ad"}, + {file = "pyobjc-framework-PhotosUI-10.2.tar.gz", hash = "sha256:d0bbcae82b4cc652bb60d3221c557cc19be62ff430575ec8e6d233beb936f73b"}, + {file = "pyobjc_framework_PhotosUI-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a27607419652b45053e0be5ede2780b48e6a8dded2b365ded1732e80dafacea0"}, + {file = "pyobjc_framework_PhotosUI-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:7eddf0343fae6c327a3dc941d0d7b216f5d186edb2e511d7c54668f6ff2be701"}, + {file = "pyobjc_framework_PhotosUI-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d6715ac72c7967761c33502f6cd552534ec0f727f009f22a2c273dc12076d52d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-preferencepanes" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PreferencePanes on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PreferencePanes-10.1.tar.gz", hash = "sha256:3a26cd8959dac30203410eb432a361caf2a0b8552c74edd3d7406d722ecc1014"}, - {file = "pyobjc_framework_PreferencePanes-10.1-py2.py3-none-any.whl", hash = "sha256:9b16c93d7f684cbe097932c8260a0b6460ad9fc68230648981340b7e3ee7053e"}, + {file = "pyobjc-framework-PreferencePanes-10.2.tar.gz", hash = "sha256:f1fba8727d172a3e9b58d764695702f7752dfb585d0378e588915f3d8363728c"}, + {file = "pyobjc_framework_PreferencePanes-10.2-py2.py3-none-any.whl", hash = "sha256:4da63d42bc2f2de547b6c817236e902ad6155efa05e5305daa38be830b70a19d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-pubsub" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PubSub on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PubSub-10.1.tar.gz", hash = "sha256:7992344ae82d9566d300b3d2c92ff9fa9a28e060bd42d0988df351f5fb729156"}, - {file = "pyobjc_framework_PubSub-10.1-py2.py3-none-any.whl", hash = "sha256:af0b1ed0328f06d7d96390a4b95bfb4a790d5b38142825a222923f908dc46db9"}, + {file = "pyobjc-framework-PubSub-10.2.tar.gz", hash = "sha256:68ca9701b29c5e87f7837490cad3dab0b6cd539dfaff3ffe84b1f3f1bf4dc764"}, + {file = "pyobjc_framework_PubSub-10.2-py2.py3-none-any.whl", hash = "sha256:b44f7f87de3f92ce9655344c476672f8f7a912f86ab7a615fec30cebbe7a8827"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-pushkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework PushKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-PushKit-10.1.tar.gz", hash = "sha256:12798ad9ae87f7e78690d2bce2ea46f0714d30dd938f5b288717660120a00795"}, - {file = "pyobjc_framework_PushKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:99edcd057d5cc7e015fe6b464b83f07c843fba878f5b0636ff30cd6377ec2915"}, - {file = "pyobjc_framework_PushKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:986216b9021ed6aff3a528c2b6a3885426e8acac9a744397ede998d2e7a83d06"}, - {file = "pyobjc_framework_PushKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:cf27a49a3b9eadde0bc518b54f7b38fd5d0e1c2203350d1286527b6177afa3c3"}, + {file = "pyobjc-framework-PushKit-10.2.tar.gz", hash = "sha256:e30fc4926a9fcd3427701e48a8908f72e546720e52b1e0f457ba2fa017974917"}, + {file = "pyobjc_framework_PushKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:1015e4473a8eac7eba09902807b8d8edd47c536e3a50a0b3fe7ab7211e454ad8"}, + {file = "pyobjc_framework_PushKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6f68b2630f84dc6d94046f7676d415e5342b2bb3f0368f3b9e81d0c5744c219b"}, + {file = "pyobjc_framework_PushKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5fe75738ea08c05e42460a58acbf0a8af67a3df26ca2a7bddd48d801b00772ed"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-quartz" -version = "10.1" +version = "10.2" description = "Wrappers for the Quartz frameworks on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Quartz-10.1.tar.gz", hash = "sha256:b7439c0a3be9590d261cd2d340ba8dd24a75877b0be3ebce56e022a19cc05738"}, - {file = "pyobjc_framework_Quartz-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:69db14ac9814839471e3cf5a8d81fb5edd1b762739ad806d3cf244836dac0154"}, - {file = "pyobjc_framework_Quartz-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2ddcd18e96511e618ce43e288a043e25524c131f5e6d58775db7aaf15553d849"}, - {file = "pyobjc_framework_Quartz-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:c4257a2fb5580e5ebe927a66cf36a11749685a4681a30f90e954a3f08894cb62"}, - {file = "pyobjc_framework_Quartz-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:28315ca6e04a08ae9e4eaf35b364ee77e081605d5865021018217626097c5e80"}, - {file = "pyobjc_framework_Quartz-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9cb859a2fd7e15f2de85c16b028148dea06002d1a4142922b3441d3802fab372"}, - {file = "pyobjc_framework_Quartz-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:993c71009e6374e57205e6aeaa577b7af2df245a5d1d2feff0f88ca0fa7b8626"}, + {file = "pyobjc-framework-Quartz-10.2.tar.gz", hash = "sha256:9b947e081f5bd6cd01c99ab5d62c36500d2d6e8d3b87421c1cbb7f9c885555eb"}, + {file = "pyobjc_framework_Quartz-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bc0ab739259a717d9d13a739434991b54eb8963ad7c27f9f6d04d68531fb479b"}, + {file = "pyobjc_framework_Quartz-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2a74d00e933c1e1a1820839323dc5cf252bee8bb98e2a298d961f7ae7905ce71"}, + {file = "pyobjc_framework_Quartz-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:3e8e33246d966c2bd7f5ee2cf3b431582fa434a6ec2b6dbe580045ebf1f55be5"}, + {file = "pyobjc_framework_Quartz-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c6ca490eff1be0dd8dc7726edde79c97e21ec1afcf55f75962a79e27b4eb2961"}, + {file = "pyobjc_framework_Quartz-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d3d54d9fa50de09ee8994248151def58f30b4738eb20755b0bdd5ee1e1f5883d"}, + {file = "pyobjc_framework_Quartz-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:520c8031b2389110f80070b078dde1968caaecb10921f8070046c26132ac9286"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-quicklookthumbnailing" -version = "10.1" +version = "10.2" description = "Wrappers for the framework QuickLookThumbnailing on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-QuickLookThumbnailing-10.1.tar.gz", hash = "sha256:b6c4ea3701cb18abaffcceb65adc9dcfd6bb28811af7a99148c71e71d538a3a6"}, - {file = "pyobjc_framework_QuickLookThumbnailing-10.1-py2.py3-none-any.whl", hash = "sha256:984e4e92727caa5b2ebbe8c91fcde6acc416f15dd8e7aef94cb3999c4a7028ec"}, + {file = "pyobjc-framework-QuickLookThumbnailing-10.2.tar.gz", hash = "sha256:91497a4dc601c99ccc11ad7976ff729b57f724d9eff071bc24c519940d129dca"}, + {file = "pyobjc_framework_QuickLookThumbnailing-10.2-py2.py3-none-any.whl", hash = "sha256:34349ff0b07b39ecfe5757eb80341a45f9d4426558b93946225f8b4fa2781c4c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-replaykit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ReplayKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ReplayKit-10.1.tar.gz", hash = "sha256:c74d092afd8da7448e3b96a28d9cde09ad11269b345a5df21ce971c87671e421"}, - {file = "pyobjc_framework_ReplayKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:592cd22d78a92691d3dce98cd526e95fbb692142541a62c99d989c8941ec9f55"}, - {file = "pyobjc_framework_ReplayKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:05358af8daef82de6fa40fb5e04639d0f29d3f22f34b0901d5a224f8d2a7da69"}, - {file = "pyobjc_framework_ReplayKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:771af451363b7c81c920a1290f673501762da6f691f54920d0866028098390dd"}, + {file = "pyobjc-framework-ReplayKit-10.2.tar.gz", hash = "sha256:12544028e59ef25ea5c96ebd451cee70d1833d6b5991d3a1b324c6d81ecfb49e"}, + {file = "pyobjc_framework_ReplayKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:4e34b006879ed2e86df044e3dd36482d78e6297c954aeda29f60f4b9006c8114"}, + {file = "pyobjc_framework_ReplayKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:a6e7ae17d41a381d379d10bd240e1681fc83664b89495999a4dd8d0f42d4b542"}, + {file = "pyobjc_framework_ReplayKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:3c57b4019563aaae3c37a250d6c064cbcb5c0d3b227b5b4f1e18bf4a1effcf0e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-safariservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SafariServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SafariServices-10.1.tar.gz", hash = "sha256:5a9105d3aea43cd214583acd06609f56ed704ce816cb103916324e8ed8388fce"}, - {file = "pyobjc_framework_SafariServices-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f672434748e7d9b303535969bcb03d99cdbf79162292ad439c0347455f38f1db"}, - {file = "pyobjc_framework_SafariServices-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:64d37455a8bd541bd799604ee9e41120cc7c9c19f26776b6d8e16f1902738b70"}, - {file = "pyobjc_framework_SafariServices-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a5aa2fb6333ec0929f6b9689992b76eb6442e5ef4bad8b5a72c7796f24898868"}, + {file = "pyobjc-framework-SafariServices-10.2.tar.gz", hash = "sha256:723de09afb718b05d03cbbed42f90d36356294b038ca6422c88d50240047b067"}, + {file = "pyobjc_framework_SafariServices-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:2cd4b4210bd3c05d74d41e5bf2760e841289927601184f0e6ca3ef85019aa5dd"}, + {file = "pyobjc_framework_SafariServices-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6c8aa0becaa7d4ce0d0d1ada4e14e1eae2bf8e5be7ef49cc1861a41d3a4eeade"}, + {file = "pyobjc_framework_SafariServices-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:aecc109b096b3e995b896bfb97c09ef156600788e2a46c498bb4e2e355faa2bc"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-safetykit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SafetyKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SafetyKit-10.1.tar.gz", hash = "sha256:f1ac7201d32129c9c1a200724a5d3e75c6da8793f9c8a628be206cdebcd548e5"}, - {file = "pyobjc_framework_SafetyKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:3499fd9d85c8c93ae7be2949c1b2e91e0f74b9a0d39be9c66440c40195ef4633"}, - {file = "pyobjc_framework_SafetyKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ab7d47dbcdeafb56f0c2c6e1be847e74840038c19fecbbaf883e68cd44511eb9"}, - {file = "pyobjc_framework_SafetyKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5c68ab2994c21bd32540595ec92922b0234e48fbb6998fcb22bacee46286e999"}, + {file = "pyobjc-framework-SafetyKit-10.2.tar.gz", hash = "sha256:b5822cda3b1dc0209fa58027551fa17457763275902c7d42fc23d5b13de9ee67"}, + {file = "pyobjc_framework_SafetyKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:947d42faf40b4ddd71bce75b8b913b7b67e0640fffa508562f4e502ca99426d4"}, + {file = "pyobjc_framework_SafetyKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:65feaff614eeacceb8c405030ddd79f8eda2366d2a73f44ea595f48f7969bcf0"}, + {file = "pyobjc_framework_SafetyKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a6c3201dfb649523fa2f7569ca1274d1322527e210ee19d7c2395d0e3d18e0a2"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-scenekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SceneKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SceneKit-10.1.tar.gz", hash = "sha256:f6565f3dba3bacf6099677ef713f9c95bcb9d8c4ea755c1866d113f95f110fc9"}, - {file = "pyobjc_framework_SceneKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:70d3a7f78238255bf62fab33a3e9ac20e13ec228eafd1aa0ef579b3792e5d9b9"}, - {file = "pyobjc_framework_SceneKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1bbdee819b638530c53271a4f302357cf8c829dbfc6e40b062335c900816bb01"}, - {file = "pyobjc_framework_SceneKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e179e37613814661be86c8316dd92497012cec48bb4febdc3d432ac5e7594a3f"}, + {file = "pyobjc-framework-SceneKit-10.2.tar.gz", hash = "sha256:53d2ffac43684bb7834ae570d3537bd15f2a7711b77cc9e8b7b81f63a697ba03"}, + {file = "pyobjc_framework_SceneKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ac80bf8c4cf957add63a0bd2f1811097fb62eafb4fc26192f4087cd7853e85fd"}, + {file = "pyobjc_framework_SceneKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:86c3d23b63b0bb4d8fea370cb08aac778bc3fdb64b639b8b9ea87dacc54fd1cf"}, + {file = "pyobjc_framework_SceneKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:00676f4e11f3069545b07357e51781054ecf4785ed24ea8747515e018db1618c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-screencapturekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ScreenCaptureKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ScreenCaptureKit-10.1.tar.gz", hash = "sha256:a00d85c97bf0cdd454d57181c371f372b8549c4edd949e2b66f42782f426f855"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bc05248b9ae9ed4aa474b4e54927216046c284a4c6c27d30db9df659887b7b1d"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:98eaec608bd9858a265541b14d6708bcc0b8c8276c2a5b41b80d828c0c2a8c64"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:ff8657865f6280a942d175b87933ff0f1b6064e672a7f1efb5e66d864b435c27"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:30615c2a9f0a04cca41afe0cee21e3179f72f055e9cac94fe1e4f31fcccb0919"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:2cbd9957e9823615a494b2fd6815688eb0ad2eed7df007b25e3f7d83261653a9"}, - {file = "pyobjc_framework_ScreenCaptureKit-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a3b732bad05c973844ea3b25ccabf0d41b4c3eec4f7b5d78650337685cb43142"}, + {file = "pyobjc-framework-ScreenCaptureKit-10.2.tar.gz", hash = "sha256:86f64377be94db1b95e77ca53301ed94c0a7a82c0251c9e960bcae24b6a5841b"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e15b0af8a1155b7bc975ccd54192c5feae2706a8e17da6effa4273a3302d4dce"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:bdcc687d022b8b6264dca74c1f72897c91528b0c701d76f1466faeead8030a11"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:f53caee8edca7868449f2cce60574cedea4299c324fa692c944824a627b7b8a4"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:4cdd6add328e2318550df325210c83d1de68774a634d3914da2bfbd1cb7d929f"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:e51c6c632b1c6ff773cfcf7d3e2b349693e06d52259b8c8485cfaa6c6cd602b3"}, + {file = "pyobjc_framework_ScreenCaptureKit-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b63d9dc8635e7a3e59163a4abc13a9014de702729a55d290a22518702f4679fc"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" [[package]] name = "pyobjc-framework-screensaver" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ScreenSaver on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ScreenSaver-10.1.tar.gz", hash = "sha256:d1b890c7cae9e5c43582fe834aebcb6a1ecf52467a8ed7a28ba9d873bbf582d5"}, - {file = "pyobjc_framework_ScreenSaver-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b464de6398ef3a700c4ac19ed92b25cf2d30900b574533a659967446fddede3b"}, - {file = "pyobjc_framework_ScreenSaver-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cc8f81b2073920ca84d8e83435b95731e798ad422e0a3d67b09feb208a3920c6"}, - {file = "pyobjc_framework_ScreenSaver-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:96868cd9dc6613144821bb4db50ca68efa3ae8e07c31a626ce02d78b4eeaaeff"}, + {file = "pyobjc-framework-ScreenSaver-10.2.tar.gz", hash = "sha256:00c6a312467abb516fd2f19e3166c4609eed939edc0f2c888ccd8c9f0fdd30f1"}, + {file = "pyobjc_framework_ScreenSaver-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:830b2fc85ff7d48824eb6f12100915c2aa480a1a408b53c30f6b81906dc8b1ea"}, + {file = "pyobjc_framework_ScreenSaver-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1cb8a31bd2a0597727553d0459c91803bf02c52ffb5ac94aa5ad484ddc46d88d"}, + {file = "pyobjc_framework_ScreenSaver-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ca00a5c4cd89450e629962bfafe6a4a25b7bae93eb3fdd3ecb314c6c5755cbcf"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-screentime" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ScreenTime on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ScreenTime-10.1.tar.gz", hash = "sha256:6221e0f5122042b280212a6555f72d94020c2fd62319c4562cdfc7b58960dd07"}, - {file = "pyobjc_framework_ScreenTime-10.1-py2.py3-none-any.whl", hash = "sha256:734e090debb954a890a564869f2af20b55b9f7b7875d360795c9875279d09bd9"}, + {file = "pyobjc-framework-ScreenTime-10.2.tar.gz", hash = "sha256:fd516f0dd7c16f15ab6ed3eeb8180460136f72b7eaa3d6e849d4a462438bfdf2"}, + {file = "pyobjc_framework_ScreenTime-10.2-py2.py3-none-any.whl", hash = "sha256:43afabfd0fd61eed91f11aba3de95091a4f05d7c7e63341f493026e5ff7b90e4"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-scriptingbridge" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ScriptingBridge on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ScriptingBridge-10.1.tar.gz", hash = "sha256:7dce35a25d1f3b125e4b68a07c7f9eaa33fc9f00dde32356d0f7f73eb09429a3"}, - {file = "pyobjc_framework_ScriptingBridge-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:15e60d3783d7611f4d35e6b2905921a01162cfa04eb1a6426135585c84806d19"}, - {file = "pyobjc_framework_ScriptingBridge-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:30c0aac8623d0e96442801219004c32d527d4b4bbbf5c271517d73c5eeae85a3"}, - {file = "pyobjc_framework_ScriptingBridge-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:ca0dc8ccb443f5a3ab9afb500d6c730723faf38c5880a243a65b4e44be64fa55"}, + {file = "pyobjc-framework-ScriptingBridge-10.2.tar.gz", hash = "sha256:c02d88b4a4d48d54ce2260f5c7e1757e74cd91281352cdd32492a4c7ee4b0e7c"}, + {file = "pyobjc_framework_ScriptingBridge-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:466ad2d483edadf97dc38629c393902a790141547e145e83f6bd34351d10f4c9"}, + {file = "pyobjc_framework_ScriptingBridge-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1e3e0c19afd0f8189ebee5c57ab2b0c177dddccc9b56811c665ec6848007ac6a"}, + {file = "pyobjc_framework_ScriptingBridge-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:560dff883edd251f1e0bf86dde681c1e19845399720fd2434734c91120eafdd0"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-searchkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SearchKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SearchKit-10.1.tar.gz", hash = "sha256:75234ee6e8490cf792453bf9a9854d7b5f1cebd65e81903d5ce0ecc3e65fc277"}, - {file = "pyobjc_framework_SearchKit-10.1-py2.py3-none-any.whl", hash = "sha256:2e42e7cacb0a7f9b327d1c770e52fe13dfaaac377cb4e413b609e478993552e0"}, + {file = "pyobjc-framework-SearchKit-10.2.tar.gz", hash = "sha256:c1e16457e727c5282b620d20b2d764352947cd4509966475a874f2750a9c5d11"}, + {file = "pyobjc_framework_SearchKit-10.2-py2.py3-none-any.whl", hash = "sha256:ddd9e2f207ae578f04ec2358fdf485f26978d6de4909640b58486a8a9e4e639c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-CoreServices = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-CoreServices = ">=10.2" [[package]] name = "pyobjc-framework-security" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Security on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Security-10.1.tar.gz", hash = "sha256:33becccea5488a4044792034d8cf4faf1913f8ca9ba912dceeaa54db311bd284"}, - {file = "pyobjc_framework_Security-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:72955f4faf503e6a41076fcaa3ec138eb1cc794f483db77104acf2ee480f8a04"}, - {file = "pyobjc_framework_Security-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:1b02075026d78feda8c1af9462199c2cde65b87e4adde65b90ca6965f06cb422"}, - {file = "pyobjc_framework_Security-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:1d19785d8531a6cdcdbb4c545b560f63306ff947592e7fad27811f87ee64854c"}, - {file = "pyobjc_framework_Security-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:569a9243d4044e3e433335ded891dc357880787df647de8220659f022a03f467"}, - {file = "pyobjc_framework_Security-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d8b8c402c395ac3868727f04e98b2ded675534de1349df8f5813b3c483b50a2c"}, - {file = "pyobjc_framework_Security-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:aaca360a28b6333a8a93b091426daa5ffd22006bbb1122d3d6a78d33177f612a"}, + {file = "pyobjc-framework-Security-10.2.tar.gz", hash = "sha256:20ec8ebb41506037d54b40606590b90f66a89adceeddd9a40674b0c7ea7c8c82"}, + {file = "pyobjc_framework_Security-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5a9c1bf88db62ebe1186dbecb40c6fdf8dab2d614012b5da8e9b90ee3bd8575e"}, + {file = "pyobjc_framework_Security-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9119f8bad7bead85e5b57c8538d319ef19eb5159500a0e3677c11ddbb774a17a"}, + {file = "pyobjc_framework_Security-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:317add1dcbc6866ce2e9389ef5a2a46db82e042aca6e5fad9aa5ce17782493fe"}, + {file = "pyobjc_framework_Security-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:75f061f0d03c3099d01b7818409eb602b882f6a31b4381bbf289f10ce1cf7753"}, + {file = "pyobjc_framework_Security-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:d99aeba0e3a7ee95bf5582b06885a5d6f8115ff3a2e47506562514117022f170"}, + {file = "pyobjc_framework_Security-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:186a97497209acdb8d56aa7bbd56ab8021663fff2fb83f0d0e1b4e1f57ac5bbb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-securityfoundation" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SecurityFoundation on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SecurityFoundation-10.1.tar.gz", hash = "sha256:11def85a7a4ea490fa24df79d01ea137f378534fedf1da248068ddf137f38c7e"}, - {file = "pyobjc_framework_SecurityFoundation-10.1-py2.py3-none-any.whl", hash = "sha256:bbd67737afec25f2e3d41c8c2e7b4a6f9aae4231242e215b82a950eef6432ce0"}, + {file = "pyobjc-framework-SecurityFoundation-10.2.tar.gz", hash = "sha256:ed612afab0f70e24b29f2e2b3a31cfefb1ad17244b5c147e7bcad8dfc7e60bd1"}, + {file = "pyobjc_framework_SecurityFoundation-10.2-py2.py3-none-any.whl", hash = "sha256:296f7f9ff96a35c19e4aef7621a567c0efe584aafd20ac25a2839dd96bf46a04"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Security = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Security = ">=10.2" [[package]] name = "pyobjc-framework-securityinterface" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SecurityInterface on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SecurityInterface-10.1.tar.gz", hash = "sha256:444a0dc7d50390750c28185b6496ee913011ac886d9e634bfc9a0856372d0a94"}, - {file = "pyobjc_framework_SecurityInterface-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c0e52408e25845a960b0fe339c274650fd211f9fee5944c643d9ba16861e45ac"}, - {file = "pyobjc_framework_SecurityInterface-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:bef4a63d31808531f5806006945d1f9b5650221e4adc973302387ab7b2e1b349"}, - {file = "pyobjc_framework_SecurityInterface-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:479e555df16ff7f79bf7622ab3341b0ef176fbd85ef3f7301931a57d2def682f"}, + {file = "pyobjc-framework-SecurityInterface-10.2.tar.gz", hash = "sha256:43930539fed05e74f3c692f5ee7848681e7e65c44387af300447514fe8e23ab6"}, + {file = "pyobjc_framework_SecurityInterface-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:70f2cb61261e84fb366f43a9a44fb19a19188cf650d3cf3f3e6ee3a16a73e62d"}, + {file = "pyobjc_framework_SecurityInterface-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:52a18a18af6d47f7fbdfeef898a038ff3ab7537a694c591ddcf8f895b9e55cce"}, + {file = "pyobjc_framework_SecurityInterface-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b2472e3714cc17b22e5bb0173887aac77c80ccc2188ec2c40d2b906bd2490f6b"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Security = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Security = ">=10.2" [[package]] name = "pyobjc-framework-sensitivecontentanalysis" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SensitiveContentAnalysis on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SensitiveContentAnalysis-10.1.tar.gz", hash = "sha256:435906a3fcc6cba50cd7c5bfd693368c6042c17c5f64bcd560a3761d947425de"}, - {file = "pyobjc_framework_SensitiveContentAnalysis-10.1-py2.py3-none-any.whl", hash = "sha256:472c0fb0f1ad9c370cbc7cf636bb5888cbcf0ee8c9ecb9c5f6de25e2587771e5"}, + {file = "pyobjc-framework-SensitiveContentAnalysis-10.2.tar.gz", hash = "sha256:ef111cb8a85bc86e47954cdb01e3ccb654aba64a3d855f17a0c786361859aef8"}, + {file = "pyobjc_framework_SensitiveContentAnalysis-10.2-py2.py3-none-any.whl", hash = "sha256:3c875856837e217c9eba68e5c2b4f5b862dee1bb64513b463a7af8c3e67e5a50"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-servicemanagement" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ServiceManagement on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ServiceManagement-10.1.tar.gz", hash = "sha256:ebe38b80ed74112fdd356e19165c365f6281baad83818774a0da6d790fd13044"}, - {file = "pyobjc_framework_ServiceManagement-10.1-py2.py3-none-any.whl", hash = "sha256:d05289948558cf4c7fbc101946f6ccadcc33826b2056c14d5494a8ae7f136936"}, + {file = "pyobjc-framework-ServiceManagement-10.2.tar.gz", hash = "sha256:62413cd911932cc16262710a3853061fdae341ed95e1aa0426b4ff0011d18c0c"}, + {file = "pyobjc_framework_ServiceManagement-10.2-py2.py3-none-any.whl", hash = "sha256:e5a1c1746788d0e125cc87cbe0749b2b824fb7a08bc4344c06c9ac6007859187"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-sharedwithyou" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SharedWithYou on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SharedWithYou-10.1.tar.gz", hash = "sha256:bcac8ffa2642589a416c62ff436148586db9c41f92419a0164b1e9d6f6c73e38"}, - {file = "pyobjc_framework_SharedWithYou-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:05fceedcd7b6e8753cb8dc5f09a947686dd454c304965c959bc101cfd7349fcd"}, - {file = "pyobjc_framework_SharedWithYou-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6f4f9fb6d335b54eb0a02b277ca8a2cb87962a579bafdc9df5f94c8af1063ee4"}, - {file = "pyobjc_framework_SharedWithYou-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:a1c7c688c15117f1c6ea638e83285ce1b2fbd9d8c76ee405e43b24fa4fea766d"}, + {file = "pyobjc-framework-SharedWithYou-10.2.tar.gz", hash = "sha256:bc13756ef20af488cd3022c036a11a0f7572e1b286e9eb7d31c61a8cb7655c70"}, + {file = "pyobjc_framework_SharedWithYou-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:b69169db01c78bef3178b8795fb5e2a9eccfa4c26b7de008e23a5aa6f0c709f0"}, + {file = "pyobjc_framework_SharedWithYou-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e4ec724f103b0904893212d473c68c462f8fbe46a470b0c9f88cb8330969a94e"}, + {file = "pyobjc_framework_SharedWithYou-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:04b477d42a6edd25c187fc61422ce62156fd5d8670b7007ff3f1a10723b1b4b8"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-SharedWithYouCore = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-SharedWithYouCore = ">=10.2" [[package]] name = "pyobjc-framework-sharedwithyoucore" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SharedWithYouCore on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SharedWithYouCore-10.1.tar.gz", hash = "sha256:2b4f62b0df4bd44198f6d3a3aae4d054592261d36fc2af71f9dd81744aa99815"}, - {file = "pyobjc_framework_SharedWithYouCore-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a7f41415a3ca40d4ee18955155a4141e0d2d55e713b513aa567305ae54716cb7"}, - {file = "pyobjc_framework_SharedWithYouCore-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc133f07a71cb828073dc671cb1e8ffa5bde714b376a8eba0a8110ac41927ae9"}, - {file = "pyobjc_framework_SharedWithYouCore-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d7169a2492ed4fd7d45ad0eafbecebffec0b22f08e756f2e251eda62cd5ba42a"}, + {file = "pyobjc-framework-SharedWithYouCore-10.2.tar.gz", hash = "sha256:cc8faa9f549f6c931be33cf99f49b8cde11db52cb542e3797c3a27f98e5e9a2a"}, + {file = "pyobjc_framework_SharedWithYouCore-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:275b50a6b9205b1c0a08632c2ede98293b26df28d6c35bc34714ec9d5a7065d6"}, + {file = "pyobjc_framework_SharedWithYouCore-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:55aaac1bea38e566e70084cbe348b2af0f5cda782c8da54c6bbbd70345a50b27"}, + {file = "pyobjc_framework_SharedWithYouCore-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b118ba79e7bb2fab26369927316b90aa952795976a29e7dc49dcb47a87f7924c"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-shazamkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ShazamKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ShazamKit-10.1.tar.gz", hash = "sha256:d091c5104adda8d54e65463862550e59f86646fdafcdcd234c9a7a2624584f1d"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:6670ed380dacc6aa86f571a18d9e321bd075da11bf144cba2802b19bb0868a21"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d4efd57dac3f50621cc23be38cefbd6c80b4b55f0339312b4f2a340cd6ffde9b"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:07e58fc6b70bf961f230044cf46324ab4239864955299957e231ba7cda8fafa9"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:be2da82d9a58c2605a1a17a88fbc389931b8fd8ad7d60926755b50316fe5e04f"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:e500c6794f2b7cea57dea6f64c1fc9e067a14ddb9446e9d7739dcb57683b5a8a"}, - {file = "pyobjc_framework_ShazamKit-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4289a1109148a1a314c6bae9b33e90eca6d18a06a767b431cdff1178024f3310"}, + {file = "pyobjc-framework-ShazamKit-10.2.tar.gz", hash = "sha256:f3359be7a0ffe0084d047b8813dd9e9b5339a0970baecad89cbe85513e838e74"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a33d2ad28cc7731e67906eccf324c441383ba741399c88e993b5375e734509ba"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:13976c21722389e81d9e10ab419dfb0904f48cec639f0932aada0f039d78dac3"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:380992e9da3000ebefe45b50f65ed3bf88ba87574c4a6486a29553cfbfc04c22"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e8494bfcf6ceb8b59e1bf2678073e00155f6dd2afbec01eaefd2128d3a4f5c76"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:71cb7db481c791a52d261b924063431b72c4c288afd14a00cf7106274596a1c3"}, + {file = "pyobjc_framework_ShazamKit-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:0a537e1f86f47ddde742fd0491173c669e6cda6b9edddbe72e56a148a40111f8"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-social" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Social on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Social-10.1.tar.gz", hash = "sha256:50757d982c712090e93b6ee4bd97ed3f6acfe7005f981f060433e94b7aca818b"}, - {file = "pyobjc_framework_Social-10.1-py2.py3-none-any.whl", hash = "sha256:81363d9d06c9c8ede16d96ec1d3cdba6deef195ef54cc64618e58c7fc1f574df"}, + {file = "pyobjc-framework-Social-10.2.tar.gz", hash = "sha256:34995cd0c0f6c4adbe7bfa9049463058c7a8676d34d3d5b9de37f87416f22a0a"}, + {file = "pyobjc_framework_Social-10.2-py2.py3-none-any.whl", hash = "sha256:76ed463e3a77c58e5b527c37eb8b2dd60658dd736ba243cfa24b4704580b58c4"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-soundanalysis" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SoundAnalysis on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SoundAnalysis-10.1.tar.gz", hash = "sha256:42e0ae24f11ef8cf097c71e5b2378eaba26f66cb39959fec4ca79812bc0ed417"}, - {file = "pyobjc_framework_SoundAnalysis-10.1-py2.py3-none-any.whl", hash = "sha256:a33bc8a1ecee11387beb9db06aaf9c362f7dc171d60da913277ac482d67beabb"}, + {file = "pyobjc-framework-SoundAnalysis-10.2.tar.gz", hash = "sha256:960434f16a130da4fe5cd86ceac832b7eb17831a1e739472f7636aceea65e018"}, + {file = "pyobjc_framework_SoundAnalysis-10.2-py2.py3-none-any.whl", hash = "sha256:a09b49acca76a3c161b937002e5d034cf32c33d033677a8143d446eb53ca941d"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-speech" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Speech on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Speech-10.1.tar.gz", hash = "sha256:a9eddebd4e4bcdb9c165129bea510c5e9f1353528a8211cc38c22711792bf30d"}, - {file = "pyobjc_framework_Speech-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0cc26aca43d738d25f615def32eb8ce27675fc616584c009e57f6b82dec75cc5"}, - {file = "pyobjc_framework_Speech-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9a448c58149f5bbf0128f2c6492ea281b51f50bdc4f0ecd52bea43c80f7e2063"}, - {file = "pyobjc_framework_Speech-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:76a528fc587c8eb86cdba61bf6b94ddb7e3fb38a41f1a46217e2ce7fc21d6c26"}, + {file = "pyobjc-framework-Speech-10.2.tar.gz", hash = "sha256:4cb3445ff31a3f8d50492d420941723e07967b4fc4fc46c336403d8ca245c086"}, + {file = "pyobjc_framework_Speech-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:175195f945d89d2382c0f6052b798ef3ee41384b8bfa4954c16add126dc181f6"}, + {file = "pyobjc_framework_Speech-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3c65cbda4b8d357b80d41695b1b505a759d3be8b63bca9dd7675053876878577"}, + {file = "pyobjc_framework_Speech-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b139f64cc3636f1cfdc78a4071068d34e9ea70283201fd7a821e41d5bbbcf306"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-spritekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SpriteKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SpriteKit-10.1.tar.gz", hash = "sha256:998be1d6c7fd5cc66bd54bae37c45cf3394df7bc689b5d0c813f0449c8eee53f"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:23f6657e48f7d8cb434bcf6a76b2c336eb29be69ade933f88299465a0c83cb3b"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:b5556d8469b20fe35a0ec5f9e493c30ebc531bce3be4e48fc99cb87338ba5cfb"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:aa51855f7bfed3dc1bcda95b140d71c4dc1e21c3480216df19f6fddc7dc7ce39"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2210920a4f9a39dc3bea9287e012cdfb740a0748faa6ab13bf8a58d07da913cc"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:66df1436d17bf0c17432d2d66ebeef8efee012240297e5aabc1118b014947375"}, - {file = "pyobjc_framework_SpriteKit-10.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5564ed8648afba01f9877062204ed03d3fef8a980b6b4155c69d3662e4732947"}, + {file = "pyobjc-framework-SpriteKit-10.2.tar.gz", hash = "sha256:31b3e639a617c456574df8f3ce18275eff613cf49e98ea8df974cda05d13a7fc"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7b312677a70a7fe684af8726a39837e935fd6660f0271246885934f60d773506"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a8e015451fa701c7d9b383a95315809208145790d8e68a542def9fb10d6c2ce2"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:803138edacb0c5bbc40bfeb964c70521259a7fb9c0dd31a79824b36be3942f59"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:ae44f20076286dd0d600f9b4c8c31f144abe1f44dbd37ca96ecdba98732bfb4a"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp38-cp38-macosx_11_0_universal2.whl", hash = "sha256:9f5b65ac9fd0a40e28673a15c6c7785208402c02422a1e150f713b2c82681b51"}, + {file = "pyobjc_framework_SpriteKit-10.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:a8f2e140ad818d6891f654369853f9439d0f280302bf5750c28df8a4fcc019ec"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-storekit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework StoreKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-StoreKit-10.1.tar.gz", hash = "sha256:4e91d77d1b9745eca6730ddf6cde964e2bd956fafad303591f671ebd1d4de64b"}, - {file = "pyobjc_framework_StoreKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:456641cbe97eab4bb68dccec6f8bf3bc435adaa0b2ae6a7a4a3da0adc84a9405"}, - {file = "pyobjc_framework_StoreKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:356966d260bd1e19c7cdba7551b3e477078d3d4b0df04b7f38013dd044913727"}, - {file = "pyobjc_framework_StoreKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:652657006d3c8fefcdbb662f8f33ef6ee8e01ba30a0b4d6e2fcd2e4046951766"}, + {file = "pyobjc-framework-StoreKit-10.2.tar.gz", hash = "sha256:44cf0b5fe605b9e5dc6aed2ae9e09d807d04d5f2eaf78afb8c04e3f109a0d680"}, + {file = "pyobjc_framework_StoreKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f9e511ebf2d954f10999c2a46e5ecffee0235e0c35eda24c8fcfdb433768935d"}, + {file = "pyobjc_framework_StoreKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:e22a701666a787d4df9f45bf1507cf41e45357b22c55ad79c608b24a506981e1"}, + {file = "pyobjc_framework_StoreKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:44c0a65bd39e64e276d8a7b991d93b59b149b3b886cadddb6a38253d48b123e5"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-symbols" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Symbols on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Symbols-10.1.tar.gz", hash = "sha256:63f5345fa90b31ea017c01ffd39e6e0289ef0258c6af7941263083d2289f5d3d"}, - {file = "pyobjc_framework_Symbols-10.1-py2.py3-none-any.whl", hash = "sha256:88b48102ba33ac3d8bc5c047cc892ab21e8e102c3b25b4186b77c5d1f5c1bc40"}, + {file = "pyobjc-framework-Symbols-10.2.tar.gz", hash = "sha256:b1874e79fdcaf65deaadda35a3c9dbd24eb92d7dc8aa4db5d7f14f2b06d8a312"}, + {file = "pyobjc_framework_Symbols-10.2-py2.py3-none-any.whl", hash = "sha256:3b5fa1e162acb04eab092e0e1dbe686e2fb61cf648850953e15314edb56fb05f"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-syncservices" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SyncServices on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SyncServices-10.1.tar.gz", hash = "sha256:644d394b84468fa6178b5aa609771252ca416ca2be2bac5501222b3c5151846d"}, - {file = "pyobjc_framework_SyncServices-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:edf7d5de135ec44b8ecf260265cb7bd9bf938d3fcc2204282aea674a86918c60"}, - {file = "pyobjc_framework_SyncServices-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:53ef6096359d182952fdb40734f17302edf35757578c0c52314f703322d855cb"}, - {file = "pyobjc_framework_SyncServices-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:b9d7ec3f784fc89847ad136bb3d67d159310a2e072a724d4ffddccf0ee5dec2b"}, + {file = "pyobjc-framework-SyncServices-10.2.tar.gz", hash = "sha256:1c76073484924201336e6aab40f10358573bc640a92ed4066b8062c748957576"}, + {file = "pyobjc_framework_SyncServices-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:bf40e4194bd42bb447212037876ca3e90e0e5a7aa21e59a6987f300209a83fb7"}, + {file = "pyobjc_framework_SyncServices-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:4e438c0cf74aecb95c2a86db9c39236fee3edf0a91814255e2aff18bf24e7e82"}, + {file = "pyobjc_framework_SyncServices-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:dffc9ddf9235176c1f1575095beae97d6d2ffa9cffe9c195f815c46f69070787"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreData = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreData = ">=10.2" [[package]] name = "pyobjc-framework-systemconfiguration" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SystemConfiguration on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SystemConfiguration-10.1.tar.gz", hash = "sha256:7e125872d4b54c8d04f15d83e7f7f706c18bd87960b3873c797e6a71b95030b0"}, - {file = "pyobjc_framework_SystemConfiguration-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8ab80e4272937643de8569a711e5adee8afca2bf071b6cfc6b7fc4143010d258"}, - {file = "pyobjc_framework_SystemConfiguration-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:431c32557bde3dad18fb245bf1e5ce80963f28caa4d2691b5a82e6db2b5efc2f"}, - {file = "pyobjc_framework_SystemConfiguration-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:7e8ae510b11ceca8800bc7b4b0c7735cf26de803771199d6c2d8f24fbb5467df"}, + {file = "pyobjc-framework-SystemConfiguration-10.2.tar.gz", hash = "sha256:e9ec946ca56514a68e28040c55c79ba105c9a70b56698635767250e629c37e49"}, + {file = "pyobjc_framework_SystemConfiguration-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:d25ff4b8525f087fc004ece9518b38d365ef6bbc06e4c0f847d70cb72ca961df"}, + {file = "pyobjc_framework_SystemConfiguration-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:2fc0a9d1c1c6a5d5b9d9289ee8e5de0d4ef8cb4c9bc03e8a33513217580a307b"}, + {file = "pyobjc_framework_SystemConfiguration-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:d33ebea6881c2e4b9ddd03f8def7495dc884b7e53fe3d6e1340d9f9cc7441878"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-systemextensions" -version = "10.1" +version = "10.2" description = "Wrappers for the framework SystemExtensions on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-SystemExtensions-10.1.tar.gz", hash = "sha256:3eb7ad8f1a6901294b02cd6d6581bd6960a48fcfd82475f5970d1c909f12670d"}, - {file = "pyobjc_framework_SystemExtensions-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8dc306dd07f9ff071759bb2237b7f7fddd0d2624966bdb0801dc5a70b026f431"}, - {file = "pyobjc_framework_SystemExtensions-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c76c6d7dbf253abe11ebfa83bbbfa7f2fc4c700db052771075c26dabbd5ee1e9"}, - {file = "pyobjc_framework_SystemExtensions-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:2586323fbe9382edebd7ca5dfe50b432c842b7ef45ef26444edcb7238bcf006f"}, + {file = "pyobjc-framework-SystemExtensions-10.2.tar.gz", hash = "sha256:883c41cb257fb2b5baadafa4213dc0f0fffc97edb35ebaf6ed95a185a786eb85"}, + {file = "pyobjc_framework_SystemExtensions-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:8a85c71121abe33a83742b84d046684e30e5400c5d2bbb4bca4322c4e9d5506b"}, + {file = "pyobjc_framework_SystemExtensions-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:3374105ebc3992e8898b46ba85e860ac1f2f24985c640834bf2b9da26a8f40a7"}, + {file = "pyobjc_framework_SystemExtensions-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:5b699c94a05a7253d803fb75b6ea5c67d2c59eb906deceb7f3d0a44f42b5d7a8"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-threadnetwork" -version = "10.1" +version = "10.2" description = "Wrappers for the framework ThreadNetwork on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-ThreadNetwork-10.1.tar.gz", hash = "sha256:72694dce8b10937f4d8fef67d14e15fa65ba590dec8298df439fd0cc953a83fa"}, - {file = "pyobjc_framework_ThreadNetwork-10.1-py2.py3-none-any.whl", hash = "sha256:720d4a14619598431a22be2a720bf877f996d65cee430b96c5d7ec833b676b68"}, + {file = "pyobjc-framework-ThreadNetwork-10.2.tar.gz", hash = "sha256:864ebabdb187cef16e1fba0f5439a73b1ed9a4e66b888f7954b12150c323c0f8"}, + {file = "pyobjc_framework_ThreadNetwork-10.2-py2.py3-none-any.whl", hash = "sha256:f7ad31b4a67f9ed00097a21c7bbd48ffa4ce2c22174a52ac508beedf7cb2aa9e"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-uniformtypeidentifiers" -version = "10.1" +version = "10.2" description = "Wrappers for the framework UniformTypeIdentifiers on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-UniformTypeIdentifiers-10.1.tar.gz", hash = "sha256:e8a6e8d4c3c6d8213d18fab44704055a5fca91e0a74891b4f1bfe6574cd51d97"}, - {file = "pyobjc_framework_UniformTypeIdentifiers-10.1-py2.py3-none-any.whl", hash = "sha256:4c867b298956d74398d2b6354bd932dc109431d9726c8ea2fc9c83e6946a2a7d"}, + {file = "pyobjc-framework-UniformTypeIdentifiers-10.2.tar.gz", hash = "sha256:4d3e7add89766fe7abc6fd6e29387e92d7b38343b37d365607c9d287c5e758f6"}, + {file = "pyobjc_framework_UniformTypeIdentifiers-10.2-py2.py3-none-any.whl", hash = "sha256:25b72005063a88c5e67bf91d1355973f4bbf3dd7c1b3fb8eb00503020a837b33"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-usernotifications" -version = "10.1" +version = "10.2" description = "Wrappers for the framework UserNotifications on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-UserNotifications-10.1.tar.gz", hash = "sha256:eca638b04b60d5d8f5efecafc1fd021a1b55d4a6d1ebd22e65771eddb3dd478f"}, - {file = "pyobjc_framework_UserNotifications-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a44b89659eae1015da9148fc24f931108ff7a05ba61509bfab34af50806beb0c"}, - {file = "pyobjc_framework_UserNotifications-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:00aa84f29bcbe8f302d20c96ef51fb48af519d83e0b72d22bd075ea1af86629f"}, - {file = "pyobjc_framework_UserNotifications-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:fe9170b5c4da8e75288ada553cc821b9e3fc1279eb56fa9e3d4278b35a26c5ce"}, + {file = "pyobjc-framework-UserNotifications-10.2.tar.gz", hash = "sha256:3a1b7d77c95dff109f904451525752ece3c38f38cfa0825fd01735388c2b0264"}, + {file = "pyobjc_framework_UserNotifications-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:f4ce290d1874d8b4ec36b2fae9181fa230e6ce0dced3aeb0fd0d88b7cda6a75a"}, + {file = "pyobjc_framework_UserNotifications-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8bc0c9599d7bbf35bb79eb661d537d6ea506859d2f1332ae2ee34b140bd937ef"}, + {file = "pyobjc_framework_UserNotifications-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:12d1ea6683af36813e3bdbdb065c28d71d01dfed7ea4deedeb3585e55179cbbb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-usernotificationsui" -version = "10.1" +version = "10.2" description = "Wrappers for the framework UserNotificationsUI on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-UserNotificationsUI-10.1.tar.gz", hash = "sha256:09df08f47a7e605642a6c6846e365cab8b8631a7f87b41a65c35c52e484b9f8a"}, - {file = "pyobjc_framework_UserNotificationsUI-10.1-py2.py3-none-any.whl", hash = "sha256:6640c6d04f459b6927096696dac98ce5fcb702a507a757d6d1b909b341bb8a0d"}, + {file = "pyobjc-framework-UserNotificationsUI-10.2.tar.gz", hash = "sha256:f476d4a9f5b0746beda3d06ed6eb8a1b072372e644c707e675f4e11703528a81"}, + {file = "pyobjc_framework_UserNotificationsUI-10.2-py2.py3-none-any.whl", hash = "sha256:b0909b11655a7ae14e54ba6f80f1c6d34d46de5e8b565d0a51c22f87604ad3d3"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-UserNotifications = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-UserNotifications = ">=10.2" [[package]] name = "pyobjc-framework-videosubscriberaccount" -version = "10.1" +version = "10.2" description = "Wrappers for the framework VideoSubscriberAccount on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-VideoSubscriberAccount-10.1.tar.gz", hash = "sha256:6410c68ea37a4ba4667b8c71fbfd3c011bf6ecdb9f1d6adf3c9a35584b7c8804"}, - {file = "pyobjc_framework_VideoSubscriberAccount-10.1-py2.py3-none-any.whl", hash = "sha256:f32716070f849989e3ff052effb54f951b89a538208651426848d9d924ac1625"}, + {file = "pyobjc-framework-VideoSubscriberAccount-10.2.tar.gz", hash = "sha256:26ea7fe843ba316eea90c488ed3ff46651b94b51b6e3bd87db2ff93f9fa8e496"}, + {file = "pyobjc_framework_VideoSubscriberAccount-10.2-py2.py3-none-any.whl", hash = "sha256:300c9f419821aab400ab9798bed9fc659984f19eb8577934e6faae0428b89096"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-videotoolbox" -version = "10.1" +version = "10.2" description = "Wrappers for the framework VideoToolbox on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-VideoToolbox-10.1.tar.gz", hash = "sha256:56c9d4b74965fe79f050884ffa560ff71ffe709c24923d3d0b34459fb626eb11"}, - {file = "pyobjc_framework_VideoToolbox-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a4115690b8ed4266e52a4d200c870e68dd03119993280020a1a4d6a9d4764fcf"}, - {file = "pyobjc_framework_VideoToolbox-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:64874d253c2996216c6d56e03e848cf845c3f0eac84d06ba97d83871dbf19490"}, - {file = "pyobjc_framework_VideoToolbox-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:977b2981532442c4c99fff75ffcc2b5a4b0f8108abcabdafcda2addf8b2ffa21"}, + {file = "pyobjc-framework-VideoToolbox-10.2.tar.gz", hash = "sha256:347259a8e920dbc3dd1fada5ab0d829485cef3165166fa65f78c23ada4f9b80a"}, + {file = "pyobjc_framework_VideoToolbox-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb8147d673defdb02526b80b1584369f94b94721016950bb12425b2309b92c88"}, + {file = "pyobjc_framework_VideoToolbox-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:6527180eede44301c21790baa7e1a5f5429893e3995e61640f3941c3b6fb08f9"}, + {file = "pyobjc_framework_VideoToolbox-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:de55d7629a9659439901a16d6074e9fc9b229e93a555097a1c92e0df6cfb5cdb"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreMedia = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreMedia = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-virtualization" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Virtualization on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Virtualization-10.1.tar.gz", hash = "sha256:48f2484a7627caa246f55daf203927f10600e615e620a2d9ca22e483ed0bb9b4"}, - {file = "pyobjc_framework_Virtualization-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:a434c40038c0c1acd31805795f28f959ea231252dc3ab34ed5a268c21227682c"}, - {file = "pyobjc_framework_Virtualization-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:8ad3e40ec5970e881f92af337354be68c1f2512690545a2da826684daeaa3535"}, - {file = "pyobjc_framework_Virtualization-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:2aba907617075394718bc8883c650197e21b2ea0d284ca51811229386114040a"}, + {file = "pyobjc-framework-Virtualization-10.2.tar.gz", hash = "sha256:49eb8d0ec3017c2194620f0698e95ccf20b8b706c73ab3b1b50902c57f0f86ff"}, + {file = "pyobjc_framework_Virtualization-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:492daa384cf3117749ff35127f81313bd1ea9bbd09385c2a882b82ca4ca0797e"}, + {file = "pyobjc_framework_Virtualization-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:1bea91b57d419d91e76865f9621ba4762793e05f7a694cefe73206f3a19b4eda"}, + {file = "pyobjc_framework_Virtualization-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:c1198bcd31e4711c6a0c6816c77483361217a1ed2f0ad69608f9ba5633efc144"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyobjc-framework-vision" -version = "10.1" +version = "10.2" description = "Wrappers for the framework Vision on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-Vision-10.1.tar.gz", hash = "sha256:ff50fb7577be8d8862a076a6cde5ebdc9ef07d9045e2158faaf0f04b5b051208"}, - {file = "pyobjc_framework_Vision-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:c6330d8b22f75f1e7d9a5456f3e2c7299d05d575b2e9b2f1e50230b18f17abed"}, - {file = "pyobjc_framework_Vision-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:91b4d740b6943f6b228915ece2e027555f28ccf49c8d063a580b8f9e5af56fd0"}, - {file = "pyobjc_framework_Vision-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:bb2d7334b4b725c5e5346a8cce2a0064259a09e90ec189b0c776304d5fc01e49"}, + {file = "pyobjc-framework-Vision-10.2.tar.gz", hash = "sha256:722e0a6da64738b5fc3c763a102445cad5892c0af94597637e89455099da397e"}, + {file = "pyobjc_framework_Vision-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:42b7383c317c2076edcb44f7ad8ed4a6e675250a3fd20e87eef8e0e4233b1b58"}, + {file = "pyobjc_framework_Vision-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:5e3adb56fca35d41a4bb113f3eadbe45e9667d8e3edf64908da3d6b130e14a8c"}, + {file = "pyobjc_framework_Vision-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:e424d106052112897c8aa882d8334ac984e12509f9a473a285827ba47bfbcc9a"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" -pyobjc-framework-CoreML = ">=10.1" -pyobjc-framework-Quartz = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" +pyobjc-framework-CoreML = ">=10.2" +pyobjc-framework-Quartz = ">=10.2" [[package]] name = "pyobjc-framework-webkit" -version = "10.1" +version = "10.2" description = "Wrappers for the framework WebKit on macOS" optional = false python-versions = ">=3.8" files = [ - {file = "pyobjc-framework-WebKit-10.1.tar.gz", hash = "sha256:311974b626facee73cab5a7e53da4cc8966cbe60b606ba11fd0f3547e0ba1762"}, - {file = "pyobjc_framework_WebKit-10.1-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:ad9e1bd2fa9885818e1228c60e0d95100df69252f230ea8bb451fae73fcace61"}, - {file = "pyobjc_framework_WebKit-10.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c901fc6977b3298de789002a76a34c353ed38faedfc5ba63ef94a149ec9e5b02"}, - {file = "pyobjc_framework_WebKit-10.1-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f2d45dfc2c41792a5a983263d5b06c4fe70bf2f24943e2bf3097e4c9449a4516"}, + {file = "pyobjc-framework-WebKit-10.2.tar.gz", hash = "sha256:3717104dbc901a1bd46d97886c5adb6eb32798ff4451c4544e04740e41706083"}, + {file = "pyobjc_framework_WebKit-10.2-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:0d128a9e053b3dfaa71857eba6e6aadfbde88347382e1e58e288b5e410b71226"}, + {file = "pyobjc_framework_WebKit-10.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:d20344d55c3cb4aa27314e096f59db5cefa70539112d8c1658f2a2076df58612"}, + {file = "pyobjc_framework_WebKit-10.2-cp36-abi3-macosx_11_0_universal2.whl", hash = "sha256:f7dcf2e51964406cc2440e556c855d087c4706289c5f53464e8ffb0fba37adda"}, ] [package.dependencies] -pyobjc-core = ">=10.1" -pyobjc-framework-Cocoa = ">=10.1" +pyobjc-core = ">=10.2" +pyobjc-framework-Cocoa = ">=10.2" [[package]] name = "pyopencl" @@ -6294,13 +6464,13 @@ test = ["Mako", "pytest (>=7.0.0)"] [[package]] name = "pyopenssl" -version = "24.0.0" +version = "24.1.0" description = "Python wrapper module around the OpenSSL library" optional = false python-versions = ">=3.7" files = [ - {file = "pyOpenSSL-24.0.0-py3-none-any.whl", hash = "sha256:ba07553fb6fd6a7a2259adb9b84e12302a9a8a75c44046e8bb5d3e5ee887e3c3"}, - {file = "pyOpenSSL-24.0.0.tar.gz", hash = "sha256:6aa33039a93fffa4563e655b61d11364d01264be8ccb49906101e02a334530bf"}, + {file = "pyOpenSSL-24.1.0-py3-none-any.whl", hash = "sha256:17ed5be5936449c5418d1cd269a1a9e9081bc54c17aed272b45856a3d3dc86ad"}, + {file = "pyOpenSSL-24.1.0.tar.gz", hash = "sha256:cabed4bfaa5df9f1a16c0ef64a0cb65318b5cd077a7eda7d6970131ca2f41a6f"}, ] [package.dependencies] @@ -6308,17 +6478,17 @@ cryptography = ">=41.0.5,<43" [package.extras] docs = ["sphinx (!=5.2.0,!=5.2.0.post0,!=7.2.5)", "sphinx-rtd-theme"] -test = ["flaky", "pretend", "pytest (>=3.0.1)"] +test = ["pretend", "pytest (>=3.0.1)", "pytest-rerunfailures"] [[package]] name = "pyparsing" -version = "3.1.1" +version = "3.1.2" description = "pyparsing module - Classes and methods to define and execute parsing grammars" optional = false python-versions = ">=3.6.8" files = [ - {file = "pyparsing-3.1.1-py3-none-any.whl", hash = "sha256:32c7c0b711493c72ff18a981d24f28aaf9c1fb7ed5e9667c9e84e3db623bdbfb"}, - {file = "pyparsing-3.1.1.tar.gz", hash = "sha256:ede28a1a32462f5a9705e07aea48001a08f7cf81a021585011deba701581a0db"}, + {file = "pyparsing-3.1.2-py3-none-any.whl", hash = "sha256:f9db75911801ed778fe61bb643079ff86601aca99fcae6345aa67292038fb742"}, + {file = "pyparsing-3.1.2.tar.gz", hash = "sha256:a1bac0ce561155ecc3ed78ca94d3c9378656ad4c94c1270de543f621420f94ad"}, ] [package.extras] @@ -6469,33 +6639,33 @@ cp2110 = ["hidapi"] [[package]] name = "pytest" -version = "8.0.2" +version = "8.2.0" description = "pytest: simple powerful testing with Python" optional = false python-versions = ">=3.8" files = [ - {file = "pytest-8.0.2-py3-none-any.whl", hash = "sha256:edfaaef32ce5172d5466b5127b42e0d6d35ebbe4453f0e3505d96afd93f6b096"}, - {file = "pytest-8.0.2.tar.gz", hash = "sha256:d4051d623a2e0b7e51960ba963193b09ce6daeb9759a451844a21e4ddedfc1bd"}, + {file = "pytest-8.2.0-py3-none-any.whl", hash = "sha256:1733f0620f6cda4095bbf0d9ff8022486e91892245bb9e7d5542c018f612f233"}, + {file = "pytest-8.2.0.tar.gz", hash = "sha256:d507d4482197eac0ba2bae2e9babf0672eb333017bcedaa5fb1a3d42c1174b3f"}, ] [package.dependencies] colorama = {version = "*", markers = "sys_platform == \"win32\""} iniconfig = "*" packaging = "*" -pluggy = ">=1.3.0,<2.0" +pluggy = ">=1.5,<2.0" [package.extras] -testing = ["argcomplete", "attrs (>=19.2.0)", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] +dev = ["argcomplete", "attrs (>=19.2)", "hypothesis (>=3.56)", "mock", "pygments (>=2.7.2)", "requests", "setuptools", "xmlschema"] [[package]] name = "pytest-cov" -version = "4.1.0" +version = "5.0.0" description = "Pytest plugin for measuring coverage." optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-cov-4.1.0.tar.gz", hash = "sha256:3904b13dfbfec47f003b8e77fd5b589cd11904a21ddf1ab38a64f204d6a10ef6"}, - {file = "pytest_cov-4.1.0-py3-none-any.whl", hash = "sha256:6ba70b9e97e69fcc3fb45bfeab2d0a138fb65c4d0d6a41ef33983ad114be8c3a"}, + {file = "pytest-cov-5.0.0.tar.gz", hash = "sha256:5837b58e9f6ebd335b0f8060eecce69b662415b16dc503883a02f45dfeb14857"}, + {file = "pytest_cov-5.0.0-py3-none-any.whl", hash = "sha256:4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652"}, ] [package.dependencies] @@ -6503,7 +6673,7 @@ coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["fields", "hunter", "process-tests", "pytest-xdist", "six", "virtualenv"] +testing = ["fields", "hunter", "process-tests", "pytest-xdist", "virtualenv"] [[package]] name = "pytest-cpp" @@ -6536,13 +6706,13 @@ pytest = "*" [[package]] name = "pytest-subtests" -version = "0.11.0" +version = "0.12.1" description = "unittest subTest() support and subtests fixture" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-subtests-0.11.0.tar.gz", hash = "sha256:51865c88457545f51fb72011942f0a3c6901ee9e24cbfb6d1b9dc1348bafbe37"}, - {file = "pytest_subtests-0.11.0-py3-none-any.whl", hash = "sha256:453389984952eec85ab0ce0c4f026337153df79587048271c7fd0f49119c07e4"}, + {file = "pytest-subtests-0.12.1.tar.gz", hash = "sha256:d6605dcb88647e0b7c1889d027f8ef1c17d7a2c60927ebfdc09c7b0d8120476d"}, + {file = "pytest_subtests-0.12.1-py3-none-any.whl", hash = "sha256:100d9f7eb966fc98efba7026c802812ae327e8b5b37181fb260a2ea93226495c"}, ] [package.dependencies] @@ -6551,32 +6721,32 @@ pytest = ">=7.0" [[package]] name = "pytest-timeout" -version = "2.2.0" +version = "2.3.1" description = "pytest plugin to abort hanging tests" optional = false python-versions = ">=3.7" files = [ - {file = "pytest-timeout-2.2.0.tar.gz", hash = "sha256:3b0b95dabf3cb50bac9ef5ca912fa0cfc286526af17afc806824df20c2f72c90"}, - {file = "pytest_timeout-2.2.0-py3-none-any.whl", hash = "sha256:bde531e096466f49398a59f2dde76fa78429a09a12411466f88a07213e220de2"}, + {file = "pytest-timeout-2.3.1.tar.gz", hash = "sha256:12397729125c6ecbdaca01035b9e5239d4db97352320af155b3f5de1ba5165d9"}, + {file = "pytest_timeout-2.3.1-py3-none-any.whl", hash = "sha256:68188cb703edfc6a18fad98dc25a3c61e9f24d644b0b70f33af545219fc7813e"}, ] [package.dependencies] -pytest = ">=5.0.0" +pytest = ">=7.0.0" [[package]] name = "pytest-xdist" -version = "3.5.0" +version = "3.6.1" description = "pytest xdist plugin for distributed testing, most importantly across multiple CPUs" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "pytest-xdist-3.5.0.tar.gz", hash = "sha256:cbb36f3d67e0c478baa57fa4edc8843887e0f6cfc42d677530a36d7472b32d8a"}, - {file = "pytest_xdist-3.5.0-py3-none-any.whl", hash = "sha256:d075629c7e00b611df89f490a5063944bee7a4362a5ff11c7cc7824a03dfce24"}, + {file = "pytest_xdist-3.6.1-py3-none-any.whl", hash = "sha256:9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7"}, + {file = "pytest_xdist-3.6.1.tar.gz", hash = "sha256:ead156a4db231eec769737f57668ef58a2084a34b2e55c4a8fa20d861107300d"}, ] [package.dependencies] -execnet = ">=1.1" -pytest = ">=6.2.0" +execnet = ">=2.1" +pytest = ">=7.0.0" [package.extras] psutil = ["psutil (>=3.0)"] @@ -6585,13 +6755,13 @@ testing = ["filelock"] [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -6623,13 +6793,13 @@ files = [ [[package]] name = "pytools" -version = "2023.1.1" +version = "2024.1.2" description = "A collection of tools for Python" optional = false python-versions = "~=3.8" files = [ - {file = "pytools-2023.1.1-py2.py3-none-any.whl", hash = "sha256:53b98e5d6c01a90e343f8be2f5271e94204a210ef3e74fbefa3d47ec7480f150"}, - {file = "pytools-2023.1.1.tar.gz", hash = "sha256:80637873d206f6bcedf7cdb46ad93e868acb4ea2256db052dfcca872bdd0321f"}, + {file = "pytools-2024.1.2-py2.py3-none-any.whl", hash = "sha256:f61287b5341e53e3fe96c82385469b57a8983ff3db815a2bf3f533c38e8d516b"}, + {file = "pytools-2024.1.2.tar.gz", hash = "sha256:081871e451505c4b986ebafa68aeeabfdc7beb3faa1baa50f726aebe21e1d057"}, ] [package.dependencies] @@ -6684,39 +6854,41 @@ files = [ [[package]] name = "pywinbox" -version = "0.6" +version = "0.7" description = "Cross-Platform and multi-monitor toolkit to handle rectangular areas and windows box" optional = false python-versions = "*" files = [ - {file = "PyWinBox-0.6-py3-none-any.whl", hash = "sha256:3547e459caf466d3beb2230b02208a348478428ebca61ce3e004fb5468976f33"}, + {file = "PyWinBox-0.7-py3-none-any.whl", hash = "sha256:8b2506a8dd7afa0a910b368762adfac885274132ef9151b0c81b0d2c6ffd6f83"}, ] [package.dependencies] +ewmhlib = {version = ">=0.1", markers = "sys_platform == \"linux\""} pyobjc = {version = ">=8.1", markers = "sys_platform == \"darwin\""} python-xlib = {version = ">=0.21", markers = "sys_platform == \"linux\""} pywin32 = {version = ">=302", markers = "sys_platform == \"win32\""} typing-extensions = ">=4.4.0" [package.extras] -dev = ["mypy (>=0.990)", "pywinctl (>=0.1)", "types-python-xlib (>=0.32)", "types-pywin32 (>=305.0.0.3)", "types-setuptools (>=65.5)"] +dev = ["mypy (>=0.990)", "pywinctl (>=0.3)", "types-python-xlib (>=0.32)", "types-pywin32 (>=305.0.0.3)", "types-setuptools (>=65.5)"] [[package]] name = "pywinctl" -version = "0.3" +version = "0.4" description = "Cross-Platform toolkit to get info on and control windows on screen" optional = false python-versions = "*" files = [ - {file = "PyWinCtl-0.3-py3-none-any.whl", hash = "sha256:3603981c87b0c64987e7be857d89450f98792b01f49006a17dac758e11141dd7"}, + {file = "PyWinCtl-0.4-py3-none-any.whl", hash = "sha256:8c4a92bd57e35fd280c5c04f048cc822e236abffe2fa17351096b0e28907172d"}, ] [package.dependencies] -pymonctl = ">=0.6" +ewmhlib = {version = ">=0.2", markers = "sys_platform == \"linux\""} +pymonctl = ">=0.92" pyobjc = {version = ">=8.1", markers = "sys_platform == \"darwin\""} python-xlib = {version = ">=0.21", markers = "sys_platform == \"linux\""} pywin32 = {version = ">=302", markers = "sys_platform == \"win32\""} -pywinbox = ">=0.6" +pywinbox = ">=0.7" typing-extensions = ">=4.4.0" [package.extras] @@ -6784,104 +6956,99 @@ files = [ [[package]] name = "pyzmq" -version = "25.1.2" +version = "26.0.3" description = "Python bindings for 0MQ" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" files = [ - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:e624c789359f1a16f83f35e2c705d07663ff2b4d4479bad35621178d8f0f6ea4"}, - {file = "pyzmq-25.1.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:49151b0efece79f6a79d41a461d78535356136ee70084a1c22532fc6383f4ad0"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d9a5f194cf730f2b24d6af1f833c14c10f41023da46a7f736f48b6d35061e76e"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:faf79a302f834d9e8304fafdc11d0d042266667ac45209afa57e5efc998e3872"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7f51a7b4ead28d3fca8dda53216314a553b0f7a91ee8fc46a72b402a78c3e43d"}, - {file = "pyzmq-25.1.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:0ddd6d71d4ef17ba5a87becf7ddf01b371eaba553c603477679ae817a8d84d75"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:246747b88917e4867e2367b005fc8eefbb4a54b7db363d6c92f89d69abfff4b6"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:00c48ae2fd81e2a50c3485de1b9d5c7c57cd85dc8ec55683eac16846e57ac979"}, - {file = "pyzmq-25.1.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:5a68d491fc20762b630e5db2191dd07ff89834086740f70e978bb2ef2668be08"}, - {file = "pyzmq-25.1.2-cp310-cp310-win32.whl", hash = "sha256:09dfe949e83087da88c4a76767df04b22304a682d6154de2c572625c62ad6886"}, - {file = "pyzmq-25.1.2-cp310-cp310-win_amd64.whl", hash = "sha256:fa99973d2ed20417744fca0073390ad65ce225b546febb0580358e36aa90dba6"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:82544e0e2d0c1811482d37eef297020a040c32e0687c1f6fc23a75b75db8062c"}, - {file = "pyzmq-25.1.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:01171fc48542348cd1a360a4b6c3e7d8f46cdcf53a8d40f84db6707a6768acc1"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bc69c96735ab501419c432110016329bf0dea8898ce16fab97c6d9106dc0b348"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e124e6b1dd3dfbeb695435dff0e383256655bb18082e094a8dd1f6293114642"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7598d2ba821caa37a0f9d54c25164a4fa351ce019d64d0b44b45540950458840"}, - {file = "pyzmq-25.1.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:d1299d7e964c13607efd148ca1f07dcbf27c3ab9e125d1d0ae1d580a1682399d"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:4e6f689880d5ad87918430957297c975203a082d9a036cc426648fcbedae769b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:cc69949484171cc961e6ecd4a8911b9ce7a0d1f738fcae717177c231bf77437b"}, - {file = "pyzmq-25.1.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:9880078f683466b7f567b8624bfc16cad65077be046b6e8abb53bed4eeb82dd3"}, - {file = "pyzmq-25.1.2-cp311-cp311-win32.whl", hash = "sha256:4e5837af3e5aaa99a091302df5ee001149baff06ad22b722d34e30df5f0d9097"}, - {file = "pyzmq-25.1.2-cp311-cp311-win_amd64.whl", hash = "sha256:25c2dbb97d38b5ac9fd15586e048ec5eb1e38f3d47fe7d92167b0c77bb3584e9"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:11e70516688190e9c2db14fcf93c04192b02d457b582a1f6190b154691b4c93a"}, - {file = "pyzmq-25.1.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:313c3794d650d1fccaaab2df942af9f2c01d6217c846177cfcbc693c7410839e"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b3cbba2f47062b85fe0ef9de5b987612140a9ba3a9c6d2543c6dec9f7c2ab27"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc31baa0c32a2ca660784d5af3b9487e13b61b3032cb01a115fce6588e1bed30"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:02c9087b109070c5ab0b383079fa1b5f797f8d43e9a66c07a4b8b8bdecfd88ee"}, - {file = "pyzmq-25.1.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:f8429b17cbb746c3e043cb986328da023657e79d5ed258b711c06a70c2ea7537"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:5074adeacede5f810b7ef39607ee59d94e948b4fd954495bdb072f8c54558181"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:7ae8f354b895cbd85212da245f1a5ad8159e7840e37d78b476bb4f4c3f32a9fe"}, - {file = "pyzmq-25.1.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:b264bf2cc96b5bc43ce0e852be995e400376bd87ceb363822e2cb1964fcdc737"}, - {file = "pyzmq-25.1.2-cp312-cp312-win32.whl", hash = "sha256:02bbc1a87b76e04fd780b45e7f695471ae6de747769e540da909173d50ff8e2d"}, - {file = "pyzmq-25.1.2-cp312-cp312-win_amd64.whl", hash = "sha256:ced111c2e81506abd1dc142e6cd7b68dd53747b3b7ae5edbea4578c5eeff96b7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:7b6d09a8962a91151f0976008eb7b29b433a560fde056ec7a3db9ec8f1075438"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967668420f36878a3c9ecb5ab33c9d0ff8d054f9c0233d995a6d25b0e95e1b6b"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5edac3f57c7ddaacdb4d40f6ef2f9e299471fc38d112f4bc6d60ab9365445fb0"}, - {file = "pyzmq-25.1.2-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:0dabfb10ef897f3b7e101cacba1437bd3a5032ee667b7ead32bbcdd1a8422fe7"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:2c6441e0398c2baacfe5ba30c937d274cfc2dc5b55e82e3749e333aabffde561"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:16b726c1f6c2e7625706549f9dbe9b06004dfbec30dbed4bf50cbdfc73e5b32a"}, - {file = "pyzmq-25.1.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a86c2dd76ef71a773e70551a07318b8e52379f58dafa7ae1e0a4be78efd1ff16"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win32.whl", hash = "sha256:359f7f74b5d3c65dae137f33eb2bcfa7ad9ebefd1cab85c935f063f1dbb245cc"}, - {file = "pyzmq-25.1.2-cp36-cp36m-win_amd64.whl", hash = "sha256:55875492f820d0eb3417b51d96fea549cde77893ae3790fd25491c5754ea2f68"}, - {file = "pyzmq-25.1.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b8c8a419dfb02e91b453615c69568442e897aaf77561ee0064d789705ff37a92"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8807c87fa893527ae8a524c15fc505d9950d5e856f03dae5921b5e9aa3b8783b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5e319ed7d6b8f5fad9b76daa0a68497bc6f129858ad956331a5835785761e003"}, - {file = "pyzmq-25.1.2-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3c53687dde4d9d473c587ae80cc328e5b102b517447456184b485587ebd18b62"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9add2e5b33d2cd765ad96d5eb734a5e795a0755f7fc49aa04f76d7ddda73fd70"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:e690145a8c0c273c28d3b89d6fb32c45e0d9605b2293c10e650265bf5c11cfec"}, - {file = "pyzmq-25.1.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:00a06faa7165634f0cac1abb27e54d7a0b3b44eb9994530b8ec73cf52e15353b"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win32.whl", hash = "sha256:0f97bc2f1f13cb16905a5f3e1fbdf100e712d841482b2237484360f8bc4cb3d7"}, - {file = "pyzmq-25.1.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6cc0020b74b2e410287e5942e1e10886ff81ac77789eb20bec13f7ae681f0fdd"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:bef02cfcbded83473bdd86dd8d3729cd82b2e569b75844fb4ea08fee3c26ae41"}, - {file = "pyzmq-25.1.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e10a4b5a4b1192d74853cc71a5e9fd022594573926c2a3a4802020360aa719d8"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:8c5f80e578427d4695adac6fdf4370c14a2feafdc8cb35549c219b90652536ae"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5dde6751e857910c1339890f3524de74007958557593b9e7e8c5f01cd919f8a7"}, - {file = "pyzmq-25.1.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ea1608dd169da230a0ad602d5b1ebd39807ac96cae1845c3ceed39af08a5c6df"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0f513130c4c361201da9bc69df25a086487250e16b5571ead521b31ff6b02220"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:019744b99da30330798bb37df33549d59d380c78e516e3bab9c9b84f87a9592f"}, - {file = "pyzmq-25.1.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2e2713ef44be5d52dd8b8e2023d706bf66cb22072e97fc71b168e01d25192755"}, - {file = "pyzmq-25.1.2-cp38-cp38-win32.whl", hash = "sha256:07cd61a20a535524906595e09344505a9bd46f1da7a07e504b315d41cd42eb07"}, - {file = "pyzmq-25.1.2-cp38-cp38-win_amd64.whl", hash = "sha256:eb7e49a17fb8c77d3119d41a4523e432eb0c6932187c37deb6fbb00cc3028088"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:94504ff66f278ab4b7e03e4cba7e7e400cb73bfa9d3d71f58d8972a8dc67e7a6"}, - {file = "pyzmq-25.1.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6dd0d50bbf9dca1d0bdea219ae6b40f713a3fb477c06ca3714f208fd69e16fd8"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:004ff469d21e86f0ef0369717351073e0e577428e514c47c8480770d5e24a565"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c0b5ca88a8928147b7b1e2dfa09f3b6c256bc1135a1338536cbc9ea13d3b7add"}, - {file = "pyzmq-25.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c9a79f1d2495b167119d02be7448bfba57fad2a4207c4f68abc0bab4b92925b"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:518efd91c3d8ac9f9b4f7dd0e2b7b8bf1a4fe82a308009016b07eaa48681af82"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1ec23bd7b3a893ae676d0e54ad47d18064e6c5ae1fadc2f195143fb27373f7f6"}, - {file = "pyzmq-25.1.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:db36c27baed588a5a8346b971477b718fdc66cf5b80cbfbd914b4d6d355e44e2"}, - {file = "pyzmq-25.1.2-cp39-cp39-win32.whl", hash = "sha256:39b1067f13aba39d794a24761e385e2eddc26295826530a8c7b6c6c341584289"}, - {file = "pyzmq-25.1.2-cp39-cp39-win_amd64.whl", hash = "sha256:8e9f3fabc445d0ce320ea2c59a75fe3ea591fdbdeebec5db6de530dd4b09412e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a8c1d566344aee826b74e472e16edae0a02e2a044f14f7c24e123002dcff1c05"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:759cfd391a0996345ba94b6a5110fca9c557ad4166d86a6e81ea526c376a01e8"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c61e346ac34b74028ede1c6b4bcecf649d69b707b3ff9dc0fab453821b04d1e"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4cb8fc1f8d69b411b8ec0b5f1ffbcaf14c1db95b6bccea21d83610987435f1a4"}, - {file = "pyzmq-25.1.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:3c00c9b7d1ca8165c610437ca0c92e7b5607b2f9076f4eb4b095c85d6e680a1d"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:df0c7a16ebb94452d2909b9a7b3337940e9a87a824c4fc1c7c36bb4404cb0cde"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:45999e7f7ed5c390f2e87ece7f6c56bf979fb213550229e711e45ecc7d42ccb8"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ac170e9e048b40c605358667aca3d94e98f604a18c44bdb4c102e67070f3ac9b"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1b604734bec94f05f81b360a272fc824334267426ae9905ff32dc2be433ab96"}, - {file = "pyzmq-25.1.2-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:a793ac733e3d895d96f865f1806f160696422554e46d30105807fdc9841b9f7d"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:0806175f2ae5ad4b835ecd87f5f85583316b69f17e97786f7443baaf54b9bb98"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:ef12e259e7bc317c7597d4f6ef59b97b913e162d83b421dd0db3d6410f17a244"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ea253b368eb41116011add00f8d5726762320b1bda892f744c91997b65754d73"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1b9b1f2ad6498445a941d9a4fee096d387fee436e45cc660e72e768d3d8ee611"}, - {file = "pyzmq-25.1.2-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:8b14c75979ce932c53b79976a395cb2a8cd3aaf14aef75e8c2cb55a330b9b49d"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:889370d5174a741a62566c003ee8ddba4b04c3f09a97b8000092b7ca83ec9c49"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9a18fff090441a40ffda8a7f4f18f03dc56ae73f148f1832e109f9bffa85df15"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99a6b36f95c98839ad98f8c553d8507644c880cf1e0a57fe5e3a3f3969040882"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4345c9a27f4310afbb9c01750e9461ff33d6fb74cd2456b107525bbeebcb5be3"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:3516e0b6224cf6e43e341d56da15fd33bdc37fa0c06af4f029f7d7dfceceabbc"}, - {file = "pyzmq-25.1.2-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:146b9b1f29ead41255387fb07be56dc29639262c0f7344f570eecdcd8d683314"}, - {file = "pyzmq-25.1.2.tar.gz", hash = "sha256:93f1aa311e8bb912e34f004cf186407a4e90eec4f0ecc0efd26056bf7eda0226"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:44dd6fc3034f1eaa72ece33588867df9e006a7303725a12d64c3dff92330f625"}, + {file = "pyzmq-26.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:acb704195a71ac5ea5ecf2811c9ee19ecdc62b91878528302dd0be1b9451cc90"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbb9c997932473a27afa93954bb77a9f9b786b4ccf718d903f35da3232317de"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6bcb34f869d431799c3ee7d516554797f7760cb2198ecaa89c3f176f72d062be"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ece17ec5f20d7d9b442e5174ae9f020365d01ba7c112205a4d59cf19dc38ee"}, + {file = "pyzmq-26.0.3-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ba6e5e6588e49139a0979d03a7deb9c734bde647b9a8808f26acf9c547cab1bf"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3bf8b000a4e2967e6dfdd8656cd0757d18c7e5ce3d16339e550bd462f4857e59"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:2136f64fbb86451dbbf70223635a468272dd20075f988a102bf8a3f194a411dc"}, + {file = "pyzmq-26.0.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e8918973fbd34e7814f59143c5f600ecd38b8038161239fd1a3d33d5817a38b8"}, + {file = "pyzmq-26.0.3-cp310-cp310-win32.whl", hash = "sha256:0aaf982e68a7ac284377d051c742610220fd06d330dcd4c4dbb4cdd77c22a537"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:f1a9b7d00fdf60b4039f4455afd031fe85ee8305b019334b72dcf73c567edc47"}, + {file = "pyzmq-26.0.3-cp310-cp310-win_arm64.whl", hash = "sha256:80b12f25d805a919d53efc0a5ad7c0c0326f13b4eae981a5d7b7cc343318ebb7"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:a72a84570f84c374b4c287183debc776dc319d3e8ce6b6a0041ce2e400de3f32"}, + {file = "pyzmq-26.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7ca684ee649b55fd8f378127ac8462fb6c85f251c2fb027eb3c887e8ee347bcd"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e222562dc0f38571c8b1ffdae9d7adb866363134299264a1958d077800b193b7"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f17cde1db0754c35a91ac00b22b25c11da6eec5746431d6e5092f0cd31a3fea9"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b7c0c0b3244bb2275abe255d4a30c050d541c6cb18b870975553f1fb6f37527"}, + {file = "pyzmq-26.0.3-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ac97a21de3712afe6a6c071abfad40a6224fd14fa6ff0ff8d0c6e6cd4e2f807a"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:88b88282e55fa39dd556d7fc04160bcf39dea015f78e0cecec8ff4f06c1fc2b5"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:72b67f966b57dbd18dcc7efbc1c7fc9f5f983e572db1877081f075004614fcdd"}, + {file = "pyzmq-26.0.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f4b6cecbbf3b7380f3b61de3a7b93cb721125dc125c854c14ddc91225ba52f83"}, + {file = "pyzmq-26.0.3-cp311-cp311-win32.whl", hash = "sha256:eed56b6a39216d31ff8cd2f1d048b5bf1700e4b32a01b14379c3b6dde9ce3aa3"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:3191d312c73e3cfd0f0afdf51df8405aafeb0bad71e7ed8f68b24b63c4f36500"}, + {file = "pyzmq-26.0.3-cp311-cp311-win_arm64.whl", hash = "sha256:b6907da3017ef55139cf0e417c5123a84c7332520e73a6902ff1f79046cd3b94"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:068ca17214038ae986d68f4a7021f97e187ed278ab6dccb79f837d765a54d753"}, + {file = "pyzmq-26.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:7821d44fe07335bea256b9f1f41474a642ca55fa671dfd9f00af8d68a920c2d4"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eeb438a26d87c123bb318e5f2b3d86a36060b01f22fbdffd8cf247d52f7c9a2b"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:69ea9d6d9baa25a4dc9cef5e2b77b8537827b122214f210dd925132e34ae9b12"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7daa3e1369355766dea11f1d8ef829905c3b9da886ea3152788dc25ee6079e02"}, + {file = "pyzmq-26.0.3-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:6ca7a9a06b52d0e38ccf6bca1aeff7be178917893f3883f37b75589d42c4ac20"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1b7d0e124948daa4d9686d421ef5087c0516bc6179fdcf8828b8444f8e461a77"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:e746524418b70f38550f2190eeee834db8850088c834d4c8406fbb9bc1ae10b2"}, + {file = "pyzmq-26.0.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:6b3146f9ae6af82c47a5282ac8803523d381b3b21caeae0327ed2f7ecb718798"}, + {file = "pyzmq-26.0.3-cp312-cp312-win32.whl", hash = "sha256:2b291d1230845871c00c8462c50565a9cd6026fe1228e77ca934470bb7d70ea0"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:926838a535c2c1ea21c903f909a9a54e675c2126728c21381a94ddf37c3cbddf"}, + {file = "pyzmq-26.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:5bf6c237f8c681dfb91b17f8435b2735951f0d1fad10cc5dfd96db110243370b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0c0991f5a96a8e620f7691e61178cd8f457b49e17b7d9cfa2067e2a0a89fc1d5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:dbf012d8fcb9f2cf0643b65df3b355fdd74fc0035d70bb5c845e9e30a3a4654b"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:01fbfbeb8249a68d257f601deb50c70c929dc2dfe683b754659569e502fbd3aa"}, + {file = "pyzmq-26.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c8eb19abe87029c18f226d42b8a2c9efdd139d08f8bf6e085dd9075446db450"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:5344b896e79800af86ad643408ca9aa303a017f6ebff8cee5a3163c1e9aec987"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:204e0f176fd1d067671157d049466869b3ae1fc51e354708b0dc41cf94e23a3a"}, + {file = "pyzmq-26.0.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a42db008d58530efa3b881eeee4991146de0b790e095f7ae43ba5cc612decbc5"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win32.whl", hash = "sha256:8d7a498671ca87e32b54cb47c82a92b40130a26c5197d392720a1bce1b3c77cf"}, + {file = "pyzmq-26.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:3b4032a96410bdc760061b14ed6a33613ffb7f702181ba999df5d16fb96ba16a"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_15_universal2.whl", hash = "sha256:2cc4e280098c1b192c42a849de8de2c8e0f3a84086a76ec5b07bfee29bda7d18"}, + {file = "pyzmq-26.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5bde86a2ed3ce587fa2b207424ce15b9a83a9fa14422dcc1c5356a13aed3df9d"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:34106f68e20e6ff253c9f596ea50397dbd8699828d55e8fa18bd4323d8d966e6"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ebbbd0e728af5db9b04e56389e2299a57ea8b9dd15c9759153ee2455b32be6ad"}, + {file = "pyzmq-26.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6b1d1c631e5940cac5a0b22c5379c86e8df6a4ec277c7a856b714021ab6cfad"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e891ce81edd463b3b4c3b885c5603c00141151dd9c6936d98a680c8c72fe5c67"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:9b273ecfbc590a1b98f014ae41e5cf723932f3b53ba9367cfb676f838038b32c"}, + {file = "pyzmq-26.0.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b32bff85fb02a75ea0b68f21e2412255b5731f3f389ed9aecc13a6752f58ac97"}, + {file = "pyzmq-26.0.3-cp38-cp38-win32.whl", hash = "sha256:f6c21c00478a7bea93caaaef9e7629145d4153b15a8653e8bb4609d4bc70dbfc"}, + {file = "pyzmq-26.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:3401613148d93ef0fd9aabdbddb212de3db7a4475367f49f590c837355343972"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_15_universal2.whl", hash = "sha256:2ed8357f4c6e0daa4f3baf31832df8a33334e0fe5b020a61bc8b345a3db7a606"}, + {file = "pyzmq-26.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:c1c8f2a2ca45292084c75bb6d3a25545cff0ed931ed228d3a1810ae3758f975f"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:b63731993cdddcc8e087c64e9cf003f909262b359110070183d7f3025d1c56b5"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b3cd31f859b662ac5d7f4226ec7d8bd60384fa037fc02aee6ff0b53ba29a3ba8"}, + {file = "pyzmq-26.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:115f8359402fa527cf47708d6f8a0f8234f0e9ca0cab7c18c9c189c194dbf620"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:715bdf952b9533ba13dfcf1f431a8f49e63cecc31d91d007bc1deb914f47d0e4"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e1258c639e00bf5e8a522fec6c3eaa3e30cf1c23a2f21a586be7e04d50c9acab"}, + {file = "pyzmq-26.0.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:15c59e780be8f30a60816a9adab900c12a58d79c1ac742b4a8df044ab2a6d920"}, + {file = "pyzmq-26.0.3-cp39-cp39-win32.whl", hash = "sha256:d0cdde3c78d8ab5b46595054e5def32a755fc028685add5ddc7403e9f6de9879"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:ce828058d482ef860746bf532822842e0ff484e27f540ef5c813d516dd8896d2"}, + {file = "pyzmq-26.0.3-cp39-cp39-win_arm64.whl", hash = "sha256:788f15721c64109cf720791714dc14afd0f449d63f3a5487724f024345067381"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:2c18645ef6294d99b256806e34653e86236eb266278c8ec8112622b61db255de"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7e6bc96ebe49604df3ec2c6389cc3876cabe475e6bfc84ced1bf4e630662cb35"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:971e8990c5cc4ddcff26e149398fc7b0f6a042306e82500f5e8db3b10ce69f84"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8416c23161abd94cc7da80c734ad7c9f5dbebdadfdaa77dad78244457448223"}, + {file = "pyzmq-26.0.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:082a2988364b60bb5de809373098361cf1dbb239623e39e46cb18bc035ed9c0c"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d57dfbf9737763b3a60d26e6800e02e04284926329aee8fb01049635e957fe81"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:77a85dca4c2430ac04dc2a2185c2deb3858a34fe7f403d0a946fa56970cf60a1"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4c82a6d952a1d555bf4be42b6532927d2a5686dd3c3e280e5f63225ab47ac1f5"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4496b1282c70c442809fc1b151977c3d967bfb33e4e17cedbf226d97de18f709"}, + {file = "pyzmq-26.0.3-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:e4946d6bdb7ba972dfda282f9127e5756d4f299028b1566d1245fa0d438847e6"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:03c0ae165e700364b266876d712acb1ac02693acd920afa67da2ebb91a0b3c09"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:3e3070e680f79887d60feeda051a58d0ac36622e1759f305a41059eff62c6da7"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6ca08b840fe95d1c2bd9ab92dac5685f949fc6f9ae820ec16193e5ddf603c3b2"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e76654e9dbfb835b3518f9938e565c7806976c07b37c33526b574cc1a1050480"}, + {file = "pyzmq-26.0.3-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:871587bdadd1075b112e697173e946a07d722459d20716ceb3d1bd6c64bd08ce"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d0a2d1bd63a4ad79483049b26514e70fa618ce6115220da9efdff63688808b17"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0270b49b6847f0d106d64b5086e9ad5dc8a902413b5dbbb15d12b60f9c1747a4"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:703c60b9910488d3d0954ca585c34f541e506a091a41930e663a098d3b794c67"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74423631b6be371edfbf7eabb02ab995c2563fee60a80a30829176842e71722a"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4adfbb5451196842a88fda3612e2c0414134874bffb1c2ce83ab4242ec9e027d"}, + {file = "pyzmq-26.0.3-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3516119f4f9b8671083a70b6afaa0a070f5683e431ab3dc26e9215620d7ca1ad"}, + {file = "pyzmq-26.0.3.tar.gz", hash = "sha256:dba7d9f2e047dfa2bca3b01f4f84aa5246725203d6284e3790f2ca15fba6b40a"}, ] [package.dependencies] @@ -6910,101 +7077,98 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "rubicon-objc" -version = "0.4.7" +version = "0.4.9" description = "A bridge between an Objective C runtime environment and Python." optional = false python-versions = ">=3.8" files = [ - {file = "rubicon-objc-0.4.7.tar.gz", hash = "sha256:be937d864bd1229f860defabb89b40c53634eedc36448d89ad3c14eb3286e509"}, - {file = "rubicon_objc-0.4.7-py3-none-any.whl", hash = "sha256:f37108e35d5da1a78ab3eed2d03b095934f5f618329a939e4bd2ada9894eff6e"}, + {file = "rubicon_objc-0.4.9-py3-none-any.whl", hash = "sha256:c351b3800cf74c8c23f7d534f008fd5de46c63818de7a44de96daffdb3ed8b8c"}, + {file = "rubicon_objc-0.4.9.tar.gz", hash = "sha256:3d77a5b2d10cb1e49679aa90b7824b46f67b3fd636229aa4a1b902d24aec6a58"}, ] [package.extras] -dev = ["pre-commit (==3.5.0)", "pytest (==7.4.2)", "pytest-tldr (==0.2.5)", "setuptools-scm[toml] (==8.0.4)", "tox (==4.11.3)"] -docs = ["furo (==2023.9.10)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx (==7.2.6)", "sphinx-autobuild (==2021.3.14)", "sphinx-copybutton (==0.5.2)", "sphinx-tabs (==3.4.1)", "sphinxcontrib-spelling (==8.0.0)"] +dev = ["pre-commit (==3.5.0)", "pre-commit (==3.7.0)", "pytest (==8.2.0)", "pytest-tldr (==0.2.5)", "setuptools-scm (==8.0.4)", "tox (==4.15.0)"] +docs = ["furo (==2024.4.27)", "pyenchant (==3.2.2)", "sphinx (==7.1.2)", "sphinx (==7.3.7)", "sphinx-autobuild (==2021.3.14)", "sphinx-autobuild (==2024.4.16)", "sphinx-copybutton (==0.5.2)", "sphinx-tabs (==3.4.5)", "sphinxcontrib-spelling (==8.0.0)"] [[package]] name = "ruff" -version = "0.2.2" +version = "0.4.3" description = "An extremely fast Python linter and code formatter, written in Rust." optional = false python-versions = ">=3.7" files = [ - {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:0a9efb032855ffb3c21f6405751d5e147b0c6b631e3ca3f6b20f917572b97eb6"}, - {file = "ruff-0.2.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:d450b7fbff85913f866a5384d8912710936e2b96da74541c82c1b458472ddb39"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ecd46e3106850a5c26aee114e562c329f9a1fbe9e4821b008c4404f64ff9ce73"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5e22676a5b875bd72acd3d11d5fa9075d3a5f53b877fe7b4793e4673499318ba"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1695700d1e25a99d28f7a1636d85bafcc5030bba9d0578c0781ba1790dbcf51c"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:b0c232af3d0bd8f521806223723456ffebf8e323bd1e4e82b0befb20ba18388e"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f63d96494eeec2fc70d909393bcd76c69f35334cdbd9e20d089fb3f0640216ca"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6a61ea0ff048e06de273b2e45bd72629f470f5da8f71daf09fe481278b175001"}, - {file = "ruff-0.2.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e1439c8f407e4f356470e54cdecdca1bd5439a0673792dbe34a2b0a551a2fe3"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:940de32dc8853eba0f67f7198b3e79bc6ba95c2edbfdfac2144c8235114d6726"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:0c126da55c38dd917621552ab430213bdb3273bb10ddb67bc4b761989210eb6e"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:3b65494f7e4bed2e74110dac1f0d17dc8e1f42faaa784e7c58a98e335ec83d7e"}, - {file = "ruff-0.2.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:1ec49be4fe6ddac0503833f3ed8930528e26d1e60ad35c2446da372d16651ce9"}, - {file = "ruff-0.2.2-py3-none-win32.whl", hash = "sha256:d920499b576f6c68295bc04e7b17b6544d9d05f196bb3aac4358792ef6f34325"}, - {file = "ruff-0.2.2-py3-none-win_amd64.whl", hash = "sha256:cc9a91ae137d687f43a44c900e5d95e9617cb37d4c989e462980ba27039d239d"}, - {file = "ruff-0.2.2-py3-none-win_arm64.whl", hash = "sha256:c9d15fc41e6054bfc7200478720570078f0b41c9ae4f010bcc16bd6f4d1aacdd"}, - {file = "ruff-0.2.2.tar.gz", hash = "sha256:e62ed7f36b3068a30ba39193a14274cd706bc486fad521276458022f7bccb31d"}, + {file = "ruff-0.4.3-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:b70800c290f14ae6fcbb41bbe201cf62dfca024d124a1f373e76371a007454ce"}, + {file = "ruff-0.4.3-py3-none-macosx_11_0_arm64.whl", hash = "sha256:08a0d6a22918ab2552ace96adeaca308833873a4d7d1d587bb1d37bae8728eb3"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba1f14df3c758dd7de5b55fbae7e1c8af238597961e5fb628f3de446c3c40c5"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:819fb06d535cc76dfddbfe8d3068ff602ddeb40e3eacbc90e0d1272bb8d97113"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0bfc9e955e6dc6359eb6f82ea150c4f4e82b660e5b58d9a20a0e42ec3bb6342b"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:510a67d232d2ebe983fddea324dbf9d69b71c4d2dfeb8a862f4a127536dd4cfb"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc9ff11cd9a092ee7680a56d21f302bdda14327772cd870d806610a3503d001f"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:29efff25bf9ee685c2c8390563a5b5c006a3fee5230d28ea39f4f75f9d0b6f2f"}, + {file = "ruff-0.4.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18b00e0bcccf0fc8d7186ed21e311dffd19761cb632241a6e4fe4477cc80ef6e"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:262f5635e2c74d80b7507fbc2fac28fe0d4fef26373bbc62039526f7722bca1b"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:7363691198719c26459e08cc17c6a3dac6f592e9ea3d2fa772f4e561b5fe82a3"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_i686.whl", hash = "sha256:eeb039f8428fcb6725bb63cbae92ad67b0559e68b5d80f840f11914afd8ddf7f"}, + {file = "ruff-0.4.3-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:927b11c1e4d0727ce1a729eace61cee88a334623ec424c0b1c8fe3e5f9d3c865"}, + {file = "ruff-0.4.3-py3-none-win32.whl", hash = "sha256:25cacda2155778beb0d064e0ec5a3944dcca9c12715f7c4634fd9d93ac33fd30"}, + {file = "ruff-0.4.3-py3-none-win_amd64.whl", hash = "sha256:7a1c3a450bc6539ef00da6c819fb1b76b6b065dec585f91456e7c0d6a0bbc725"}, + {file = "ruff-0.4.3-py3-none-win_arm64.whl", hash = "sha256:71ca5f8ccf1121b95a59649482470c5601c60a416bf189d553955b0338e34614"}, + {file = "ruff-0.4.3.tar.gz", hash = "sha256:ff0a3ef2e3c4b6d133fbedcf9586abfbe38d076041f2dc18ffb2c7e0485d5a07"}, ] [[package]] name = "scipy" -version = "1.12.0" +version = "1.13.0" description = "Fundamental algorithms for scientific computing in Python" optional = false python-versions = ">=3.9" files = [ - {file = "scipy-1.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:78e4402e140879387187f7f25d91cc592b3501a2e51dfb320f48dfb73565f10b"}, - {file = "scipy-1.12.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:f5f00ebaf8de24d14b8449981a2842d404152774c1a1d880c901bf454cb8e2a1"}, - {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e53958531a7c695ff66c2e7bb7b79560ffdc562e2051644c5576c39ff8efb563"}, - {file = "scipy-1.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e32847e08da8d895ce09d108a494d9eb78974cf6de23063f93306a3e419960c"}, - {file = "scipy-1.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:4c1020cad92772bf44b8e4cdabc1df5d87376cb219742549ef69fc9fd86282dd"}, - {file = "scipy-1.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:75ea2a144096b5e39402e2ff53a36fecfd3b960d786b7efd3c180e29c39e53f2"}, - {file = "scipy-1.12.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:408c68423f9de16cb9e602528be4ce0d6312b05001f3de61fe9ec8b1263cad08"}, - {file = "scipy-1.12.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5adfad5dbf0163397beb4aca679187d24aec085343755fcdbdeb32b3679f254c"}, - {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c3003652496f6e7c387b1cf63f4bb720951cfa18907e998ea551e6de51a04467"}, - {file = "scipy-1.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b8066bce124ee5531d12a74b617d9ac0ea59245246410e19bca549656d9a40a"}, - {file = "scipy-1.12.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:8bee4993817e204d761dba10dbab0774ba5a8612e57e81319ea04d84945375ba"}, - {file = "scipy-1.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:a24024d45ce9a675c1fb8494e8e5244efea1c7a09c60beb1eeb80373d0fecc70"}, - {file = "scipy-1.12.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e7e76cc48638228212c747ada851ef355c2bb5e7f939e10952bc504c11f4e372"}, - {file = "scipy-1.12.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:f7ce148dffcd64ade37b2df9315541f9adad6efcaa86866ee7dd5db0c8f041c3"}, - {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c39f92041f490422924dfdb782527a4abddf4707616e07b021de33467f917bc"}, - {file = "scipy-1.12.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7ebda398f86e56178c2fa94cad15bf457a218a54a35c2a7b4490b9f9cb2676c"}, - {file = "scipy-1.12.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:95e5c750d55cf518c398a8240571b0e0782c2d5a703250872f36eaf737751338"}, - {file = "scipy-1.12.0-cp312-cp312-win_amd64.whl", hash = "sha256:e646d8571804a304e1da01040d21577685ce8e2db08ac58e543eaca063453e1c"}, - {file = "scipy-1.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:913d6e7956c3a671de3b05ccb66b11bc293f56bfdef040583a7221d9e22a2e35"}, - {file = "scipy-1.12.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:bba1b0c7256ad75401c73e4b3cf09d1f176e9bd4248f0d3112170fb2ec4db067"}, - {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:730badef9b827b368f351eacae2e82da414e13cf8bd5051b4bdfd720271a5371"}, - {file = "scipy-1.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6546dc2c11a9df6926afcbdd8a3edec28566e4e785b915e849348c6dd9f3f490"}, - {file = "scipy-1.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:196ebad3a4882081f62a5bf4aeb7326aa34b110e533aab23e4374fcccb0890dc"}, - {file = "scipy-1.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:b360f1b6b2f742781299514e99ff560d1fe9bd1bff2712894b52abe528d1fd1e"}, - {file = "scipy-1.12.0.tar.gz", hash = "sha256:4bf5abab8a36d20193c698b0f1fc282c1d083c94723902c447e5d2f1780936a3"}, + {file = "scipy-1.13.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba419578ab343a4e0a77c0ef82f088238a93eef141b2b8017e46149776dfad4d"}, + {file = "scipy-1.13.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:22789b56a999265431c417d462e5b7f2b487e831ca7bef5edeb56efe4c93f86e"}, + {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05f1432ba070e90d42d7fd836462c50bf98bd08bed0aa616c359eed8a04e3922"}, + {file = "scipy-1.13.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8434f6f3fa49f631fae84afee424e2483289dfc30a47755b4b4e6b07b2633a4"}, + {file = "scipy-1.13.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:dcbb9ea49b0167de4167c40eeee6e167caeef11effb0670b554d10b1e693a8b9"}, + {file = "scipy-1.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:1d2f7bb14c178f8b13ebae93f67e42b0a6b0fc50eba1cd8021c9b6e08e8fb1cd"}, + {file = "scipy-1.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0fbcf8abaf5aa2dc8d6400566c1a727aed338b5fe880cde64907596a89d576fa"}, + {file = "scipy-1.13.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5e4a756355522eb60fcd61f8372ac2549073c8788f6114449b37e9e8104f15a5"}, + {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b5acd8e1dbd8dbe38d0004b1497019b2dbbc3d70691e65d69615f8a7292865d7"}, + {file = "scipy-1.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ff7dad5d24a8045d836671e082a490848e8639cabb3dbdacb29f943a678683d"}, + {file = "scipy-1.13.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:4dca18c3ffee287ddd3bc8f1dabaf45f5305c5afc9f8ab9cbfab855e70b2df5c"}, + {file = "scipy-1.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:a2f471de4d01200718b2b8927f7d76b5d9bde18047ea0fa8bd15c5ba3f26a1d6"}, + {file = "scipy-1.13.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:d0de696f589681c2802f9090fff730c218f7c51ff49bf252b6a97ec4a5d19e8b"}, + {file = "scipy-1.13.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:b2a3ff461ec4756b7e8e42e1c681077349a038f0686132d623fa404c0bee2551"}, + {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6bf9fe63e7a4bf01d3645b13ff2aa6dea023d38993f42aaac81a18b1bda7a82a"}, + {file = "scipy-1.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e7626dfd91cdea5714f343ce1176b6c4745155d234f1033584154f60ef1ff42"}, + {file = "scipy-1.13.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:109d391d720fcebf2fbe008621952b08e52907cf4c8c7efc7376822151820820"}, + {file = "scipy-1.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:8930ae3ea371d6b91c203b1032b9600d69c568e537b7988a3073dfe4d4774f21"}, + {file = "scipy-1.13.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5407708195cb38d70fd2d6bb04b1b9dd5c92297d86e9f9daae1576bd9e06f602"}, + {file = "scipy-1.13.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:ac38c4c92951ac0f729c4c48c9e13eb3675d9986cc0c83943784d7390d540c78"}, + {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:09c74543c4fbeb67af6ce457f6a6a28e5d3739a87f62412e4a16e46f164f0ae5"}, + {file = "scipy-1.13.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28e286bf9ac422d6beb559bc61312c348ca9b0f0dae0d7c5afde7f722d6ea13d"}, + {file = "scipy-1.13.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:33fde20efc380bd23a78a4d26d59fc8704e9b5fd9b08841693eb46716ba13d86"}, + {file = "scipy-1.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:45c08bec71d3546d606989ba6e7daa6f0992918171e2a6f7fbedfa7361c2de1e"}, + {file = "scipy-1.13.0.tar.gz", hash = "sha256:58569af537ea29d3f78e5abd18398459f195546bb3be23d16677fb26616cc11e"}, ] [package.dependencies] -numpy = ">=1.22.4,<1.29.0" +numpy = ">=1.22.4,<2.3" [package.extras] -dev = ["click", "cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] -doc = ["jupytext", "matplotlib (>2)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] -test = ["asv", "gmpy2", "hypothesis", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +dev = ["cython-lint (>=0.12.2)", "doit (>=0.36.0)", "mypy", "pycodestyle", "pydevtool", "rich-click", "ruff", "types-psutil", "typing_extensions"] +doc = ["jupyterlite-pyodide-kernel", "jupyterlite-sphinx (>=0.12.0)", "jupytext", "matplotlib (>=3.5)", "myst-nb", "numpydoc", "pooch", "pydata-sphinx-theme (>=0.15.2)", "sphinx (>=5.0.0)", "sphinx-design (>=0.4.0)"] +test = ["array-api-strict", "asv", "gmpy2", "hypothesis (>=6.30)", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "scons" -version = "4.6.0.post1" +version = "4.7.0" description = "Open Source next-generation build tool." optional = false python-versions = ">=3.6" files = [ - {file = "SCons-4.6.0.post1-py3-none-any.whl", hash = "sha256:9e0527b7a924e7af2b312c1f8961ef2776847bdc46a4d886af5a75f301da7ce3"}, - {file = "SCons-4.6.0.post1.tar.gz", hash = "sha256:d467a34546f5366a32e4d4419611d0138dd680210f24aa8491ebe9e4b83456cf"}, + {file = "SCons-4.7.0-py3-none-any.whl", hash = "sha256:93308e564966760a63a4c1e016b2cc15d07bb40db67b1c907732da0b9e9f8959"}, + {file = "SCons-4.7.0.tar.gz", hash = "sha256:d8b617f6610a73e46509de70dcf82f76861b79762ff602d546f4e80918ec81f3"}, ] -[package.dependencies] -setuptools = "*" - [[package]] name = "seaborn" version = "0.13.2" @@ -7028,26 +7192,28 @@ stats = ["scipy (>=1.7)", "statsmodels (>=0.12)"] [[package]] name = "sentry-sdk" -version = "1.40.5" +version = "2.1.1" description = "Python client for Sentry (https://sentry.io)" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "sentry-sdk-1.40.5.tar.gz", hash = "sha256:d2dca2392cc5c9a2cc9bb874dd7978ebb759682fe4fe889ee7e970ee8dd1c61e"}, - {file = "sentry_sdk-1.40.5-py2.py3-none-any.whl", hash = "sha256:d188b407c9bacbe2a50a824e1f8fb99ee1aeb309133310488c570cb6d7056643"}, + {file = "sentry_sdk-2.1.1-py2.py3-none-any.whl", hash = "sha256:99aeb78fb76771513bd3b2829d12613130152620768d00cd3e45ac00cb17950f"}, + {file = "sentry_sdk-2.1.1.tar.gz", hash = "sha256:95d8c0bb41c8b0bc37ab202c2c4a295bb84398ee05f4cdce55051cd75b926ec1"}, ] [package.dependencies] certifi = "*" -urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} +urllib3 = ">=1.26.11" [package.extras] aiohttp = ["aiohttp (>=3.5)"] +anthropic = ["anthropic (>=0.16)"] arq = ["arq (>=0.23)"] asyncpg = ["asyncpg (>=0.23)"] beam = ["apache-beam (>=2.12)"] bottle = ["bottle (>=0.12.13)"] celery = ["celery (>=3)"] +celery-redbeat = ["celery-redbeat (>=2)"] chalice = ["chalice (>=1.16.0)"] clickhouse-driver = ["clickhouse-driver (>=0.2.0)"] django = ["django (>=1.8)"] @@ -7057,7 +7223,10 @@ flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"] grpcio = ["grpcio (>=1.21.1)"] httpx = ["httpx (>=0.16.0)"] huey = ["huey (>=2)"] +huggingface-hub = ["huggingface-hub (>=0.22)"] +langchain = ["langchain (>=0.0.210)"] loguru = ["loguru (>=0.5)"] +openai = ["openai (>=1.0.0)", "tiktoken (>=0.3.0)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] opentelemetry-experimental = ["opentelemetry-distro (>=0.40b0,<1.0)", "opentelemetry-instrumentation-aiohttp-client (>=0.40b0,<1.0)", "opentelemetry-instrumentation-django (>=0.40b0,<1.0)", "opentelemetry-instrumentation-fastapi (>=0.40b0,<1.0)", "opentelemetry-instrumentation-flask (>=0.40b0,<1.0)", "opentelemetry-instrumentation-requests (>=0.40b0,<1.0)", "opentelemetry-instrumentation-sqlite3 (>=0.40b0,<1.0)", "opentelemetry-instrumentation-urllib (>=0.40b0,<1.0)"] pure-eval = ["asttokens", "executing", "pure-eval"] @@ -7173,72 +7342,72 @@ test = ["pytest"] [[package]] name = "setuptools" -version = "69.1.1" +version = "69.5.1" description = "Easily download, build, install, upgrade, and uninstall Python packages" optional = false python-versions = ">=3.8" files = [ - {file = "setuptools-69.1.1-py3-none-any.whl", hash = "sha256:02fa291a0471b3a18b2b2481ed902af520c69e8ae0919c13da936542754b4c56"}, - {file = "setuptools-69.1.1.tar.gz", hash = "sha256:5c0806c7d9af348e6dd3777b4f4dbb42c7ad85b190104837488eab9a7c945cf8"}, + {file = "setuptools-69.5.1-py3-none-any.whl", hash = "sha256:c636ac361bc47580504644275c9ad802c50415c7522212252c033bd15f301f32"}, + {file = "setuptools-69.5.1.tar.gz", hash = "sha256:6c1fccdac05a97e598fb0ae3bbed5904ccb317337a51139dcd51453611bbb987"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] -testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +testing = ["build[virtualenv]", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.9)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "mypy (==1.9)", "packaging (>=23.2)", "pip (>=19.1)", "pytest (>=6,!=8.1.1)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (>=0.2.1)", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "packaging (>=23.2)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] name = "shapely" -version = "2.0.3" +version = "2.0.4" description = "Manipulation and analysis of geometric objects" optional = false python-versions = ">=3.7" files = [ - {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:af7e9abe180b189431b0f490638281b43b84a33a960620e6b2e8d3e3458b61a1"}, - {file = "shapely-2.0.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:98040462b36ced9671e266b95c326b97f41290d9d17504a1ee4dc313a7667b9c"}, - {file = "shapely-2.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:71eb736ef2843f23473c6e37f6180f90f0a35d740ab284321548edf4e55d9a52"}, - {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:881eb9dbbb4a6419667e91fcb20313bfc1e67f53dbb392c6840ff04793571ed1"}, - {file = "shapely-2.0.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f10d2ccf0554fc0e39fad5886c839e47e207f99fdf09547bc687a2330efda35b"}, - {file = "shapely-2.0.3-cp310-cp310-win32.whl", hash = "sha256:6dfdc077a6fcaf74d3eab23a1ace5abc50c8bce56ac7747d25eab582c5a2990e"}, - {file = "shapely-2.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:64c5013dacd2d81b3bb12672098a0b2795c1bf8190cfc2980e380f5ef9d9e4d9"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:56cee3e4e8159d6f2ce32e421445b8e23154fd02a0ac271d6a6c0b266a8e3cce"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:619232c8276fded09527d2a9fd91a7885ff95c0ff9ecd5e3cb1e34fbb676e2ae"}, - {file = "shapely-2.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b2a7d256db6f5b4b407dc0c98dd1b2fcf1c9c5814af9416e5498d0a2e4307a4b"}, - {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e45f0c8cd4583647db3216d965d49363e6548c300c23fd7e57ce17a03f824034"}, - {file = "shapely-2.0.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13cb37d3826972a82748a450328fe02a931dcaed10e69a4d83cc20ba021bc85f"}, - {file = "shapely-2.0.3-cp311-cp311-win32.whl", hash = "sha256:9302d7011e3e376d25acd30d2d9e70d315d93f03cc748784af19b00988fc30b1"}, - {file = "shapely-2.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:6b464f2666b13902835f201f50e835f2f153f37741db88f68c7f3b932d3505fa"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:e86e7cb8e331a4850e0c2a8b2d66dc08d7a7b301b8d1d34a13060e3a5b4b3b55"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c91981c99ade980fc49e41a544629751a0ccd769f39794ae913e53b07b2f78b9"}, - {file = "shapely-2.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bd45d456983dc60a42c4db437496d3f08a4201fbf662b69779f535eb969660af"}, - {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:882fb1ffc7577e88c1194f4f1757e277dc484ba096a3b94844319873d14b0f2d"}, - {file = "shapely-2.0.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9f2d93bff2ea52fa93245798cddb479766a18510ea9b93a4fb9755c79474889"}, - {file = "shapely-2.0.3-cp312-cp312-win32.whl", hash = "sha256:99abad1fd1303b35d991703432c9481e3242b7b3a393c186cfb02373bf604004"}, - {file = "shapely-2.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:6f555fe3304a1f40398977789bc4fe3c28a11173196df9ece1e15c5bc75a48db"}, - {file = "shapely-2.0.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:a983cc418c1fa160b7d797cfef0e0c9f8c6d5871e83eae2c5793fce6a837fad9"}, - {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18bddb8c327f392189a8d5d6b9a858945722d0bb95ccbd6a077b8e8fc4c7890d"}, - {file = "shapely-2.0.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:442f4dcf1eb58c5a4e3428d88e988ae153f97ab69a9f24e07bf4af8038536325"}, - {file = "shapely-2.0.3-cp37-cp37m-win32.whl", hash = "sha256:31a40b6e3ab00a4fd3a1d44efb2482278642572b8e0451abdc8e0634b787173e"}, - {file = "shapely-2.0.3-cp37-cp37m-win_amd64.whl", hash = "sha256:59b16976c2473fec85ce65cc9239bef97d4205ab3acead4e6cdcc72aee535679"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:705efbce1950a31a55b1daa9c6ae1c34f1296de71ca8427974ec2f27d57554e3"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:601c5c0058a6192df704cb889439f64994708563f57f99574798721e9777a44b"}, - {file = "shapely-2.0.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f24ecbb90a45c962b3b60d8d9a387272ed50dc010bfe605f1d16dfc94772d8a1"}, - {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d8c2a2989222c6062f7a0656e16276c01bb308bc7e5d999e54bf4e294ce62e76"}, - {file = "shapely-2.0.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42bceb9bceb3710a774ce04908fda0f28b291323da2688f928b3f213373b5aee"}, - {file = "shapely-2.0.3-cp38-cp38-win32.whl", hash = "sha256:54d925c9a311e4d109ec25f6a54a8bd92cc03481a34ae1a6a92c1fe6729b7e01"}, - {file = "shapely-2.0.3-cp38-cp38-win_amd64.whl", hash = "sha256:300d203b480a4589adefff4c4af0b13919cd6d760ba3cbb1e56275210f96f654"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:083d026e97b6c1f4a9bd2a9171c7692461092ed5375218170d91705550eecfd5"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:27b6e1910094d93e9627f2664121e0e35613262fc037051680a08270f6058daf"}, - {file = "shapely-2.0.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:71b2de56a9e8c0e5920ae5ddb23b923490557ac50cb0b7fa752761bf4851acde"}, - {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d279e56bbb68d218d63f3efc80c819cedcceef0e64efbf058a1df89dc57201b"}, - {file = "shapely-2.0.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:88566d01a30f0453f7d038db46bc83ce125e38e47c5f6bfd4c9c287010e9bf74"}, - {file = "shapely-2.0.3-cp39-cp39-win32.whl", hash = "sha256:58afbba12c42c6ed44c4270bc0e22f3dadff5656d711b0ad335c315e02d04707"}, - {file = "shapely-2.0.3-cp39-cp39-win_amd64.whl", hash = "sha256:5026b30433a70911979d390009261b8c4021ff87c7c3cbd825e62bb2ffa181bc"}, - {file = "shapely-2.0.3.tar.gz", hash = "sha256:4d65d0aa7910af71efa72fd6447e02a8e5dd44da81a983de9d736d6e6ccbe674"}, + {file = "shapely-2.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:011b77153906030b795791f2fdfa2d68f1a8d7e40bce78b029782ade3afe4f2f"}, + {file = "shapely-2.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9831816a5d34d5170aa9ed32a64982c3d6f4332e7ecfe62dc97767e163cb0b17"}, + {file = "shapely-2.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5c4849916f71dc44e19ed370421518c0d86cf73b26e8656192fcfcda08218fbd"}, + {file = "shapely-2.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:841f93a0e31e4c64d62ea570d81c35de0f6cea224568b2430d832967536308e6"}, + {file = "shapely-2.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d2b4431f522b277c79c34b65da128029a9955e4481462cbf7ebec23aab61fc58"}, + {file = "shapely-2.0.4-cp310-cp310-win32.whl", hash = "sha256:92a41d936f7d6743f343be265ace93b7c57f5b231e21b9605716f5a47c2879e7"}, + {file = "shapely-2.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:30982f79f21bb0ff7d7d4a4e531e3fcaa39b778584c2ce81a147f95be1cd58c9"}, + {file = "shapely-2.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:de0205cb21ad5ddaef607cda9a3191eadd1e7a62a756ea3a356369675230ac35"}, + {file = "shapely-2.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7d56ce3e2a6a556b59a288771cf9d091470116867e578bebced8bfc4147fbfd7"}, + {file = "shapely-2.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:58b0ecc505bbe49a99551eea3f2e8a9b3b24b3edd2a4de1ac0dc17bc75c9ec07"}, + {file = "shapely-2.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:790a168a808bd00ee42786b8ba883307c0e3684ebb292e0e20009588c426da47"}, + {file = "shapely-2.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4310b5494271e18580d61022c0857eb85d30510d88606fa3b8314790df7f367d"}, + {file = "shapely-2.0.4-cp311-cp311-win32.whl", hash = "sha256:63f3a80daf4f867bd80f5c97fbe03314348ac1b3b70fb1c0ad255a69e3749879"}, + {file = "shapely-2.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:c52ed79f683f721b69a10fb9e3d940a468203f5054927215586c5d49a072de8d"}, + {file = "shapely-2.0.4-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:5bbd974193e2cc274312da16b189b38f5f128410f3377721cadb76b1e8ca5328"}, + {file = "shapely-2.0.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:41388321a73ba1a84edd90d86ecc8bfed55e6a1e51882eafb019f45895ec0f65"}, + {file = "shapely-2.0.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0776c92d584f72f1e584d2e43cfc5542c2f3dd19d53f70df0900fda643f4bae6"}, + {file = "shapely-2.0.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c75c98380b1ede1cae9a252c6dc247e6279403fae38c77060a5e6186c95073ac"}, + {file = "shapely-2.0.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3e700abf4a37b7b8b90532fa6ed5c38a9bfc777098bc9fbae5ec8e618ac8f30"}, + {file = "shapely-2.0.4-cp312-cp312-win32.whl", hash = "sha256:4f2ab0faf8188b9f99e6a273b24b97662194160cc8ca17cf9d1fb6f18d7fb93f"}, + {file = "shapely-2.0.4-cp312-cp312-win_amd64.whl", hash = "sha256:03152442d311a5e85ac73b39680dd64a9892fa42bb08fd83b3bab4fe6999bfa0"}, + {file = "shapely-2.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:994c244e004bc3cfbea96257b883c90a86e8cbd76e069718eb4c6b222a56f78b"}, + {file = "shapely-2.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05ffd6491e9e8958b742b0e2e7c346635033d0a5f1a0ea083547fcc854e5d5cf"}, + {file = "shapely-2.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2fbdc1140a7d08faa748256438291394967aa54b40009f54e8d9825e75ef6113"}, + {file = "shapely-2.0.4-cp37-cp37m-win32.whl", hash = "sha256:5af4cd0d8cf2912bd95f33586600cac9c4b7c5053a036422b97cfe4728d2eb53"}, + {file = "shapely-2.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:464157509ce4efa5ff285c646a38b49f8c5ef8d4b340f722685b09bb033c5ccf"}, + {file = "shapely-2.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:489c19152ec1f0e5c5e525356bcbf7e532f311bff630c9b6bc2db6f04da6a8b9"}, + {file = "shapely-2.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b79bbd648664aa6f44ef018474ff958b6b296fed5c2d42db60078de3cffbc8aa"}, + {file = "shapely-2.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:674d7baf0015a6037d5758496d550fc1946f34bfc89c1bf247cabdc415d7747e"}, + {file = "shapely-2.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6cd4ccecc5ea5abd06deeaab52fcdba372f649728050c6143cc405ee0c166679"}, + {file = "shapely-2.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fb5cdcbbe3080181498931b52a91a21a781a35dcb859da741c0345c6402bf00c"}, + {file = "shapely-2.0.4-cp38-cp38-win32.whl", hash = "sha256:55a38dcd1cee2f298d8c2ebc60fc7d39f3b4535684a1e9e2f39a80ae88b0cea7"}, + {file = "shapely-2.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:ec555c9d0db12d7fd777ba3f8b75044c73e576c720a851667432fabb7057da6c"}, + {file = "shapely-2.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:3f9103abd1678cb1b5f7e8e1af565a652e036844166c91ec031eeb25c5ca8af0"}, + {file = "shapely-2.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:263bcf0c24d7a57c80991e64ab57cba7a3906e31d2e21b455f493d4aab534aaa"}, + {file = "shapely-2.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ddf4a9bfaac643e62702ed662afc36f6abed2a88a21270e891038f9a19bc08fc"}, + {file = "shapely-2.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:485246fcdb93336105c29a5cfbff8a226949db37b7473c89caa26c9bae52a242"}, + {file = "shapely-2.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8de4578e838a9409b5b134a18ee820730e507b2d21700c14b71a2b0757396acc"}, + {file = "shapely-2.0.4-cp39-cp39-win32.whl", hash = "sha256:9dab4c98acfb5fb85f5a20548b5c0abe9b163ad3525ee28822ffecb5c40e724c"}, + {file = "shapely-2.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:31c19a668b5a1eadab82ff070b5a260478ac6ddad3a5b62295095174a8d26398"}, + {file = "shapely-2.0.4.tar.gz", hash = "sha256:5dc736127fac70009b8d309a0eeb74f3e08979e530cf7017f2f507ef62e6cfb8"}, ] [package.dependencies] -numpy = ">=1.14,<2" +numpy = ">=1.14,<3" [package.extras] docs = ["matplotlib", "numpydoc (==1.1.*)", "sphinx", "sphinx-book-theme", "sphinx-remove-toctrees"] @@ -7315,20 +7484,20 @@ numpy = ["NumPy"] [[package]] name = "sphinx" -version = "7.2.6" +version = "7.3.7" description = "Python documentation generator" optional = false python-versions = ">=3.9" files = [ - {file = "sphinx-7.2.6-py3-none-any.whl", hash = "sha256:1e09160a40b956dc623c910118fa636da93bd3ca0b9876a7b3df90f07d691560"}, - {file = "sphinx-7.2.6.tar.gz", hash = "sha256:9a5160e1ea90688d5963ba09a2dcd8bdd526620edbb65c328728f1b2228d5ab5"}, + {file = "sphinx-7.3.7-py3-none-any.whl", hash = "sha256:413f75440be4cacf328f580b4274ada4565fb2187d696a84970c23f77b64d8c3"}, + {file = "sphinx-7.3.7.tar.gz", hash = "sha256:a4a7db75ed37531c05002d56ed6948d4c42f473a36f46e1382b0bd76ca9627bc"}, ] [package.dependencies] -alabaster = ">=0.7,<0.8" +alabaster = ">=0.7.14,<0.8.0" babel = ">=2.9" colorama = {version = ">=0.4.5", markers = "sys_platform == \"win32\""} -docutils = ">=0.18.1,<0.21" +docutils = ">=0.18.1,<0.22" imagesize = ">=1.3" Jinja2 = ">=3.0" packaging = ">=21.0" @@ -7344,8 +7513,8 @@ sphinxcontrib-serializinghtml = ">=1.1.9" [package.extras] docs = ["sphinxcontrib-websupport"] -lint = ["docutils-stubs", "flake8 (>=3.5.0)", "flake8-simplify", "isort", "mypy (>=0.990)", "ruff", "sphinx-lint", "types-requests"] -test = ["cython (>=3.0)", "filelock", "html5lib", "pytest (>=4.6)", "setuptools (>=67.0)"] +lint = ["flake8 (>=3.5.0)", "importlib_metadata", "mypy (==1.9.0)", "pytest (>=6.0)", "ruff (==0.3.7)", "sphinx-lint", "tomli", "types-docutils", "types-requests"] +test = ["cython (>=3.0)", "defusedxml (>=0.7.1)", "pytest (>=6.0)", "setuptools (>=67.0)"] [[package]] name = "sphinx-rtd-theme" @@ -7368,18 +7537,21 @@ dev = ["bump2version", "sphinxcontrib-httpdomain", "transifex-client", "wheel"] [[package]] name = "sphinx-sitemap" -version = "2.5.1" +version = "2.6.0" description = "Sitemap generator for Sphinx" optional = false python-versions = "*" files = [ - {file = "sphinx-sitemap-2.5.1.tar.gz", hash = "sha256:984bef068bbdbc26cfae209a8b61392e9681abc9191b477cd30da406e3a60ee5"}, - {file = "sphinx_sitemap-2.5.1-py3-none-any.whl", hash = "sha256:0b7bce2835f287687f75584d7695e4eb8efaec028e5e7b36e9f791de3c344686"}, + {file = "sphinx_sitemap-2.6.0-py3-none-any.whl", hash = "sha256:7478e417d141f99c9af27ccd635f44c03a471a08b20e778a0f9daef7ace1d30b"}, + {file = "sphinx_sitemap-2.6.0.tar.gz", hash = "sha256:5e0c66b9f2e371ede80c659866a9eaad337d46ab02802f9c7e5f7bc5893c28d2"}, ] [package.dependencies] sphinx = ">=1.2" +[package.extras] +dev = ["build", "flake8", "pre-commit", "pytest", "sphinx", "tox"] + [[package]] name = "sphinxcontrib-applehelp" version = "1.0.8" @@ -7543,23 +7715,23 @@ doc = ["reno", "sphinx", "tornado (>=4.5)"] [[package]] name = "timezonefinder" -version = "6.4.0" +version = "6.5.0" description = "python package for finding the timezone of any point on earth (coordinates) offline" optional = false -python-versions = ">=3.9,<4" +python-versions = ">=3.8,<4" files = [ - {file = "timezonefinder-6.4.0-cp310-cp310-manylinux_2_35_x86_64.whl", hash = "sha256:b4d4cefcdfcd46ffc04858d12cb23b58faca06dad05f68b6b704421be9fc70bc"}, - {file = "timezonefinder-6.4.0.tar.gz", hash = "sha256:7d82ebbc822d5fa012dbfbde510999afce0d7d1482794838e6c4daf6cc327f97"}, + {file = "timezonefinder-6.5.0-cp38-cp38-manylinux_2_35_x86_64.whl", hash = "sha256:3c70e1ea468ecac11272aa0a727450fd7cf43039ae2a2c62f7900a0a42efb6d6"}, + {file = "timezonefinder-6.5.0.tar.gz", hash = "sha256:7afdb1516927e7766deb6da80c8bd66734a44ba3d898038fe73aef1e9cd39bb0"}, ] [package.dependencies] cffi = ">=1.15.1,<2" h3 = ">=3.7.6,<4" -numpy = ">=1.18,<2" +numpy = {version = ">=1.23,<2", markers = "python_version >= \"3.9\""} setuptools = ">=65.5" [package.extras] -numba = ["numba (>=0.59,<1)"] +numba = ["numba (>=0.56,<1)", "numba (>=0.59,<1)"] pytz = ["pytz (>=2022.7.1)"] [[package]] @@ -7575,13 +7747,13 @@ files = [ [[package]] name = "tqdm" -version = "4.66.2" +version = "4.66.4" description = "Fast, Extensible Progress Meter" optional = false python-versions = ">=3.7" files = [ - {file = "tqdm-4.66.2-py3-none-any.whl", hash = "sha256:1ee4f8a893eb9bef51c6e35730cebf234d5d0b6bd112b0271e10ed7c24a02bd9"}, - {file = "tqdm-4.66.2.tar.gz", hash = "sha256:6cd52cdf0fef0e0f543299cfc96fec90d7b8a7e88745f411ec33eb44d5ed3531"}, + {file = "tqdm-4.66.4-py3-none-any.whl", hash = "sha256:b75ca56b413b030bc3f00af51fd2c1a1a5eac6a0c1cca83cbb37a5c52abce644"}, + {file = "tqdm-4.66.4.tar.gz", hash = "sha256:e4d936c9de8727928f3be6079590e97d9abfe8d39a590be678eb5919ffc186bb"}, ] [package.dependencies] @@ -7595,13 +7767,13 @@ telegram = ["requests"] [[package]] name = "types-requests" -version = "2.31.0.20240218" +version = "2.31.0.20240406" description = "Typing stubs for requests" optional = false python-versions = ">=3.8" files = [ - {file = "types-requests-2.31.0.20240218.tar.gz", hash = "sha256:f1721dba8385958f504a5386240b92de4734e047a08a40751c1654d1ac3349c5"}, - {file = "types_requests-2.31.0.20240218-py3-none-any.whl", hash = "sha256:a82807ec6ddce8f00fe0e949da6d6bc1fbf1715420218a9640d695f70a9e5a9b"}, + {file = "types-requests-2.31.0.20240406.tar.gz", hash = "sha256:4428df33c5503945c74b3f42e82b181e86ec7b724620419a2966e2de604ce1a1"}, + {file = "types_requests-2.31.0.20240406-py3-none-any.whl", hash = "sha256:6216cdac377c6b9a040ac1c0404f7284bd13199c0e1bb235f4324627e8898cf5"}, ] [package.dependencies] @@ -7620,13 +7792,13 @@ files = [ [[package]] name = "typing-extensions" -version = "4.10.0" +version = "4.11.0" description = "Backported and Experimental Type Hints for Python 3.8+" optional = false python-versions = ">=3.8" files = [ - {file = "typing_extensions-4.10.0-py3-none-any.whl", hash = "sha256:69b1a937c3a517342112fb4c6df7e72fc39a38e7891a5730ed4985b5214b5475"}, - {file = "typing_extensions-4.10.0.tar.gz", hash = "sha256:b0abd7c89e8fb96f98db18d86106ff1d90ab692004eb746cf6eda2682f91b3cb"}, + {file = "typing_extensions-4.11.0-py3-none-any.whl", hash = "sha256:c1f94d72897edaf4ce775bb7558d5b79d8126906a14ea5ed1635921406c0387a"}, + {file = "typing_extensions-4.11.0.tar.gz", hash = "sha256:83f085bd5ca59c80295fc2a82ab5dac679cbe02b9f33f7d83af68e241bea51b0"}, ] [[package]] @@ -7659,13 +7831,13 @@ zstd = ["zstandard (>=0.18.0)"] [[package]] name = "virtualenv" -version = "20.25.1" +version = "20.26.1" description = "Virtual Python Environment builder" optional = false python-versions = ">=3.7" files = [ - {file = "virtualenv-20.25.1-py3-none-any.whl", hash = "sha256:961c026ac520bac5f69acb8ea063e8a4f071bcc9457b9c1f28f6b085c511583a"}, - {file = "virtualenv-20.25.1.tar.gz", hash = "sha256:e08e13ecdca7a0bd53798f356d5831434afa5b07b93f0abdf0797b7a06ffe197"}, + {file = "virtualenv-20.26.1-py3-none-any.whl", hash = "sha256:7aa9982a728ae5892558bff6a2839c00b9ed145523ece2274fad6f414690ae75"}, + {file = "virtualenv-20.26.1.tar.gz", hash = "sha256:604bfdceaeece392802e6ae48e69cec49168b9c5f4a44e483963f9242eb0e78b"}, ] [package.dependencies] @@ -7674,22 +7846,22 @@ filelock = ">=3.12.2,<4" platformdirs = ">=3.9.1,<5" [package.extras] -docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] +docs = ["furo (>=2023.7.26)", "proselint (>=0.13)", "sphinx (>=7.1.2,!=7.3)", "sphinx-argparse (>=0.4)", "sphinxcontrib-towncrier (>=0.2.1a0)", "towncrier (>=23.6)"] test = ["covdefaults (>=2.3)", "coverage (>=7.2.7)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7)", "packaging (>=23.1)", "pytest (>=7.4)", "pytest-env (>=0.8.2)", "pytest-freezer (>=0.4.8)", "pytest-mock (>=3.11.1)", "pytest-randomly (>=3.12)", "pytest-timeout (>=2.1)", "setuptools (>=68)", "time-machine (>=2.10)"] [[package]] name = "websocket-client" -version = "1.7.0" +version = "1.8.0" description = "WebSocket client for Python with low level API options" optional = false python-versions = ">=3.8" files = [ - {file = "websocket-client-1.7.0.tar.gz", hash = "sha256:10e511ea3a8c744631d3bd77e61eb17ed09304c413ad42cf6ddfa4c7787e8fe6"}, - {file = "websocket_client-1.7.0-py3-none-any.whl", hash = "sha256:f4c3d22fec12a2461427a29957ff07d35098ee2d976d3ba244e688b8b4057588"}, + {file = "websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526"}, + {file = "websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da"}, ] [package.extras] -docs = ["Sphinx (>=6.0)", "sphinx-rtd-theme (>=1.1.0)"] +docs = ["Sphinx (>=6.0)", "myst-parser (>=2.0.0)", "sphinx-rtd-theme (>=1.1.0)"] optional = ["python-socks", "wsaccel"] test = ["websockets"] @@ -7814,20 +7986,20 @@ multidict = ">=4.0" [[package]] name = "zipp" -version = "3.17.0" +version = "3.18.1" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, + {file = "zipp-3.18.1-py3-none-any.whl", hash = "sha256:206f5a15f2af3dbaee80769fb7dc6f249695e940acca08dfb2a4769fe61e538b"}, + {file = "zipp-3.18.1.tar.gz", hash = "sha256:2884ed22e7d8961de1c9a05142eb69a247f120291bc0206a00a7642f09b5b715"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" python-versions = "~3.11" -content-hash = "cb63112bfe7ee2b3fc194a422479f788c9a8027d445ea51a31f4ee20299beb53" +content-hash = "5f0a1b6f26faa3effeaa5393b73d9188be385a72c1d3b9befb3f03df3b38c86d" diff --git a/pyproject.toml b/pyproject.toml index 99a8602460..a25fcc1645 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,6 +21,7 @@ testpaths = [ "selfdrive/thermald", "selfdrive/test/longitudinal_maneuvers", "selfdrive/test/process_replay/test_fuzzy.py", + "selfdrive/updated", "system/camerad", "system/hardware/tici", "system/loggerd", @@ -82,11 +83,9 @@ documentation = "https://docs.comma.ai" python = "~3.11" aiohttp = "*" aiortc = "*" -casadi = "==3.6.3" cffi = "*" crcmod = "*" Cython = "*" -future-fstrings = "*" # for acados json-rpc = "*" libusb1 = "*" numpy = "*" @@ -109,6 +108,10 @@ spidev = { version = "*", platform = "linux" } sympy = "*" websocket_client = "*" +# acados deps +casadi = "*" +future-fstrings = "*" + # these should be removed markdown-it-py = "*" timezonefinder = "*" @@ -170,11 +173,14 @@ build-backend = "poetry.core.masonry.api" # https://beta.ruff.rs/docs/configuration/#using-pyprojecttoml [tool.ruff] +indent-width = 2 lint.select = ["E", "F", "W", "PIE", "C4", "ISC", "RUF008", "RUF100", "A", "B", "TID251"] lint.ignore = ["E741", "E402", "C408", "ISC003", "B027", "B024"] line-length = 160 target-version="py311" exclude = [ + "body", + "cereal", "panda", "opendbc", "rednose_repo", @@ -194,3 +200,5 @@ lint.flake8-implicit-str-concat.allow-multiline=false [tool.coverage.run] concurrency = ["multiprocessing", "thread"] +[tool.ruff.format] +quote-style = "preserve" diff --git a/rednose_repo b/rednose_repo index c5762e8bc6..72b3479bab 160000 --- a/rednose_repo +++ b/rednose_repo @@ -1 +1 @@ -Subproject commit c5762e8bc6f7338c7a30d2cd1cba8cc64e81ba19 +Subproject commit 72b3479bababc658f24cc7aa0dc8bb550f0474fc diff --git a/release/check-submodules.sh b/release/check-submodules.sh index 5f4e307e49..bff8d7a28f 100755 --- a/release/check-submodules.sh +++ b/release/check-submodules.sh @@ -1,7 +1,7 @@ #!/bin/bash while read hash submodule ref; do - git -C $submodule fetch --depth 1000 origin master + git -C $submodule fetch --depth 2000 origin master git -C $submodule branch -r --contains $hash | grep "origin/master" if [ "$?" -eq 0 ]; then echo "$submodule ok" diff --git a/release/files_common b/release/files_common index 880cbce0f4..131d61f2c0 100644 --- a/release/files_common +++ b/release/files_common @@ -52,7 +52,9 @@ release/* tools/__init__.py tools/lib/* -tools/bodyteleop/* +tools/bodyteleop/.gitignore +tools/bodyteleop/web.py +tools/bodyteleop/static/* tools/joystick/* tools/replay/*.cc tools/replay/*.h @@ -60,13 +62,16 @@ tools/replay/*.h selfdrive/__init__.py selfdrive/sentry.py selfdrive/tombstoned.py -selfdrive/updated.py selfdrive/statsd.py +selfdrive/updated/** + system/logmessaged.py system/micd.py system/version.py +selfdrive/SConscript + selfdrive/athena/__init__.py selfdrive/athena/athenad.py selfdrive/athena/manage_athenad.py @@ -88,11 +93,11 @@ selfdrive/boardd/panda.h selfdrive/boardd/spi.cc selfdrive/boardd/panda_comms.h selfdrive/boardd/panda_comms.cc -selfdrive/boardd/set_time.py selfdrive/boardd/pandad.py selfdrive/boardd/tests/test_boardd_loopback.py selfdrive/car/__init__.py +selfdrive/car/card.py selfdrive/car/docs_definitions.py selfdrive/car/car_helpers.py selfdrive/car/fingerprints.py @@ -194,7 +199,6 @@ system/hardware/tici/hardware.h system/hardware/tici/hardware.py system/hardware/tici/pins.py system/hardware/tici/agnos.py -system/hardware/tici/casync.py system/hardware/tici/agnos.json system/hardware/tici/amplifier.py system/hardware/tici/updater @@ -206,10 +210,13 @@ system/hardware/pc/hardware.py system/ubloxd/.gitignore system/ubloxd/SConscript +system/ubloxd/pigeond.py system/ubloxd/generated/* system/ubloxd/*.h system/ubloxd/*.cc +system/updated/* + selfdrive/locationd/__init__.py selfdrive/locationd/SConscript selfdrive/locationd/.gitignore @@ -265,7 +272,6 @@ system/sensord/SConscript system/sensord/sensors_qcom2.cc system/sensord/sensors/*.cc system/sensord/sensors/*.h -system/sensord/pigeond.py system/webrtc/__init__.py system/webrtc/webrtcd.py @@ -308,6 +314,8 @@ selfdrive/ui/qt/network/sunnylink/services/*.h selfdrive/ui/qt/offroad/*.cc selfdrive/ui/qt/offroad/*.h selfdrive/ui/qt/offroad/*.qml +selfdrive/ui/qt/onroad/*.cc +selfdrive/ui/qt/onroad/*.h selfdrive/ui/qt/offroad/sunnypilot/*.cc selfdrive/ui/qt/offroad/sunnypilot/*.h selfdrive/ui/qt/widgets/*.cc @@ -369,8 +377,6 @@ selfdrive/modeld/models/supercombo.onnx selfdrive/modeld/models/dmonitoring_model_q.dlc -selfdrive/modeld/models/navmodel_q.dlc - selfdrive/modeld/transforms/loadyuv.cc selfdrive/modeld/transforms/loadyuv.h selfdrive/modeld/transforms/loadyuv.cl @@ -586,7 +592,8 @@ opendbc/vw_golf_mk4.dbc opendbc/vw_mqb_2010.dbc opendbc/tesla_can.dbc -opendbc/tesla_radar.dbc +opendbc/tesla_radar_bosch_generated.dbc +opendbc/tesla_radar_continental_generated.dbc opendbc/tesla_powertrain.dbc tinygrad_repo/openpilot/compile2.py diff --git a/release/files_tici b/release/files_tici index 1771c45138..18860e20af 100644 --- a/release/files_tici +++ b/release/files_tici @@ -7,7 +7,7 @@ system/camerad/cameras/camera_qcom2.cc system/camerad/cameras/camera_qcom2.h system/camerad/cameras/camera_util.cc system/camerad/cameras/camera_util.h -system/camerad/cameras/real_debayer.cl +system/camerad/cameras/process_raw.cl system/qcomgpsd/* diff --git a/release/verify.sh b/release/verify.sh deleted file mode 100755 index ec5266bd81..0000000000 --- a/release/verify.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -set -e - -RED="\033[0;31m" -GREEN="\033[0;32m" -CLEAR="\033[0m" - -BRANCHES="devel release3" -for b in $BRANCHES; do - if git diff --quiet origin/$b origin/$b-staging && [ "$(git rev-parse origin/$b)" = "$(git rev-parse origin/$b-staging)" ]; then - printf "%-10s $GREEN ok $CLEAR\n" "$b" - else - printf "%-10s $RED mismatch $CLEAR\n" "$b" - fi -done diff --git a/scripts/cell.sh b/scripts/cell.sh index 3f31978af5..4ba007a532 100755 --- a/scripts/cell.sh +++ b/scripts/cell.sh @@ -1,3 +1,3 @@ #!/usr/bin/bash -nmcli connection modify --temporary lte ipv4.route-metric 1 ipv6.route-metric 1 -nmcli con up lte +nmcli connection modify --temporary esim ipv4.route-metric 1 ipv6.route-metric 1 +nmcli con up esim diff --git a/scripts/count_cars.py b/scripts/count_cars.py index 8c0892bb82..28057ddb04 100755 --- a/scripts/count_cars.py +++ b/scripts/count_cars.py @@ -2,10 +2,10 @@ from collections import Counter from pprint import pprint -from openpilot.selfdrive.car.docs import get_all_car_info +from openpilot.selfdrive.car.docs import get_all_car_docs if __name__ == "__main__": - cars = get_all_car_info() + cars = get_all_car_docs() make_count = Counter(l.make for l in cars) print("\n", "*" * 20, len(cars), "total", "*" * 20, "\n") pprint(make_count) diff --git a/scripts/launch_corolla.sh b/scripts/launch_corolla.sh index 146fbacf0a..4e5bca6ce5 100755 --- a/scripts/launch_corolla.sh +++ b/scripts/launch_corolla.sh @@ -2,6 +2,6 @@ DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" -export FINGERPRINT="TOYOTA COROLLA TSS2 2019" +export FINGERPRINT="TOYOTA_COROLLA_TSS2" export SKIP_FW_QUERY="1" $DIR/../launch_openpilot.sh diff --git a/scripts/sp_carname_generator.py b/scripts/sp_carname_generator.py index 185c53151f..27ecf8098b 100644 --- a/scripts/sp_carname_generator.py +++ b/scripts/sp_carname_generator.py @@ -8,6 +8,7 @@ from common.basedir import BASEDIR from selfdrive.car import gen_empty_fingerprint from selfdrive.car.car_helpers import interfaces from selfdrive.car.docs import get_all_footnotes +from openpilot.selfdrive.car.values import PLATFORMS UNSUPPORTED_BRANDS = ["body", "tesla"] @@ -18,26 +19,22 @@ def get_all_car_names() -> Dict[str, str]: car_names["=== Not Selected ==="] = "" - for model, car_info in get_interface_attr("CAR_INFO", combine_brands=True, exclude_brands=UNSUPPORTED_BRANDS).items(): - CP = interfaces[model][0].get_params( - model, - fingerprint=gen_empty_fingerprint(), - car_fw=[car.CarParams.CarFw(ecu="unknown")], - experimental_long=False, - docs=True - ) + for model, platform in PLATFORMS.items(): + car_docs = platform.config.car_docs + CP = interfaces[model][0].get_params(platform, fingerprint=gen_empty_fingerprint(), + car_fw=[car.CarParams.CarFw(ecu="unknown")], experimental_long=True, docs=True) - if CP.dashcamOnly or car_info is None: + if CP.dashcamOnly or not len(car_docs): continue - if not isinstance(car_info, list): - car_info = (car_info,) + if not isinstance(car_docs, list): + car_docs = (car_docs,) - for _car_info in car_info: - if not hasattr(_car_info, "row"): - _car_info.init_make(CP) - _car_info.init(CP, footnotes) - car_names[_car_info.name] = model + for _car_docs in car_docs: + if not hasattr(_car_docs, "row"): + _car_docs.init_make(CP) + _car_docs.init(CP, footnotes) + car_names[_car_docs.name] = model sorted_car_names = natsorted(car_names.keys(), key=lambda car: car.lower()) return {car_name: car_names[car_name] for car_name in sorted_car_names} diff --git a/scripts/stop_updater.sh b/scripts/stop_updater.sh index 4243d30e9f..7f82191823 100755 --- a/scripts/stop_updater.sh +++ b/scripts/stop_updater.sh @@ -1,7 +1,7 @@ #!/usr/bin/env sh # Stop updater -pkill -2 -f selfdrive.updated +pkill -2 -f selfdrive.updated.updated # Remove pending update rm -f /data/safe_staging/finalized/.overlay_consistent diff --git a/selfdrive/SConscript b/selfdrive/SConscript new file mode 100644 index 0000000000..6b72177d8e --- /dev/null +++ b/selfdrive/SConscript @@ -0,0 +1,7 @@ +SConscript(['boardd/SConscript']) +SConscript(['controls/lib/lateral_mpc_lib/SConscript']) +SConscript(['controls/lib/longitudinal_mpc_lib/SConscript']) +SConscript(['locationd/SConscript']) +SConscript(['navd/SConscript']) +SConscript(['modeld/SConscript']) +SConscript(['ui/SConscript']) \ No newline at end of file diff --git a/selfdrive/athena/athenad.py b/selfdrive/athena/athenad.py index 21c4d736a0..d5b1e37ce1 100755 --- a/selfdrive/athena/athenad.py +++ b/selfdrive/athena/athenad.py @@ -38,7 +38,7 @@ from openpilot.common.realtime import set_core_affinity from openpilot.system.hardware import HARDWARE, PC from openpilot.system.loggerd.xattr_cache import getxattr, setxattr from openpilot.common.swaglog import cloudlog -from openpilot.system.version import get_commit, get_normalized_origin, get_short_branch, get_version +from openpilot.system.version import get_build_metadata from openpilot.system.hardware.hw import Paths @@ -320,11 +320,12 @@ def getMessage(service: str, timeout: int = 1000) -> dict: @dispatcher.add_method def getVersion() -> dict[str, str]: + build_metadata = get_build_metadata() return { - "version": get_version(), - "remote": get_normalized_origin(), - "branch": get_short_branch(), - "commit": get_commit(), + "version": build_metadata.openpilot.version, + "remote": build_metadata.openpilot.git_normalized_origin, + "branch": build_metadata.channel, + "commit": build_metadata.openpilot.git_commit, } @@ -467,6 +468,10 @@ def startLocalProxy(global_end_event: threading.Event, remote_ws_uri: str, local cookie="jwt=" + identity_token, enable_multithread=True) + # Set TOS to keep connection responsive while under load. + # DSCP of 36/HDD_LINUX_AC_VI with the minimum delay flag + ws.sock.setsockopt(socket.IPPROTO_IP, socket.IP_TOS, 0x90) + ssock, csock = socket.socketpair() local_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) local_sock.connect(('127.0.0.1', local_port)) @@ -657,10 +662,12 @@ def stat_handler(end_event: threading.Event) -> None: def ws_proxy_recv(ws: WebSocket, local_sock: socket.socket, ssock: socket.socket, end_event: threading.Event, global_end_event: threading.Event) -> None: while not (end_event.is_set() or global_end_event.is_set()): try: - data = ws.recv() - if isinstance(data, str): - data = data.encode("utf-8") - local_sock.sendall(data) + r = select.select((ws.sock,), (), (), 30) + if r[0]: + data = ws.recv() + if isinstance(data, str): + data = data.encode("utf-8") + local_sock.sendall(data) except WebSocketTimeoutException: pass except Exception: @@ -670,6 +677,7 @@ def ws_proxy_recv(ws: WebSocket, local_sock: socket.socket, ssock: socket.socket cloudlog.debug("athena.ws_proxy_recv closing sockets") ssock.close() local_sock.close() + ws.close() cloudlog.debug("athena.ws_proxy_recv done closing sockets") end_event.set() diff --git a/selfdrive/athena/manage_athenad.py b/selfdrive/athena/manage_athenad.py index 486e426911..cda1c95cf7 100755 --- a/selfdrive/athena/manage_athenad.py +++ b/selfdrive/athena/manage_athenad.py @@ -7,35 +7,40 @@ from openpilot.common.params import Params from openpilot.selfdrive.manager.process import launcher from openpilot.common.swaglog import cloudlog from openpilot.system.hardware import HARDWARE -from openpilot.system.version import get_version, get_normalized_origin, get_short_branch, get_commit, is_dirty +from openpilot.system.version import get_build_metadata ATHENA_MGR_PID_PARAM = "AthenadPid" def main(): + manage_athenad("DongleId", ATHENA_MGR_PID_PARAM, 'athenad', 'selfdrive.athena.athenad') + + +def manage_athenad(dongle_id_param, pid_param, process_name, target): params = Params() - dongle_id = params.get("DongleId").decode('utf-8') + dongle_id = params.get(dongle_id_param).decode('utf-8') + build_metadata = get_build_metadata() + cloudlog.bind_global(dongle_id=dongle_id, - version=get_version(), - origin=get_normalized_origin(), - branch=get_short_branch(), - commit=get_commit(), - dirty=is_dirty(), + version=build_metadata.openpilot.version, + origin=build_metadata.openpilot.git_normalized_origin, + branch=build_metadata.channel, + commit=build_metadata.openpilot.git_commit, + dirty=build_metadata.openpilot.is_dirty, device=HARDWARE.get_device_type()) try: while 1: - cloudlog.info("starting athena daemon") - proc = Process(name='athenad', target=launcher, args=('selfdrive.athena.athenad', 'athenad')) + cloudlog.info(f"starting {process_name} daemon") + proc = Process(name=process_name, target=launcher, args=(target, process_name)) proc.start() proc.join() - cloudlog.event("athenad exited", exitcode=proc.exitcode) + cloudlog.event(f"{process_name} exited", exitcode=proc.exitcode) time.sleep(5) except Exception: - cloudlog.exception("manage_athenad.exception") + cloudlog.exception(f"manage_{process_name}.exception") finally: - params.remove(ATHENA_MGR_PID_PARAM) - + params.remove(pid_param) if __name__ == '__main__': main() diff --git a/selfdrive/athena/manage_sunnylinkd.py b/selfdrive/athena/manage_sunnylinkd.py index 788d9fdf5e..b778bb1497 100755 --- a/selfdrive/athena/manage_sunnylinkd.py +++ b/selfdrive/athena/manage_sunnylinkd.py @@ -1,42 +1,5 @@ #!/usr/bin/env python3 -#TODO: Add this to files_common to allow release to public - -import time -from multiprocessing import Process - -from openpilot.common.params import Params -from openpilot.selfdrive.manager.process import launcher -from openpilot.common.swaglog import cloudlog -from openpilot.system.hardware import HARDWARE -from openpilot.system.version import get_version, get_normalized_origin, get_short_branch, get_commit, is_dirty - -SUNNYLINK_MGR_PID_PARAM = "SunnylinkdPid" - - -def main(): - params = Params() - dongle_id = params.get("SunnylinkDongleId").decode('utf-8') - cloudlog.bind_global(dongle_id=dongle_id, - version=get_version(), - origin=get_normalized_origin(), - branch=get_short_branch(), - commit=get_commit(), - dirty=is_dirty(), - device=HARDWARE.get_device_type()) - - try: - while 1: - cloudlog.info("starting athena daemon") - proc = Process(name='sunnylinkd', target=launcher, args=('selfdrive.athena.sunnylinkd', 'sunnylinkd')) - proc.start() - proc.join() - cloudlog.event("sunnylinkd exited", exitcode=proc.exitcode) - time.sleep(5) - except Exception: - cloudlog.exception("manage_sunnylinkd.exception") - finally: - params.remove(SUNNYLINK_MGR_PID_PARAM) - +from selfdrive.athena.manage_athenad import manage_athenad if __name__ == '__main__': - main() + manage_athenad("SunnylinkDongleId", "SunnylinkdPid", 'sunnylinkd', 'selfdrive.athena.sunnylinkd') diff --git a/selfdrive/athena/sunnylinkd.py b/selfdrive/athena/sunnylinkd.py index bb9ae2ecae..9c26dd42a1 100755 --- a/selfdrive/athena/sunnylinkd.py +++ b/selfdrive/athena/sunnylinkd.py @@ -35,6 +35,7 @@ def handle_long_poll(ws: WebSocket, exit_event: threading.Event | None) -> None: threading.Thread(target=ws_recv, args=(ws, end_event), name='ws_recv'), threading.Thread(target=ws_send, args=(ws, end_event), name='ws_send'), threading.Thread(target=ws_ping, args=(ws, end_event), name='ws_ping'), + threading.Thread(target=ws_queue, args=(end_event,), name='ws_queue'), # threading.Thread(target=upload_handler, args=(end_event,), name='upload_handler'), # threading.Thread(target=log_handler, args=(end_event,), name='log_handler'), # threading.Thread(target=stat_handler, args=(end_event,), name='stat_handler'), @@ -60,23 +61,16 @@ def handle_long_poll(ws: WebSocket, exit_event: threading.Event | None) -> None: def ws_recv(ws: WebSocket, end_event: threading.Event) -> None: last_ping = int(time.monotonic() * 1e9) - resume_requested = False while not end_event.is_set(): - try: - if(not resume_requested): - sunnylink_api.resume_queued() - resume_requested = True - except Exception: - cloudlog.exception("sunnylinkd.resume_queued.exception") - resume_requested = False - try: opcode, data = ws.recv_data(control_frame=True) if opcode in (ABNF.OPCODE_TEXT, ABNF.OPCODE_BINARY): if opcode == ABNF.OPCODE_TEXT: data = data.decode("utf-8") recv_queue.put_nowait(data) + cloudlog.debug(f"sunnylinkd.ws_recv.recv {data}") elif opcode in (ABNF.OPCODE_PING, ABNF.OPCODE_PONG): + cloudlog.debug(f"sunnylinkd.ws_recv.pong {opcode}") last_ping = int(time.monotonic() * 1e9) Params().put("LastSunnylinkPingTime", str(last_ping)) except WebSocketTimeoutException: @@ -94,11 +88,30 @@ def ws_ping(ws: WebSocket, end_event: threading.Event) -> None: while not end_event.is_set(): try: ws.ping() + cloudlog.debug(f"sunnylinkd.ws_recv.ws_ping: Pinging") except Exception: cloudlog.exception("sunnylinkd.ws_ping.exception") end_event.set() time.sleep(RECONNECT_TIMEOUT_S * 0.8) # Sleep about 80% before a timeout +def ws_queue(end_event: threading.Event) -> None: + resume_requested = False + tries = 0 + + while not end_event.is_set() and not resume_requested: + try: + if not resume_requested: + cloudlog.debug(f"sunnylinkd.ws_queue.resume_queued") + sunnylink_api.resume_queued(timeout=29) + resume_requested = True + tries = 0 + except Exception: + cloudlog.exception("sunnylinkd.ws_queue.resume_queued.exception") + resume_requested = False + tries += 1 + time.sleep(backoff(tries)) # Wait for the backoff time before the next attempt + cloudlog.debug("Resume requested or end_event is set, exiting ws_queue thread") + @dispatcher.add_method def getParamsAllKeys() -> list[str]: diff --git a/selfdrive/athena/tests/helpers.py b/selfdrive/athena/tests/helpers.py index 3dd98f02c9..322e9d81dd 100644 --- a/selfdrive/athena/tests/helpers.py +++ b/selfdrive/athena/tests/helpers.py @@ -43,6 +43,8 @@ class MockApi(): class MockWebsocket(): + sock = socket.socket() + def __init__(self, recv_queue, send_queue): self.recv_queue = recv_queue self.send_queue = send_queue @@ -56,6 +58,9 @@ class MockWebsocket(): def send(self, data, opcode): self.send_queue.put_nowait((data, opcode)) + def close(self): + pass + class HTTPRequestHandler(http.server.SimpleHTTPRequestHandler): def do_PUT(self): diff --git a/selfdrive/boardd/boardd.cc b/selfdrive/boardd/boardd.cc index b2b59d3752..fcbf58999e 100644 --- a/selfdrive/boardd/boardd.cc +++ b/selfdrive/boardd/boardd.cc @@ -49,12 +49,6 @@ std::atomic ignition(false); ExitHandler do_exit; -static std::string get_time_str(const struct tm &time) { - char s[30] = {'\0'}; - std::strftime(s, std::size(s), "%Y-%m-%d %H:%M:%S", &time); - return s; -} - bool check_all_connected(const std::vector &pandas) { for (const auto& panda : pandas) { if (!panda->connected()) { @@ -65,36 +59,6 @@ bool check_all_connected(const std::vector &pandas) { return true; } -enum class SyncTimeDir { TO_PANDA, FROM_PANDA }; - -void sync_time(Panda *panda, SyncTimeDir dir) { - if (!panda->has_rtc) return; - - setenv("TZ", "UTC", 1); - struct tm sys_time = util::get_time(); - struct tm rtc_time = panda->get_rtc(); - - if (dir == SyncTimeDir::TO_PANDA) { - if (util::time_valid(sys_time)) { - // Write time to RTC if it looks reasonable - double seconds = difftime(mktime(&rtc_time), mktime(&sys_time)); - if (std::abs(seconds) > 1.1) { - panda->set_rtc(sys_time); - LOGW("Updating panda RTC. dt = %.2f System: %s RTC: %s", - seconds, get_time_str(sys_time).c_str(), get_time_str(rtc_time).c_str()); - } - } - } else if (dir == SyncTimeDir::FROM_PANDA) { - LOGW("System time: %s, RTC time: %s", get_time_str(sys_time).c_str(), get_time_str(rtc_time).c_str()); - - if (!util::time_valid(sys_time) && util::time_valid(rtc_time)) { - const struct timeval tv = {mktime(&rtc_time), 0}; - settimeofday(&tv, 0); - LOGE("System time wrong, setting from RTC."); - } - } -} - bool safety_setter_thread(std::vector pandas) { LOGD("Starting safety setter thread"); @@ -180,7 +144,7 @@ bool safety_setter_thread(std::vector pandas) { Panda *connect(std::string serial="", uint32_t index=0) { std::unique_ptr panda; try { - panda = std::make_unique(serial, (index * PANDA_BUS_CNT)); + panda = std::make_unique(serial, (index * PANDA_BUS_OFFSET)); } catch (std::exception &e) { return nullptr; } @@ -195,7 +159,6 @@ Panda *connect(std::string serial="", uint32_t index=0) { throw std::runtime_error("Panda firmware out of date. Run pandad.py to update."); } - sync_time(panda.get(), SyncTimeDir::FROM_PANDA); return panda.release(); } @@ -353,7 +316,6 @@ std::optional send_panda_states(PubMaster *pm, const std::vector ps.setControlsAllowed(health.controls_allowed_pkt); ps.setTxBufferOverflow(health.tx_buffer_overflow_pkt); ps.setRxBufferOverflow(health.rx_buffer_overflow_pkt); - ps.setGmlanSendErrs(health.gmlan_send_errs_pkt); ps.setPandaType(panda->hw_type); ps.setSafetyModel(cereal::CarParams::SafetyModel(health.safety_mode_pkt)); ps.setSafetyParam(health.safety_param_pkt); @@ -581,11 +543,6 @@ void peripheral_control_thread(Panda *panda, bool no_fan_control) { panda->set_ir_pwr(ir_pwr); prev_ir_pwr = ir_pwr; } - - // Write to rtc once per minute when no ignition present - if (!ignition && (sm.frame % 120 == 1)) { - sync_time(panda, SyncTimeDir::TO_PANDA); - } } } diff --git a/selfdrive/boardd/panda.cc b/selfdrive/boardd/panda.cc index e075887a4d..a2e5574090 100644 --- a/selfdrive/boardd/panda.cc +++ b/selfdrive/boardd/panda.cc @@ -25,10 +25,6 @@ Panda::Panda(std::string serial, uint32_t bus_offset) : bus_offset(bus_offset) { } hw_type = get_hw_type(); - has_rtc = (hw_type == cereal::PandaState::PandaType::UNO) || - (hw_type == cereal::PandaState::PandaType::DOS) || - (hw_type == cereal::PandaState::PandaType::TRES); - can_reset_communications(); return; @@ -77,41 +73,6 @@ cereal::PandaState::PandaType Panda::get_hw_type() { return (cereal::PandaState::PandaType)(hw_query[0]); } -void Panda::set_rtc(struct tm sys_time) { - // tm struct has year defined as years since 1900 - handle->control_write(0xa1, (uint16_t)(1900 + sys_time.tm_year), 0); - handle->control_write(0xa2, (uint16_t)(1 + sys_time.tm_mon), 0); - handle->control_write(0xa3, (uint16_t)sys_time.tm_mday, 0); - // handle->control_write(0xa4, (uint16_t)(1 + sys_time.tm_wday), 0); - handle->control_write(0xa5, (uint16_t)sys_time.tm_hour, 0); - handle->control_write(0xa6, (uint16_t)sys_time.tm_min, 0); - handle->control_write(0xa7, (uint16_t)sys_time.tm_sec, 0); -} - -struct tm Panda::get_rtc() { - struct __attribute__((packed)) timestamp_t { - uint16_t year; // Starts at 0 - uint8_t month; - uint8_t day; - uint8_t weekday; - uint8_t hour; - uint8_t minute; - uint8_t second; - } rtc_time = {0}; - - handle->control_read(0xa0, 0, 0, (unsigned char*)&rtc_time, sizeof(rtc_time)); - - struct tm new_time = { 0 }; - new_time.tm_year = rtc_time.year - 1900; // tm struct has year defined as years since 1900 - new_time.tm_mon = rtc_time.month - 1; - new_time.tm_mday = rtc_time.day; - new_time.tm_hour = rtc_time.hour; - new_time.tm_min = rtc_time.minute; - new_time.tm_sec = rtc_time.second; - - return new_time; -} - void Panda::set_fan_speed(uint16_t fan_speed) { handle->control_write(0xb1, fan_speed, 0); } @@ -211,7 +172,7 @@ void Panda::pack_can_buffer(const capnp::List::Reader &can_data for (auto cmsg : can_data_list) { // check if the message is intended for this panda uint8_t bus = cmsg.getSrc(); - if (bus < bus_offset || bus >= (bus_offset + PANDA_BUS_CNT)) { + if (bus < bus_offset || bus >= (bus_offset + PANDA_BUS_OFFSET)) { continue; } auto can_data = cmsg.getDat(); @@ -284,6 +245,13 @@ bool Panda::unpack_can_buffer(uint8_t *data, uint32_t &size, std::vector Panda: return panda -def panda_sort_cmp(a: Panda, b: Panda): - a_type = a.get_type() - b_type = b.get_type() - - # make sure the internal one is always first - if a.is_internal() and not b.is_internal(): - return -1 - if not a.is_internal() and b.is_internal(): - return 1 - - # sort by hardware type - if a_type != b_type: - return a_type < b_type - - # last resort: sort by serial number - return a.get_usb_serial() < b.get_usb_serial() - - def main() -> NoReturn: count = 0 first_run = True @@ -137,7 +117,10 @@ def main() -> NoReturn: no_internal_panda_count = 0 # sort pandas to have deterministic order - pandas.sort(key=cmp_to_key(panda_sort_cmp)) + # * the internal one is always first + # * then sort by hardware type + # * as a last resort, sort by serial number + pandas.sort(key=lambda x: (not x.is_internal(), x.get_type(), x.get_usb_serial())) panda_serials = [p.get_usb_serial() for p in pandas] # log panda fw versions @@ -154,16 +137,9 @@ def main() -> NoReturn: cloudlog.event("panda.som_reset_triggered", health=health, serial=panda.get_usb_serial()) if first_run: - if panda.is_internal(): - # update time from RTC - set_time(cloudlog) - # reset panda to ensure we're in a good state cloudlog.info(f"Resetting panda {panda.get_usb_serial()}") - if panda.is_internal(): - HARDWARE.reset_internal_panda() - else: - panda.reset(reconnect=False) + panda.reset(reconnect=True) for p in pandas: p.close() diff --git a/selfdrive/boardd/set_time.py b/selfdrive/boardd/set_time.py deleted file mode 100755 index fe17f64e82..0000000000 --- a/selfdrive/boardd/set_time.py +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env python3 -import os -import datetime -from panda import Panda - -from openpilot.common.time import MIN_DATE - -def set_time(logger): - sys_time = datetime.datetime.today() - if sys_time > MIN_DATE: - logger.info("System time valid") - return - - try: - ps = Panda.list() - if len(ps) == 0: - logger.error("Failed to set time, no pandas found") - return - - for s in ps: - with Panda(serial=s) as p: - if not p.is_internal(): - continue - - # Set system time from panda RTC time - panda_time = p.get_datetime() - if panda_time > MIN_DATE: - logger.info(f"adjusting time from '{sys_time}' to '{panda_time}'") - os.system(f"TZ=UTC date -s '{panda_time}'") - break - except Exception: - logger.exception("Failed to fetch time from panda") - -if __name__ == "__main__": - import logging - logging.basicConfig(level=logging.DEBUG) - - set_time(logging) diff --git a/selfdrive/boardd/spi.cc b/selfdrive/boardd/spi.cc index d11e955c49..e02252018f 100644 --- a/selfdrive/boardd/spi.cc +++ b/selfdrive/boardd/spi.cc @@ -268,7 +268,7 @@ int PandaSpiHandle::wait_for_ack(uint8_t ack, uint8_t tx, unsigned int timeout, tx_buf[0] = tx; while (true) { - int ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &transfer); + int ret = lltransfer(transfer); if (ret < 0) { LOGE("SPI: failed to send ACK request"); return ret; @@ -291,6 +291,32 @@ int PandaSpiHandle::wait_for_ack(uint8_t ack, uint8_t tx, unsigned int timeout, return 0; } +int PandaSpiHandle::lltransfer(spi_ioc_transfer &t) { + static const double err_prob = std::stod(util::getenv("SPI_ERR_PROB", "-1")); + + if (err_prob > 0) { + if ((static_cast(rand()) / RAND_MAX) < err_prob) { + printf("transfer len error\n"); + t.len = rand() % SPI_BUF_SIZE; + } + if ((static_cast(rand()) / RAND_MAX) < err_prob && t.tx_buf != (uint64_t)NULL) { + printf("corrupting TX\n"); + memset((uint8_t*)t.tx_buf, (uint8_t)(rand() % 256), rand() % (t.len+1)); + } + } + + int ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &t); + + if (err_prob > 0) { + if ((static_cast(rand()) / RAND_MAX) < err_prob && t.rx_buf != (uint64_t)NULL) { + printf("corrupting RX\n"); + memset((uint8_t*)t.rx_buf, (uint8_t)(rand() % 256), rand() % (t.len+1)); + } + } + + return ret; +} + int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx_len, uint8_t *rx_data, uint16_t max_rx_len, unsigned int timeout) { int ret; uint16_t rx_data_len; @@ -316,7 +342,7 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx memcpy(tx_buf, &header, sizeof(header)); add_checksum(tx_buf, sizeof(header)); transfer.len = sizeof(header) + 1; - ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &transfer); + ret = lltransfer(transfer); if (ret < 0) { LOGE("SPI: failed to send header"); goto transfer_fail; @@ -334,7 +360,7 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx } add_checksum(tx_buf, tx_len); transfer.len = tx_len + 1; - ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &transfer); + ret = lltransfer(transfer); if (ret < 0) { LOGE("SPI: failed to send data"); goto transfer_fail; @@ -355,7 +381,7 @@ int PandaSpiHandle::spi_transfer(uint8_t endpoint, uint8_t *tx_data, uint16_t tx transfer.len = rx_data_len + 1; transfer.rx_buf = (uint64_t)(rx_buf + 2 + 1); - ret = util::safe_ioctl(spi_fd, SPI_IOC_MESSAGE(1), &transfer); + ret = lltransfer(transfer); if (ret < 0) { LOGE("SPI: failed to read rx data"); goto transfer_fail; diff --git a/selfdrive/boardd/tests/test_boardd_usbprotocol.cc b/selfdrive/boardd/tests/test_boardd_usbprotocol.cc index 86476d05cd..aa67e8cf8c 100644 --- a/selfdrive/boardd/tests/test_boardd_usbprotocol.cc +++ b/selfdrive/boardd/tests/test_boardd_usbprotocol.cc @@ -40,7 +40,7 @@ PandaTest::PandaTest(uint32_t bus_offset_, int can_list_size, cereal::PandaState uint32_t id = util::random_int(0, std::size(dlc_to_len) - 1); const std::string &dat = test_data[dlc_to_len[id]]; can.setAddress(i); - can.setSrc(util::random_int(0, 3) + bus_offset); + can.setSrc(util::random_int(0, 2) + bus_offset); can.setDat(kj::ArrayPtr((uint8_t *)dat.data(), dat.size())); total_pakets_size += sizeof(can_header) + dat.size(); } diff --git a/selfdrive/boardd/tests/test_pandad.py b/selfdrive/boardd/tests/test_pandad.py index 21cc0b5f37..3434be3fe4 100755 --- a/selfdrive/boardd/tests/test_pandad.py +++ b/selfdrive/boardd/tests/test_pandad.py @@ -23,23 +23,28 @@ class TestPandad(unittest.TestCase): if len(Panda.list()) == 0: self._run_test(60) + self.spi = HARDWARE.get_device_type() != 'tici' + def tearDown(self): managed_processes['pandad'].stop() - def _run_test(self, timeout=30): + def _run_test(self, timeout=30) -> float: + st = time.monotonic() + sm = messaging.SubMaster(['pandaStates']) + managed_processes['pandad'].start() - - sm = messaging.SubMaster(['peripheralState']) - for _ in range(timeout*10): + while (time.monotonic() - st) < timeout: sm.update(100) - if sm['peripheralState'].pandaType != log.PandaState.PandaType.unknown: + if len(sm['pandaStates']) and sm['pandaStates'][0].pandaType != log.PandaState.PandaType.unknown: break - + dt = time.monotonic() - st managed_processes['pandad'].stop() - if sm['peripheralState'].pandaType == log.PandaState.PandaType.unknown: + if len(sm['pandaStates']) == 0 or sm['pandaStates'][0].pandaType == log.PandaState.PandaType.unknown: raise Exception("boardd failed to start") + return dt + def _go_to_dfu(self): HARDWARE.recover_internal_panda() assert Panda.wait_for_dfu(None, 10) @@ -88,14 +93,23 @@ class TestPandad(unittest.TestCase): assert any(Panda(s).is_internal() for s in Panda.list()) def test_best_case_startup_time(self): - # run once so we're setup + # run once so we're up to date self._run_test(60) - # should be fast this time - self._run_test(8) + ts = [] + for _ in range(10): + # should be nearly instant this time + dt = self._run_test(5) + ts.append(dt) + + # 5s for USB (due to enumeration) + # - 0.2s pandad -> boardd + # - plus some buffer + assert 0.1 < (sum(ts)/len(ts)) < (0.5 if self.spi else 5.0) + print("startup times", ts, sum(ts) / len(ts)) def test_protocol_version_check(self): - if HARDWARE.get_device_type() == 'tici': + if not self.spi: raise unittest.SkipTest("SPI test") # flash old fw fn = os.path.join(HERE, "bootstub.panda_h7_spiv0.bin") diff --git a/selfdrive/car/CARS_template.md b/selfdrive/car/CARS_template.md index ab4d231fa7..2f49e79b81 100644 --- a/selfdrive/car/CARS_template.md +++ b/selfdrive/car/CARS_template.md @@ -12,12 +12,12 @@ A supported vehicle is one that just works when you install a comma device. All supported cars provide a better experience than any stock system. Supported vehicles reference the US market unless otherwise specified. -# {{all_car_info | length}} Supported Cars +# {{all_car_docs | length}} Supported Cars |{{Column | map(attribute='value') | join('|') | replace(hardware_col_name, wide_hardware_col_name)}}| |---|---|---|{% for _ in range((Column | length) - 3) %}{{':---:|'}}{% endfor +%} -{% for car_info in all_car_info %} -|{% for column in Column %}{{car_info.get_column(column, star_icon, video_icon, footnote_tag)}}|{% endfor %} +{% for car_docs in all_car_docs %} +|{% for column in Column %}{{car_docs.get_column(column, star_icon, video_icon, footnote_tag)}}|{% endfor %} {% endfor %} @@ -65,7 +65,9 @@ openpilot does not yet support these Toyota models due to a new message authenti * Toyota Venza 2021+ * Toyota Sequoia 2023+ * Toyota Tundra 2022+ +* Toyota Highlander 2024+ * Toyota Corolla Cross 2022+ (only US model) +* Toyota Camry 2025+ * Lexus NX 2022+ * Toyota bZ4x 2023+ * Subaru Solterra 2023+ diff --git a/selfdrive/car/__init__.py b/selfdrive/car/__init__.py index 8a7046b1f4..acba3e8df8 100644 --- a/selfdrive/car/__init__.py +++ b/selfdrive/car/__init__.py @@ -1,13 +1,15 @@ # functions common among cars from collections import namedtuple -from dataclasses import dataclass, field, replace -from enum import ReprEnum +from dataclasses import dataclass +from enum import IntFlag, ReprEnum, EnumType +from dataclasses import replace import capnp from cereal import car from openpilot.common.numpy_fast import clip, interp -from openpilot.selfdrive.car.docs_definitions import CarInfo +from openpilot.common.utils import Freezable +from openpilot.selfdrive.car.docs_definitions import CarDocs # kg of standard extra cargo to count for drive, gas, etc... @@ -249,26 +251,32 @@ class CanSignalRateCalculator: return self.rate -CarInfos = CarInfo | list[CarInfo] - - @dataclass(frozen=True, kw_only=True) class CarSpecs: - mass: float - wheelbase: float + mass: float # kg, curb weight + wheelbase: float # meters steerRatio: float - centerToFrontRatio: float = field(default=0.5) - minSteerSpeed: float = field(default=0.) - minEnableSpeed: float = field(default=-1.) + centerToFrontRatio: float = 0.5 + minSteerSpeed: float = 0.0 # m/s + minEnableSpeed: float = -1.0 # m/s + tireStiffnessFactor: float = 1.0 + + def override(self, **kwargs): + return replace(self, **kwargs) -@dataclass(frozen=True, order=True) -class PlatformConfig: - platform_str: str - car_info: CarInfos +@dataclass(order=True) +class PlatformConfig(Freezable): + car_docs: list[CarDocs] + specs: CarSpecs + dbc_dict: DbcDict - specs: CarSpecs | None = None + flags: int = 0 + + spFlags: int = 0 + + platform_str: str | None = None def __hash__(self) -> int: return hash(self.platform_str) @@ -276,8 +284,23 @@ class PlatformConfig: def override(self, **kwargs): return replace(self, **kwargs) + def init(self): + pass -class Platforms(str, ReprEnum): + def __post_init__(self): + self.init() + + +class PlatformsType(EnumType): + def __new__(metacls, cls, bases, classdict, *, boundary=None, _simple=False, **kwds): + for key in classdict._member_names.keys(): + cfg: PlatformConfig = classdict[key] + cfg.platform_str = key + cfg.freeze() + return super().__new__(metacls, cls, bases, classdict, boundary=boundary, _simple=_simple, **kwds) + + +class Platforms(str, ReprEnum, metaclass=PlatformsType): config: PlatformConfig def __new__(cls, platform_config: PlatformConfig): @@ -286,10 +309,37 @@ class Platforms(str, ReprEnum): member._value_ = platform_config.platform_str return member + def __repr__(self): + return f"<{self.__class__.__name__}.{self.name}>" + @classmethod def create_dbc_map(cls) -> dict[str, DbcDict]: return {p: p.config.dbc_dict for p in cls} @classmethod - def create_carinfo_map(cls) -> dict[str, CarInfos]: - return {p: p.config.car_info for p in cls} + def with_flags(cls, flags: IntFlag) -> set['Platforms']: + return {p for p in cls if p.config.flags & flags} + + @classmethod + def without_flags(cls, flags: IntFlag) -> set['Platforms']: + return {p for p in cls if not (p.config.flags & flags)} + + @classmethod + def with_sp_flags(cls, spFlags: IntFlag) -> set['Platforms']: + return {p for p in cls if p.config.spFlags & spFlags} + + @classmethod + def without_sp_flags(cls, spFlags: IntFlag) -> set['Platforms']: + return {p for p in cls if not (p.config.spFlags & spFlags)} + + @classmethod + def print_debug(cls, flags): + platforms_with_flag = defaultdict(list) + for flag in flags: + for platform in cls: + if platform.config.flags & flag: + assert flag.name is not None + platforms_with_flag[flag.name].append(platform) + + for flag, platforms in platforms_with_flag.items(): + print(f"{flag:32s}: {', '.join(p.name for p in platforms)}") diff --git a/selfdrive/car/body/carcontroller.py b/selfdrive/car/body/carcontroller.py index d15f11d3a4..db34320caa 100644 --- a/selfdrive/car/body/carcontroller.py +++ b/selfdrive/car/body/carcontroller.py @@ -4,6 +4,7 @@ from openpilot.common.realtime import DT_CTRL from opendbc.can.packer import CANPacker from openpilot.selfdrive.car.body import bodycan from openpilot.selfdrive.car.body.values import SPEED_FROM_RPM +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.pid import PIDController @@ -14,7 +15,7 @@ MAX_POS_INTEGRATOR = 0.2 # meters MAX_TURN_INTEGRATOR = 0.1 # meters -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.frame = 0 self.packer = CANPacker(dbc_name) diff --git a/selfdrive/car/body/fingerprints.py b/selfdrive/car/body/fingerprints.py index 6efaabc137..ab7a5f8d7b 100644 --- a/selfdrive/car/body/fingerprints.py +++ b/selfdrive/car/body/fingerprints.py @@ -8,13 +8,13 @@ Ecu = car.CarParams.Ecu FINGERPRINTS = { - CAR.BODY: [{ + CAR.COMMA_BODY: [{ 513: 8, 516: 8, 514: 3, 515: 4 }], } FW_VERSIONS = { - CAR.BODY: { + CAR.COMMA_BODY: { (Ecu.engine, 0x720, None): [ b'0.0.01', b'0.3.00a', diff --git a/selfdrive/car/body/interface.py b/selfdrive/car/body/interface.py index 12a2d5f304..f797a7ecf8 100644 --- a/selfdrive/car/body/interface.py +++ b/selfdrive/car/body/interface.py @@ -14,14 +14,10 @@ class CarInterface(CarInterfaceBase): ret.minSteerSpeed = -math.inf ret.maxLateralAccel = math.inf # TODO: set to a reasonable value - ret.steerRatio = 0.5 ret.steerLimitTimer = 1.0 ret.steerActuatorDelay = 0. - ret.mass = 9 - ret.wheelbase = 0.406 ret.wheelSpeedFactor = SPEED_FROM_RPM - ret.centerToFront = ret.wheelbase * 0.44 ret.radarUnavailable = True ret.openpilotLongitudinalControl = True @@ -41,6 +37,3 @@ class CarInterface(CarInterfaceBase): self.frame += 1 return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/body/values.py b/selfdrive/car/body/values.py index 441905f28b..a1195f7cb5 100644 --- a/selfdrive/car/body/values.py +++ b/selfdrive/car/body/values.py @@ -1,6 +1,6 @@ from cereal import car -from openpilot.selfdrive.car import PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarInfo +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car.docs_definitions import CarDocs from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -20,9 +20,9 @@ class CarControllerParams: class CAR(Platforms): - BODY = PlatformConfig( - "COMMA BODY", - CarInfo("comma body", package="All"), + COMMA_BODY = PlatformConfig( + [CarDocs("comma body", package="All")], + CarSpecs(mass=9, wheelbase=0.406, steerRatio=0.5, centerToFrontRatio=0.44), dbc_dict('comma_body', None), ) @@ -37,5 +37,4 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) -CAR_INFO = CAR.create_carinfo_map() DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/car_helpers.py b/selfdrive/car/car_helpers.py index 50b484e8ab..ff38e0489d 100644 --- a/selfdrive/car/car_helpers.py +++ b/selfdrive/car/car_helpers.py @@ -8,15 +8,15 @@ from collections.abc import Callable from cereal import car from openpilot.common.params import Params from openpilot.common.basedir import BASEDIR -from openpilot.selfdrive.car.values import PLATFORMS -from openpilot.system.version import is_comma_remote, is_tested_branch from openpilot.selfdrive.car.interfaces import get_interface_attr from openpilot.selfdrive.car.fingerprints import eliminate_incompatible_cars, all_legacy_fingerprint_cars from openpilot.selfdrive.car.vin import get_vin, is_valid_vin, VIN_UNKNOWN from openpilot.selfdrive.car.fw_versions import get_fw_versions_ordered, get_present_ecus, match_fw_to_car, set_obd_multiplexing +from openpilot.selfdrive.car.mock.values import CAR as MOCK from openpilot.common.swaglog import cloudlog import cereal.messaging as messaging from openpilot.selfdrive.car import gen_empty_fingerprint +from openpilot.system.version import get_build_metadata import openpilot.selfdrive.sentry as sentry FRAME_FINGERPRINT = 100 # 1s @@ -25,7 +25,8 @@ EventName = car.CarEvent.EventName def get_startup_event(car_recognized, controller_available, fw_seen): - if is_comma_remote() and is_tested_branch(): + build_metadata = get_build_metadata() + if build_metadata.openpilot.comma_remote and build_metadata.tested_channel: event = EventName.startup else: event = EventName.startupMaster @@ -52,17 +53,8 @@ def load_interfaces(brand_names): for brand_name in brand_names: path = f'openpilot.selfdrive.car.{brand_name}' CarInterface = __import__(path + '.interface', fromlist=['CarInterface']).CarInterface - - if os.path.exists(BASEDIR + '/' + path.replace('.', '/') + '/carstate.py'): - CarState = __import__(path + '.carstate', fromlist=['CarState']).CarState - else: - CarState = None - - if os.path.exists(BASEDIR + '/' + path.replace('.', '/') + '/carcontroller.py'): - CarController = __import__(path + '.carcontroller', fromlist=['CarController']).CarController - else: - CarController = None - + CarState = __import__(path + '.carstate', fromlist=['CarState']).CarState + CarController = __import__(path + '.carcontroller', fromlist=['CarController']).CarController for model_name in brand_names[brand_name]: ret[model_name] = (CarInterface, CarController, CarState) return ret @@ -152,10 +144,10 @@ def fingerprint(logcan, sendcan, num_pandas): # VIN query only reliably works through OBDII vin_rx_addr, vin_rx_bus, vin = get_vin(logcan, sendcan, (0, 1)) ecu_rx_addrs = get_present_ecus(logcan, sendcan, num_pandas=num_pandas) - car_fw = get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs, num_pandas=num_pandas) + car_fw = get_fw_versions_ordered(logcan, sendcan, vin, ecu_rx_addrs, num_pandas=num_pandas) cached = False - exact_fw_match, fw_candidates = match_fw_to_car(car_fw) + exact_fw_match, fw_candidates = match_fw_to_car(car_fw, vin) else: vin_rx_addr, vin_rx_bus, vin = -1, -1, VIN_UNKNOWN exact_fw_match, fw_candidates, car_fw = True, set(), [] @@ -206,9 +198,12 @@ def fingerprint(logcan, sendcan, num_pandas): fw_count=len(car_fw), ecu_responses=list(ecu_rx_addrs), vin_rx_addr=vin_rx_addr, vin_rx_bus=vin_rx_bus, fingerprints=repr(finger), fw_query_time=fw_query_time, error=True) - car_platform = PLATFORMS.get(car_fingerprint, car_fingerprint) + return car_fingerprint, finger, vin, car_fw, source, exact_match - return car_platform, finger, vin, car_fw, source, exact_match + +def get_car_interface(CP): + CarInterface, CarController, CarState = interfaces[CP.carFingerprint] + return CarInterface(CP, CarController, CarState) def is_connected_to_internet(timeout=5): @@ -253,31 +248,31 @@ def get_car(logcan, sendcan, experimental_long_allowed, num_pandas=1): if candidate is None: cloudlog.event("car doesn't match any fingerprints", fingerprints=repr(fingerprints), error=True) - candidate = "mock" + candidate = "MOCK" y = threading.Thread(target=crash_log2, args=(fingerprints, car_fw,)) y.start() - if candidate != "mock": + if candidate != "MOCK": x = threading.Thread(target=crash_log, args=(candidate,)) x.start() - CarInterface, CarController, CarState = interfaces[candidate] + CarInterface, _, _ = interfaces[candidate] CP = CarInterface.get_params(candidate, fingerprints, car_fw, experimental_long_allowed, docs=False) CP.carVin = vin CP.carFw = car_fw CP.fingerprintSource = source CP.fuzzyFingerprint = not exact_match - return CarInterface(CP, CarController, CarState), CP + return get_car_interface(CP), CP -def write_car_param(fingerprint="mock"): +def write_car_param(platform=MOCK.MOCK): params = Params() - CarInterface, _, _ = interfaces[fingerprint] - CP = CarInterface.get_non_essential_params(fingerprint) + CarInterface, _, _ = interfaces[platform] + CP = CarInterface.get_non_essential_params(platform) params.put("CarParams", CP.to_bytes()) def get_demo_car_params(): - fingerprint="mock" - CarInterface, _, _ = interfaces[fingerprint] - CP = CarInterface.get_non_essential_params(fingerprint) + platform = MOCK.MOCK + CarInterface, _, _ = interfaces[platform] + CP = CarInterface.get_non_essential_params(platform) return CP diff --git a/selfdrive/car/card.py b/selfdrive/car/card.py new file mode 100755 index 0000000000..0f753fb1a5 --- /dev/null +++ b/selfdrive/car/card.py @@ -0,0 +1,150 @@ +#!/usr/bin/env python3 +import os +import time + +import cereal.messaging as messaging + +from cereal import car + +from panda import ALTERNATIVE_EXPERIENCE + +from openpilot.common.params import Params +from openpilot.common.realtime import DT_CTRL + +from openpilot.selfdrive.boardd.boardd import can_list_to_can_capnp +from openpilot.selfdrive.car.car_helpers import get_car, get_one_can +from openpilot.selfdrive.car.interfaces import CarInterfaceBase + +REPLAY = "REPLAY" in os.environ + + +class CarD: + CI: CarInterfaceBase + CS: car.CarState + + def __init__(self, CI=None): + self.can_sock = messaging.sub_sock('can', timeout=20) + self.sm = messaging.SubMaster(['pandaStates']) + self.pm = messaging.PubMaster(['sendcan', 'carState', 'carParams', 'carOutput']) + + self.can_rcv_timeout_counter = 0 # consecutive timeout count + self.can_rcv_cum_timeout_counter = 0 # cumulative timeout count + + self.CC_prev = car.CarControl.new_message() + + self.last_actuators = None + + self.params = Params() + + if CI is None: + # wait for one pandaState and one CAN packet + print("Waiting for CAN messages...") + get_one_can(self.can_sock) + + num_pandas = len(messaging.recv_one_retry(self.sm.sock['pandaStates']).pandaStates) + experimental_long_allowed = self.params.get_bool("ExperimentalLongitudinalEnabled") + self.CI, self.CP = get_car(self.can_sock, self.pm.sock['sendcan'], experimental_long_allowed, num_pandas) + else: + self.CI, self.CP = CI, CI.CP + + # set alternative experiences from parameters + disengage_on_accelerator = self.params.get_bool("DisengageOnAccelerator") + enable_mads = self.params.get_bool("EnableMads") + mads_disengage_lateral_on_brake = self.params.get_bool("DisengageLateralOnBrake") + mads_dlob = enable_mads and mads_disengage_lateral_on_brake + mads_ndlob = enable_mads and not mads_disengage_lateral_on_brake + self.CP.alternativeExperience = 0 + if not disengage_on_accelerator: + self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS + if mads_dlob: + self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ENABLE_MADS + elif mads_ndlob: + self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.MADS_DISABLE_DISENGAGE_LATERAL_ON_BRAKE + + if self.CP.customStockLongAvailable and self.CP.pcmCruise and self.params.get_bool("CustomStockLong"): + self.CP.pcmCruiseSpeed = False + + openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle") + + controller_available = self.CI.CC is not None and openpilot_enabled_toggle and not self.CP.dashcamOnly + + self.CP.passive = not controller_available or self.CP.dashcamOnly + if self.CP.passive: + safety_config = car.CarParams.SafetyConfig.new_message() + safety_config.safetyModel = car.CarParams.SafetyModel.noOutput + self.CP.safetyConfigs = [safety_config] + + # Write previous route's CarParams + prev_cp = self.params.get("CarParamsPersistent") + if prev_cp is not None: + self.params.put("CarParamsPrevRoute", prev_cp) + + # Write CarParams for controls and radard + cp_bytes = self.CP.to_bytes() + self.params.put("CarParams", cp_bytes) + self.params.put_nonblocking("CarParamsCache", cp_bytes) + self.params.put_nonblocking("CarParamsPersistent", cp_bytes) + + def initialize(self): + """Initialize CarInterface, once controls are ready""" + self.CI.init(self.CP, self.can_sock, self.pm.sock['sendcan']) + + def state_update(self): + """carState update loop, driven by can""" + + # Update carState from CAN + can_strs = messaging.drain_sock_raw(self.can_sock, wait_for_one=True) + self.CS = self.CI.update(self.CC_prev, can_strs) + + self.sm.update(0) + + can_rcv_valid = len(can_strs) > 0 + + # Check for CAN timeout + if not can_rcv_valid: + self.can_rcv_timeout_counter += 1 + self.can_rcv_cum_timeout_counter += 1 + else: + self.can_rcv_timeout_counter = 0 + + self.can_rcv_timeout = self.can_rcv_timeout_counter >= 5 + + if can_rcv_valid and REPLAY: + self.can_log_mono_time = messaging.log_from_bytes(can_strs[0]).logMonoTime + + self.state_publish() + + return self.CS + + def state_publish(self): + """carState and carParams publish loop""" + + # carState + cs_send = messaging.new_message('carState') + cs_send.valid = self.CS.canValid + cs_send.carState = self.CS + self.pm.send('carState', cs_send) + + # carParams - logged every 50 seconds (> 1 per segment) + if (self.sm.frame % int(50. / DT_CTRL) == 0): + cp_send = messaging.new_message('carParams') + cp_send.valid = True + cp_send.carParams = self.CP + self.pm.send('carParams', cp_send) + + # publish new carOutput + co_send = messaging.new_message('carOutput') + co_send.valid = True + if self.last_actuators is not None: + co_send.carOutput.actuatorsOutput = self.last_actuators + self.pm.send('carOutput', co_send) + + def controls_update(self, CC: car.CarControl): + """control update loop, driven by carControl""" + + # send car controls over can + now_nanos = self.can_log_mono_time if REPLAY else int(time.monotonic() * 1e9) + self.last_actuators, can_sends = self.CI.apply(CC, now_nanos) + self.pm.send('sendcan', can_list_to_can_capnp(can_sends, msgtype='sendcan', valid=self.CS.canValid)) + + self.CC_prev = CC diff --git a/selfdrive/car/chrysler/carcontroller.py b/selfdrive/car/chrysler/carcontroller.py index cb365d56da..94427baa8a 100644 --- a/selfdrive/car/chrysler/carcontroller.py +++ b/selfdrive/car/chrysler/carcontroller.py @@ -6,13 +6,13 @@ from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import apply_meas_steer_torque_limits from openpilot.selfdrive.car.chrysler import chryslercan from openpilot.selfdrive.car.chrysler.values import RAM_CARS, RAM_DT, CarControllerParams, ChryslerFlags, ChryslerFlagsSP -from openpilot.selfdrive.car.interfaces import FORWARD_GEARS +from openpilot.selfdrive.car.interfaces import CarControllerBase, FORWARD_GEARS from openpilot.selfdrive.controls.lib.drive_helpers import FCA_V_CRUISE_MIN BUTTONS_STATES = ["accelCruise", "decelCruise", "cancel", "resumeCruise"] -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.apply_steer_last = 0 diff --git a/selfdrive/car/chrysler/carstate.py b/selfdrive/car/chrysler/carstate.py index 836aea5b51..d29be9226e 100644 --- a/selfdrive/car/chrysler/carstate.py +++ b/selfdrive/car/chrysler/carstate.py @@ -21,6 +21,9 @@ class CarState(CarStateBase): else: self.shifter_values = can_define.dv["GEAR"]["PRNDL"] + self.prev_distance_button = 0 + self.distance_button = 0 + self.lkas_enabled = False self.prev_lkas_enabled = False self.lkas_heartbit = None @@ -33,6 +36,9 @@ class CarState(CarStateBase): ret = car.CarState.new_message() + self.prev_distance_button = self.distance_button + self.distance_button = cp.vl["CRUISE_BUTTONS"]["ACC_Distance_Dec"] + self.prev_mads_enabled = self.mads_enabled self.prev_lkas_enabled = self.lkas_enabled self.buttonStatesPrev = self.buttonStates.copy() diff --git a/selfdrive/car/chrysler/fingerprints.py b/selfdrive/car/chrysler/fingerprints.py index 1df514e79b..95f878a5b6 100644 --- a/selfdrive/car/chrysler/fingerprints.py +++ b/selfdrive/car/chrysler/fingerprints.py @@ -4,7 +4,7 @@ from openpilot.selfdrive.car.chrysler.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.PACIFICA_2017_HYBRID: { + CAR.CHRYSLER_PACIFICA_2017_HYBRID: { (Ecu.combinationMeter, 0x742, None): [ b'68239262AH', b'68239262AI', @@ -33,11 +33,12 @@ FW_VERSIONS = { b'05190226AK', ], }, - CAR.PACIFICA_2018: { + CAR.CHRYSLER_PACIFICA_2018: { (Ecu.combinationMeter, 0x742, None): [ b'68227902AF', b'68227902AG', b'68227902AH', + b'68227905AG', b'68360252AC', ], (Ecu.srs, 0x744, None): [ @@ -71,6 +72,7 @@ FW_VERSIONS = { b'68340762AD ', b'68340764AD ', b'68352652AE ', + b'68352654AE ', b'68366851AH ', b'68366853AE ', b'68372861AF ', @@ -79,6 +81,7 @@ FW_VERSIONS = { b'68277370AJ', b'68277370AM', b'68277372AD', + b'68277372AE', b'68277372AN', b'68277374AA', b'68277374AB', @@ -88,14 +91,16 @@ FW_VERSIONS = { b'68380571AB', ], }, - CAR.PACIFICA_2020: { + CAR.CHRYSLER_PACIFICA_2020: { (Ecu.combinationMeter, 0x742, None): [ b'68405327AC', b'68436233AB', b'68436233AC', + b'68436234AB', b'68436250AE', b'68529067AA', b'68594993AB', + b'68594994AB', ], (Ecu.srs, 0x744, None): [ b'68405565AB', @@ -119,15 +124,18 @@ FW_VERSIONS = { b'68540436AC', b'68540436AD', b'68598670AB', + b'68598670AC', ], (Ecu.eps, 0x75a, None): [ b'68416742AA', b'68460393AA', b'68460393AB', b'68494461AB', + b'68494461AC', b'68524936AA', b'68524936AB', b'68525338AB', + b'68594337AB', b'68594340AB', ], (Ecu.engine, 0x7e0, None): [ @@ -139,10 +147,14 @@ FW_VERSIONS = { b'68443120AE ', b'68443123AC ', b'68443125AC ', + b'68496647AJ ', + b'68496650AH ', + b'68496650AI ', b'68526752AD ', b'68526752AE ', b'68526754AE ', b'68536264AE ', + b'68700304AB ', b'68700306AB ', ], (Ecu.transmission, 0x7e1, None): [ @@ -153,12 +165,14 @@ FW_VERSIONS = { b'68443155AC', b'68443158AB', b'68501050AD', + b'68501055AD', b'68527221AB', b'68527223AB', b'68586231AD', + b'68586233AD', ], }, - CAR.PACIFICA_2018_HYBRID: { + CAR.CHRYSLER_PACIFICA_2018_HYBRID: { (Ecu.combinationMeter, 0x742, None): [ b'68358439AE', b'68358439AG', @@ -185,7 +199,7 @@ FW_VERSIONS = { b'05190226AM', ], }, - CAR.PACIFICA_2019_HYBRID: { + CAR.CHRYSLER_PACIFICA_2019_HYBRID: { (Ecu.combinationMeter, 0x742, None): [ b'68405292AC', b'68434956AC', @@ -256,6 +270,7 @@ FW_VERSIONS = { b'68331511AC', b'68331574AC', b'68331687AC', + b'68331690AC', b'68340272AD', ], (Ecu.srs, 0x744, None): [ @@ -304,6 +319,7 @@ FW_VERSIONS = { b'68402708AB', b'68402971AD', b'68454144AD', + b'68454145AB', b'68454152AB', b'68454156AB', b'68516650AB', @@ -359,7 +375,7 @@ FW_VERSIONS = { b'68503664AC', ], }, - CAR.RAM_1500: { + CAR.RAM_1500_5TH_GEN: { (Ecu.combinationMeter, 0x742, None): [ b'68294051AG', b'68294051AI', @@ -376,10 +392,12 @@ FW_VERSIONS = { b'68434859AC', b'68434860AC', b'68453483AC', + b'68453483AD', b'68453487AD', b'68453491AC', b'68453499AD', b'68453503AC', + b'68453503AD', b'68453505AC', b'68453505AD', b'68453511AC', @@ -401,9 +419,12 @@ FW_VERSIONS = { b'68527383AD', b'68527387AE', b'68527403AC', + b'68527403AD', b'68546047AF', b'68631938AA', + b'68631940AA', b'68631942AA', + b'68631943AB', ], (Ecu.srs, 0x744, None): [ b'68428609AB', @@ -415,8 +436,10 @@ FW_VERSIONS = { b'68615034AA', ], (Ecu.abs, 0x747, None): [ + b'68292406AG', b'68292406AH', b'68432418AB', + b'68432418AC', b'68432418AD', b'68436004AD', b'68436004AE', @@ -466,6 +489,7 @@ FW_VERSIONS = { b'68552790AA', b'68552791AB', b'68552794AA', + b'68552794AD', b'68585106AB', b'68585107AB', b'68585108AB', @@ -474,9 +498,12 @@ FW_VERSIONS = { ], (Ecu.engine, 0x7e0, None): [ b'05035699AG ', + b'05035841AC ', + b'05035841AD ', b'05036026AB ', b'05036065AE ', b'05036066AE ', + b'05036193AA ', b'05149368AA ', b'05149591AD ', b'05149591AE ', @@ -493,6 +520,8 @@ FW_VERSIONS = { b'68378701AI ', b'68378702AI ', b'68378710AL ', + b'68378742AI ', + b'68378742AK ', b'68378748AL ', b'68378758AM ', b'68448163AJ', @@ -506,27 +535,32 @@ FW_VERSIONS = { b'68455145AE ', b'68455146AC ', b'68467915AC ', + b'68467916AC ', b'68467936AC ', b'68500630AD', b'68500630AE', b'68502719AC ', b'68502722AC ', + b'68502733AC ', b'68502734AF ', b'68502740AF ', b'68502741AF ', b'68502742AC ', + b'68502742AF ', b'68539650AD', b'68539650AF', b'68539651AD', b'68586101AA ', b'68586105AB ', b'68629922AC ', + b'68629925AC ', b'68629926AC ', ], (Ecu.transmission, 0x7e1, None): [ b'05035706AD', b'05035842AB', b'05036069AA', + b'05036181AA', b'05149536AC', b'05149537AC', b'05149543AC', @@ -536,6 +570,8 @@ FW_VERSIONS = { b'68360081AM', b'68360085AJ', b'68360085AL', + b'68360086AH', + b'68360086AK', b'68384328AD', b'68384332AD', b'68445531AC', @@ -556,7 +592,7 @@ FW_VERSIONS = { b'68629936AC', ], }, - CAR.RAM_HD: { + CAR.RAM_HD_5TH_GEN: { (Ecu.combinationMeter, 0x742, None): [ b'68361606AH', b'68437735AC', diff --git a/selfdrive/car/chrysler/interface.py b/selfdrive/car/chrysler/interface.py index 9c6f0f71a8..8ca6668b30 100755 --- a/selfdrive/car/chrysler/interface.py +++ b/selfdrive/car/chrysler/interface.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 from cereal import car from panda import Panda -from openpilot.selfdrive.car import get_safety_config, create_mads_event +from openpilot.selfdrive.car import create_button_events, get_safety_config, create_mads_event from openpilot.selfdrive.car.chrysler.values import CAR, RAM_HD, RAM_DT, RAM_CARS, ChryslerFlags, ChryslerFlagsSP, BUTTON_STATES from openpilot.selfdrive.car.interfaces import CarInterfaceBase @@ -35,13 +35,14 @@ class CarInterface(CarInterfaceBase): CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) if candidate not in RAM_CARS: # Newer FW versions standard on the following platforms, or flashed by a dealer onto older platforms have a higher minimum steering speed. - new_eps_platform = candidate in (CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020, CAR.JEEP_GRAND_CHEROKEE_2019, CAR.DODGE_DURANGO) + new_eps_platform = candidate in (CAR.CHRYSLER_PACIFICA_2019_HYBRID, CAR.CHRYSLER_PACIFICA_2020, CAR.JEEP_GRAND_CHEROKEE_2019, CAR.DODGE_DURANGO) new_eps_firmware = any(fw.ecu == 'eps' and fw.fwVersion[:4] >= b"6841" for fw in car_fw) if new_eps_platform or new_eps_firmware: ret.flags |= ChryslerFlags.HIGHER_MIN_STEERING_SPEED.value # Chrysler - if candidate in (CAR.PACIFICA_2017_HYBRID, CAR.PACIFICA_2018, CAR.PACIFICA_2018_HYBRID, CAR.PACIFICA_2019_HYBRID, CAR.PACIFICA_2020, CAR.DODGE_DURANGO): + if candidate in (CAR.CHRYSLER_PACIFICA_2017_HYBRID, CAR.CHRYSLER_PACIFICA_2018, CAR.CHRYSLER_PACIFICA_2018_HYBRID, \ + CAR.CHRYSLER_PACIFICA_2019_HYBRID, CAR.CHRYSLER_PACIFICA_2020, CAR.DODGE_DURANGO): ret.lateralTuning.init('pid') ret.lateralTuning.pid.kpBP, ret.lateralTuning.pid.kiBP = [[9., 20.], [9., 20.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.15, 0.30], [0.03, 0.05]] @@ -57,7 +58,7 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 0.00006 # Ram - elif candidate == CAR.RAM_1500: + elif candidate == CAR.RAM_1500_5TH_GEN: ret.steerActuatorDelay = 0.2 ret.wheelbase = 3.88 # Older EPS FW allow steer to zero @@ -67,7 +68,7 @@ class CarInterface(CarInterfaceBase): if any(fw.ecu == 'eps' and fw.fwVersion in (b"68273275AF", b"68273275AG", b"68312176AE", b"68312176AG",) for fw in car_fw): ret.minEnableSpeed = 0. - elif candidate == CAR.RAM_HD: + elif candidate == CAR.RAM_HD_5TH_GEN: ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning, 1.0, False) ret.spFlags |= ChryslerFlagsSP.SP_RAM_HD_PARAMSD_IGNORE.value @@ -91,9 +92,9 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() - buttonEvents = [] + buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) for button in self.CS.buttonStates: if self.CS.buttonStates[button] != self.buttonStatesPrev[button]: @@ -104,12 +105,12 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) - self.CS.accEnabled, buttonEvents = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - buttonEvents, c.vCruise, - enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise, ButtonType.resumeCruise) if not self.CP.pcmCruiseSpeed else - (ButtonType.accelCruise, ButtonType.decelCruise), - resume_button=(ButtonType.resumeCruise,) if not self.CP.pcmCruiseSpeed else - (ButtonType.accelCruise, ButtonType.resumeCruise)) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, + buttonEvents, c.vCruise, + enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise, ButtonType.resumeCruise) if not self.CP.pcmCruiseSpeed else + (ButtonType.accelCruise, ButtonType.decelCruise), + resume_button=(ButtonType.resumeCruise,) if not self.CP.pcmCruiseSpeed else + (ButtonType.accelCruise, ButtonType.resumeCruise)) if ret.cruiseState.available: if self.enable_mads: @@ -182,6 +183,3 @@ class CarInterface(CarInterfaceBase): self.buttonStatesPrev = self.CS.buttonStates.copy() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/chrysler/values.py b/selfdrive/car/chrysler/values.py index 396e447886..48fa8b30a3 100644 --- a/selfdrive/car/chrysler/values.py +++ b/selfdrive/car/chrysler/values.py @@ -4,13 +4,14 @@ from dataclasses import dataclass, field from cereal import car from panda.python import uds from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts +from openpilot.selfdrive.car.docs_definitions import CarHarness, CarDocs, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 Ecu = car.CarParams.Ecu class ChryslerFlags(IntFlag): + # Detected flags HIGHER_MIN_STEERING_SPEED = 1 @@ -20,14 +21,14 @@ class ChryslerFlagsSP(IntFlag): @dataclass -class ChryslerCarInfo(CarInfo): +class ChryslerCarDocs(CarDocs): package: str = "Adaptive Cruise Control (ACC)" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.fca])) -@dataclass(frozen=True) +@dataclass class ChryslerPlatformConfig(PlatformConfig): - dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('chrysler_pacifica_2017_hybrid_generated', None)) + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('chrysler_pacifica_2017_hybrid_generated', 'chrysler_pacifica_2017_hybrid_private_fusion')) @dataclass(frozen=True) @@ -37,70 +38,60 @@ class ChryslerCarSpecs(CarSpecs): class CAR(Platforms): # Chrysler - PACIFICA_2017_HYBRID = ChryslerPlatformConfig( - "CHRYSLER PACIFICA HYBRID 2017", - ChryslerCarInfo("Chrysler Pacifica Hybrid 2017"), - specs=ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2), + CHRYSLER_PACIFICA_2017_HYBRID = ChryslerPlatformConfig( + [ChryslerCarDocs("Chrysler Pacifica Hybrid 2017")], + ChryslerCarSpecs(mass=2242., wheelbase=3.089, steerRatio=16.2), ) - PACIFICA_2018_HYBRID = ChryslerPlatformConfig( - "CHRYSLER PACIFICA HYBRID 2018", - ChryslerCarInfo("Chrysler Pacifica Hybrid 2018"), - specs=PACIFICA_2017_HYBRID.specs, + CHRYSLER_PACIFICA_2018_HYBRID = ChryslerPlatformConfig( + [ChryslerCarDocs("Chrysler Pacifica Hybrid 2018")], + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) - PACIFICA_2019_HYBRID = ChryslerPlatformConfig( - "CHRYSLER PACIFICA HYBRID 2019", - ChryslerCarInfo("Chrysler Pacifica Hybrid 2019-23"), - specs=PACIFICA_2017_HYBRID.specs, + CHRYSLER_PACIFICA_2019_HYBRID = ChryslerPlatformConfig( + [ChryslerCarDocs("Chrysler Pacifica Hybrid 2019-23")], + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) - PACIFICA_2018 = ChryslerPlatformConfig( - "CHRYSLER PACIFICA 2018", - ChryslerCarInfo("Chrysler Pacifica 2017-18"), - specs=PACIFICA_2017_HYBRID.specs, + CHRYSLER_PACIFICA_2018 = ChryslerPlatformConfig( + [ChryslerCarDocs("Chrysler Pacifica 2017-18")], + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) - PACIFICA_2020 = ChryslerPlatformConfig( - "CHRYSLER PACIFICA 2020", + CHRYSLER_PACIFICA_2020 = ChryslerPlatformConfig( [ - ChryslerCarInfo("Chrysler Pacifica 2019-20"), - ChryslerCarInfo("Chrysler Pacifica 2021-23", package="All"), + ChryslerCarDocs("Chrysler Pacifica 2019-20"), + ChryslerCarDocs("Chrysler Pacifica 2021-23", package="All"), ], - specs=PACIFICA_2017_HYBRID.specs, + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) # Dodge DODGE_DURANGO = ChryslerPlatformConfig( - "DODGE DURANGO 2021", - ChryslerCarInfo("Dodge Durango 2020-21"), - specs=PACIFICA_2017_HYBRID.specs, + [ChryslerCarDocs("Dodge Durango 2020-21")], + CHRYSLER_PACIFICA_2017_HYBRID.specs, ) # Jeep JEEP_GRAND_CHEROKEE = ChryslerPlatformConfig( # includes 2017 Trailhawk - "JEEP GRAND CHEROKEE V6 2018", - ChryslerCarInfo("Jeep Grand Cherokee 2016-18", video_link="https://www.youtube.com/watch?v=eLR9o2JkuRk"), - specs=ChryslerCarSpecs(mass=1778., wheelbase=2.71, steerRatio=16.7), + [ChryslerCarDocs("Jeep Grand Cherokee 2016-18", video_link="https://www.youtube.com/watch?v=eLR9o2JkuRk")], + ChryslerCarSpecs(mass=1778., wheelbase=2.71, steerRatio=16.7), ) JEEP_GRAND_CHEROKEE_2019 = ChryslerPlatformConfig( # includes 2020 Trailhawk - "JEEP GRAND CHEROKEE 2019", - ChryslerCarInfo("Jeep Grand Cherokee 2019-21", video_link="https://www.youtube.com/watch?v=jBe4lWnRSu4"), - specs=JEEP_GRAND_CHEROKEE.specs, + [ChryslerCarDocs("Jeep Grand Cherokee 2019-21", video_link="https://www.youtube.com/watch?v=jBe4lWnRSu4")], + JEEP_GRAND_CHEROKEE.specs, ) # Ram - RAM_1500 = ChryslerPlatformConfig( - "RAM 1500 5TH GEN", - ChryslerCarInfo("Ram 1500 2019-24", car_parts=CarParts.common([CarHarness.ram])), + RAM_1500_5TH_GEN = ChryslerPlatformConfig( + [ChryslerCarDocs("Ram 1500 2019-24", car_parts=CarParts.common([CarHarness.ram]))], + ChryslerCarSpecs(mass=2493., wheelbase=3.88, steerRatio=16.3, minSteerSpeed=0.5, minEnableSpeed=14.5), dbc_dict('chrysler_ram_dt_generated', None), - specs=ChryslerCarSpecs(mass=2493., wheelbase=3.88, steerRatio=16.3, minSteerSpeed=0.5, minEnableSpeed=14.5), ) - RAM_HD = ChryslerPlatformConfig( - "RAM HD 5TH GEN", + RAM_HD_5TH_GEN = ChryslerPlatformConfig( [ - ChryslerCarInfo("Ram 2500 2020-24", car_parts=CarParts.common([CarHarness.ram])), - ChryslerCarInfo("Ram 3500 2019-22", car_parts=CarParts.common([CarHarness.ram])), + ChryslerCarDocs("Ram 2500 2020-24", car_parts=CarParts.common([CarHarness.ram])), + ChryslerCarDocs("Ram 3500 2019-22", car_parts=CarParts.common([CarHarness.ram])), ], + ChryslerCarSpecs(mass=3405., wheelbase=3.785, steerRatio=15.61, minSteerSpeed=16.), dbc_dict('chrysler_ram_hd_generated', None), - specs=ChryslerCarSpecs(mass=3405., wheelbase=3.785, steerRatio=15.61, minSteerSpeed=16.), ) @@ -132,8 +123,8 @@ BUTTON_STATES = { STEER_THRESHOLD = 120 -RAM_DT = {CAR.RAM_1500, } -RAM_HD = {CAR.RAM_HD, } +RAM_DT = {CAR.RAM_1500_5TH_GEN, } +RAM_HD = {CAR.RAM_HD_5TH_GEN, } RAM_CARS = RAM_DT | RAM_HD @@ -176,5 +167,4 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) -CAR_INFO = CAR.create_carinfo_map() DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/docs.py b/selfdrive/car/docs.py index caa79a8f87..7bf6a6ad22 100755 --- a/selfdrive/car/docs.py +++ b/selfdrive/car/docs.py @@ -9,8 +9,9 @@ from natsort import natsorted from cereal import car from openpilot.common.basedir import BASEDIR from openpilot.selfdrive.car import gen_empty_fingerprint -from openpilot.selfdrive.car.docs_definitions import CarInfo, Column, CommonFootnote, PartType +from openpilot.selfdrive.car.docs_definitions import CarDocs, Column, CommonFootnote, PartType from openpilot.selfdrive.car.car_helpers import interfaces, get_interface_attr +from openpilot.selfdrive.car.values import PLATFORMS def get_all_footnotes() -> dict[Enum, int]: @@ -24,45 +25,43 @@ CARS_MD_OUT = os.path.join(BASEDIR, "docs", "CARS.md") CARS_MD_TEMPLATE = os.path.join(BASEDIR, "selfdrive", "car", "CARS_template.md") -def get_all_car_info() -> list[CarInfo]: - all_car_info: list[CarInfo] = [] +def get_all_car_docs() -> list[CarDocs]: + all_car_docs: list[CarDocs] = [] footnotes = get_all_footnotes() - for model, car_info in get_interface_attr("CAR_INFO", combine_brands=True).items(): + for model, platform in PLATFORMS.items(): + car_docs = platform.config.car_docs # If available, uses experimental longitudinal limits for the docs - CP = interfaces[model][0].get_params(model, fingerprint=gen_empty_fingerprint(), + CP = interfaces[model][0].get_params(platform, fingerprint=gen_empty_fingerprint(), car_fw=[car.CarParams.CarFw(ecu="unknown")], experimental_long=True, docs=True) - if CP.dashcamOnly or car_info is None: + if CP.dashcamOnly or not len(car_docs): continue # A platform can include multiple car models - if not isinstance(car_info, list): - car_info = (car_info,) - - for _car_info in car_info: - if not hasattr(_car_info, "row"): - _car_info.init_make(CP) - _car_info.init(CP, footnotes) - all_car_info.append(_car_info) + for _car_docs in car_docs: + if not hasattr(_car_docs, "row"): + _car_docs.init_make(CP) + _car_docs.init(CP, footnotes) + all_car_docs.append(_car_docs) # Sort cars by make and model + year - sorted_cars: list[CarInfo] = natsorted(all_car_info, key=lambda car: car.name.lower()) + sorted_cars: list[CarDocs] = natsorted(all_car_docs, key=lambda car: car.name.lower()) return sorted_cars -def group_by_make(all_car_info: list[CarInfo]) -> dict[str, list[CarInfo]]: - sorted_car_info = defaultdict(list) - for car_info in all_car_info: - sorted_car_info[car_info.make].append(car_info) - return dict(sorted_car_info) +def group_by_make(all_car_docs: list[CarDocs]) -> dict[str, list[CarDocs]]: + sorted_car_docs = defaultdict(list) + for car_docs in all_car_docs: + sorted_car_docs[car_docs.make].append(car_docs) + return dict(sorted_car_docs) -def generate_cars_md(all_car_info: list[CarInfo], template_fn: str) -> str: +def generate_cars_md(all_car_docs: list[CarDocs], template_fn: str) -> str: with open(template_fn) as f: template = jinja2.Template(f.read(), trim_blocks=True, lstrip_blocks=True) footnotes = [fn.value.text for fn in get_all_footnotes()] - cars_md: str = template.render(all_car_info=all_car_info, PartType=PartType, + cars_md: str = template.render(all_car_docs=all_car_docs, PartType=PartType, group_by_make=group_by_make, footnotes=footnotes, Column=Column) return cars_md @@ -77,5 +76,5 @@ if __name__ == "__main__": args = parser.parse_args() with open(args.out, 'w') as f: - f.write(generate_cars_md(get_all_car_info(), args.template)) + f.write(generate_cars_md(get_all_car_docs(), args.template)) print(f"Generated and written to {args.out}") diff --git a/selfdrive/car/docs_definitions.py b/selfdrive/car/docs_definitions.py index 841cc3af2f..b66d2a16e0 100644 --- a/selfdrive/car/docs_definitions.py +++ b/selfdrive/car/docs_definitions.py @@ -118,7 +118,8 @@ class CarHarness(EnumBase): nissan_b = BaseCarHarness("Nissan B connector", parts=[Accessory.harness_box, Cable.rj45_cable_7ft, Cable.long_obdc_cable, Cable.usbc_coupler]) mazda = BaseCarHarness("Mazda connector") ford_q3 = BaseCarHarness("Ford Q3 connector") - ford_q4 = BaseCarHarness("Ford Q4 connector") + ford_q4 = BaseCarHarness("Ford Q4 connector", parts=[Accessory.harness_box, Accessory.comma_power_v2, Cable.rj45_cable_7ft, Cable.long_obdc_cable, + Cable.usbc_coupler]) class Device(EnumBase): @@ -219,7 +220,7 @@ def split_name(name: str) -> tuple[str, str, str]: @dataclass -class CarInfo: +class CarDocs: # make + model + model years name: str @@ -265,7 +266,7 @@ class CarInfo: # min steer & enable speed columns # TODO: set all the min steer speeds in carParams and remove this if self.min_steer_speed is not None: - assert CP.minSteerSpeed == 0, f"{CP.carFingerprint}: Minimum steer speed set in both CarInfo and CarParams" + assert CP.minSteerSpeed < 0.5, f"{CP.carFingerprint}: Minimum steer speed set in both CarDocs and CarParams" else: self.min_steer_speed = CP.minSteerSpeed @@ -316,7 +317,7 @@ class CarInfo: return self def init_make(self, CP: car.CarParams): - """CarInfo subclasses can add make-specific logic for harness selection, footnotes, etc.""" + """CarDocs subclasses can add make-specific logic for harness selection, footnotes, etc.""" def get_detail_sentence(self, CP): if not CP.notCar: @@ -339,13 +340,13 @@ class CarInfo: # experimental mode exp_link = "Experimental mode" - if CP.openpilotLongitudinalControl or CP.experimentalLongitudinalAvailable: + if CP.openpilotLongitudinalControl and not CP.experimentalLongitudinalAvailable: sentence_builder += f" Traffic light and stop sign handling is also available in {exp_link}." return sentence_builder.format(car_model=f"{self.make} {self.model}", alc=alc, acc=acc) else: - if CP.carFingerprint == "COMMA BODY": + if CP.carFingerprint == "COMMA_BODY": return "The body is a robotics dev kit that can run openpilot. Learn more." else: raise Exception(f"This notCar does not have a detail sentence: {CP.carFingerprint}") diff --git a/selfdrive/car/fingerprints.py b/selfdrive/car/fingerprints.py index 6a7c3c75be..1128a31c29 100644 --- a/selfdrive/car/fingerprints.py +++ b/selfdrive/car/fingerprints.py @@ -1,4 +1,17 @@ from openpilot.selfdrive.car.interfaces import get_interface_attr +from openpilot.selfdrive.car.body.values import CAR as BODY +from openpilot.selfdrive.car.chrysler.values import CAR as CHRYSLER +from openpilot.selfdrive.car.ford.values import CAR as FORD +from openpilot.selfdrive.car.gm.values import CAR as GM +from openpilot.selfdrive.car.honda.values import CAR as HONDA +from openpilot.selfdrive.car.hyundai.values import CAR as HYUNDAI +from openpilot.selfdrive.car.mazda.values import CAR as MAZDA +from openpilot.selfdrive.car.mock.values import CAR as MOCK +from openpilot.selfdrive.car.nissan.values import CAR as NISSAN +from openpilot.selfdrive.car.subaru.values import CAR as SUBARU +from openpilot.selfdrive.car.tesla.values import CAR as TESLA +from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA +from openpilot.selfdrive.car.volkswagen.values import CAR as VW FW_VERSIONS = get_interface_attr('FW_VERSIONS', combine_brands=True, ignore_none=True) _FINGERPRINTS = get_interface_attr('FINGERPRINTS', combine_brands=True, ignore_none=True) @@ -44,3 +57,291 @@ def all_known_cars(): def all_legacy_fingerprint_cars(): """Returns a list of all known car strings, FPv1 only.""" return list(_FINGERPRINTS.keys()) + + +# A dict that maps old platform strings to their latest representations +MIGRATION = { + "ACURA ILX 2016 ACURAWATCH PLUS": HONDA.ACURA_ILX, + "ACURA RDX 2018 ACURAWATCH PLUS": HONDA.ACURA_RDX, + "ACURA RDX 2020 TECH": HONDA.ACURA_RDX_3G, + "AUDI A3": VW.AUDI_A3_MK3, + "HONDA ACCORD 2018 HYBRID TOURING": HONDA.HONDA_ACCORD, + "HONDA ACCORD 1.5T 2018": HONDA.HONDA_ACCORD, + "HONDA ACCORD 2018 LX 1.5T": HONDA.HONDA_ACCORD, + "HONDA ACCORD 2018 SPORT 2T": HONDA.HONDA_ACCORD, + "HONDA ACCORD 2T 2018": HONDA.HONDA_ACCORD, + "HONDA ACCORD HYBRID 2018": HONDA.HONDA_ACCORD, + "HONDA CIVIC 2016 TOURING": HONDA.HONDA_CIVIC, + "HONDA CIVIC HATCHBACK 2017 SEDAN/COUPE 2019": HONDA.HONDA_CIVIC_BOSCH, + "HONDA CIVIC SEDAN 1.6 DIESEL": HONDA.HONDA_CIVIC_BOSCH_DIESEL, + "HONDA CR-V 2016 EXECUTIVE": HONDA.HONDA_CRV_EU, + "HONDA CR-V 2016 TOURING": HONDA.HONDA_CRV, + "HONDA CR-V 2017 EX": HONDA.HONDA_CRV_5G, + "HONDA CR-V 2019 HYBRID": HONDA.HONDA_CRV_HYBRID, + "HONDA FIT 2018 EX": HONDA.HONDA_FIT, + "HONDA HRV 2019 TOURING": HONDA.HONDA_HRV, + "HONDA INSIGHT 2019 TOURING": HONDA.HONDA_INSIGHT, + "HONDA ODYSSEY 2018 EX-L": HONDA.HONDA_ODYSSEY, + "HONDA ODYSSEY 2019 EXCLUSIVE CHN": HONDA.HONDA_ODYSSEY_CHN, + "HONDA PILOT 2017 TOURING": HONDA.HONDA_PILOT, + "HONDA PILOT 2019 ELITE": HONDA.HONDA_PILOT, + "HONDA PILOT 2019": HONDA.HONDA_PILOT, + "HONDA PASSPORT 2021": HONDA.HONDA_PILOT, + "HONDA RIDGELINE 2017 BLACK EDITION": HONDA.HONDA_RIDGELINE, + "HYUNDAI ELANTRA LIMITED ULTIMATE 2017": HYUNDAI.HYUNDAI_ELANTRA, + "HYUNDAI SANTA FE LIMITED 2019": HYUNDAI.HYUNDAI_SANTA_FE, + "HYUNDAI TUCSON DIESEL 2019": HYUNDAI.HYUNDAI_TUCSON, + "KIA OPTIMA 2016": HYUNDAI.KIA_OPTIMA_G4, + "KIA OPTIMA 2019": HYUNDAI.KIA_OPTIMA_G4_FL, + "KIA OPTIMA SX 2019 & 2016": HYUNDAI.KIA_OPTIMA_G4_FL, + "LEXUS CT 200H 2018": TOYOTA.LEXUS_CTH, + "LEXUS ES 300H 2018": TOYOTA.LEXUS_ES, + "LEXUS ES 300H 2019": TOYOTA.LEXUS_ES_TSS2, + "LEXUS IS300 2018": TOYOTA.LEXUS_IS, + "LEXUS NX300 2018": TOYOTA.LEXUS_NX, + "LEXUS NX300H 2018": TOYOTA.LEXUS_NX, + "LEXUS RX 350 2016": TOYOTA.LEXUS_RX, + "LEXUS RX350 2020": TOYOTA.LEXUS_RX_TSS2, + "LEXUS RX450 HYBRID 2020": TOYOTA.LEXUS_RX_TSS2, + "TOYOTA SIENNA XLE 2018": TOYOTA.TOYOTA_SIENNA, + "TOYOTA C-HR HYBRID 2018": TOYOTA.TOYOTA_CHR, + "TOYOTA COROLLA HYBRID TSS2 2019": TOYOTA.TOYOTA_COROLLA_TSS2, + "TOYOTA RAV4 HYBRID 2019": TOYOTA.TOYOTA_RAV4_TSS2, + "LEXUS ES HYBRID 2019": TOYOTA.LEXUS_ES_TSS2, + "LEXUS NX HYBRID 2018": TOYOTA.LEXUS_NX, + "LEXUS NX HYBRID 2020": TOYOTA.LEXUS_NX_TSS2, + "LEXUS RX HYBRID 2020": TOYOTA.LEXUS_RX_TSS2, + "TOYOTA ALPHARD HYBRID 2021": TOYOTA.TOYOTA_ALPHARD_TSS2, + "TOYOTA AVALON HYBRID 2019": TOYOTA.TOYOTA_AVALON_2019, + "TOYOTA AVALON HYBRID 2022": TOYOTA.TOYOTA_AVALON_TSS2, + "TOYOTA CAMRY HYBRID 2018": TOYOTA.TOYOTA_CAMRY, + "TOYOTA CAMRY HYBRID 2021": TOYOTA.TOYOTA_CAMRY_TSS2, + "TOYOTA C-HR HYBRID 2022": TOYOTA.TOYOTA_CHR_TSS2, + "TOYOTA HIGHLANDER HYBRID 2020": TOYOTA.TOYOTA_HIGHLANDER_TSS2, + "TOYOTA RAV4 HYBRID 2022": TOYOTA.TOYOTA_RAV4_TSS2_2022, + "TOYOTA RAV4 HYBRID 2023": TOYOTA.TOYOTA_RAV4_TSS2_2023, + "TOYOTA HIGHLANDER HYBRID 2018": TOYOTA.TOYOTA_HIGHLANDER, + "LEXUS ES HYBRID 2018": TOYOTA.LEXUS_ES, + "LEXUS RX HYBRID 2017": TOYOTA.LEXUS_RX, + "HYUNDAI TUCSON HYBRID 4TH GEN": HYUNDAI.HYUNDAI_TUCSON_4TH_GEN, + "KIA SPORTAGE HYBRID 5TH GEN": HYUNDAI.KIA_SPORTAGE_5TH_GEN, + "KIA SORENTO PLUG-IN HYBRID 4TH GEN": HYUNDAI.KIA_SORENTO_HEV_4TH_GEN, + "CADILLAC ESCALADE ESV PLATINUM 2019": GM.CADILLAC_ESCALADE_ESV_2019, + + # Removal of platform_str, see https://github.com/commaai/openpilot/pull/31868/ + "COMMA BODY": BODY.COMMA_BODY, + "CHRYSLER PACIFICA HYBRID 2017": CHRYSLER.CHRYSLER_PACIFICA_2017_HYBRID, + "CHRYSLER PACIFICA HYBRID 2018": CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID, + "CHRYSLER PACIFICA HYBRID 2019": CHRYSLER.CHRYSLER_PACIFICA_2019_HYBRID, + "CHRYSLER PACIFICA 2018": CHRYSLER.CHRYSLER_PACIFICA_2018, + "CHRYSLER PACIFICA 2020": CHRYSLER.CHRYSLER_PACIFICA_2020, + "DODGE DURANGO 2021": CHRYSLER.DODGE_DURANGO, + "JEEP GRAND CHEROKEE V6 2018": CHRYSLER.JEEP_GRAND_CHEROKEE, + "JEEP GRAND CHEROKEE 2019": CHRYSLER.JEEP_GRAND_CHEROKEE_2019, + "RAM 1500 5TH GEN": CHRYSLER.RAM_1500_5TH_GEN, + "RAM HD 5TH GEN": CHRYSLER.RAM_HD_5TH_GEN, + "FORD BRONCO SPORT 1ST GEN": FORD.FORD_BRONCO_SPORT_MK1, + "FORD ESCAPE 4TH GEN": FORD.FORD_ESCAPE_MK4, + "FORD EXPLORER 6TH GEN": FORD.FORD_EXPLORER_MK6, + "FORD F-150 14TH GEN": FORD.FORD_F_150_MK14, + "FORD F-150 LIGHTNING 1ST GEN": FORD.FORD_F_150_LIGHTNING_MK1, + "FORD FOCUS 4TH GEN": FORD.FORD_FOCUS_MK4, + "FORD MAVERICK 1ST GEN": FORD.FORD_MAVERICK_MK1, + "FORD MUSTANG MACH-E 1ST GEN": FORD.FORD_MUSTANG_MACH_E_MK1, + "HOLDEN ASTRA RS-V BK 2017": GM.HOLDEN_ASTRA, + "CHEVROLET VOLT PREMIER 2017": GM.CHEVROLET_VOLT, + "CADILLAC ATS Premium Performance 2018": GM.CADILLAC_ATS, + "CHEVROLET MALIBU PREMIER 2017": GM.CHEVROLET_MALIBU, + "GMC ACADIA DENALI 2018": GM.GMC_ACADIA, + "BUICK LACROSSE 2017": GM.BUICK_LACROSSE, + "BUICK REGAL ESSENCE 2018": GM.BUICK_REGAL, + "CADILLAC ESCALADE 2017": GM.CADILLAC_ESCALADE, + "CADILLAC ESCALADE ESV 2016": GM.CADILLAC_ESCALADE_ESV, + "CADILLAC ESCALADE ESV 2019": GM.CADILLAC_ESCALADE_ESV_2019, + "CHEVROLET BOLT EUV 2022": GM.CHEVROLET_BOLT_EUV, + "CHEVROLET SILVERADO 1500 2020": GM.CHEVROLET_SILVERADO, + "CHEVROLET EQUINOX 2019": GM.CHEVROLET_EQUINOX, + "CHEVROLET TRAILBLAZER 2021": GM.CHEVROLET_TRAILBLAZER, + "HONDA ACCORD 2018": HONDA.HONDA_ACCORD, + "HONDA CIVIC (BOSCH) 2019": HONDA.HONDA_CIVIC_BOSCH, + "HONDA CIVIC SEDAN 1.6 DIESEL 2019": HONDA.HONDA_CIVIC_BOSCH_DIESEL, + "HONDA CIVIC 2022": HONDA.HONDA_CIVIC_2022, + "HONDA CR-V 2017": HONDA.HONDA_CRV_5G, + "HONDA CR-V HYBRID 2019": HONDA.HONDA_CRV_HYBRID, + "HONDA HR-V 2023": HONDA.HONDA_HRV_3G, + "ACURA RDX 2020": HONDA.ACURA_RDX_3G, + "HONDA INSIGHT 2019": HONDA.HONDA_INSIGHT, + "HONDA E 2020": HONDA.HONDA_E, + "ACURA ILX 2016": HONDA.ACURA_ILX, + "HONDA CR-V 2016": HONDA.HONDA_CRV, + "HONDA CR-V EU 2016": HONDA.HONDA_CRV_EU, + "HONDA FIT 2018": HONDA.HONDA_FIT, + "HONDA FREED 2020": HONDA.HONDA_FREED, + "HONDA HRV 2019": HONDA.HONDA_HRV, + "HONDA ODYSSEY 2018": HONDA.HONDA_ODYSSEY, + "HONDA ODYSSEY CHN 2019": HONDA.HONDA_ODYSSEY_CHN, + "ACURA RDX 2018": HONDA.ACURA_RDX, + "HONDA PILOT 2017": HONDA.HONDA_PILOT, + "HONDA RIDGELINE 2017": HONDA.HONDA_RIDGELINE, + "HONDA CIVIC 2016": HONDA.HONDA_CIVIC, + "HYUNDAI AZERA 6TH GEN": HYUNDAI.HYUNDAI_AZERA_6TH_GEN, + "HYUNDAI AZERA HYBRID 6TH GEN": HYUNDAI.HYUNDAI_AZERA_HEV_6TH_GEN, + "HYUNDAI ELANTRA 2017": HYUNDAI.HYUNDAI_ELANTRA, + "HYUNDAI I30 N LINE 2019 & GT 2018 DCT": HYUNDAI.HYUNDAI_ELANTRA_GT_I30, + "HYUNDAI ELANTRA 2021": HYUNDAI.HYUNDAI_ELANTRA_2021, + "HYUNDAI ELANTRA HYBRID 2021": HYUNDAI.HYUNDAI_ELANTRA_HEV_2021, + "HYUNDAI GENESIS 2015-2016": HYUNDAI.HYUNDAI_GENESIS, + "HYUNDAI IONIQ HYBRID 2017-2019": HYUNDAI.HYUNDAI_IONIQ, + "HYUNDAI IONIQ HYBRID 2020-2022": HYUNDAI.HYUNDAI_IONIQ_HEV_2022, + "HYUNDAI IONIQ ELECTRIC LIMITED 2019": HYUNDAI.HYUNDAI_IONIQ_EV_LTD, + "HYUNDAI IONIQ ELECTRIC 2020": HYUNDAI.HYUNDAI_IONIQ_EV_2020, + "HYUNDAI IONIQ PLUG-IN HYBRID 2019": HYUNDAI.HYUNDAI_IONIQ_PHEV_2019, + "HYUNDAI IONIQ PHEV 2020": HYUNDAI.HYUNDAI_IONIQ_PHEV, + "HYUNDAI KONA 2020": HYUNDAI.HYUNDAI_KONA, + "HYUNDAI KONA ELECTRIC 2019": HYUNDAI.HYUNDAI_KONA_EV, + "HYUNDAI KONA ELECTRIC 2022": HYUNDAI.HYUNDAI_KONA_EV_2022, + "HYUNDAI KONA ELECTRIC 2ND GEN": HYUNDAI.HYUNDAI_KONA_EV_2ND_GEN, + "HYUNDAI KONA HYBRID 2020": HYUNDAI.HYUNDAI_KONA_HEV, + "HYUNDAI SANTA FE 2019": HYUNDAI.HYUNDAI_SANTA_FE, + "HYUNDAI SANTA FE 2022": HYUNDAI.HYUNDAI_SANTA_FE_2022, + "HYUNDAI SANTA FE HYBRID 2022": HYUNDAI.HYUNDAI_SANTA_FE_HEV_2022, + "HYUNDAI SANTA FE PlUG-IN HYBRID 2022": HYUNDAI.HYUNDAI_SANTA_FE_PHEV_2022, + "HYUNDAI SONATA 2020": HYUNDAI.HYUNDAI_SONATA, + "HYUNDAI SONATA 2019": HYUNDAI.HYUNDAI_SONATA_LF, + "HYUNDAI STARIA 4TH GEN": HYUNDAI.HYUNDAI_STARIA_4TH_GEN, + "HYUNDAI TUCSON 2019": HYUNDAI.HYUNDAI_TUCSON, + "HYUNDAI PALISADE 2020": HYUNDAI.HYUNDAI_PALISADE, + "HYUNDAI VELOSTER 2019": HYUNDAI.HYUNDAI_VELOSTER, + "HYUNDAI SONATA HYBRID 2021": HYUNDAI.HYUNDAI_SONATA_HYBRID, + "HYUNDAI IONIQ 5 2022": HYUNDAI.HYUNDAI_IONIQ_5, + "HYUNDAI IONIQ 6 2023": HYUNDAI.HYUNDAI_IONIQ_6, + "HYUNDAI TUCSON 4TH GEN": HYUNDAI.HYUNDAI_TUCSON_4TH_GEN, + "HYUNDAI SANTA CRUZ 1ST GEN": HYUNDAI.HYUNDAI_SANTA_CRUZ_1ST_GEN, + "HYUNDAI CUSTIN 1ST GEN": HYUNDAI.HYUNDAI_CUSTIN_1ST_GEN, + "KIA FORTE E 2018 & GT 2021": HYUNDAI.KIA_FORTE, + "KIA K5 2021": HYUNDAI.KIA_K5_2021, + "KIA K5 HYBRID 2020": HYUNDAI.KIA_K5_HEV_2020, + "KIA K8 HYBRID 1ST GEN": HYUNDAI.KIA_K8_HEV_1ST_GEN, + "KIA NIRO EV 2020": HYUNDAI.KIA_NIRO_EV, + "KIA NIRO EV 2ND GEN": HYUNDAI.KIA_NIRO_EV_2ND_GEN, + "KIA NIRO HYBRID 2019": HYUNDAI.KIA_NIRO_PHEV, + "KIA NIRO PLUG-IN HYBRID 2022": HYUNDAI.KIA_NIRO_PHEV_2022, + "KIA NIRO HYBRID 2021": HYUNDAI.KIA_NIRO_HEV_2021, + "KIA NIRO HYBRID 2ND GEN": HYUNDAI.KIA_NIRO_HEV_2ND_GEN, + "KIA OPTIMA 4TH GEN": HYUNDAI.KIA_OPTIMA_G4, + "KIA OPTIMA 4TH GEN FACELIFT": HYUNDAI.KIA_OPTIMA_G4_FL, + "KIA OPTIMA HYBRID 2017 & SPORTS 2019": HYUNDAI.KIA_OPTIMA_H, + "KIA OPTIMA HYBRID 4TH GEN FACELIFT": HYUNDAI.KIA_OPTIMA_H_G4_FL, + "KIA SELTOS 2021": HYUNDAI.KIA_SELTOS, + "KIA SPORTAGE 5TH GEN": HYUNDAI.KIA_SPORTAGE_5TH_GEN, + "KIA SORENTO GT LINE 2018": HYUNDAI.KIA_SORENTO, + "KIA SORENTO 4TH GEN": HYUNDAI.KIA_SORENTO_4TH_GEN, + "KIA SORENTO HYBRID 4TH GEN": HYUNDAI.KIA_SORENTO_HEV_4TH_GEN, + "KIA STINGER GT2 2018": HYUNDAI.KIA_STINGER, + "KIA STINGER 2022": HYUNDAI.KIA_STINGER_2022, + "KIA CEED INTRO ED 2019": HYUNDAI.KIA_CEED, + "KIA EV6 2022": HYUNDAI.KIA_EV6, + "KIA CARNIVAL 4TH GEN": HYUNDAI.KIA_CARNIVAL_4TH_GEN, + "GENESIS GV60 ELECTRIC 1ST GEN": HYUNDAI.GENESIS_GV60_EV_1ST_GEN, + "GENESIS G70 2018": HYUNDAI.GENESIS_G70, + "GENESIS G70 2020": HYUNDAI.GENESIS_G70_2020, + "GENESIS GV70 1ST GEN": HYUNDAI.GENESIS_GV70_1ST_GEN, + "GENESIS G80 2017": HYUNDAI.GENESIS_G80, + "GENESIS G90 2017": HYUNDAI.GENESIS_G90, + "GENESIS GV80 2023": HYUNDAI.GENESIS_GV80, + "MAZDA CX-5": MAZDA.MAZDA_CX5, + "MAZDA CX-9": MAZDA.MAZDA_CX9, + "MAZDA 3": MAZDA.MAZDA_3, + "MAZDA 6": MAZDA.MAZDA_6, + "MAZDA CX-9 2021": MAZDA.MAZDA_CX9_2021, + "MAZDA CX-5 2022": MAZDA.MAZDA_CX5_2022, + "NISSAN X-TRAIL 2017": NISSAN.NISSAN_XTRAIL, + "NISSAN LEAF 2018": NISSAN.NISSAN_LEAF, + "NISSAN LEAF 2018 Instrument Cluster": NISSAN.NISSAN_LEAF_IC, + "NISSAN ROGUE 2019": NISSAN.NISSAN_ROGUE, + "NISSAN ALTIMA 2020": NISSAN.NISSAN_ALTIMA, + "SUBARU ASCENT LIMITED 2019": SUBARU.SUBARU_ASCENT, + "SUBARU OUTBACK 6TH GEN": SUBARU.SUBARU_OUTBACK, + "SUBARU LEGACY 7TH GEN": SUBARU.SUBARU_LEGACY, + "SUBARU IMPREZA LIMITED 2019": SUBARU.SUBARU_IMPREZA, + "SUBARU IMPREZA SPORT 2020": SUBARU.SUBARU_IMPREZA_2020, + "SUBARU CROSSTREK HYBRID 2020": SUBARU.SUBARU_CROSSTREK_HYBRID, + "SUBARU FORESTER 2019": SUBARU.SUBARU_FORESTER, + "SUBARU FORESTER HYBRID 2020": SUBARU.SUBARU_FORESTER_HYBRID, + "SUBARU FORESTER 2017 - 2018": SUBARU.SUBARU_FORESTER_PREGLOBAL, + "SUBARU LEGACY 2015 - 2018": SUBARU.SUBARU_LEGACY_PREGLOBAL, + "SUBARU OUTBACK 2015 - 2017": SUBARU.SUBARU_OUTBACK_PREGLOBAL, + "SUBARU OUTBACK 2018 - 2019": SUBARU.SUBARU_OUTBACK_PREGLOBAL_2018, + "SUBARU FORESTER 2022": SUBARU.SUBARU_FORESTER_2022, + "SUBARU OUTBACK 7TH GEN": SUBARU.SUBARU_OUTBACK_2023, + "SUBARU ASCENT 2023": SUBARU.SUBARU_ASCENT_2023, + 'TESLA AP1 MODEL S': TESLA.TESLA_AP1_MODELS, + 'TESLA AP2 MODEL S': TESLA.TESLA_AP2_MODELS, + 'TESLA MODEL S RAVEN': TESLA.TESLA_MODELS_RAVEN, + "TOYOTA ALPHARD 2020": TOYOTA.TOYOTA_ALPHARD_TSS2, + "TOYOTA AVALON 2016": TOYOTA.TOYOTA_AVALON, + "TOYOTA AVALON 2019": TOYOTA.TOYOTA_AVALON_2019, + "TOYOTA AVALON 2022": TOYOTA.TOYOTA_AVALON_TSS2, + "TOYOTA CAMRY 2018": TOYOTA.TOYOTA_CAMRY, + "TOYOTA CAMRY 2021": TOYOTA.TOYOTA_CAMRY_TSS2, + "TOYOTA C-HR 2018": TOYOTA.TOYOTA_CHR, + "TOYOTA C-HR 2021": TOYOTA.TOYOTA_CHR_TSS2, + "TOYOTA COROLLA 2017": TOYOTA.TOYOTA_COROLLA, + "TOYOTA COROLLA TSS2 2019": TOYOTA.TOYOTA_COROLLA_TSS2, + "TOYOTA HIGHLANDER 2017": TOYOTA.TOYOTA_HIGHLANDER, + "TOYOTA HIGHLANDER 2020": TOYOTA.TOYOTA_HIGHLANDER_TSS2, + "TOYOTA PRIUS 2017": TOYOTA.TOYOTA_PRIUS, + "TOYOTA PRIUS v 2017": TOYOTA.TOYOTA_PRIUS_V, + "TOYOTA PRIUS TSS2 2021": TOYOTA.TOYOTA_PRIUS_TSS2, + "TOYOTA RAV4 2017": TOYOTA.TOYOTA_RAV4, + "TOYOTA RAV4 HYBRID 2017": TOYOTA.TOYOTA_RAV4H, + "TOYOTA RAV4 2019": TOYOTA.TOYOTA_RAV4_TSS2, + "TOYOTA RAV4 2022": TOYOTA.TOYOTA_RAV4_TSS2_2022, + "TOYOTA RAV4 2023": TOYOTA.TOYOTA_RAV4_TSS2_2023, + "TOYOTA MIRAI 2021": TOYOTA.TOYOTA_MIRAI, + "TOYOTA SIENNA 2018": TOYOTA.TOYOTA_SIENNA, + "LEXUS CT HYBRID 2018": TOYOTA.LEXUS_CTH, + "LEXUS ES 2018": TOYOTA.LEXUS_ES, + "LEXUS ES 2019": TOYOTA.LEXUS_ES_TSS2, + "LEXUS IS 2018": TOYOTA.LEXUS_IS, + "LEXUS IS 2023": TOYOTA.LEXUS_IS_TSS2, + "LEXUS NX 2018": TOYOTA.LEXUS_NX, + "LEXUS NX 2020": TOYOTA.LEXUS_NX_TSS2, + "LEXUS LC 2024": TOYOTA.LEXUS_LC_TSS2, + "LEXUS RC 2020": TOYOTA.LEXUS_RC, + "LEXUS RX 2016": TOYOTA.LEXUS_RX, + "LEXUS RX 2020": TOYOTA.LEXUS_RX_TSS2, + "LEXUS GS F 2016": TOYOTA.LEXUS_GS_F, + "VOLKSWAGEN ARTEON 1ST GEN": VW.VOLKSWAGEN_ARTEON_MK1, + "VOLKSWAGEN ATLAS 1ST GEN": VW.VOLKSWAGEN_ATLAS_MK1, + "VOLKSWAGEN CADDY 3RD GEN": VW.VOLKSWAGEN_CADDY_MK3, + "VOLKSWAGEN CRAFTER 2ND GEN": VW.VOLKSWAGEN_CRAFTER_MK2, + "VOLKSWAGEN GOLF 7TH GEN": VW.VOLKSWAGEN_GOLF_MK7, + "VOLKSWAGEN JETTA 7TH GEN": VW.VOLKSWAGEN_JETTA_MK7, + "VOLKSWAGEN PASSAT 8TH GEN": VW.VOLKSWAGEN_PASSAT_MK8, + "VOLKSWAGEN PASSAT NMS": VW.VOLKSWAGEN_PASSAT_NMS, + "VOLKSWAGEN POLO 6TH GEN": VW.VOLKSWAGEN_POLO_MK6, + "VOLKSWAGEN SHARAN 2ND GEN": VW.VOLKSWAGEN_SHARAN_MK2, + "VOLKSWAGEN TAOS 1ST GEN": VW.VOLKSWAGEN_TAOS_MK1, + "VOLKSWAGEN T-CROSS 1ST GEN": VW.VOLKSWAGEN_TCROSS_MK1, + "VOLKSWAGEN TIGUAN 2ND GEN": VW.VOLKSWAGEN_TIGUAN_MK2, + "VOLKSWAGEN TOURAN 2ND GEN": VW.VOLKSWAGEN_TOURAN_MK2, + "VOLKSWAGEN TRANSPORTER T6.1": VW.VOLKSWAGEN_TRANSPORTER_T61, + "VOLKSWAGEN T-ROC 1ST GEN": VW.VOLKSWAGEN_TROC_MK1, + "AUDI A3 3RD GEN": VW.AUDI_A3_MK3, + "AUDI Q2 1ST GEN": VW.AUDI_Q2_MK1, + "AUDI Q3 2ND GEN": VW.AUDI_Q3_MK2, + "SEAT ATECA 1ST GEN": VW.SEAT_ATECA_MK1, + "SEAT LEON 3RD GEN": VW.SEAT_ATECA_MK1, + "SEAT_LEON_MK3": VW.SEAT_ATECA_MK1, + "SKODA FABIA 4TH GEN": VW.SKODA_FABIA_MK4, + "SKODA KAMIQ 1ST GEN": VW.SKODA_KAMIQ_MK1, + "SKODA KAROQ 1ST GEN": VW.SKODA_KAROQ_MK1, + "SKODA KODIAQ 1ST GEN": VW.SKODA_KODIAQ_MK1, + "SKODA OCTAVIA 3RD GEN": VW.SKODA_OCTAVIA_MK3, + "SKODA SCALA 1ST GEN": VW.SKODA_KAMIQ_MK1, + "SKODA_SCALA_MK1": VW.SKODA_KAMIQ_MK1, + "SKODA SUPERB 3RD GEN": VW.SKODA_SUPERB_MK3, + + "mock": MOCK.MOCK, +} diff --git a/selfdrive/car/ford/carcontroller.py b/selfdrive/car/ford/carcontroller.py index 261119c485..47082fb56f 100644 --- a/selfdrive/car/ford/carcontroller.py +++ b/selfdrive/car/ford/carcontroller.py @@ -1,9 +1,10 @@ from cereal import car -from openpilot.common.numpy_fast import clip from opendbc.can.packer import CANPacker +from openpilot.common.numpy_fast import clip from openpilot.selfdrive.car import apply_std_steer_angle_limits from openpilot.selfdrive.car.ford import fordcan -from openpilot.selfdrive.car.ford.values import CANFD_CAR, CarControllerParams +from openpilot.selfdrive.car.ford.values import CarControllerParams, FordFlags +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX LongCtrlState = car.CarControl.Actuators.LongControlState @@ -22,7 +23,7 @@ def apply_ford_curvature_limits(apply_curvature, apply_curvature_last, current_c return clip(apply_curvature, -CarControllerParams.CURVATURE_MAX, CarControllerParams.CURVATURE_MAX) -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.VM = VM @@ -34,6 +35,7 @@ class CarController: self.main_on_last = False self.lkas_enabled_last = False self.steer_alert_last = False + self.lead_distance_bars_last = None def update(self, CC, CS, now_nanos): can_sends = [] @@ -69,10 +71,10 @@ class CarController: self.apply_curvature_last = apply_curvature - if self.CP.carFingerprint in CANFD_CAR: + if self.CP.flags & FordFlags.CANFD: # TODO: extended mode mode = 1 if CC.latActive else 0 - counter = (self.frame // CarControllerParams.STEER_STEP) % 0xF + counter = (self.frame // CarControllerParams.STEER_STEP) % 0x10 can_sends.append(fordcan.create_lat_ctl2_msg(self.packer, self.CAN, mode, 0., 0., -apply_curvature, 0., counter)) else: can_sends.append(fordcan.create_lat_ctl_msg(self.packer, self.CAN, CC.latActive, 0., 0., -apply_curvature, 0.)) @@ -97,15 +99,19 @@ class CarController: # send lkas ui msg at 1Hz or if ui state changes if (self.frame % CarControllerParams.LKAS_UI_STEP) == 0 or send_ui: can_sends.append(fordcan.create_lkas_ui_msg(self.packer, self.CAN, main_on, CC.latActive, steer_alert, hud_control, CS.lkas_status_stock_values)) + # send acc ui msg at 5Hz or if ui state changes + if hud_control.leadDistanceBars != self.lead_distance_bars_last: + send_ui = True if (self.frame % CarControllerParams.ACC_UI_STEP) == 0 or send_ui: can_sends.append(fordcan.create_acc_ui_msg(self.packer, self.CAN, self.CP, main_on, CC.latActive, - fcw_alert, CS.out.cruiseState.standstill, hud_control, - CS.acc_tja_status_stock_values, CS.gac_tr_cluster)) + fcw_alert, CS.out.cruiseState.standstill, hud_control, + CS.acc_tja_status_stock_values)) self.main_on_last = main_on self.lkas_enabled_last = CC.latActive self.steer_alert_last = steer_alert + self.lead_distance_bars_last = hud_control.leadDistanceBars new_actuators = actuators.copy() new_actuators.curvature = self.apply_curvature_last diff --git a/selfdrive/car/ford/carstate.py b/selfdrive/car/ford/carstate.py index 887c66fd51..b180060fe6 100644 --- a/selfdrive/car/ford/carstate.py +++ b/selfdrive/car/ford/carstate.py @@ -1,10 +1,10 @@ from cereal import car -from openpilot.common.conversions import Conversions as CV from opendbc.can.can_define import CANDefine from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.interfaces import CarStateBase +from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.ford.fordcan import CanBus -from openpilot.selfdrive.car.ford.values import CANFD_CAR, CarControllerParams, DBC, BUTTON_STATES +from openpilot.selfdrive.car.ford.values import DBC, CarControllerParams, FordFlags, BUTTON_STATES +from openpilot.selfdrive.car.interfaces import CarStateBase GearShifter = car.CarState.GearShifter TransmissionType = car.CarParams.TransmissionType @@ -19,6 +19,9 @@ class CarState(CarStateBase): self.vehicle_sensors_valid = False + self.prev_distance_button = 0 + self.distance_button = 0 + self.lkas_enabled = None self.prev_lkas_enabled = None self.buttonStates = BUTTON_STATES.copy() @@ -58,12 +61,13 @@ class CarState(CarStateBase): ret.steerFaultPermanent = cp.vl["EPAS_INFO"]["EPAS_Failure"] in (2, 3) ret.espDisabled = cp.vl["Cluster_Info1_FD1"]["DrvSlipCtlMde_D_Rq"] != 0 # 0 is default mode - if self.CP.carFingerprint in CANFD_CAR: + if self.CP.flags & FordFlags.CANFD: # this signal is always 0 on non-CAN FD cars ret.steerFaultTemporary |= cp.vl["Lane_Assist_Data3_FD1"]["LatCtlSte_D_Stat"] not in (1, 2, 3) # cruise state - ret.cruiseState.speed = cp.vl["EngBrakeData"]["Veh_V_DsplyCcSet"] * CV.MPH_TO_MS + is_metric = cp.vl["INSTRUMENT_PANEL"]["METRIC_UNITS"] == 1 if not self.CP.flags & FordFlags.CANFD else False + ret.cruiseState.speed = cp.vl["EngBrakeData"]["Veh_V_DsplyCcSet"] * (CV.KPH_TO_MS if is_metric else CV.MPH_TO_MS) ret.cruiseState.enabled = cp.vl["EngBrakeData"]["CcStat_D_Actl"] in (4, 5) ret.cruiseState.available = cp.vl["EngBrakeData"]["CcStat_D_Actl"] in (3, 4, 5) ret.cruiseState.nonAdaptive = cp.vl["Cluster_Info1_FD1"]["AccEnbl_B_RqDrv"] == 0 @@ -92,6 +96,8 @@ class CarState(CarStateBase): ret.rightBlinker = ret.rightBlinkerOn = cp.vl["Steering_Data_FD1"]["TurnLghtSwtch_D_Stat"] == 2 # TODO: block this going to the camera otherwise it will enable stock TJA ret.genericToggle = bool(cp.vl["Steering_Data_FD1"]["TjaButtnOnOffPress"]) + self.prev_distance_button = self.distance_button + self.distance_button = cp.vl["Steering_Data_FD1"]["AccButtnGapTogglePress"] # lock info ret.doorOpen = any([cp.vl["BodyInfo_3_FD1"]["DrStatDrv_B_Actl"], cp.vl["BodyInfo_3_FD1"]["DrStatPsngr_B_Actl"], @@ -100,7 +106,7 @@ class CarState(CarStateBase): # blindspot sensors if self.CP.enableBsm: - cp_bsm = cp_cam if self.CP.carFingerprint in CANFD_CAR else cp + cp_bsm = cp_cam if self.CP.flags & FordFlags.CANFD else cp ret.leftBlindspot = cp_bsm.vl["Side_Detect_L_Stat"]["SodDetctLeft_D_Stat"] != 0 ret.rightBlindspot = cp_bsm.vl["Side_Detect_R_Stat"]["SodDetctRight_D_Stat"] != 0 @@ -140,10 +146,14 @@ class CarState(CarStateBase): ("RCMStatusMessage2_FD1", 10), ] - if CP.carFingerprint in CANFD_CAR: + if CP.flags & FordFlags.CANFD: messages += [ ("Lane_Assist_Data3_FD1", 33), ] + else: + messages += [ + ("INSTRUMENT_PANEL", 1), + ] if CP.transmissionType == TransmissionType.automatic: messages += [ @@ -155,7 +165,7 @@ class CarState(CarStateBase): ("BCM_Lamp_Stat_FD1", 1), ] - if CP.enableBsm and CP.carFingerprint not in CANFD_CAR: + if CP.enableBsm and not (CP.flags & FordFlags.CANFD): messages += [ ("Side_Detect_L_Stat", 5), ("Side_Detect_R_Stat", 5), @@ -173,7 +183,7 @@ class CarState(CarStateBase): ("IPMA_Data", 1), ] - if CP.enableBsm and CP.carFingerprint in CANFD_CAR: + if CP.enableBsm and CP.flags & FordFlags.CANFD: messages += [ ("Side_Detect_L_Stat", 5), ("Side_Detect_R_Stat", 5), diff --git a/selfdrive/car/ford/fingerprints.py b/selfdrive/car/ford/fingerprints.py index a5d465849a..2201072fa3 100644 --- a/selfdrive/car/ford/fingerprints.py +++ b/selfdrive/car/ford/fingerprints.py @@ -4,23 +4,26 @@ from openpilot.selfdrive.car.ford.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.BRONCO_SPORT_MK1: { + CAR.FORD_BRONCO_SPORT_MK1: { (Ecu.eps, 0x730, None): [ b'LX6C-14D003-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'LX6C-14D003-AK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'LX6C-14D003-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.abs, 0x760, None): [ b'LX6C-2D053-RD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'LX6C-2D053-RE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'LX6C-2D053-RF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x764, None): [ b'LB5T-14D049-AB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x706, None): [ b'M1PT-14F397-AC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'M1PT-14F397-AD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.ESCAPE_MK4: { + CAR.FORD_ESCAPE_MK4: { (Ecu.eps, 0x730, None): [ b'LX6C-14D003-AF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'LX6C-14D003-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -43,7 +46,7 @@ FW_VERSIONS = { b'LV4T-14F397-GG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.EXPLORER_MK6: { + CAR.FORD_EXPLORER_MK6: { (Ecu.eps, 0x730, None): [ b'L1MC-14D003-AJ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'L1MC-14D003-AK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -58,6 +61,7 @@ FW_VERSIONS = { b'L1MC-2D053-BB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'L1MC-2D053-BD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'L1MC-2D053-BF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'L1MC-2D053-BJ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'L1MC-2D053-KB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x764, None): [ @@ -71,7 +75,7 @@ FW_VERSIONS = { b'LC5T-14F397-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.F_150_MK14: { + CAR.FORD_F_150_MK14: { (Ecu.eps, 0x730, None): [ b'ML3V-14D003-BC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], @@ -82,10 +86,11 @@ FW_VERSIONS = { b'ML3T-14D049-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x706, None): [ + b'ML3T-14H102-ABR\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.F_150_LIGHTNING_MK1: { + CAR.FORD_F_150_LIGHTNING_MK1: { (Ecu.abs, 0x760, None): [ b'PL38-2D053-AA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], @@ -96,7 +101,7 @@ FW_VERSIONS = { b'ML3T-14D049-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.MUSTANG_MACH_E_MK1: { + CAR.FORD_MUSTANG_MACH_E_MK1: { (Ecu.eps, 0x730, None): [ b'LJ9C-14D003-AM\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'LJ9C-14D003-CC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -111,7 +116,7 @@ FW_VERSIONS = { b'ML3T-14H102-ABS\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.FOCUS_MK4: { + CAR.FORD_FOCUS_MK4: { (Ecu.eps, 0x730, None): [ b'JX6C-14D003-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], @@ -125,14 +130,17 @@ FW_VERSIONS = { b'JX7T-14F397-AH\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.MAVERICK_MK1: { + CAR.FORD_MAVERICK_MK1: { (Ecu.eps, 0x730, None): [ + b'NZ6C-14D003-AK\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'NZ6C-14D003-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.abs, 0x760, None): [ + b'NZ6C-2D053-AE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'NZ6C-2D053-AG\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-ED\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PZ6C-2D053-EE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PZ6C-2D053-EF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x764, None): [ b'NZ6T-14D049-AA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -141,4 +149,18 @@ FW_VERSIONS = { b'NZ6T-14F397-AC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, + CAR.FORD_RANGER_MK2: { + (Ecu.eps, 0x730, None): [ + b'NL14-14D003-AE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.abs, 0x760, None): [ + b'PB3C-2D053-ZD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.fwdRadar, 0x764, None): [ + b'ML3T-14D049-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + (Ecu.fwdCamera, 0x706, None): [ + b'PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00', + ], + }, } diff --git a/selfdrive/car/ford/fordcan.py b/selfdrive/car/ford/fordcan.py index ef9a558c02..2cfd61a191 100644 --- a/selfdrive/car/ford/fordcan.py +++ b/selfdrive/car/ford/fordcan.py @@ -144,7 +144,7 @@ def create_acc_msg(packer, CAN: CanBus, long_active: bool, gas: float, accel: fl def create_acc_ui_msg(packer, CAN: CanBus, CP, main_on: bool, enabled: bool, fcw_alert: bool, standstill: bool, - hud_control, stock_values: dict, gac_tr_cluster): + hud_control, stock_values: dict): """ Creates a CAN message for the Ford IPC adaptive cruise, forward collision warning and traffic jam assist status. @@ -212,7 +212,7 @@ def create_acc_ui_msg(packer, CAN: CanBus, CP, main_on: bool, enabled: bool, fcw "AccFllwMde_B_Dsply": 1 if hud_control.leadVisible else 0, # Lead indicator "AccStopMde_B_Dsply": 1 if standstill else 0, "AccWarn_D_Dsply": 0, # ACC warning - "AccTGap_D_Dsply": gac_tr_cluster, # Fixed time gap in UI + "AccTGap_D_Dsply": hud_control.leadDistanceBars, # Time gap }) # Forwards FCW alert from IPMA diff --git a/selfdrive/car/ford/interface.py b/selfdrive/car/ford/interface.py index 844d600b73..5d6fa7dde4 100644 --- a/selfdrive/car/ford/interface.py +++ b/selfdrive/car/ford/interface.py @@ -1,9 +1,9 @@ from cereal import car from panda import Panda from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import get_safety_config, create_mads_event +from openpilot.selfdrive.car import create_button_events, get_safety_config, create_mads_event from openpilot.selfdrive.car.ford.fordcan import CanBus -from openpilot.selfdrive.car.ford.values import CANFD_CAR, Ecu, BUTTON_STATES +from openpilot.selfdrive.car.ford.values import Ecu, FordFlags, BUTTON_STATES from openpilot.selfdrive.car.interfaces import CarInterfaceBase ButtonType = car.CarState.ButtonEvent.Type @@ -20,7 +20,7 @@ class CarInterface(CarInterfaceBase): @staticmethod def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs): ret.carName = "ford" - ret.dashcamOnly = candidate in CANFD_CAR + ret.dashcamOnly = bool(ret.flags & FordFlags.CANFD) ret.radarUnavailable = True ret.steerControlType = car.CarParams.SteerControlType.angle @@ -42,7 +42,7 @@ class CarInterface(CarInterfaceBase): ret.safetyConfigs[-1].safetyParam |= Panda.FLAG_FORD_LONG_CONTROL ret.openpilotLongitudinalControl = True - if candidate in CANFD_CAR: + if ret.flags & FordFlags.CANFD: ret.safetyConfigs[-1].safetyParam |= Panda.FLAG_FORD_CANFD # Auto Transmission: 0x732 ECU or Gear_Shift_by_Wire_FD1 @@ -66,9 +66,9 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() - buttonEvents = [] + buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) for button in self.CS.buttonStates: if self.CS.buttonStates[button] != self.buttonStatesPrev[button]: @@ -79,8 +79,8 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) - self.CS.accEnabled, buttonEvents = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - buttonEvents, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, + buttonEvents, c.vCruise) if ret.cruiseState.available: if self.enable_mads: @@ -89,7 +89,6 @@ class CarInterface(CarInterfaceBase): if not self.CS.prev_lkas_enabled and self.CS.lkas_enabled: self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, self.CS.buttonStates["gapAdjustCruise"], 1, 3, 4, "-") else: self.CS.madsEnabled = False @@ -131,6 +130,3 @@ class CarInterface(CarInterfaceBase): self.buttonStatesPrev = self.CS.buttonStates.copy() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/ford/tests/print_platform_codes.py b/selfdrive/car/ford/tests/print_platform_codes.py new file mode 100755 index 0000000000..670199980a --- /dev/null +++ b/selfdrive/car/ford/tests/print_platform_codes.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +from collections import defaultdict + +from cereal import car +from openpilot.selfdrive.car.ford.values import get_platform_codes +from openpilot.selfdrive.car.ford.fingerprints import FW_VERSIONS + +Ecu = car.CarParams.Ecu +ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} + + +if __name__ == "__main__": + cars_for_code: defaultdict = defaultdict(lambda: defaultdict(set)) + + for car_model, ecus in FW_VERSIONS.items(): + print(car_model) + for ecu in sorted(ecus, key=lambda x: int(x[0])): + platform_codes = get_platform_codes(ecus[ecu]) + for code in platform_codes: + cars_for_code[ecu][code].add(car_model) + + print(f' (Ecu.{ECU_NAME[ecu[0]]}, {hex(ecu[1])}, {ecu[2]}):') + print(f' Codes: {sorted(platform_codes)}') + print() + + print('\nCar models vs. platform codes:') + for ecu, codes in cars_for_code.items(): + print(f' (Ecu.{ECU_NAME[ecu[0]]}, {hex(ecu[1])}, {ecu[2]}):') + for code, cars in codes.items(): + print(f' {code!r}: {sorted(map(str, cars))}') diff --git a/selfdrive/car/ford/tests/test_ford.py b/selfdrive/car/ford/tests/test_ford.py index 2ad3f5db1b..5d7b2c3332 100755 --- a/selfdrive/car/ford/tests/test_ford.py +++ b/selfdrive/car/ford/tests/test_ford.py @@ -1,12 +1,15 @@ #!/usr/bin/env python3 +import random import unittest -from parameterized import parameterized from collections.abc import Iterable import capnp +from hypothesis import settings, given, strategies as st +from parameterized import parameterized from cereal import car -from openpilot.selfdrive.car.ford.values import FW_QUERY_CONFIG +from openpilot.selfdrive.car.fw_versions import build_fw_dict +from openpilot.selfdrive.car.ford.values import CAR, FW_QUERY_CONFIG, FW_PATTERN, get_platform_codes from openpilot.selfdrive.car.ford.fingerprints import FW_VERSIONS Ecu = car.CarParams.Ecu @@ -23,7 +26,7 @@ ECU_ADDRESSES = { } -ECU_FW_CORE = { +ECU_PART_NUMBER = { Ecu.eps: [ b"14D003", ], @@ -37,9 +40,6 @@ ECU_FW_CORE = { b"14F397", # Ford Q3 b"14H102", # Ford Q4 ], - Ecu.engine: [ - b"14C204", - ], } @@ -53,29 +53,96 @@ class TestFordFW(unittest.TestCase): @parameterized.expand(FW_VERSIONS.items()) def test_fw_versions(self, car_model: str, fw_versions: dict[tuple[capnp.lib.capnp._EnumModule, int, int | None], Iterable[bytes]]): for (ecu, addr, subaddr), fws in fw_versions.items(): - self.assertIn(ecu, ECU_FW_CORE, "Unexpected ECU") + self.assertIn(ecu, ECU_PART_NUMBER, "Unexpected ECU") self.assertEqual(addr, ECU_ADDRESSES[ecu], "ECU address mismatch") self.assertIsNone(subaddr, "Unexpected ECU subaddress") - # Software part number takes the form: PREFIX-CORE-SUFFIX - # Prefix changes based on the family of part. It includes the model year - # and likely the platform. - # Core identifies the type of the item (e.g. 14D003 = PSCM, 14C204 = PCM). - # Suffix specifies the version of the part. -AA would be followed by -AB. - # Small increments in the suffix are usually compatible. - # Details: https://forscan.org/forum/viewtopic.php?p=70008#p70008 for fw in fws: self.assertEqual(len(fw), 24, "Expected ECU response to be 24 bytes") - # TODO: parse with regex, don't need detailed error message - fw_parts = fw.rstrip(b'\x00').split(b'-') - self.assertEqual(len(fw_parts), 3, "Expected FW to be in format: prefix-core-suffix") + match = FW_PATTERN.match(fw) + self.assertIsNotNone(match, f"Unable to parse FW: {fw!r}") + if match: + part_number = match.group("part_number") + self.assertIn(part_number, ECU_PART_NUMBER[ecu], f"Unexpected part number for {fw!r}") - prefix, core, suffix = fw_parts - self.assertEqual(len(prefix), 4, "Expected FW prefix to be 4 characters") - self.assertIn(len(core), (5, 6), "Expected FW core to be 5-6 characters") - self.assertIn(core, ECU_FW_CORE[ecu], f"Unexpected FW core for {ecu}") - self.assertIn(len(suffix), (2, 3), "Expected FW suffix to be 2-3 characters") + codes = get_platform_codes([fw]) + self.assertEqual(1, len(codes), f"Unable to parse FW: {fw!r}") + + @settings(max_examples=100) + @given(data=st.data()) + def test_platform_codes_fuzzy_fw(self, data): + """Ensure function doesn't raise an exception""" + fw_strategy = st.lists(st.binary()) + fws = data.draw(fw_strategy) + get_platform_codes(fws) + + def test_platform_codes_spot_check(self): + # Asserts basic platform code parsing behavior for a few cases + results = get_platform_codes([ + b"JX6A-14C204-BPL\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"NZ6T-14F397-AC\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"PJ6T-14H102-ABJ\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"LB5A-14C204-EAC\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ]) + self.assertEqual(results, {(b"X6A", b"J"), (b"Z6T", b"N"), (b"J6T", b"P"), (b"B5A", b"L")}) + + def test_fuzzy_match(self): + for platform, fw_by_addr in FW_VERSIONS.items(): + # Ensure there's no overlaps in platform codes + for _ in range(20): + car_fw = [] + for ecu, fw_versions in fw_by_addr.items(): + ecu_name, addr, sub_addr = ecu + fw = random.choice(fw_versions) + car_fw.append({"ecu": ecu_name, "fwVersion": fw, "address": addr, + "subAddress": 0 if sub_addr is None else sub_addr}) + + CP = car.CarParams.new_message(carFw=car_fw) + matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), CP.carVin, FW_VERSIONS) + self.assertEqual(matches, {platform}) + + def test_match_fw_fuzzy(self): + offline_fw = { + (Ecu.eps, 0x730, None): [ + b"L1MC-14D003-AJ\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"L1MC-14D003-AL\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ], + (Ecu.abs, 0x760, None): [ + b"L1MC-2D053-BA\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"L1MC-2D053-BD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ], + (Ecu.fwdRadar, 0x764, None): [ + b"LB5T-14D049-AB\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"LB5T-14D049-AD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ], + # We consider all model year hints for ECU, even with different platform codes + (Ecu.fwdCamera, 0x706, None): [ + b"LB5T-14F397-AD\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + b"NC5T-14F397-AF\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + ], + } + expected_fingerprint = CAR.FORD_EXPLORER_MK6 + + # ensure that we fuzzy match on all non-exact FW with changed revisions + live_fw = { + (0x730, None): {b"L1MC-14D003-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}, + (0x760, None): {b"L1MC-2D053-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}, + (0x764, None): {b"LB5T-14D049-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}, + (0x706, None): {b"LB5T-14F397-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"}, + } + candidates = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(live_fw, '', {expected_fingerprint: offline_fw}) + self.assertEqual(candidates, {expected_fingerprint}) + + # model year hint in between the range should match + live_fw[(0x706, None)] = {b"MB5T-14F397-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"} + candidates = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(live_fw, '', {expected_fingerprint: offline_fw,}) + self.assertEqual(candidates, {expected_fingerprint}) + + # unseen model year hint should not match + live_fw[(0x760, None)] = {b"M1MC-2D053-XX\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"} + candidates = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(live_fw, '', {expected_fingerprint: offline_fw}) + self.assertEqual(len(candidates), 0, "Should not match new model year hint") if __name__ == "__main__": diff --git a/selfdrive/car/ford/values.py b/selfdrive/car/ford/values.py index e54c72bc67..edfee3ea1b 100644 --- a/selfdrive/car/ford/values.py +++ b/selfdrive/car/ford/values.py @@ -1,12 +1,14 @@ -from dataclasses import dataclass, field -from enum import Enum +import copy +import re +from dataclasses import dataclass, field, replace +from enum import Enum, IntFlag import panda.python.uds as uds from cereal import car from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, dbc_dict, DbcDict, PlatformConfig, Platforms -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \ +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column, \ Device -from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 +from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, LiveFwVersions, OfflineFwVersions, Request, StdQueries, p16 Ecu = car.CarParams.Ecu @@ -39,6 +41,11 @@ class CarControllerParams: pass +class FordFlags(IntFlag): + # Static flags + CANFD = 1 + + BUTTON_STATES = { "accelCruise": False, "decelCruise": False, @@ -63,94 +70,160 @@ class Footnote(Enum): @dataclass -class FordCarInfo(CarInfo): +class FordCarDocs(CarDocs): package: str = "Co-Pilot360 Assist+" + hybrid: bool = False + plug_in_hybrid: bool = False def init_make(self, CP: car.CarParams): - harness = CarHarness.ford_q4 if CP.carFingerprint in CANFD_CAR else CarHarness.ford_q3 - if CP.carFingerprint in (CAR.BRONCO_SPORT_MK1, CAR.MAVERICK_MK1, CAR.F_150_MK14): + harness = CarHarness.ford_q4 if CP.flags & FordFlags.CANFD else CarHarness.ford_q3 + if CP.carFingerprint in (CAR.FORD_BRONCO_SPORT_MK1, CAR.FORD_MAVERICK_MK1, CAR.FORD_F_150_MK14, CAR.FORD_F_150_LIGHTNING_MK1): self.car_parts = CarParts([Device.threex_angled_mount, harness]) else: self.car_parts = CarParts([Device.threex, harness]) -@dataclass(frozen=True) +@dataclass class FordPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('ford_lincoln_base_pt', RADAR.DELPHI_MRR)) + def init(self): + for car_docs in list(self.car_docs): + if car_docs.hybrid: + name = f"{car_docs.make} {car_docs.model} Hybrid {car_docs.years}" + self.car_docs.append(replace(copy.deepcopy(car_docs), name=name)) + if car_docs.plug_in_hybrid: + name = f"{car_docs.make} {car_docs.model} Plug-in Hybrid {car_docs.years}" + self.car_docs.append(replace(copy.deepcopy(car_docs), name=name)) + + +@dataclass +class FordCANFDPlatformConfig(FordPlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('ford_lincoln_base_pt', None)) + + def init(self): + super().init() + self.flags |= FordFlags.CANFD + class CAR(Platforms): - BRONCO_SPORT_MK1 = FordPlatformConfig( - "FORD BRONCO SPORT 1ST GEN", - FordCarInfo("Ford Bronco Sport 2021-22"), - specs=CarSpecs(mass=1625, wheelbase=2.67, steerRatio=17.7), + FORD_BRONCO_SPORT_MK1 = FordPlatformConfig( + [FordCarDocs("Ford Bronco Sport 2021-23")], + CarSpecs(mass=1625, wheelbase=2.67, steerRatio=17.7), ) - ESCAPE_MK4 = FordPlatformConfig( - "FORD ESCAPE 4TH GEN", + FORD_ESCAPE_MK4 = FordPlatformConfig( [ - FordCarInfo("Ford Escape 2020-22"), - FordCarInfo("Ford Escape Hybrid 2020-22"), - FordCarInfo("Ford Escape Plug-in Hybrid 2020-22"), - FordCarInfo("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering"), - FordCarInfo("Ford Kuga Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), - FordCarInfo("Ford Kuga Plug-in Hybrid 2020-22", "Adaptive Cruise Control with Lane Centering"), + FordCarDocs("Ford Escape 2020-22", hybrid=True, plug_in_hybrid=True), + FordCarDocs("Ford Kuga 2020-22", "Adaptive Cruise Control with Lane Centering", hybrid=True, plug_in_hybrid=True), ], - specs=CarSpecs(mass=1750, wheelbase=2.71, steerRatio=16.7), + CarSpecs(mass=1750, wheelbase=2.71, steerRatio=16.7), ) - EXPLORER_MK6 = FordPlatformConfig( - "FORD EXPLORER 6TH GEN", + FORD_EXPLORER_MK6 = FordPlatformConfig( [ - FordCarInfo("Ford Explorer 2020-23"), - FordCarInfo("Ford Explorer Hybrid 2020-23"), # Limited and Platinum only - FordCarInfo("Lincoln Aviator 2020-23", "Co-Pilot360 Plus"), - FordCarInfo("Lincoln Aviator Plug-in Hybrid 2020-23", "Co-Pilot360 Plus"), # Grand Touring only + FordCarDocs("Ford Explorer 2020-23", hybrid=True), # Hybrid: Limited and Platinum only + FordCarDocs("Lincoln Aviator 2020-23", "Co-Pilot360 Plus", plug_in_hybrid=True), # Hybrid: Grand Touring only ], - specs=CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), + CarSpecs(mass=2050, wheelbase=3.025, steerRatio=16.8), ) - F_150_MK14 = FordPlatformConfig( - "FORD F-150 14TH GEN", + FORD_F_150_MK14 = FordCANFDPlatformConfig( + [FordCarDocs("Ford F-150 2022-23", "Co-Pilot360 Active 2.0", hybrid=True)], + CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), + ) + FORD_F_150_LIGHTNING_MK1 = FordCANFDPlatformConfig( + [FordCarDocs("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0")], + CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), + ) + FORD_FOCUS_MK4 = FordPlatformConfig( + [FordCarDocs("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS], hybrid=True)], # mHEV only + CarSpecs(mass=1350, wheelbase=2.7, steerRatio=15.0), + ) + FORD_MAVERICK_MK1 = FordPlatformConfig( [ - FordCarInfo("Ford F-150 2023", "Co-Pilot360 Active 2.0"), - FordCarInfo("Ford F-150 Hybrid 2023", "Co-Pilot360 Active 2.0"), + FordCarDocs("Ford Maverick 2022", "LARIAT Luxury", hybrid=True), + FordCarDocs("Ford Maverick 2023-24", "Co-Pilot360 Assist", hybrid=True), ], - dbc_dict=dbc_dict('ford_lincoln_base_pt', None), - specs=CarSpecs(mass=2000, wheelbase=3.69, steerRatio=17.0), + CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), ) - F_150_LIGHTNING_MK1 = FordPlatformConfig( - "FORD F-150 LIGHTNING 1ST GEN", - FordCarInfo("Ford F-150 Lightning 2021-23", "Co-Pilot360 Active 2.0"), - dbc_dict=dbc_dict('ford_lincoln_base_pt', None), - specs=CarSpecs(mass=2948, wheelbase=3.70, steerRatio=16.9), + FORD_MUSTANG_MACH_E_MK1 = FordCANFDPlatformConfig( + [FordCarDocs("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0")], + CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio ) - FOCUS_MK4 = FordPlatformConfig( - "FORD FOCUS 4TH GEN", - [ - FordCarInfo("Ford Focus 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), - FordCarInfo("Ford Focus Hybrid 2018", "Adaptive Cruise Control with Lane Centering", footnotes=[Footnote.FOCUS]), # mHEV only - ], - specs=CarSpecs(mass=1350, wheelbase=2.7, steerRatio=15.0), - ) - MAVERICK_MK1 = FordPlatformConfig( - "FORD MAVERICK 1ST GEN", - [ - FordCarInfo("Ford Maverick 2022", "LARIAT Luxury"), - FordCarInfo("Ford Maverick Hybrid 2022", "LARIAT Luxury"), - FordCarInfo("Ford Maverick 2023", "Co-Pilot360 Assist"), - FordCarInfo("Ford Maverick Hybrid 2023", "Co-Pilot360 Assist"), - ], - specs=CarSpecs(mass=1650, wheelbase=3.076, steerRatio=17.0), - ) - MUSTANG_MACH_E_MK1 = FordPlatformConfig( - "FORD MUSTANG MACH-E 1ST GEN", - FordCarInfo("Ford Mustang Mach-E 2021-23", "Co-Pilot360 Active 2.0"), - dbc_dict=dbc_dict('ford_lincoln_base_pt', None), - specs=CarSpecs(mass=2200, wheelbase=2.984, steerRatio=17.0), # TODO: check steer ratio + FORD_RANGER_MK2 = FordCANFDPlatformConfig( + [FordCarDocs("Ford Ranger 2024", "Adaptive Cruise Control with Lane Centering")], + CarSpecs(mass=2000, wheelbase=3.27, steerRatio=17.0), ) -CANFD_CAR = {CAR.F_150_MK14, CAR.F_150_LIGHTNING_MK1, CAR.MUSTANG_MACH_E_MK1} +# FW response contains a combined software and part number +# A-Z except no I, O or W +# e.g. NZ6A-14C204-AAA +# 1222-333333-444 +# 1 = Model year hint (approximates model year/generation) +# 2 = Platform hint +# 3 = Part number +# 4 = Software version +FW_ALPHABET = b'A-HJ-NP-VX-Z' +FW_PATTERN = re.compile(b'^(?P[' + FW_ALPHABET + b'])' + + b'(?P[0-9' + FW_ALPHABET + b']{3})-' + + b'(?P[0-9' + FW_ALPHABET + b']{5,6})-' + + b'(?P[' + FW_ALPHABET + b']{2,})\x00*$') +def get_platform_codes(fw_versions: list[bytes] | set[bytes]) -> set[tuple[bytes, bytes]]: + codes = set() + for fw in fw_versions: + match = FW_PATTERN.match(fw) + if match is not None: + codes.add((match.group('platform_hint'), match.group('model_year_hint'))) + + return codes + + +def match_fw_to_car_fuzzy(live_fw_versions: LiveFwVersions, vin: str, offline_fw_versions: OfflineFwVersions) -> set[str]: + candidates: set[str] = set() + + for candidate, fws in offline_fw_versions.items(): + # Keep track of ECUs which pass all checks (platform hint, within model year hint range) + valid_found_ecus = set() + valid_expected_ecus = {ecu[1:] for ecu in fws if ecu[0] in PLATFORM_CODE_ECUS} + for ecu, expected_versions in fws.items(): + addr = ecu[1:] + # Only check ECUs expected to have platform codes + if ecu[0] not in PLATFORM_CODE_ECUS: + continue + + # Expected platform codes & model year hints + codes = get_platform_codes(expected_versions) + expected_platform_codes = {code for code, _ in codes} + expected_model_year_hints = {model_year_hint for _, model_year_hint in codes} + + # Found platform codes & model year hints + codes = get_platform_codes(live_fw_versions.get(addr, set())) + found_platform_codes = {code for code, _ in codes} + found_model_year_hints = {model_year_hint for _, model_year_hint in codes} + + # Check platform code matches for any found versions + if not any(found_platform_code in expected_platform_codes for found_platform_code in found_platform_codes): + break + + # Check any model year hint within range in the database. Note that some models have more than one + # platform code per ECU which we don't consider as separate ranges + if not any(min(expected_model_year_hints) <= found_model_year_hint <= max(expected_model_year_hints) for + found_model_year_hint in found_model_year_hints): + break + + valid_found_ecus.add(addr) + + # If all live ECUs pass all checks for candidate, add it as a match + if valid_expected_ecus.issubset(valid_found_ecus): + candidates.add(candidate) + + return candidates + + +# All of these ECUs must be present and are expected to have platform codes we can match +PLATFORM_CODE_ECUS = (Ecu.abs, Ecu.fwdCamera, Ecu.fwdRadar, Ecu.eps) + DATA_IDENTIFIER_FORD_ASBUILT = 0xDE00 ASBUILT_BLOCKS: list[tuple[int, list]] = [ @@ -209,7 +282,8 @@ FW_QUERY_CONFIG = FwQueryConfig( (Ecu.shiftByWire, 0x732, None), # Gear Shift Module (Ecu.debug, 0x7d0, None), # Accessory Protocol Interface Module ], + # Custom fuzzy fingerprinting function using platform and model year hints + match_fw_to_car_fuzzy=match_fw_to_car_fuzzy, ) -CAR_INFO = CAR.create_carinfo_map() DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/fw_query_definitions.py b/selfdrive/car/fw_query_definitions.py index 80492b4177..ad4dcdc8f1 100755 --- a/selfdrive/car/fw_query_definitions.py +++ b/selfdrive/car/fw_query_definitions.py @@ -47,6 +47,11 @@ class StdQueries: MANUFACTURER_SOFTWARE_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ p16(uds.DATA_IDENTIFIER_TYPE.VEHICLE_MANUFACTURER_ECU_SOFTWARE_NUMBER) + SUPPLIER_SOFTWARE_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ + p16(uds.DATA_IDENTIFIER_TYPE.SYSTEM_SUPPLIER_ECU_SOFTWARE_VERSION_NUMBER) + SUPPLIER_SOFTWARE_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ + p16(uds.DATA_IDENTIFIER_TYPE.SYSTEM_SUPPLIER_ECU_SOFTWARE_VERSION_NUMBER) + UDS_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(uds.DATA_IDENTIFIER_TYPE.APPLICATION_SOFTWARE_IDENTIFICATION) UDS_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ @@ -92,9 +97,9 @@ class FwQueryConfig: non_essential_ecus: dict[capnp.lib.capnp._EnumModule, list[str]] = field(default_factory=dict) # Ecus added for data collection, not to be fingerprinted on extra_ecus: list[tuple[capnp.lib.capnp._EnumModule, int, int | None]] = field(default_factory=list) - # Function a brand can implement to provide better fuzzy matching. Takes in FW versions, + # Function a brand can implement to provide better fuzzy matching. Takes in FW versions and VIN, # returns set of candidates. Only will match if one candidate is returned - match_fw_to_car_fuzzy: Callable[[LiveFwVersions, OfflineFwVersions], set[str]] | None = None + match_fw_to_car_fuzzy: Callable[[LiveFwVersions, str, OfflineFwVersions], set[str]] | None = None def __post_init__(self): for i in range(len(self.requests)): diff --git a/selfdrive/car/fw_versions.py b/selfdrive/car/fw_versions.py index 7673814195..f2aff2e6f9 100755 --- a/selfdrive/car/fw_versions.py +++ b/selfdrive/car/fw_versions.py @@ -1,19 +1,20 @@ #!/usr/bin/env python3 from collections import defaultdict -from typing import Any, TypeVar from collections.abc import Iterator +from typing import Any, Protocol, TypeVar + from tqdm import tqdm import capnp import panda.python.uds as uds from cereal import car from openpilot.common.params import Params -from openpilot.selfdrive.car.ecu_addrs import get_ecu_addrs -from openpilot.selfdrive.car.fw_query_definitions import AddrType, EcuAddrBusType, FwQueryConfig -from openpilot.selfdrive.car.interfaces import get_interface_attr -from openpilot.selfdrive.car.fingerprints import FW_VERSIONS -from openpilot.selfdrive.car.isotp_parallel_query import IsoTpParallelQuery from openpilot.common.swaglog import cloudlog +from openpilot.selfdrive.car.ecu_addrs import get_ecu_addrs +from openpilot.selfdrive.car.fingerprints import FW_VERSIONS +from openpilot.selfdrive.car.fw_query_definitions import AddrType, EcuAddrBusType, FwQueryConfig, LiveFwVersions, OfflineFwVersions +from openpilot.selfdrive.car.interfaces import get_interface_attr +from openpilot.selfdrive.car.isotp_parallel_query import IsoTpParallelQuery Ecu = car.CarParams.Ecu ESSENTIAL_ECUS = [Ecu.engine, Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.vsa] @@ -38,8 +39,7 @@ def is_brand(brand: str, filter_brand: str | None) -> bool: return filter_brand is None or brand == filter_brand -def build_fw_dict(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], - filter_brand: str = None) -> dict[AddrType, set[bytes]]: +def build_fw_dict(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], filter_brand: str = None) -> dict[AddrType, set[bytes]]: fw_versions_dict: defaultdict[AddrType, set[bytes]] = defaultdict(set) for fw in fw_versions: if is_brand(fw.brand, filter_brand) and not fw.logging: @@ -48,7 +48,12 @@ def build_fw_dict(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], return dict(fw_versions_dict) -def match_fw_to_car_fuzzy(live_fw_versions, match_brand=None, log=True, exclude=None): +class MatchFwToCar(Protocol): + def __call__(self, live_fw_versions: LiveFwVersions, match_brand: str = None, log: bool = True) -> set[str]: + ... + + +def match_fw_to_car_fuzzy(live_fw_versions: LiveFwVersions, match_brand: str = None, log: bool = True, exclude: str = None) -> set[str]: """Do a fuzzy FW match. This function will return a match, and the number of firmware version that were matched uniquely to that specific car. If multiple ECUs uniquely match to different cars the match is rejected.""" @@ -73,7 +78,7 @@ def match_fw_to_car_fuzzy(live_fw_versions, match_brand=None, log=True, exclude= all_fw_versions[(addr[1], addr[2], f)].append(candidate) matched_ecus = set() - candidate = None + match: str | None = None for addr, versions in live_fw_versions.items(): ecu_key = (addr[0], addr[1]) for version in versions: @@ -82,23 +87,23 @@ def match_fw_to_car_fuzzy(live_fw_versions, match_brand=None, log=True, exclude= if len(candidates) == 1: matched_ecus.add(ecu_key) - if candidate is None: - candidate = candidates[0] + if match is None: + match = candidates[0] # We uniquely matched two different cars. No fuzzy match possible - elif candidate != candidates[0]: + elif match != candidates[0]: return set() # Note that it is possible to match to a candidate without all its ECUs being present # if there are enough matches. FIXME: parameterize this or require all ECUs to exist like exact matching - if len(matched_ecus) >= 2: + if match and len(matched_ecus) >= 2: if log: - cloudlog.error(f"Fingerprinted {candidate} using fuzzy match. {len(matched_ecus)} matching ECUs") - return {candidate} + cloudlog.error(f"Fingerprinted {match} using fuzzy match. {len(matched_ecus)} matching ECUs") + return {match} else: return set() -def match_fw_to_car_exact(live_fw_versions, match_brand=None, log=True, extra_fw_versions=None) -> set[str]: +def match_fw_to_car_exact(live_fw_versions: LiveFwVersions, match_brand: str = None, log: bool = True, extra_fw_versions: dict = None) -> set[str]: """Do an exact FW match. Returns all cars that match the given FW versions for a list of "essential" ECUs. If an ECU is not considered essential the FW version can be missing to get a fingerprint, but if it's present it @@ -139,9 +144,10 @@ def match_fw_to_car_exact(live_fw_versions, match_brand=None, log=True, extra_fw return set(candidates.keys()) - invalid -def match_fw_to_car(fw_versions, allow_exact=True, allow_fuzzy=True, log=True): +def match_fw_to_car(fw_versions: list[capnp.lib.capnp._DynamicStructBuilder], vin: str, + allow_exact: bool = True, allow_fuzzy: bool = True, log: bool = True) -> tuple[bool, set[str]]: # Try exact matching first - exact_matches = [] + exact_matches: list[tuple[bool, MatchFwToCar]] = [] if allow_exact: exact_matches = [(True, match_fw_to_car_exact)] if allow_fuzzy: @@ -149,7 +155,7 @@ def match_fw_to_car(fw_versions, allow_exact=True, allow_fuzzy=True, log=True): for exact_match, match_func in exact_matches: # For each brand, attempt to fingerprint using all FW returned from its queries - matches = set() + matches: set[str] = set() for brand in VERSIONS.keys(): fw_versions_dict = build_fw_dict(fw_versions, filter_brand=brand) matches |= match_func(fw_versions_dict, match_brand=brand, log=log) @@ -157,7 +163,7 @@ def match_fw_to_car(fw_versions, allow_exact=True, allow_fuzzy=True, log=True): # If specified and no matches so far, fall back to brand's fuzzy fingerprinting function config = FW_QUERY_CONFIGS[brand] if not exact_match and not len(matches) and config.match_fw_to_car_fuzzy is not None: - matches |= config.match_fw_to_car_fuzzy(fw_versions_dict, VERSIONS[brand]) + matches |= config.match_fw_to_car_fuzzy(fw_versions_dict, vin, VERSIONS[brand]) if len(matches): return exact_match, matches @@ -165,12 +171,12 @@ def match_fw_to_car(fw_versions, allow_exact=True, allow_fuzzy=True, log=True): return True, set() -def get_present_ecus(logcan, sendcan, num_pandas=1) -> set[EcuAddrBusType]: +def get_present_ecus(logcan, sendcan, num_pandas: int = 1) -> set[EcuAddrBusType]: params = Params() # queries are split by OBD multiplexing mode queries: dict[bool, list[list[EcuAddrBusType]]] = {True: [], False: []} parallel_queries: dict[bool, list[EcuAddrBusType]] = {True: [], False: []} - responses = set() + responses: set[EcuAddrBusType] = set() for brand, config, r in REQUESTS: # Skip query if no panda available @@ -231,8 +237,8 @@ def set_obd_multiplexing(params: Params, obd_multiplexing: bool): cloudlog.warning("OBD multiplexing set successfully") -def get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs, timeout=0.1, num_pandas=1, debug=False, progress=False) -> \ - list[capnp.lib.capnp._DynamicStructBuilder]: +def get_fw_versions_ordered(logcan, sendcan, vin: str, ecu_rx_addrs: set[EcuAddrBusType], timeout: float = 0.1, num_pandas: int = 1, + debug: bool = False, progress: bool = False) -> list[capnp.lib.capnp._DynamicStructBuilder]: """Queries for FW versions ordering brands by likelihood, breaks when exact match is found""" all_car_fw = [] @@ -247,15 +253,15 @@ def get_fw_versions_ordered(logcan, sendcan, ecu_rx_addrs, timeout=0.1, num_pand all_car_fw.extend(car_fw) # If there is a match using this brand's FW alone, finish querying early - _, matches = match_fw_to_car(car_fw, log=False) + _, matches = match_fw_to_car(car_fw, vin, log=False) if len(matches) == 1: break return all_car_fw -def get_fw_versions(logcan, sendcan, query_brand=None, extra=None, timeout=0.1, num_pandas=1, debug=False, progress=False) -> \ - list[capnp.lib.capnp._DynamicStructBuilder]: +def get_fw_versions(logcan, sendcan, query_brand: str = None, extra: OfflineFwVersions = None, timeout: float = 0.1, num_pandas: int = 1, + debug: bool = False, progress: bool = False) -> list[capnp.lib.capnp._DynamicStructBuilder]: versions = VERSIONS.copy() params = Params() @@ -367,6 +373,7 @@ if __name__ == "__main__": t = time.time() print("Getting vin...") + set_obd_multiplexing(params, True) vin_rx_addr, vin_rx_bus, vin = get_vin(logcan, sendcan, (0, 1), retry=10, debug=args.debug) print(f'RX: {hex(vin_rx_addr)}, BUS: {vin_rx_bus}, VIN: {vin}') print(f"Getting VIN took {time.time() - t:.3f} s") @@ -374,7 +381,7 @@ if __name__ == "__main__": t = time.time() fw_vers = get_fw_versions(logcan, sendcan, query_brand=args.brand, extra=extra, num_pandas=num_pandas, debug=args.debug, progress=True) - _, candidates = match_fw_to_car(fw_vers) + _, candidates = match_fw_to_car(fw_vers, vin) print() print("Found FW versions") @@ -382,7 +389,8 @@ if __name__ == "__main__": padding = max([len(fw.brand) for fw in fw_vers] or [0]) for version in fw_vers: subaddr = None if version.subAddress == 0 else hex(version.subAddress) - print(f" Brand: {version.brand:{padding}}, bus: {version.bus} - (Ecu.{version.ecu}, {hex(version.address)}, {subaddr}): [{version.fwVersion}]") + print(f" Brand: {version.brand:{padding}}, bus: {version.bus}, OBD: {version.obdMultiplexing} - " + + f"(Ecu.{version.ecu}, {hex(version.address)}, {subaddr}): [{version.fwVersion}]") print("}") print() diff --git a/selfdrive/car/gm/carcontroller.py b/selfdrive/car/gm/carcontroller.py index 7ea84f3fb7..bc9f8de71e 100644 --- a/selfdrive/car/gm/carcontroller.py +++ b/selfdrive/car/gm/carcontroller.py @@ -6,6 +6,7 @@ from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_driver_steer_torque_limits from openpilot.selfdrive.car.gm import gmcan from openpilot.selfdrive.car.gm.values import DBC, CanBus, CarControllerParams, CruiseButtons +from openpilot.selfdrive.car.interfaces import CarControllerBase VisualAlert = car.CarControl.HUDControl.VisualAlert NetworkLocation = car.CarParams.NetworkLocation @@ -17,7 +18,7 @@ CAMERA_CANCEL_DELAY_FRAMES = 10 MIN_STEER_MSG_INTERVAL_MS = 15 -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.start_time = 0. @@ -117,7 +118,7 @@ class CarController: # Send dashboard UI commands (ACC status) send_fcw = hud_alert == VisualAlert.fcw can_sends.append(gmcan.create_acc_dashboard_command(self.packer_pt, CanBus.POWERTRAIN, CC.enabled and CS.out.cruiseState.enabled, - hud_v_cruise * CV.MS_TO_KPH, hud_control.leadVisible, send_fcw, CS.gac_tr_cluster)) + hud_v_cruise * CV.MS_TO_KPH, hud_control, send_fcw)) # Radar needs to know current speed and yaw rate (50hz), # and that ADAS is alive (10hz) diff --git a/selfdrive/car/gm/carstate.py b/selfdrive/car/gm/carstate.py index da24fd2c6b..2fc1ac024b 100644 --- a/selfdrive/car/gm/carstate.py +++ b/selfdrive/car/gm/carstate.py @@ -26,6 +26,9 @@ class CarState(CarStateBase): self.cam_lka_steering_cmd_counter = 0 self.buttons_counter = 0 + self.prev_distance_button = 0 + self.distance_button = 0 + self.lkas_enabled = False self.prev_lkas_enabled = False @@ -33,9 +36,10 @@ class CarState(CarStateBase): ret = car.CarState.new_message() self.prev_cruise_buttons = self.cruise_buttons + self.prev_distance_button = self.distance_button self.cruise_buttons = pt_cp.vl["ASCMSteeringButton"]["ACCButtons"] + self.distance_button = pt_cp.vl["ASCMSteeringButton"]["DistanceButton"] self.buttons_counter = pt_cp.vl["ASCMSteeringButton"]["RollingCounter"] - self.gap_dist_button = pt_cp.vl["ASCMSteeringButton"]["DistanceButton"] self.pscm_status = copy.copy(pt_cp.vl["PSCMStatus"]) # This is to avoid a fault where you engage while still moving backwards after shifting to D. # An Equinox has been seen with an unsupported status (3), so only check if either wheel is in reverse (2) diff --git a/selfdrive/car/gm/fingerprints.py b/selfdrive/car/gm/fingerprints.py index 73a205a250..3752fbb8d3 100644 --- a/selfdrive/car/gm/fingerprints.py +++ b/selfdrive/car/gm/fingerprints.py @@ -9,7 +9,7 @@ FINGERPRINTS = { CAR.HOLDEN_ASTRA: [{ 190: 8, 193: 8, 197: 8, 199: 4, 201: 8, 209: 7, 211: 8, 241: 6, 249: 8, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 328: 1, 352: 5, 381: 6, 384: 4, 386: 8, 388: 8, 393: 8, 398: 8, 401: 8, 413: 8, 417: 8, 419: 8, 422: 1, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 8, 455: 7, 456: 8, 458: 5, 479: 8, 481: 7, 485: 8, 489: 8, 497: 8, 499: 3, 500: 8, 501: 8, 508: 8, 528: 5, 532: 6, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 567: 5, 647: 5, 707: 8, 715: 8, 723: 8, 753: 5, 761: 7, 806: 1, 810: 8, 840: 5, 842: 5, 844: 8, 866: 4, 961: 8, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1009: 8, 1011: 6, 1017: 8, 1019: 3, 1020: 8, 1105: 6, 1217: 8, 1221: 5, 1225: 8, 1233: 8, 1249: 8, 1257: 6, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 8, 1280: 4, 1300: 8, 1328: 4, 1417: 8, 1906: 7, 1907: 7, 1908: 7, 1912: 7, 1919: 7 }], - CAR.VOLT: [{ + CAR.CHEVROLET_VOLT: [{ 170: 8, 171: 8, 189: 7, 190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 209: 7, 211: 2, 241: 6, 288: 5, 289: 8, 298: 8, 304: 1, 308: 4, 309: 8, 311: 8, 313: 8, 320: 3, 328: 1, 352: 5, 381: 6, 384: 4, 386: 8, 388: 8, 389: 2, 390: 7, 417: 7, 419: 1, 426: 7, 451: 8, 452: 8, 453: 6, 454: 8, 456: 8, 479: 3, 481: 7, 485: 8, 489: 8, 493: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 528: 4, 532: 6, 546: 7, 550: 8, 554: 3, 558: 8, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 566: 5, 567: 3, 568: 1, 573: 1, 577: 8, 647: 3, 707: 8, 711: 6, 715: 8, 761: 7, 810: 8, 840: 5, 842: 5, 844: 8, 866: 4, 961: 8, 969: 8, 977: 8, 979: 7, 988: 6, 989: 8, 995: 7, 1001: 8, 1005: 6, 1009: 8, 1017: 8, 1019: 2, 1020: 8, 1105: 6, 1187: 4, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1227: 4, 1233: 8, 1249: 8, 1257: 6, 1265: 8, 1267: 1, 1273: 3, 1275: 3, 1280: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1417: 8, 1601: 8, 1905: 7, 1906: 7, 1907: 7, 1910: 7, 1912: 7, 1922: 7, 1927: 7, 1928: 7, 2016: 8, 2020: 8, 2024: 8, 2028: 8 }, { @@ -27,31 +27,31 @@ FINGERPRINTS = { CAR.CADILLAC_ATS: [{ 190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 368: 3, 381: 6, 384: 4, 386: 8, 388: 8, 393: 7, 398: 8, 401: 8, 407: 7, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 455: 7, 456: 8, 462: 4, 479: 3, 481: 7, 485: 8, 487: 8, 489: 8, 491: 2, 493: 8, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 528: 5, 532: 6, 534: 2, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 567: 5, 573: 1, 577: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 715: 8, 717: 5, 719: 5, 723: 2, 753: 5, 761: 7, 801: 8, 804: 3, 810: 8, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 880: 6, 882: 8, 890: 1, 892: 2, 893: 2, 894: 1, 961: 8, 967: 4, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1005: 6, 1009: 8, 1011: 6, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1033: 7, 1034: 7, 1105: 6, 1217: 8, 1221: 5, 1223: 3, 1225: 7, 1233: 8, 1241: 3, 1249: 8, 1257: 6, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 1, 1271: 8, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1417: 8, 1601: 8, 1904: 7, 1906: 7, 1907: 7, 1912: 7, 1916: 7, 1917: 7, 1918: 7, 1919: 7, 1920: 7, 1930: 7, 2016: 8, 2024: 8 }], - CAR.MALIBU: [{ + CAR.CHEVROLET_MALIBU: [{ 190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 328: 1, 352: 5, 381: 6, 384: 4, 386: 8, 388: 8, 393: 7, 398: 8, 407: 7, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 455: 7, 456: 8, 479: 3, 481: 7, 485: 8, 487: 8, 489: 8, 495: 4, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 528: 5, 532: 6, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 565: 5, 567: 5, 573: 1, 577: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 715: 8, 717: 5, 753: 5, 761: 7, 810: 8, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 880: 6, 961: 8, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1005: 6, 1009: 8, 1013: 3, 1017: 8, 1019: 2, 1020: 8, 1033: 7, 1034: 7, 1105: 6, 1217: 8, 1221: 5, 1223: 2, 1225: 7, 1233: 8, 1249: 8, 1257: 6, 1265: 8, 1267: 1, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1417: 8, 1601: 8, 1906: 7, 1907: 7, 1912: 7, 1919: 7, 1930: 7, 2016: 8, 2024: 8 }], - CAR.ACADIA: [{ + CAR.GMC_ACADIA: [{ 190: 6, 192: 5, 193: 8, 197: 8, 199: 4, 201: 6, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 289: 1, 290: 1, 298: 8, 304: 8, 309: 8, 313: 8, 320: 8, 322: 7, 328: 1, 352: 7, 368: 8, 381: 8, 384: 8, 386: 8, 388: 8, 393: 8, 398: 8, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 454: 8, 455: 7, 458: 8, 460: 4, 462: 4, 463: 3, 479: 3, 481: 7, 485: 8, 489: 5, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 512: 3, 530: 8, 532: 6, 534: 2, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 567: 5, 568: 2, 573: 1, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 715: 8, 717: 5, 753: 5, 761: 7, 789: 5, 800: 6, 801: 8, 803: 8, 804: 3, 805: 8, 832: 8, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 880: 6, 961: 8, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1003: 5, 1005: 6, 1009: 8, 1017: 8, 1020: 8, 1033: 7, 1034: 7, 1105: 6, 1217: 8, 1221: 5, 1225: 8, 1233: 8, 1249: 8, 1257: 6, 1265: 8, 1267: 1, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1328: 4, 1417: 8, 1906: 7, 1907: 7, 1912: 7, 1914: 7, 1918: 7, 1919: 7, 1920: 7, 1930: 7 }, { 190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 289: 8, 298: 8, 304: 1, 309: 8, 313: 8, 320: 3, 322: 7, 328: 1, 338: 6, 340: 6, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 393: 8, 398: 8, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 454: 8, 455: 7, 462: 4, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 532: 6, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 567: 5, 573: 1, 577: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 715: 8, 717: 5, 753: 5, 761: 7, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 880: 6, 961: 8, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1005: 6, 1009: 8, 1017: 8, 1020: 8, 1033: 7, 1034: 7, 1105: 6, 1217: 8, 1221: 5, 1225: 8, 1233: 8, 1249: 8, 1257: 6, 1265: 8, 1267: 1, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1328: 4, 1417: 8, 1601: 8, 1906: 7, 1907: 7, 1912: 7, 1914: 7, 1919: 7, 1920: 7, 1930: 7, 2016: 8, 2024: 8 }], - CAR.ESCALADE: [{ + CAR.CADILLAC_ESCALADE: [{ 170: 8, 190: 6, 193: 8, 197: 8, 199: 4, 201: 8, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 288: 5, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 322: 7, 328: 1, 352: 5, 381: 6, 384: 4, 386: 8, 388: 8, 393: 7, 398: 8, 407: 4, 413: 8, 417: 7, 419: 1, 422: 4, 426: 7, 431: 8, 442: 8, 451: 8, 452: 8, 453: 6, 454: 8, 455: 7, 460: 5, 462: 4, 463: 3, 479: 3, 481: 7, 485: 8, 487: 8, 489: 8, 497: 8, 499: 3, 500: 6, 501: 8, 508: 8, 510: 8, 532: 6, 534: 2, 554: 3, 560: 8, 562: 8, 563: 5, 564: 5, 573: 1, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 647: 6, 707: 8, 715: 8, 717: 5, 719: 5, 761: 7, 801: 8, 804: 3, 810: 8, 840: 5, 842: 5, 844: 8, 866: 4, 869: 4, 880: 6, 961: 8, 967: 4, 969: 8, 977: 8, 979: 8, 985: 5, 1001: 8, 1005: 6, 1009: 8, 1017: 8, 1019: 2, 1020: 8, 1033: 7, 1034: 7, 1105: 6, 1217: 8, 1221: 5, 1223: 2, 1225: 7, 1233: 8, 1249: 8, 1257: 6, 1265: 8, 1267: 1, 1280: 4, 1296: 4, 1300: 8, 1322: 6, 1323: 4, 1328: 4, 1417: 8, 1609: 8, 1613: 8, 1649: 8, 1792: 8, 1798: 8, 1824: 8, 1825: 8, 1840: 8, 1842: 8, 1858: 8, 1860: 8, 1863: 8, 1872: 8, 1875: 8, 1882: 8, 1888: 8, 1889: 8, 1892: 8, 1906: 7, 1907: 7, 1912: 7, 1914: 7, 1917: 7, 1918: 7, 1919: 7, 1920: 7, 1930: 7, 1937: 8, 1953: 8, 1968: 8, 2001: 8, 2017: 8, 2018: 8, 2020: 8, 2026: 8 }], - CAR.ESCALADE_ESV: [{ + CAR.CADILLAC_ESCALADE_ESV: [{ 309: 1, 848: 8, 849: 8, 850: 8, 851: 8, 852: 8, 853: 8, 854: 3, 1056: 6, 1057: 8, 1058: 8, 1059: 8, 1060: 8, 1061: 8, 1062: 8, 1063: 8, 1064: 8, 1065: 8, 1066: 8, 1067: 8, 1068: 8, 1120: 8, 1121: 8, 1122: 8, 1123: 8, 1124: 8, 1125: 8, 1126: 8, 1127: 8, 1128: 8, 1129: 8, 1130: 8, 1131: 8, 1132: 8, 1133: 8, 1134: 8, 1135: 8, 1136: 8, 1137: 8, 1138: 8, 1139: 8, 1140: 8, 1141: 8, 1142: 8, 1143: 8, 1146: 8, 1147: 8, 1148: 8, 1149: 8, 1150: 8, 1151: 8, 1216: 8, 1217: 8, 1218: 8, 1219: 8, 1220: 8, 1221: 8, 1222: 8, 1223: 8, 1224: 8, 1225: 8, 1226: 8, 1232: 8, 1233: 8, 1234: 8, 1235: 8, 1236: 8, 1237: 8, 1238: 8, 1239: 8, 1240: 8, 1241: 8, 1242: 8, 1787: 8, 1788: 8 }], - CAR.ESCALADE_ESV_2019: [{ + CAR.CADILLAC_ESCALADE_ESV_2019: [{ 715: 8, 840: 5, 717: 5, 869: 4, 880: 6, 289: 8, 454: 8, 842: 5, 460: 5, 463: 3, 801: 8, 170: 8, 190: 6, 241: 6, 201: 8, 417: 7, 211: 2, 419: 1, 398: 8, 426: 7, 487: 8, 442: 8, 451: 8, 452: 8, 453: 6, 479: 3, 311: 8, 500: 6, 647: 6, 193: 8, 707: 8, 197: 8, 209: 7, 199: 4, 455: 7, 313: 8, 481: 7, 485: 8, 489: 8, 249: 8, 393: 7, 407: 7, 413: 8, 422: 4, 431: 8, 501: 8, 499: 3, 810: 8, 508: 8, 381: 8, 462: 4, 532: 6, 562: 8, 386: 8, 761: 7, 573: 1, 554: 3, 719: 5, 560: 8, 1279: 4, 388: 8, 288: 5, 1005: 6, 497: 8, 844: 8, 961: 8, 967: 4, 977: 8, 979: 8, 985: 5, 1001: 8, 1017: 8, 1019: 2, 1020: 8, 1217: 8, 510: 8, 866: 4, 304: 1, 969: 8, 384: 4, 1033: 7, 1009: 8, 1034: 7, 1296: 4, 1930: 7, 1105: 5, 1013: 5, 1225: 7, 1919: 7, 320: 3, 534: 2, 352: 5, 298: 8, 1223: 2, 1233: 8, 608: 8, 1265: 8, 609: 6, 1267: 1, 1417: 8, 610: 6, 1906: 7, 611: 6, 612: 8, 613: 8, 208: 8, 564: 5, 309: 8, 1221: 5, 1280: 4, 1249: 8, 1907: 7, 1257: 6, 1300: 8, 1920: 7, 563: 5, 1322: 6, 1323: 4, 1328: 4, 1917: 7, 328: 1, 1912: 7, 1914: 7, 804: 3, 1918: 7 }], - CAR.BOLT_EUV: [{ + CAR.CHEVROLET_BOLT_EUV: [{ 189: 7, 190: 7, 193: 8, 197: 8, 201: 8, 209: 7, 211: 3, 241: 6, 257: 8, 288: 5, 289: 8, 298: 8, 304: 3, 309: 8, 311: 8, 313: 8, 320: 4, 322: 7, 328: 1, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 451: 8, 452: 8, 453: 6, 458: 5, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 500: 6, 501: 8, 528: 5, 532: 6, 560: 8, 562: 8, 563: 5, 565: 5, 566: 8, 587: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 707: 8, 715: 8, 717: 5, 753: 5, 761: 7, 789: 5, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 869: 4, 880: 6, 977: 8, 1001: 8, 1017: 8, 1020: 8, 1217: 8, 1221: 5, 1233: 8, 1249: 8, 1265: 8, 1280: 4, 1296: 4, 1300: 8, 1611: 8, 1930: 7 }], - CAR.SILVERADO: [{ + CAR.CHEVROLET_SILVERADO: [{ 190: 6, 193: 8, 197: 8, 201: 8, 208: 8, 209: 7, 211: 2, 241: 6, 249: 8, 257: 8, 288: 5, 289: 8, 298: 8, 304: 3, 309: 8, 311: 8, 313: 8, 320: 4, 322: 7, 328: 1, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 413: 8, 451: 8, 452: 8, 453: 6, 455: 7, 460: 5, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 500: 6, 501: 8, 528: 5, 532: 6, 534: 2, 560: 8, 562: 8, 563: 5, 565: 5, 587: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 707: 8, 715: 8, 717: 5, 761: 7, 789: 5, 800: 6, 801: 8, 810: 8, 840: 5, 842: 5, 844: 8, 848: 4, 869: 4, 880: 6, 977: 8, 1001: 8, 1011: 6, 1017: 8, 1020: 8, 1033: 7, 1034: 7, 1217: 8, 1221: 5, 1233: 8, 1249: 8, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 1, 1271: 8, 1280: 4, 1296: 4, 1300: 8, 1611: 8, 1930: 7 }], - CAR.EQUINOX: [{ + CAR.CHEVROLET_EQUINOX: [{ 190: 6, 193: 8, 197: 8, 201: 8, 209: 7, 211: 2, 241: 6, 249: 8, 257: 8, 288: 5, 289: 8, 298: 8, 304: 1, 309: 8, 311: 8, 313: 8, 320: 3, 328: 1, 352: 5, 381: 8, 384: 4, 386: 8, 388: 8, 413: 8, 451: 8, 452: 8, 453: 6, 455: 7, 463: 3, 479: 3, 481: 7, 485: 8, 489: 8, 497: 8, 500: 6, 501: 8, 510: 8, 528: 5, 532: 6, 560: 8, 562: 8, 563: 5, 565: 5, 587: 8, 608: 8, 609: 6, 610: 6, 611: 6, 612: 8, 613: 8, 707: 8, 715: 8, 717: 5, 753: 5, 761: 7, 789: 5, 800: 6, 810: 8, 840: 5, 842: 5, 844: 8, 869: 4, 880: 6, 977: 8, 1001: 8, 1011: 6, 1017: 8, 1020: 8, 1033: 7, 1034: 7, 1217: 8, 1221: 5, 1233: 8, 1249: 8, 1259: 8, 1261: 7, 1263: 4, 1265: 8, 1267: 1, 1271: 8, 1280: 4, 1296: 4, 1300: 8, 1611: 8, 1930: 7 }, { diff --git a/selfdrive/car/gm/gmcan.py b/selfdrive/car/gm/gmcan.py index f626e9a0f2..e833e77636 100644 --- a/selfdrive/car/gm/gmcan.py +++ b/selfdrive/car/gm/gmcan.py @@ -76,7 +76,7 @@ def create_friction_brake_command(packer, bus, apply_brake, idx, enabled, near_s mode = 0x1 # TODO: Understand this better. Volts and ICE Camera ACC cars are 0x1 when enabled with no brake - if enabled and CP.carFingerprint in (CAR.BOLT_EUV,): + if enabled and CP.carFingerprint in (CAR.CHEVROLET_BOLT_EUV,): mode = 0x9 if apply_brake > 0: @@ -102,17 +102,17 @@ def create_friction_brake_command(packer, bus, apply_brake, idx, enabled, near_s return packer.make_can_msg("EBCMFrictionBrakeCmd", bus, values) -def create_acc_dashboard_command(packer, bus, enabled, target_speed_kph, lead_car_in_sight, fcw, gac_tr_cluster): +def create_acc_dashboard_command(packer, bus, enabled, target_speed_kph, hud_control, fcw): target_speed = min(target_speed_kph, 255) values = { "ACCAlwaysOne": 1, "ACCResumeButton": 0, "ACCSpeedSetpoint": target_speed, - "ACCGapLevel": gac_tr_cluster * enabled, # 3 "far", 0 "inactive" + "ACCGapLevel": hud_control.leadDistanceBars * enabled, # 3 "far", 0 "inactive" "ACCCmdActive": enabled, "ACCAlwaysOne2": 1, - "ACCLeadCar": lead_car_in_sight, + "ACCLeadCar": hud_control.leadVisible, "FCWAlert": 0x3 if fcw else 0 } diff --git a/selfdrive/car/gm/interface.py b/selfdrive/car/gm/interface.py index 701a0a8f81..7787fabb02 100755 --- a/selfdrive/car/gm/interface.py +++ b/selfdrive/car/gm/interface.py @@ -22,9 +22,9 @@ BUTTONS_DICT = {CruiseButtons.RES_ACCEL: ButtonType.accelCruise, CruiseButtons.D NON_LINEAR_TORQUE_PARAMS = { - CAR.BOLT_EUV: [2.6531724862969748, 1.0, 0.1919764879840985, 0.009054123646805178], - CAR.ACADIA: [4.78003305, 1.0, 0.3122, 0.05591772], - CAR.SILVERADO: [3.29974374, 1.0, 0.25571356, 0.0465122] + CAR.CHEVROLET_BOLT_EUV: [2.6531724862969748, 1.0, 0.1919764879840985, 0.009054123646805178], + CAR.GMC_ACADIA: [4.78003305, 1.0, 0.3122, 0.05591772], + CAR.CHEVROLET_SILVERADO: [3.29974374, 1.0, 0.25571356, 0.0465122] } NEURAL_PARAMS_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/neural_ff_weights.json') @@ -43,7 +43,7 @@ class CarInterface(CarInterfaceBase): return 0.10006696 * sigmoid * (v_ego + 3.12485927) def get_steer_feedforward_function(self): - if self.CP.carFingerprint == CAR.VOLT: + if self.CP.carFingerprint == CAR.CHEVROLET_VOLT: return self.get_steer_feedforward_volt else: return CarInterfaceBase.get_steer_feedforward_default @@ -74,7 +74,7 @@ class CarInterface(CarInterfaceBase): return float(self.neural_ff_model.predict(inputs)) + friction def torque_from_lateral_accel(self) -> TorqueFromLateralAccelCallbackType: - if self.CP.carFingerprint == CAR.BOLT_EUV: + if self.CP.carFingerprint == CAR.CHEVROLET_BOLT_EUV: self.neural_ff_model = NanoFFModel(NEURAL_PARAMS_PATH, self.CP.carFingerprint) return self.torque_from_lateral_accel_neural elif self.CP.carFingerprint in NON_LINEAR_TORQUE_PARAMS: @@ -137,7 +137,7 @@ class CarInterface(CarInterfaceBase): # These cars have been put into dashcam only due to both a lack of users and test coverage. # These cars likely still work fine. Once a user confirms each car works and a test route is # added to selfdrive/car/tests/routes.py, we can remove it from this list. - ret.dashcamOnly = candidate in {CAR.CADILLAC_ATS, CAR.HOLDEN_ASTRA, CAR.MALIBU, CAR.BUICK_REGAL} or \ + ret.dashcamOnly = candidate in {CAR.CADILLAC_ATS, CAR.HOLDEN_ASTRA, CAR.CHEVROLET_MALIBU, CAR.BUICK_REGAL} or \ (ret.networkLocation == NetworkLocation.gateway and ret.radarUnavailable) # Start with a baseline tuning for all GM vehicles. Override tuning as needed in each model section below. @@ -145,15 +145,12 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.00]] ret.lateralTuning.pid.kf = 0.00004 # full torque for 20 deg at 80mph means 0.00007818594 ret.steerActuatorDelay = 0.1 # Default delay, not measured yet - ret.tireStiffnessFactor = 0.444 # not optimized yet ret.steerLimitTimer = 0.4 ret.radarTimeStep = 0.0667 # GM radar runs at 15Hz instead of standard 20Hz ret.longitudinalActuatorDelayUpperBound = 0.5 # large delay to initially start braking - if candidate == CAR.VOLT: - ret.tireStiffnessFactor = 0.469 # Stock Michelin Energy Saver A/S, LiveParameters - + if candidate == CAR.CHEVROLET_VOLT: ret.lateralTuning.pid.kpBP = [0., 40.] ret.lateralTuning.pid.kpV = [0., 0.17] ret.lateralTuning.pid.kiBP = [0.] @@ -161,7 +158,7 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 1. # get_steer_feedforward_volt() ret.steerActuatorDelay = 0.2 - elif candidate == CAR.ACADIA: + elif candidate == CAR.GMC_ACADIA: ret.minEnableSpeed = -1. # engage speed is decided by pcm ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) @@ -169,15 +166,14 @@ class CarInterface(CarInterfaceBase): elif candidate == CAR.BUICK_LACROSSE: CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.ESCALADE: + elif candidate == CAR.CADILLAC_ESCALADE: ret.minEnableSpeed = -1. # engage speed is decided by pcm CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate in (CAR.ESCALADE_ESV, CAR.ESCALADE_ESV_2019): + elif candidate in (CAR.CADILLAC_ESCALADE_ESV, CAR.CADILLAC_ESCALADE_ESV_2019): ret.minEnableSpeed = -1. # engage speed is decided by pcm - ret.tireStiffnessFactor = 1.0 - if candidate == CAR.ESCALADE_ESV: + if candidate == CAR.CADILLAC_ESCALADE_ESV: ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[10., 41.0], [10., 41.0]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.13, 0.24], [0.01, 0.02]] ret.lateralTuning.pid.kf = 0.000045 @@ -185,13 +181,11 @@ class CarInterface(CarInterfaceBase): ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.BOLT_EUV: - ret.tireStiffnessFactor = 1.0 + elif candidate == CAR.CHEVROLET_BOLT_EUV: ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.SILVERADO: - ret.tireStiffnessFactor = 1.0 + elif candidate == CAR.CHEVROLET_SILVERADO: # On the Bolt, the ECM and camera independently check that you are either above 5 kph or at a stop # with foot on brake to allow engagement, but this platform only has that check in the camera. # TODO: check if this is split by EV/ICE with more platforms in the future @@ -199,11 +193,10 @@ class CarInterface(CarInterfaceBase): ret.minEnableSpeed = -1. CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.EQUINOX: + elif candidate == CAR.CHEVROLET_EQUINOX: CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - elif candidate == CAR.TRAILBLAZER: - ret.tireStiffnessFactor = 1.0 + elif candidate == CAR.CHEVROLET_TRAILBLAZER: ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) @@ -212,22 +205,29 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam, self.cp_loopback) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() buttonEvents = [] + distance_button = 0 # Don't add event if transitioning from INIT, unless it's to an actual button if self.CS.cruise_buttons != CruiseButtons.UNPRESS or self.CS.prev_cruise_buttons != CruiseButtons.INIT: - buttonEvents = create_button_events(self.CS.cruise_buttons, self.CS.prev_cruise_buttons, BUTTONS_DICT, - unpressed_btn=CruiseButtons.UNPRESS) + buttonEvents = [ + *create_button_events(self.CS.cruise_buttons, self.CS.prev_cruise_buttons, BUTTONS_DICT, + unpressed_btn=CruiseButtons.UNPRESS), + *create_button_events(self.CS.distance_button, self.CS.prev_distance_button, + {1: ButtonType.gapAdjustCruise}) + ] + distance_button = self.CS.distance_button + self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) if not self.CP.pcmCruise: if any(b.type == ButtonType.accelCruise and b.pressed for b in buttonEvents): self.CS.accEnabled = True - self.CS.accEnabled, buttonEvents = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - buttonEvents, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, + buttonEvents, c.vCruise) if ret.cruiseState.available: if self.enable_mads: @@ -236,7 +236,6 @@ class CarInterface(CarInterfaceBase): if self.CS.prev_lkas_enabled != 1 and self.CS.lkas_enabled == 1: self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, bool(self.CS.gap_dist_button), 1, 3, 3, "-") else: self.CS.madsEnabled = False @@ -252,7 +251,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.gap_dist_button)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: @@ -291,6 +290,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/gm/tests/test_gm.py b/selfdrive/car/gm/tests/test_gm.py index 2aea5b231b..01ec8533b8 100755 --- a/selfdrive/car/gm/tests/test_gm.py +++ b/selfdrive/car/gm/tests/test_gm.py @@ -3,7 +3,7 @@ from parameterized import parameterized import unittest from openpilot.selfdrive.car.gm.fingerprints import FINGERPRINTS -from openpilot.selfdrive.car.gm.values import CAMERA_ACC_CAR, CAR, GM_RX_OFFSET +from openpilot.selfdrive.car.gm.values import CAMERA_ACC_CAR, GM_RX_OFFSET CAMERA_DIAGNOSTIC_ADDRESS = 0x24b @@ -13,12 +13,10 @@ class TestGMFingerprint(unittest.TestCase): def test_can_fingerprints(self, car_model, fingerprints): self.assertGreater(len(fingerprints), 0) - # Trailblazer is in dashcam - if car_model != CAR.TRAILBLAZER: - self.assertTrue(all(len(finger) for finger in fingerprints)) + self.assertTrue(all(len(finger) for finger in fingerprints)) # The camera can sometimes be communicating on startup - if car_model in CAMERA_ACC_CAR - {CAR.TRAILBLAZER}: + if car_model in CAMERA_ACC_CAR: for finger in fingerprints: for required_addr in (CAMERA_DIAGNOSTIC_ADDRESS, CAMERA_DIAGNOSTIC_ADDRESS + GM_RX_OFFSET): self.assertEqual(finger.get(required_addr), 8, required_addr) diff --git a/selfdrive/car/gm/values.py b/selfdrive/car/gm/values.py index 35fdf3fb92..53a4621d27 100644 --- a/selfdrive/car/gm/values.py +++ b/selfdrive/car/gm/values.py @@ -1,9 +1,8 @@ from dataclasses import dataclass, field -from enum import Enum from cereal import car from openpilot.selfdrive.car import dbc_dict, PlatformConfig, DbcDict, Platforms, CarSpecs -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column +from openpilot.selfdrive.car.docs_definitions import CarHarness, CarDocs, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -60,15 +59,8 @@ class CarControllerParams: self.BRAKE_LOOKUP_V = [self.MAX_BRAKE, 0.] -class Footnote(Enum): - OBD_II = CarFootnote( - 'Requires a community built ASCM harness. ' + - 'NOTE: disconnecting the ASCM disables Automatic Emergency Braking (AEB).', - Column.MODEL) - - @dataclass -class GMCarInfo(CarInfo): +class GMCarDocs(CarDocs): package: str = "Adaptive Cruise Control (ACC)" def init_make(self, CP: car.CarParams): @@ -76,90 +68,87 @@ class GMCarInfo(CarInfo): self.car_parts = CarParts.common([CarHarness.gm]) else: self.car_parts = CarParts.common([CarHarness.obd_ii]) - self.footnotes.append(Footnote.OBD_II) -@dataclass(frozen=True) +@dataclass(frozen=True, kw_only=True) +class GMCarSpecs(CarSpecs): + tireStiffnessFactor: float = 0.444 # not optimized yet + + +@dataclass class GMPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('gm_global_a_powertrain_generated', 'gm_global_a_object', chassis_dbc='gm_global_a_chassis')) +@dataclass +class GMASCMPlatformConfig(GMPlatformConfig): + def init(self): + # ASCM is supported, but due to a janky install and hardware configuration, we are not showing in the car docs + self.car_docs = [] + + class CAR(Platforms): - HOLDEN_ASTRA = GMPlatformConfig( - "HOLDEN ASTRA RS-V BK 2017", - GMCarInfo("Holden Astra 2017"), - specs=CarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), + HOLDEN_ASTRA = GMASCMPlatformConfig( + [GMCarDocs("Holden Astra 2017")], + GMCarSpecs(mass=1363, wheelbase=2.662, steerRatio=15.7, centerToFrontRatio=0.4), ) - VOLT = GMPlatformConfig( - "CHEVROLET VOLT PREMIER 2017", - GMCarInfo("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ"), - specs=CarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45), + CHEVROLET_VOLT = GMASCMPlatformConfig( + [GMCarDocs("Chevrolet Volt 2017-18", min_enable_speed=0, video_link="https://youtu.be/QeMCN_4TFfQ")], + GMCarSpecs(mass=1607, wheelbase=2.69, steerRatio=17.7, centerToFrontRatio=0.45, tireStiffnessFactor=0.469), ) - CADILLAC_ATS = GMPlatformConfig( - "CADILLAC ATS Premium Performance 2018", - GMCarInfo("Cadillac ATS Premium Performance 2018"), - specs=CarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), + CADILLAC_ATS = GMASCMPlatformConfig( + [GMCarDocs("Cadillac ATS Premium Performance 2018")], + GMCarSpecs(mass=1601, wheelbase=2.78, steerRatio=15.3), ) - MALIBU = GMPlatformConfig( - "CHEVROLET MALIBU PREMIER 2017", - GMCarInfo("Chevrolet Malibu Premier 2017"), - specs=CarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), + CHEVROLET_MALIBU = GMASCMPlatformConfig( + [GMCarDocs("Chevrolet Malibu Premier 2017")], + GMCarSpecs(mass=1496, wheelbase=2.83, steerRatio=15.8, centerToFrontRatio=0.4), ) - ACADIA = GMPlatformConfig( - "GMC ACADIA DENALI 2018", - GMCarInfo("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo"), - specs=CarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), + GMC_ACADIA = GMASCMPlatformConfig( + [GMCarDocs("GMC Acadia 2018", video_link="https://www.youtube.com/watch?v=0ZN6DdsBUZo")], + GMCarSpecs(mass=1975, wheelbase=2.86, steerRatio=14.4, centerToFrontRatio=0.4), ) - BUICK_LACROSSE = GMPlatformConfig( - "BUICK LACROSSE 2017", - GMCarInfo("Buick LaCrosse 2017-19", "Driver Confidence Package 2"), - specs=CarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), + BUICK_LACROSSE = GMASCMPlatformConfig( + [GMCarDocs("Buick LaCrosse 2017-19", "Driver Confidence Package 2")], + GMCarSpecs(mass=1712, wheelbase=2.91, steerRatio=15.8, centerToFrontRatio=0.4), ) - BUICK_REGAL = GMPlatformConfig( - "BUICK REGAL ESSENCE 2018", - GMCarInfo("Buick Regal Essence 2018"), - specs=CarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), + BUICK_REGAL = GMASCMPlatformConfig( + [GMCarDocs("Buick Regal Essence 2018")], + GMCarSpecs(mass=1714, wheelbase=2.83, steerRatio=14.4, centerToFrontRatio=0.4), ) - ESCALADE = GMPlatformConfig( - "CADILLAC ESCALADE 2017", - GMCarInfo("Cadillac Escalade 2017", "Driver Assist Package"), - specs=CarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), + CADILLAC_ESCALADE = GMASCMPlatformConfig( + [GMCarDocs("Cadillac Escalade 2017", "Driver Assist Package")], + GMCarSpecs(mass=2564, wheelbase=2.95, steerRatio=17.3), ) - ESCALADE_ESV = GMPlatformConfig( - "CADILLAC ESCALADE ESV 2016", - GMCarInfo("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS"), - specs=CarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3), + CADILLAC_ESCALADE_ESV = GMASCMPlatformConfig( + [GMCarDocs("Cadillac Escalade ESV 2016", "Adaptive Cruise Control (ACC) & LKAS")], + GMCarSpecs(mass=2739, wheelbase=3.302, steerRatio=17.3, tireStiffnessFactor=1.0), ) - ESCALADE_ESV_2019 = GMPlatformConfig( - "CADILLAC ESCALADE ESV 2019", - GMCarInfo("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS"), - specs=ESCALADE_ESV.specs, + CADILLAC_ESCALADE_ESV_2019 = GMASCMPlatformConfig( + [GMCarDocs("Cadillac Escalade ESV 2019", "Adaptive Cruise Control (ACC) & LKAS")], + CADILLAC_ESCALADE_ESV.specs, ) - BOLT_EUV = GMPlatformConfig( - "CHEVROLET BOLT EUV 2022", + CHEVROLET_BOLT_EUV = GMPlatformConfig( [ - GMCarInfo("Chevrolet Bolt EUV 2022-23", "Premier or Premier Redline Trim without Super Cruise Package", video_link="https://youtu.be/xvwzGMUA210"), - GMCarInfo("Chevrolet Bolt EV 2022-23", "2LT Trim with Adaptive Cruise Control Package"), + GMCarDocs("Chevrolet Bolt EUV 2022-23", "Premier or Premier Redline Trim without Super Cruise Package", video_link="https://youtu.be/xvwzGMUA210"), + GMCarDocs("Chevrolet Bolt EV 2022-23", "2LT Trim with Adaptive Cruise Control Package"), ], - specs=CarSpecs(mass=1669, wheelbase=2.63779, steerRatio=16.8, centerToFrontRatio=0.4), + GMCarSpecs(mass=1669, wheelbase=2.63779, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) - SILVERADO = GMPlatformConfig( - "CHEVROLET SILVERADO 1500 2020", + CHEVROLET_SILVERADO = GMPlatformConfig( [ - GMCarInfo("Chevrolet Silverado 1500 2020-21", "Safety Package II"), - GMCarInfo("GMC Sierra 1500 2020-21", "Driver Alert Package II", video_link="https://youtu.be/5HbNoBLzRwE"), + GMCarDocs("Chevrolet Silverado 1500 2020-21", "Safety Package II"), + GMCarDocs("GMC Sierra 1500 2020-21", "Driver Alert Package II", video_link="https://youtu.be/5HbNoBLzRwE"), ], - specs=CarSpecs(mass=2450, wheelbase=3.75, steerRatio=16.3), + GMCarSpecs(mass=2450, wheelbase=3.75, steerRatio=16.3, tireStiffnessFactor=1.0), ) - EQUINOX = GMPlatformConfig( - "CHEVROLET EQUINOX 2019", - GMCarInfo("Chevrolet Equinox 2019-22"), - specs=CarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), + CHEVROLET_EQUINOX = GMPlatformConfig( + [GMCarDocs("Chevrolet Equinox 2019-22")], + GMCarSpecs(mass=1588, wheelbase=2.72, steerRatio=14.4, centerToFrontRatio=0.4), ) - TRAILBLAZER = GMPlatformConfig( - "CHEVROLET TRAILBLAZER 2021", - GMCarInfo("Chevrolet Trailblazer 2021-22"), - specs=CarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4), + CHEVROLET_TRAILBLAZER = GMPlatformConfig( + [GMCarDocs("Chevrolet Trailblazer 2021-22")], + GMCarSpecs(mass=1345, wheelbase=2.64, steerRatio=16.8, centerToFrontRatio=0.4, tireStiffnessFactor=1.0), ) @@ -189,22 +178,35 @@ class CanBus: # In a Data Module, an identifier is a string used to recognize an object, # either by itself or together with the identifiers of parent objects. # Each returns a 4 byte hex representation of the decimal part number. `b"\x02\x8c\xf0'"` -> 42790951 +GM_BOOT_SOFTWARE_PART_NUMER_REQUEST = b'\x1a\xc0' # likely does not contain anything useful GM_SOFTWARE_MODULE_1_REQUEST = b'\x1a\xc1' GM_SOFTWARE_MODULE_2_REQUEST = b'\x1a\xc2' GM_SOFTWARE_MODULE_3_REQUEST = b'\x1a\xc3' + +# Part number of XML data file that is used to configure ECU +GM_XML_DATA_FILE_PART_NUMBER = b'\x1a\x9c' +GM_XML_CONFIG_COMPAT_ID = b'\x1a\x9b' # used to know if XML file is compatible with the ECU software/hardware + # This DID is for identifying the part number that reflects the mix of hardware, # software, and calibrations in the ECU when it first arrives at the vehicle assembly plant. # If there's an Alpha Code, it's associated with this part number and stored in the DID $DB. GM_END_MODEL_PART_NUMBER_REQUEST = b'\x1a\xcb' +GM_END_MODEL_PART_NUMBER_ALPHA_CODE_REQUEST = b'\x1a\xdb' GM_BASE_MODEL_PART_NUMBER_REQUEST = b'\x1a\xcc' +GM_BASE_MODEL_PART_NUMBER_ALPHA_CODE_REQUEST = b'\x1a\xdc' GM_FW_RESPONSE = b'\x5a' GM_FW_REQUESTS = [ + GM_BOOT_SOFTWARE_PART_NUMER_REQUEST, GM_SOFTWARE_MODULE_1_REQUEST, GM_SOFTWARE_MODULE_2_REQUEST, GM_SOFTWARE_MODULE_3_REQUEST, + GM_XML_DATA_FILE_PART_NUMBER, + GM_XML_CONFIG_COMPAT_ID, GM_END_MODEL_PART_NUMBER_REQUEST, + GM_END_MODEL_PART_NUMBER_ALPHA_CODE_REQUEST, GM_BASE_MODEL_PART_NUMBER_REQUEST, + GM_BASE_MODEL_PART_NUMBER_ALPHA_CODE_REQUEST, ] GM_RX_OFFSET = 0x400 @@ -222,12 +224,11 @@ FW_QUERY_CONFIG = FwQueryConfig( extra_ecus=[(Ecu.fwdCamera, 0x24b, None)], ) -EV_CAR = {CAR.VOLT, CAR.BOLT_EUV} +EV_CAR = {CAR.CHEVROLET_VOLT, CAR.CHEVROLET_BOLT_EUV} # We're integrated at the camera with VOACC on these cars (instead of ASCM w/ OBD-II harness) -CAMERA_ACC_CAR = {CAR.BOLT_EUV, CAR.SILVERADO, CAR.EQUINOX, CAR.TRAILBLAZER} +CAMERA_ACC_CAR = {CAR.CHEVROLET_BOLT_EUV, CAR.CHEVROLET_SILVERADO, CAR.CHEVROLET_EQUINOX, CAR.CHEVROLET_TRAILBLAZER} STEER_THRESHOLD = 1.0 -CAR_INFO = CAR.create_carinfo_map() DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/honda/carcontroller.py b/selfdrive/car/honda/carcontroller.py index 6d78fb3ebf..8263ce56f2 100644 --- a/selfdrive/car/honda/carcontroller.py +++ b/selfdrive/car/honda/carcontroller.py @@ -10,6 +10,7 @@ from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import create_gas_interceptor_command from openpilot.selfdrive.car.honda import hondacan from openpilot.selfdrive.car.honda.values import CruiseButtons, VISUAL_HUD, HONDA_BOSCH, HONDA_BOSCH_RADARLESS, HONDA_NIDEC_ALT_PCM_ACCEL, CarControllerParams +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import rate_limit, HONDA_V_CRUISE_MIN VisualAlert = car.CarControl.HUDControl.VisualAlert @@ -98,7 +99,7 @@ def process_hud_alert(hud_alert): HUDData = namedtuple("HUDData", ["pcm_accel", "v_cruise", "lead_visible", - "lanes_visible", "fcw", "acc_alert", "steer_required", "dashed_lanes"]) + "lanes_visible", "fcw", "acc_alert", "steer_required", "lead_distance_bars", "dashed_lanes"]) def rate_limit_steer(new_steer, last_steer): @@ -107,11 +108,12 @@ def rate_limit_steer(new_steer, last_steer): return clip(new_steer, last_steer - MAX_DELTA, last_steer + MAX_DELTA) -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.packer = CANPacker(dbc_name) self.params = CarControllerParams(CP) + self.CAN = hondacan.CanBus(CP) self.frame = 0 self.braking = False @@ -232,7 +234,7 @@ class CarController: can_sends.append((0x18DAB0F1, 0, b"\x02\x3E\x80\x00\x00\x00\x00\x00", 1)) # Send steering command. - can_sends.append(hondacan.create_steering_control(self.packer, apply_steer, CC.latActive, self.CP.carFingerprint, + can_sends.append(hondacan.create_steering_control(self.packer, self.CAN, apply_steer, CC.latActive, self.CP.carFingerprint, CS.CP.openpilotLongitudinalControl)) # wind brake from air resistance decel at high speed @@ -246,7 +248,7 @@ class CarController: 0.5] # The Honda ODYSSEY seems to have different PCM_ACCEL # msgs, is it other cars too? - if self.CP.enableGasInterceptor or not CC.longActive: + if self.CP.enableGasInterceptorDEPRECATED or not CC.longActive: pcm_speed = 0.0 pcm_accel = int(0.0) elif self.CP.carFingerprint in HONDA_NIDEC_ALT_PCM_ACCEL: @@ -266,12 +268,12 @@ class CarController: if not self.CP.openpilotLongitudinalControl: if self.frame % 2 == 0 and self.CP.carFingerprint not in HONDA_BOSCH_RADARLESS: # radarless cars don't have supplemental message - can_sends.append(hondacan.create_bosch_supplemental_1(self.packer, self.CP.carFingerprint)) + can_sends.append(hondacan.create_bosch_supplemental_1(self.packer, self.CAN, self.CP.carFingerprint)) # If using stock ACC, spam cancel command to kill gas when OP disengages. if pcm_cancel_cmd: - can_sends.append(hondacan.spam_buttons_command(self.packer, CruiseButtons.CANCEL, self.CP.carFingerprint)) + can_sends.append(hondacan.spam_buttons_command(self.packer, self.CAN, CruiseButtons.CANCEL, self.CP.carFingerprint)) elif CC.cruiseControl.resume: - can_sends.append(hondacan.spam_buttons_command(self.packer, CruiseButtons.RES_ACCEL, self.CP.carFingerprint)) + can_sends.append(hondacan.spam_buttons_command(self.packer, self.CAN, CruiseButtons.RES_ACCEL, self.CP.carFingerprint)) elif CS.out.cruiseState.enabled and not self.CP.pcmCruiseSpeed: self.cruise_button = self.get_cruise_buttons(CS, CC.vCruise) if self.cruise_button is not None: @@ -279,8 +281,9 @@ class CarController: if not (self.v_tsc_state != 0 or self.m_tsc_state > 1) and abs(self.target_speed - self.v_set_dis) <= 2: send_freq = 3 if (self.frame - self.last_button_frame) * DT_CTRL > 0.01 * send_freq: - can_sends.append(hondacan.spam_buttons_command(self.packer, self.cruise_button, self.CP.carFingerprint)) + can_sends.append(hondacan.spam_buttons_command(self.packer, self.CAN, self.cruise_button, self.CP.carFingerprint)) self.last_button_frame = self.frame + else: # Send gas and brake commands. if self.frame % 2 == 0: @@ -292,7 +295,7 @@ class CarController: stopping = actuators.longControlState == LongCtrlState.stopping self.stopping_counter = self.stopping_counter + 1 if stopping else 0 - can_sends.extend(hondacan.create_acc_commands(self.packer, CC.enabled and CS.out.cruiseState.enabled, CC.longActive, self.accel, self.gas, + can_sends.extend(hondacan.create_acc_commands(self.packer, self.CAN, CC.enabled and CS.out.cruiseState.enabled, CC.longActive, self.accel, self.gas, self.stopping_counter, self.CP.carFingerprint)) else: apply_brake = clip(self.brake_last - wind_brake, 0.0, 1.0) @@ -300,13 +303,13 @@ class CarController: pump_on, self.last_pump_ts = brake_pump_hysteresis(apply_brake, self.apply_brake_last, self.last_pump_ts, ts) pcm_override = True - can_sends.append(hondacan.create_brake_command(self.packer, apply_brake, pump_on, + can_sends.append(hondacan.create_brake_command(self.packer, self.CAN, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw_display, self.CP.carFingerprint, CS.stock_brake)) self.apply_brake_last = apply_brake self.brake = apply_brake / self.params.NIDEC_BRAKE_MAX - if self.CP.enableGasInterceptor: + if self.CP.enableGasInterceptorDEPRECATED: # way too aggressive at low speed without this gas_mult = interp(CS.out.vEgo, [0., 10.], [0.4, 1.0]) # send exactly zero if apply_gas is zero. Interceptor will send the max between read value and apply_gas. @@ -322,13 +325,13 @@ class CarController: # Send dashboard UI commands. if self.frame % 10 == 0: hud = HUDData(int(pcm_accel), int(round(hud_v_cruise)), hud_control.leadVisible, - hud_control.lanesVisible, fcw_display, acc_alert, steer_required, CS.madsEnabled and not CC.latActive) - can_sends.extend(hondacan.create_ui_commands(self.packer, self.CP, CC.enabled and CS.out.cruiseState.enabled, pcm_speed, hud, CS.is_metric, CS.acc_hud, CS.lkas_hud, CC.latActive, CS.gac_tr_cluster)) + hud_control.lanesVisible, fcw_display, acc_alert, steer_required, hud_control.leadDistanceBars, CS.madsEnabled and not CC.latActive) + can_sends.extend(hondacan.create_ui_commands(self.packer, self.CAN, self.CP, CC.enabled and CS.out.cruiseState.enabled, pcm_speed, hud, CS.is_metric, CS.acc_hud, CS.lkas_hud, CC.latActive)) if self.CP.openpilotLongitudinalControl and self.CP.carFingerprint not in HONDA_BOSCH: self.speed = pcm_speed - if not self.CP.enableGasInterceptor: + if not self.CP.enableGasInterceptorDEPRECATED: self.gas = pcm_accel / self.params.NIDEC_GAS_MAX new_actuators = actuators.copy() diff --git a/selfdrive/car/honda/carstate.py b/selfdrive/car/honda/carstate.py index b4efe92a40..14975f045f 100644 --- a/selfdrive/car/honda/carstate.py +++ b/selfdrive/car/honda/carstate.py @@ -5,7 +5,7 @@ from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import interp from opendbc.can.can_define import CANDefine from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.honda.hondacan import get_cruise_speed_conversion, get_pt_bus +from openpilot.selfdrive.car.honda.hondacan import CanBus, get_cruise_speed_conversion from openpilot.selfdrive.car.honda.values import CAR, DBC, STEER_THRESHOLD, HONDA_BOSCH, \ HONDA_NIDEC_ALT_SCM_MESSAGES, HONDA_BOSCH_RADARLESS, \ HondaFlags, SERIAL_STEERING @@ -28,7 +28,7 @@ def get_can_messages(CP, gearbox_msg): ("STEER_MOTOR_TORQUE", 0), # TODO: not on every car ] - if CP.carFingerprint in (SERIAL_STEERING | {CAR.ODYSSEY_CHN, }): + if CP.carFingerprint in (SERIAL_STEERING | (CAR.HONDA_ODYSSEY_CHN, )): messages += [ ("SCM_FEEDBACK", 25), ("SCM_BUTTONS", 50), @@ -39,7 +39,7 @@ def get_can_messages(CP, gearbox_msg): ("SCM_BUTTONS", 25), ] - if CP.carFingerprint in (CAR.CRV_HYBRID, CAR.CIVIC_BOSCH_DIESEL, CAR.ACURA_RDX_3G, CAR.HONDA_E): + if CP.carFingerprint in (CAR.HONDA_CRV_HYBRID, CAR.HONDA_CIVIC_BOSCH_DIESEL, CAR.ACURA_RDX_3G, CAR.HONDA_E): messages.append((gearbox_msg, 50)) else: messages.append((gearbox_msg, 100)) @@ -47,7 +47,7 @@ def get_can_messages(CP, gearbox_msg): if CP.flags & HondaFlags.BOSCH_ALT_BRAKE: messages.append(("BRAKE_MODULE", 50)) - if CP.carFingerprint in (HONDA_BOSCH | {CAR.CIVIC, CAR.ODYSSEY, CAR.ODYSSEY_CHN, CAR.CLARITY}): + if CP.carFingerprint in (HONDA_BOSCH | {CAR.HONDA_CIVIC, CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_CLARITY}): messages.append(("EPB_STATUS", 50)) if CP.carFingerprint in HONDA_BOSCH: @@ -58,22 +58,22 @@ def get_can_messages(CP, gearbox_msg): ("ACC_CONTROL", 50), ] else: # Nidec signals - if CP.carFingerprint in (SERIAL_STEERING | {CAR.ODYSSEY_CHN, }): + if CP.carFingerprint in (SERIAL_STEERING | (CAR.HONDA_ODYSSEY_CHN, )): messages.append(("CRUISE_PARAMS", 10)) else: messages.append(("CRUISE_PARAMS", 50)) # TODO: clean this up - if CP.carFingerprint in (CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, - CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.HRV_3G): + if CP.carFingerprint in (CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_BOSCH_DIESEL, CAR.HONDA_CRV_HYBRID, CAR.HONDA_INSIGHT, + CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.HONDA_CIVIC_2022, CAR.HONDA_HRV_3G): pass - elif CP.carFingerprint in (CAR.ODYSSEY_CHN, CAR.FREED, CAR.HRV): + elif CP.carFingerprint in (CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_FREED, CAR.HONDA_HRV): pass else: messages.append(("DOORS_STATUS", 3)) # add gas interceptor reading if we are using it - if CP.enableGasInterceptor: + if CP.enableGasInterceptorDEPRECATED: messages.append(("GAS_SENSOR", 50)) if CP.carFingerprint in HONDA_BOSCH_RADARLESS: @@ -91,7 +91,7 @@ class CarState(CarStateBase): super().__init__(CP) can_define = CANDefine(DBC[CP.carFingerprint]["pt"]) self.gearbox_msg = "GEARBOX" - if CP.carFingerprint == CAR.ACCORD and CP.transmissionType == TransmissionType.cvt: + if CP.carFingerprint == CAR.HONDA_ACCORD and CP.transmissionType == TransmissionType.cvt: self.gearbox_msg = "GEARBOX_15T" self.main_on_sig_msg = "SCM_FEEDBACK" @@ -132,10 +132,10 @@ class CarState(CarStateBase): # panda checks if the signal is non-zero ret.standstill = cp.vl["ENGINE_DATA"]["XMISSION_SPEED"] < 1e-5 # TODO: find a common signal across all cars - if self.CP.carFingerprint in (CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_HYBRID, CAR.INSIGHT, - CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.HRV_3G): + if self.CP.carFingerprint in (CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_BOSCH_DIESEL, CAR.HONDA_CRV_HYBRID, CAR.HONDA_INSIGHT, + CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.HONDA_CIVIC_2022, CAR.HONDA_HRV_3G): ret.doorOpen = bool(cp.vl["SCM_FEEDBACK"]["DRIVERS_DOOR_OPEN"]) - elif self.CP.carFingerprint in (CAR.ODYSSEY_CHN, CAR.FREED, CAR.HRV): + elif self.CP.carFingerprint in (CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_FREED, CAR.HONDA_HRV): ret.doorOpen = bool(cp.vl["SCM_BUTTONS"]["DRIVERS_DOOR_OPEN"]) else: ret.doorOpen = any([cp.vl["DOORS_STATUS"]["DOOR_OPEN_FL"], cp.vl["DOORS_STATUS"]["DOOR_OPEN_FR"], @@ -190,13 +190,13 @@ class CarState(CarStateBase): ret.brakeHoldActive = cp.vl["VSA_STATUS"]["BRAKE_HOLD_ACTIVE"] == 1 # TODO: set for all cars - if self.CP.carFingerprint in (HONDA_BOSCH | {CAR.CIVIC, CAR.ODYSSEY, CAR.ODYSSEY_CHN, CAR.CLARITY}): + if self.CP.carFingerprint in (HONDA_BOSCH | {CAR.HONDA_CIVIC, CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN, CAR.HONDA_CLARITY}): ret.parkingBrake = cp.vl["EPB_STATUS"]["EPB_STATE"] != 0 gear = int(cp.vl[self.gearbox_msg]["GEAR_SHIFTER"]) ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(gear, None)) - if self.CP.enableGasInterceptor: + if self.CP.enableGasInterceptorDEPRECATED: # Same threshold as panda, equivalent to 1e-5 with previous DBC scaling ret.gas = (cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS"] + cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS2"]) // 2 ret.gasPressed = ret.gas > 492 @@ -209,6 +209,10 @@ class CarState(CarStateBase): ret.steeringPressed = abs(ret.steeringTorque) > STEER_THRESHOLD.get(self.CP.carFingerprint, 1200) if self.CP.carFingerprint in HONDA_BOSCH: + # The PCM always manages its own cruise control state, but doesn't publish it + if self.CP.carFingerprint in HONDA_BOSCH_RADARLESS: + ret.cruiseState.nonAdaptive = cp_cam.vl["ACC_HUD"]["CRUISE_CONTROL_LABEL"] != 0 + if not self.CP.openpilotLongitudinalControl: # ACC_HUD is on camera bus on radarless cars acc_hud = cp_cam.vl["ACC_HUD"] if self.CP.carFingerprint in HONDA_BOSCH_RADARLESS else cp.vl["ACC_HUD"] @@ -242,7 +246,7 @@ class CarState(CarStateBase): ret.cruiseState.available = bool(cp.vl[self.main_on_sig_msg]["MAIN_ON"]) # Gets rid of Pedal Grinding noise when brake is pressed at slow speeds for some models - if self.CP.carFingerprint in (CAR.PILOT, CAR.RIDGELINE): + if self.CP.carFingerprint in (CAR.HONDA_PILOT, CAR.HONDA_RIDGELINE): if ret.brake > 0.1: ret.brakePressed = True @@ -282,7 +286,7 @@ class CarState(CarStateBase): def get_can_parser(self, CP): messages = get_can_messages(CP, self.gearbox_msg) - return CANParser(DBC[CP.carFingerprint]["pt"], messages, get_pt_bus(CP.carFingerprint)) + return CANParser(DBC[CP.carFingerprint]["pt"], messages, CanBus(CP).pt) @staticmethod def get_cam_can_parser(CP): @@ -294,9 +298,10 @@ class CarState(CarStateBase): ] if CP.carFingerprint in HONDA_BOSCH_RADARLESS: - messages.append(("LKAS_HUD", 10)) - if not CP.openpilotLongitudinalControl: - messages.append(("ACC_HUD", 10)) + messages += [ + ("ACC_HUD", 10), + ("LKAS_HUD", 10), + ] elif CP.carFingerprint not in HONDA_BOSCH: messages += [ @@ -305,7 +310,7 @@ class CarState(CarStateBase): ("BRAKE_COMMAND", 50), ] - return CANParser(DBC[CP.carFingerprint]["pt"], messages, 2) + return CANParser(DBC[CP.carFingerprint]["pt"], messages, CanBus(CP).camera) @staticmethod def get_body_can_parser(CP): @@ -314,6 +319,6 @@ class CarState(CarStateBase): ("BSM_STATUS_LEFT", 3), ("BSM_STATUS_RIGHT", 3), ] - bus_body = 0 # B-CAN is forwarded to ACC-CAN radar side (CAN 0 on fake ethernet port) + bus_body = CanBus(CP).radar # B-CAN is forwarded to ACC-CAN radar side (CAN 0 on fake ethernet port) return CANParser(DBC[CP.carFingerprint]["body"], messages, bus_body) return None diff --git a/selfdrive/car/honda/fingerprints.py b/selfdrive/car/honda/fingerprints.py index 5e82c1e921..1884ed5dec 100644 --- a/selfdrive/car/honda/fingerprints.py +++ b/selfdrive/car/honda/fingerprints.py @@ -10,7 +10,7 @@ Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.ACCORD: { + CAR.HONDA_ACCORD: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-6A0-8720\x00\x00', b'37805-6A0-9520\x00\x00', @@ -39,15 +39,18 @@ FW_VERSIONS = { b'37805-6B2-A810\x00\x00', b'37805-6B2-A820\x00\x00', b'37805-6B2-A920\x00\x00', + b'37805-6B2-A960\x00\x00', b'37805-6B2-AA10\x00\x00', b'37805-6B2-C520\x00\x00', b'37805-6B2-C540\x00\x00', + b'37805-6B2-C560\x00\x00', b'37805-6B2-M520\x00\x00', b'37805-6B2-Y810\x00\x00', b'37805-6M4-B730\x00\x00', ], (Ecu.shiftByWire, 0x18da0bf1, None): [ b'54008-TVC-A910\x00\x00', + b'54008-TWA-A910\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ b'28101-6A7-A220\x00\x00', @@ -89,6 +92,12 @@ FW_VERSIONS = { b'57114-TVA-C530\x00\x00', b'57114-TVA-E520\x00\x00', b'57114-TVE-H250\x00\x00', + b'57114-TWA-A040\x00\x00', + b'57114-TWA-A050\x00\x00', + b'57114-TWA-A530\x00\x00', + b'57114-TWA-B520\x00\x00', + b'57114-TWA-C510\x00\x00', + b'57114-TWB-H030\x00\x00', ], (Ecu.eps, 0x18da30f1, None): [ b'39990-TBX-H120\x00\x00', @@ -100,6 +109,7 @@ FW_VERSIONS = { b'39990-TVA-X030\x00\x00', b'39990-TVA-X040\x00\x00', b'39990-TVE-H130\x00\x00', + b'39990-TWB-H120\x00\x00', ], (Ecu.srs, 0x18da53f1, None): [ b'77959-TBX-H230\x00\x00', @@ -108,40 +118,9 @@ FW_VERSIONS = { b'77959-TVA-H230\x00\x00', b'77959-TVA-L420\x00\x00', b'77959-TVA-X330\x00\x00', - ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TBX-H310\x00\x00', - b'78109-TVA-A010\x00\x00', - b'78109-TVA-A020\x00\x00', - b'78109-TVA-A030\x00\x00', - b'78109-TVA-A110\x00\x00', - b'78109-TVA-A120\x00\x00', - b'78109-TVA-A130\x00\x00', - b'78109-TVA-A210\x00\x00', - b'78109-TVA-A220\x00\x00', - b'78109-TVA-A230\x00\x00', - b'78109-TVA-A310\x00\x00', - b'78109-TVA-C010\x00\x00', - b'78109-TVA-C130\x00\x00', - b'78109-TVA-L010\x00\x00', - b'78109-TVA-L210\x00\x00', - b'78109-TVA-R310\x00\x00', - b'78109-TVC-A010\x00\x00', - b'78109-TVC-A020\x00\x00', - b'78109-TVC-A030\x00\x00', - b'78109-TVC-A110\x00\x00', - b'78109-TVC-A130\x00\x00', - b'78109-TVC-A210\x00\x00', - b'78109-TVC-A220\x00\x00', - b'78109-TVC-A230\x00\x00', - b'78109-TVC-C010\x00\x00', - b'78109-TVC-C110\x00\x00', - b'78109-TVC-L010\x00\x00', - b'78109-TVC-L210\x00\x00', - b'78109-TVC-M510\x00\x00', - b'78109-TVC-YF10\x00\x00', - b'78109-TVE-H610\x00\x00', - b'78109-TWA-A210\x00\x00', + b'77959-TWA-A440\x00\x00', + b'77959-TWA-L420\x00\x00', + b'77959-TWB-H220\x00\x00', ], (Ecu.hud, 0x18da61f1, None): [ b'78209-TVA-A010\x00\x00', @@ -158,6 +137,9 @@ FW_VERSIONS = { b'36802-TVE-H070\x00\x00', b'36802-TWA-A070\x00\x00', b'36802-TWA-A080\x00\x00', + b'36802-TWA-A210\x00\x00', + b'36802-TWA-A330\x00\x00', + b'36802-TWB-H060\x00\x00', ], (Ecu.fwdCamera, 0x18dab5f1, None): [ b'36161-TBX-H130\x00\x00', @@ -166,74 +148,19 @@ FW_VERSIONS = { b'36161-TVC-A330\x00\x00', b'36161-TVE-H050\x00\x00', b'36161-TWA-A070\x00\x00', + b'36161-TWA-A330\x00\x00', + b'36161-TWB-H040\x00\x00', ], (Ecu.gateway, 0x18daeff1, None): [ b'38897-TVA-A010\x00\x00', b'38897-TVA-A020\x00\x00', b'38897-TVA-A230\x00\x00', b'38897-TVA-A240\x00\x00', - ], - }, - CAR.ACCORDH: { - (Ecu.gateway, 0x18daeff1, None): [ b'38897-TWA-A120\x00\x00', b'38897-TWD-J020\x00\x00', ], - (Ecu.vsa, 0x18da28f1, None): [ - b'57114-TWA-A040\x00\x00', - b'57114-TWA-A050\x00\x00', - b'57114-TWA-A530\x00\x00', - b'57114-TWA-B520\x00\x00', - b'57114-TWA-C510\x00\x00', - b'57114-TWB-H030\x00\x00', - ], - (Ecu.srs, 0x18da53f1, None): [ - b'77959-TWA-A440\x00\x00', - b'77959-TWA-L420\x00\x00', - b'77959-TWB-H220\x00\x00', - ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TWA-A010\x00\x00', - b'78109-TWA-A020\x00\x00', - b'78109-TWA-A030\x00\x00', - b'78109-TWA-A110\x00\x00', - b'78109-TWA-A120\x00\x00', - b'78109-TWA-A130\x00\x00', - b'78109-TWA-A210\x00\x00', - b'78109-TWA-A220\x00\x00', - b'78109-TWA-A230\x00\x00', - b'78109-TWA-A610\x00\x00', - b'78109-TWA-H210\x00\x00', - b'78109-TWA-L010\x00\x00', - b'78109-TWA-L210\x00\x00', - ], - (Ecu.shiftByWire, 0x18da0bf1, None): [ - b'54008-TWA-A910\x00\x00', - ], - (Ecu.hud, 0x18da61f1, None): [ - b'78209-TVA-A010\x00\x00', - b'78209-TVA-A110\x00\x00', - ], - (Ecu.fwdCamera, 0x18dab5f1, None): [ - b'36161-TWA-A070\x00\x00', - b'36161-TWA-A330\x00\x00', - b'36161-TWB-H040\x00\x00', - ], - (Ecu.fwdRadar, 0x18dab0f1, None): [ - b'36802-TWA-A070\x00\x00', - b'36802-TWA-A080\x00\x00', - b'36802-TWA-A210\x00\x00', - b'36802-TWA-A330\x00\x00', - b'36802-TWB-H060\x00\x00', - ], - (Ecu.eps, 0x18da30f1, None): [ - b'39990-TVA-A150\x00\x00', - b'39990-TVA-A160\x00\x00', - b'39990-TVA-A340\x00\x00', - b'39990-TWB-H120\x00\x00', - ], }, - CAR.ACCORD_NIDEC_4CYL: { + CAR.HONDA_ACCORD_4CYL_9TH_GEN: { (Ecu.vsa, 0x18DA28F1, None): [ b'57114-T2F-X840\x00\x00', ], @@ -247,7 +174,7 @@ FW_VERSIONS = { b'77959-T2F-A030\x00\x00', ], }, - CAR.CIVIC: { + CAR.HONDA_CIVIC: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-5AA-A640\x00\x00', b'37805-5AA-A650\x00\x00', @@ -313,25 +240,6 @@ FW_VERSIONS = { b'77959-TBG-A030\x00\x00', b'77959-TEA-Q820\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TBA-A510\x00\x00', - b'78109-TBA-A520\x00\x00', - b'78109-TBA-A530\x00\x00', - b'78109-TBA-C310\x00\x00', - b'78109-TBA-C520\x00\x00', - b'78109-TBC-A310\x00\x00', - b'78109-TBC-A320\x00\x00', - b'78109-TBC-A510\x00\x00', - b'78109-TBC-A520\x00\x00', - b'78109-TBC-A530\x00\x00', - b'78109-TBC-C510\x00\x00', - b'78109-TBC-C520\x00\x00', - b'78109-TBC-C530\x00\x00', - b'78109-TBH-A510\x00\x00', - b'78109-TBH-A530\x00\x00', - b'78109-TED-Q510\x00\x00', - b'78109-TEG-A310\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-TBA-A020\x00\x00', b'36161-TBA-A030\x00\x00', @@ -347,7 +255,7 @@ FW_VERSIONS = { b'38897-TBA-A020\x00\x00', ], }, - CAR.CIVIC_BOSCH: { + CAR.HONDA_CIVIC_BOSCH: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-5AA-A940\x00\x00', b'37805-5AA-A950\x00\x00', @@ -401,6 +309,7 @@ FW_VERSIONS = { b'37805-5BB-L540\x00\x00', b'37805-5BB-L630\x00\x00', b'37805-5BB-L640\x00\x00', + b'37805-5BF-J130\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ b'28101-5CG-A920\x00\x00', @@ -434,6 +343,7 @@ FW_VERSIONS = { b'57114-TGG-G320\x00\x00', b'57114-TGG-L320\x00\x00', b'57114-TGG-L330\x00\x00', + b'57114-TGH-L130\x00\x00', b'57114-TGK-T320\x00\x00', b'57114-TGL-G330\x00\x00', ], @@ -445,6 +355,7 @@ FW_VERSIONS = { b'39990-TGG-A020\x00\x00', b'39990-TGG-A120\x00\x00', b'39990-TGG-J510\x00\x00', + b'39990-TGH-J530\x00\x00', b'39990-TGL-E130\x00\x00', b'39990-TGN-E120\x00\x00', # modded EPS bosch civic @@ -469,40 +380,7 @@ FW_VERSIONS = { b'77959-TGG-G110\x00\x00', b'77959-TGG-J320\x00\x00', b'77959-TGG-Z820\x00\x00', - ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TBA-A110\x00\x00', - b'78109-TBA-A910\x00\x00', - b'78109-TBA-C340\x00\x00', - b'78109-TBA-C910\x00\x00', - b'78109-TBC-A740\x00\x00', - b'78109-TBC-C540\x00\x00', - b'78109-TBG-A110\x00\x00', - b'78109-TBH-A710\x00\x00', - b'78109-TEG-A720\x00\x00', - b'78109-TFJ-G020\x00\x00', - b'78109-TGG-9020\x00\x00', - b'78109-TGG-A210\x00\x00', - b'78109-TGG-A220\x00\x00', - b'78109-TGG-A310\x00\x00', - b'78109-TGG-A320\x00\x00', - b'78109-TGG-A330\x00\x00', - b'78109-TGG-A610\x00\x00', - b'78109-TGG-A620\x00\x00', - b'78109-TGG-A810\x00\x00', - b'78109-TGG-A820\x00\x00', - b'78109-TGG-C010\x00\x00', - b'78109-TGG-C220\x00\x00', - b'78109-TGG-E110\x00\x00', - b'78109-TGG-G030\x00\x00', - b'78109-TGG-G230\x00\x00', - b'78109-TGG-G410\x00\x00', - b'78109-TGK-Z410\x00\x00', - b'78109-TGL-G120\x00\x00', - b'78109-TGL-G130\x00\x00', - b'78109-TGL-G210\x00\x00', - b'78109-TGL-G230\x00\x00', - b'78109-TGL-GM10\x00\x00', + b'77959-TGH-J110\x00\x00', ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36802-TBA-A150\x00\x00', @@ -514,6 +392,7 @@ FW_VERSIONS = { b'36802-TGG-A130\x00\x00', b'36802-TGG-G040\x00\x00', b'36802-TGG-G130\x00\x00', + b'36802-TGH-A140\x00\x00', b'36802-TGK-Q120\x00\x00', b'36802-TGL-G040\x00\x00', ], @@ -528,6 +407,7 @@ FW_VERSIONS = { b'36161-TGG-G070\x00\x00', b'36161-TGG-G130\x00\x00', b'36161-TGG-G140\x00\x00', + b'36161-TGH-A140\x00\x00', b'36161-TGK-Q120\x00\x00', b'36161-TGL-G050\x00\x00', b'36161-TGL-G070\x00\x00', @@ -535,12 +415,13 @@ FW_VERSIONS = { (Ecu.gateway, 0x18daeff1, None): [ b'38897-TBA-A020\x00\x00', b'38897-TBA-A110\x00\x00', + b'38897-TGH-A010\x00\x00', ], (Ecu.electricBrakeBooster, 0x18da2bf1, None): [ b'39494-TGL-G030\x00\x00', ], }, - CAR.CIVIC_BOSCH_DIESEL: { + CAR.HONDA_CIVIC_BOSCH_DIESEL: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-59N-G630\x00\x00', b'37805-59N-G830\x00\x00', @@ -559,10 +440,6 @@ FW_VERSIONS = { b'77959-TFK-G210\x00\x00', b'77959-TGN-G220\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TFK-G020\x00\x00', - b'78109-TGN-G120\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36802-TFK-G130\x00\x00', b'36802-TGN-G130\x00\x00', @@ -578,7 +455,7 @@ FW_VERSIONS = { b'38897-TBA-A020\x00\x00', ], }, - CAR.CLARITY: { + CAR.HONDA_CLARITY: { (Ecu.shiftByWire, 0x18da0bf1, None): [ b'54008-TRW-A910\x00\x00', ], @@ -603,7 +480,7 @@ FW_VERSIONS = { b'78109-TRW-A030\x00\x00', ], }, - CAR.CRV: { + CAR.HONDA_CRV: { (Ecu.vsa, 0x18da28f1, None): [ b'57114-T1W-A230\x00\x00', b'57114-T1W-A240\x00\x00', @@ -612,18 +489,13 @@ FW_VERSIONS = { (Ecu.srs, 0x18da53f1, None): [ b'77959-T0A-A230\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T1W-A210\x00\x00', - b'78109-T1W-C210\x00\x00', - b'78109-T1X-A210\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-T1W-A830\x00\x00', b'36161-T1W-C830\x00\x00', b'36161-T1X-A830\x00\x00', ], }, - CAR.CRV_5G: { + CAR.HONDA_CRV_5G: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-5PA-3060\x00\x00', b'37805-5PA-3080\x00\x00', @@ -651,6 +523,7 @@ FW_VERSIONS = { b'37805-5PA-AB10\x00\x00', b'37805-5PA-AD10\x00\x00', b'37805-5PA-AF20\x00\x00', + b'37805-5PA-AF30\x00\x00', b'37805-5PA-AH20\x00\x00', b'37805-5PA-BF10\x00\x00', b'37805-5PA-C680\x00\x00', @@ -696,25 +569,6 @@ FW_VERSIONS = { b'46114-TLA-A930\x00\x00', b'46114-TMC-U020\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TLA-A020\x00\x00', - b'78109-TLA-A110\x00\x00', - b'78109-TLA-A120\x00\x00', - b'78109-TLA-A210\x00\x00', - b'78109-TLA-A220\x00\x00', - b'78109-TLA-C020\x00\x00', - b'78109-TLA-C110\x00\x00', - b'78109-TLA-C210\x00\x00', - b'78109-TLA-C310\x00\x00', - b'78109-TLB-A020\x00\x00', - b'78109-TLB-A110\x00\x00', - b'78109-TLB-A120\x00\x00', - b'78109-TLB-A210\x00\x00', - b'78109-TLB-A220\x00\x00', - b'78109-TMC-Q210\x00\x00', - b'78109-TMM-F210\x00\x00', - b'78109-TMM-M110\x00\x00', - ], (Ecu.gateway, 0x18daeff1, None): [ b'38897-TLA-A010\x00\x00', b'38897-TLA-A110\x00\x00', @@ -751,7 +605,7 @@ FW_VERSIONS = { b'77959-TMM-F040\x00\x00', ], }, - CAR.CRV_EU: { + CAR.HONDA_CRV_EU: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-R5Z-G740\x00\x00', b'37805-R5Z-G780\x00\x00', @@ -769,15 +623,11 @@ FW_VERSIONS = { b'28101-5LH-E120\x00\x00', b'28103-5LH-E100\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T1B-3050\x00\x00', - b'78109-T1V-G020\x00\x00', - ], (Ecu.srs, 0x18da53f1, None): [ b'77959-T1G-G940\x00\x00', ], }, - CAR.CRV_HYBRID: { + CAR.HONDA_CRV_HYBRID: { (Ecu.vsa, 0x18da28f1, None): [ b'57114-TMB-H030\x00\x00', b'57114-TPA-G020\x00\x00', @@ -803,12 +653,6 @@ FW_VERSIONS = { b'36161-TPG-A030\x00\x00', b'36161-TPG-A040\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TMB-H220\x00\x00', - b'78109-TPA-G520\x00\x00', - b'78109-TPG-A110\x00\x00', - b'78109-TPG-A210\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36802-TMB-H040\x00\x00', b'36802-TPA-E040\x00\x00', @@ -822,7 +666,7 @@ FW_VERSIONS = { b'77959-TLA-H240\x00\x00', ], }, - CAR.FIT: { + CAR.HONDA_FIT: { (Ecu.vsa, 0x18da28f1, None): [ b'57114-T5R-L020\x00\x00', b'57114-T5R-L220\x00\x00', @@ -834,12 +678,6 @@ FW_VERSIONS = { (Ecu.gateway, 0x18daeff1, None): [ b'38897-T5A-J010\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T5A-A210\x00\x00', - b'78109-T5A-A410\x00\x00', - b'78109-T5A-A420\x00\x00', - b'78109-T5A-A910\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-T5R-A040\x00\x00', b'36161-T5R-A240\x00\x00', @@ -849,7 +687,7 @@ FW_VERSIONS = { b'77959-T5R-A230\x00\x00', ], }, - CAR.FREED: { + CAR.HONDA_FREED: { (Ecu.gateway, 0x18daeff1, None): [ b'38897-TDK-J010\x00\x00', ], @@ -861,26 +699,24 @@ FW_VERSIONS = { b'57114-TDK-J120\x00\x00', b'57114-TDK-J330\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TDK-J310\x00\x00', - b'78109-TDK-J320\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-TDK-J070\x00\x00', b'36161-TDK-J080\x00\x00', b'36161-TDK-J530\x00\x00', ], }, - CAR.ODYSSEY: { + CAR.HONDA_ODYSSEY: { (Ecu.gateway, 0x18daeff1, None): [ b'38897-THR-A010\x00\x00', b'38897-THR-A020\x00\x00', ], (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-5MR-3050\x00\x00', + b'37805-5MR-3150\x00\x00', b'37805-5MR-3250\x00\x00', b'37805-5MR-4070\x00\x00', b'37805-5MR-4080\x00\x00', + b'37805-5MR-4170\x00\x00', b'37805-5MR-4180\x00\x00', b'37805-5MR-A240\x00\x00', b'37805-5MR-A250\x00\x00', @@ -936,53 +772,17 @@ FW_VERSIONS = { b'57114-THR-A040\x00\x00', b'57114-THR-A110\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-THR-A220\x00\x00', - b'78109-THR-A230\x00\x00', - b'78109-THR-A420\x00\x00', - b'78109-THR-A430\x00\x00', - b'78109-THR-A720\x00\x00', - b'78109-THR-A730\x00\x00', - b'78109-THR-A820\x00\x00', - b'78109-THR-A830\x00\x00', - b'78109-THR-AB20\x00\x00', - b'78109-THR-AB30\x00\x00', - b'78109-THR-AB40\x00\x00', - b'78109-THR-AC20\x00\x00', - b'78109-THR-AC30\x00\x00', - b'78109-THR-AC40\x00\x00', - b'78109-THR-AC50\x00\x00', - b'78109-THR-AD30\x00\x00', - b'78109-THR-AE20\x00\x00', - b'78109-THR-AE30\x00\x00', - b'78109-THR-AE40\x00\x00', - b'78109-THR-AK10\x00\x00', - b'78109-THR-AL10\x00\x00', - b'78109-THR-AN10\x00\x00', - b'78109-THR-C220\x00\x00', - b'78109-THR-C320\x00\x00', - b'78109-THR-C330\x00\x00', - b'78109-THR-CE20\x00\x00', - b'78109-THR-CL10\x00\x00', - b'78109-THR-DA20\x00\x00', - b'78109-THR-DA30\x00\x00', - b'78109-THR-DA40\x00\x00', - b'78109-THR-K120\x00\x00', - ], (Ecu.shiftByWire, 0x18da0bf1, None): [ b'54008-THR-A020\x00\x00', ], }, - CAR.ODYSSEY_CHN: { + CAR.HONDA_ODYSSEY_CHN: { (Ecu.eps, 0x18da30f1, None): [ b'39990-T6D-H220\x00\x00', ], (Ecu.gateway, 0x18daeff1, None): [ b'38897-T6A-J010\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T6A-F310\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-T6A-P040\x00\x00', ], @@ -990,12 +790,13 @@ FW_VERSIONS = { b'77959-T6A-P110\x00\x00', ], }, - CAR.PILOT: { + CAR.HONDA_PILOT: { (Ecu.shiftByWire, 0x18da0bf1, None): [ b'54008-TG7-A520\x00\x00', b'54008-TG7-A530\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ + b'28101-5EY-A040\x00\x00', b'28101-5EY-A050\x00\x00', b'28101-5EY-A100\x00\x00', b'28101-5EY-A430\x00\x00', @@ -1016,6 +817,7 @@ FW_VERSIONS = { b'37805-RLV-4070\x00\x00', b'37805-RLV-5140\x00\x00', b'37805-RLV-5230\x00\x00', + b'37805-RLV-A630\x00\x00', b'37805-RLV-A830\x00\x00', b'37805-RLV-A840\x00\x00', b'37805-RLV-B210\x00\x00', @@ -1086,43 +888,6 @@ FW_VERSIONS = { b'77959-TGS-A010\x00\x00', b'77959-TGS-A110\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TG7-A040\x00\x00', - b'78109-TG7-A050\x00\x00', - b'78109-TG7-A420\x00\x00', - b'78109-TG7-A520\x00\x00', - b'78109-TG7-A720\x00\x00', - b'78109-TG7-AJ10\x00\x00', - b'78109-TG7-AJ20\x00\x00', - b'78109-TG7-AK10\x00\x00', - b'78109-TG7-AK20\x00\x00', - b'78109-TG7-AM20\x00\x00', - b'78109-TG7-AP10\x00\x00', - b'78109-TG7-AP20\x00\x00', - b'78109-TG7-AS20\x00\x00', - b'78109-TG7-AT20\x00\x00', - b'78109-TG7-AU20\x00\x00', - b'78109-TG7-AX20\x00\x00', - b'78109-TG7-D020\x00\x00', - b'78109-TG7-DJ10\x00\x00', - b'78109-TG7-YK20\x00\x00', - b'78109-TG8-A420\x00\x00', - b'78109-TG8-A520\x00\x00', - b'78109-TG8-AJ10\x00\x00', - b'78109-TG8-AJ20\x00\x00', - b'78109-TG8-AK20\x00\x00', - b'78109-TG8-AS20\x00\x00', - b'78109-TGS-AB10\x00\x00', - b'78109-TGS-AC10\x00\x00', - b'78109-TGS-AD10\x00\x00', - b'78109-TGS-AJ20\x00\x00', - b'78109-TGS-AK20\x00\x00', - b'78109-TGS-AP20\x00\x00', - b'78109-TGS-AT20\x00\x00', - b'78109-TGS-AX20\x00\x00', - b'78109-TGT-AJ20\x00\x00', - b'78109-TGT-AK30\x00\x00', - ], (Ecu.vsa, 0x18da28f1, None): [ b'57114-TG7-A130\x00\x00', b'57114-TG7-A140\x00\x00', @@ -1131,6 +896,7 @@ FW_VERSIONS = { b'57114-TG7-A630\x00\x00', b'57114-TG7-A730\x00\x00', b'57114-TG8-A140\x00\x00', + b'57114-TG8-A230\x00\x00', b'57114-TG8-A240\x00\x00', b'57114-TG8-A630\x00\x00', b'57114-TG8-A730\x00\x00', @@ -1152,12 +918,6 @@ FW_VERSIONS = { b'77959-TX4-C010\x00\x00', b'77959-TX4-C020\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TX4-A210\x00\x00', - b'78109-TX4-A310\x00\x00', - b'78109-TX5-A210\x00\x00', - b'78109-TX5-A310\x00\x00', - ], }, CAR.ACURA_RDX_3G: { (Ecu.programmedFuelInjection, 0x18da10f1, None): [ @@ -1170,6 +930,7 @@ FW_VERSIONS = { b'37805-5YF-A750\x00\x00', b'37805-5YF-A760\x00\x00', b'37805-5YF-A850\x00\x00', + b'37805-5YF-A860\x00\x00', b'37805-5YF-A870\x00\x00', b'37805-5YF-AD20\x00\x00', b'37805-5YF-C210\x00\x00', @@ -1207,24 +968,6 @@ FW_VERSIONS = { b'28102-5YL-A700\x00\x00', b'28102-5YL-A711\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TJB-A140\x00\x00', - b'78109-TJB-A240\x00\x00', - b'78109-TJB-A420\x00\x00', - b'78109-TJB-AB10\x00\x00', - b'78109-TJB-AD10\x00\x00', - b'78109-TJB-AF10\x00\x00', - b'78109-TJB-AQ20\x00\x00', - b'78109-TJB-AR10\x00\x00', - b'78109-TJB-AS10\x00\x00', - b'78109-TJB-AU10\x00\x00', - b'78109-TJB-AW10\x00\x00', - b'78109-TJC-A240\x00\x00', - b'78109-TJC-A420\x00\x00', - b'78109-TJC-AA10\x00\x00', - b'78109-TJC-AD10\x00\x00', - b'78109-TJC-AF10\x00\x00', - ], (Ecu.srs, 0x18da53f1, None): [ b'77959-TJB-A040\x00\x00', b'77959-TJB-A120\x00\x00', @@ -1249,7 +992,7 @@ FW_VERSIONS = { b'39990-TJB-A130\x00\x00', ], }, - CAR.RIDGELINE: { + CAR.HONDA_RIDGELINE: { (Ecu.eps, 0x18da30f1, None): [ b'39990-T6Z-A020\x00\x00', b'39990-T6Z-A030\x00\x00', @@ -1269,18 +1012,6 @@ FW_VERSIONS = { b'38897-T6Z-A010\x00\x00', b'38897-T6Z-A110\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78108-T6Z-AF10\x00\x00', - b'78109-T6Z-A420\x00\x00', - b'78109-T6Z-A510\x00\x00', - b'78109-T6Z-A710\x00\x00', - b'78109-T6Z-A810\x00\x00', - b'78109-T6Z-A910\x00\x00', - b'78109-T6Z-AA10\x00\x00', - b'78109-T6Z-C620\x00\x00', - b'78109-T6Z-C910\x00\x00', - b'78109-TJZ-A510\x00\x00', - ], (Ecu.srs, 0x18da53f1, None): [ b'77959-T6Z-A020\x00\x00', ], @@ -1292,7 +1023,7 @@ FW_VERSIONS = { b'57114-TJZ-A520\x00\x00', ], }, - CAR.INSIGHT: { + CAR.HONDA_INSIGHT: { (Ecu.eps, 0x18da30f1, None): [ b'39990-TXM-A040\x00\x00', ], @@ -1317,15 +1048,8 @@ FW_VERSIONS = { (Ecu.gateway, 0x18daeff1, None): [ b'38897-TXM-A020\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-TXM-A010\x00\x00', - b'78109-TXM-A020\x00\x00', - b'78109-TXM-A030\x00\x00', - b'78109-TXM-A110\x00\x00', - b'78109-TXM-C010\x00\x00', - ], }, - CAR.HRV: { + CAR.HONDA_HRV: { (Ecu.gateway, 0x18daeff1, None): [ b'38897-T7A-A010\x00\x00', b'38897-T7A-A110\x00\x00', @@ -1342,36 +1066,36 @@ FW_VERSIONS = { (Ecu.srs, 0x18da53f1, None): [ b'77959-T7A-A230\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-THW-A110\x00\x00', - b'78109-THX-A110\x00\x00', - b'78109-THX-A120\x00\x00', - b'78109-THX-A210\x00\x00', - b'78109-THX-A220\x00\x00', - b'78109-THX-C220\x00\x00', - ], }, - CAR.HRV_3G: { + CAR.HONDA_HRV_3G: { (Ecu.eps, 0x18da30f1, None): [ + b'39990-3M0-G110\x00\x00', b'39990-3W0-A030\x00\x00', ], (Ecu.gateway, 0x18daeff1, None): [ + b'38897-3M0-M110\x00\x00', b'38897-3W1-A010\x00\x00', ], (Ecu.srs, 0x18da53f1, None): [ + b'77959-3M0-K840\x00\x00', b'77959-3V0-A820\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78108-3V1-A220\x00\x00', + (Ecu.fwdRadar, 0x18dab0f1, None): [ + b'8S102-3M6-P030\x00\x00', + b'8S102-3W0-A060\x00\x00', + b'8S102-3W0-AB10\x00\x00', ], (Ecu.vsa, 0x18da28f1, None): [ + b'57114-3M6-M010\x00\x00', b'57114-3W0-A040\x00\x00', ], (Ecu.transmission, 0x18da1ef1, None): [ b'28101-6EH-A010\x00\x00', + b'28101-6JC-M310\x00\x00', ], (Ecu.programmedFuelInjection, 0x18da10f1, None): [ b'37805-6CT-A710\x00\x00', + b'37805-6HZ-M630\x00\x00', ], (Ecu.electricBrakeBooster, 0x18da2bf1, None): [ b'46114-3W0-A020\x00\x00', @@ -1389,11 +1113,6 @@ FW_VERSIONS = { b'77959-TX6-A230\x00\x00', b'77959-TX6-C210\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78109-T3R-A120\x00\x00', - b'78109-T3R-A410\x00\x00', - b'78109-TV9-A510\x00\x00', - ], }, CAR.HONDA_E: { (Ecu.eps, 0x18da30f1, None): [ @@ -1408,9 +1127,6 @@ FW_VERSIONS = { (Ecu.srs, 0x18da53f1, None): [ b'77959-TYF-G430\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78108-TYF-G610\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36802-TYF-E030\x00\x00', ], @@ -1421,7 +1137,7 @@ FW_VERSIONS = { b'57114-TYF-E030\x00\x00', ], }, - CAR.CIVIC_2022: { + CAR.HONDA_CIVIC_2022: { (Ecu.eps, 0x18da30f1, None): [ b'39990-T24-T120\x00\x00', b'39990-T39-A130\x00\x00', @@ -1442,15 +1158,6 @@ FW_VERSIONS = { b'77959-T47-A940\x00\x00', b'77959-T47-A950\x00\x00', ], - (Ecu.combinationMeter, 0x18da60f1, None): [ - b'78108-T21-A220\x00\x00', - b'78108-T21-A230\x00\x00', - b'78108-T21-A620\x00\x00', - b'78108-T21-A740\x00\x00', - b'78108-T21-MB10\x00\x00', - b'78108-T22-A020\x00\x00', - b'78108-T23-A110\x00\x00', - ], (Ecu.fwdRadar, 0x18dab0f1, None): [ b'36161-T20-A060\x00\x00', b'36161-T20-A070\x00\x00', diff --git a/selfdrive/car/honda/hondacan.py b/selfdrive/car/honda/hondacan.py index 1a31902d28..7c3de26cea 100644 --- a/selfdrive/car/honda/hondacan.py +++ b/selfdrive/car/honda/hondacan.py @@ -1,4 +1,5 @@ from openpilot.common.conversions import Conversions as CV +from openpilot.selfdrive.car import CanBusBase from openpilot.selfdrive.car.honda.values import HondaFlags, HONDA_BOSCH, HONDA_BOSCH_RADARLESS, CAR, CarControllerParams # CAN bus layout with relay @@ -8,15 +9,34 @@ from openpilot.selfdrive.car.honda.values import HondaFlags, HONDA_BOSCH, HONDA_ # 3 = F-CAN A - OBDII port -def get_pt_bus(car_fingerprint): - return 1 if car_fingerprint in (HONDA_BOSCH - HONDA_BOSCH_RADARLESS) else 0 +class CanBus(CanBusBase): + def __init__(self, CP=None, fingerprint=None) -> None: + # use fingerprint if specified + super().__init__(CP if fingerprint is None else None, fingerprint) + + if CP.carFingerprint in (HONDA_BOSCH - HONDA_BOSCH_RADARLESS): + self._pt, self._radar = self.offset + 1, self.offset + else: + self._pt, self._radar = self.offset, self.offset + 1 + + @property + def pt(self) -> int: + return self._pt + + @property + def radar(self) -> int: + return self._radar + + @property + def camera(self) -> int: + return self.offset + 2 -def get_lkas_cmd_bus(car_fingerprint, radar_disabled=False): +def get_lkas_cmd_bus(CAN, car_fingerprint, radar_disabled=False): no_radar = car_fingerprint in HONDA_BOSCH_RADARLESS if radar_disabled or no_radar: # when radar is disabled, steering commands are sent directly to powertrain bus - return get_pt_bus(car_fingerprint) + return CAN.pt # normally steering commands are sent to radar, which forwards them to powertrain bus return 0 @@ -26,7 +46,7 @@ def get_cruise_speed_conversion(car_fingerprint: str, is_metric: bool) -> float: return CV.MPH_TO_MS if car_fingerprint in HONDA_BOSCH_RADARLESS and not is_metric else CV.KPH_TO_MS -def create_brake_command(packer, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw, car_fingerprint, stock_brake): +def create_brake_command(packer, CAN, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw, car_fingerprint, stock_brake): # TODO: do we loose pressure if we keep pump off for long? brakelights = apply_brake > 0 brake_rq = apply_brake > 0 @@ -46,20 +66,18 @@ def create_brake_command(packer, apply_brake, pump_on, pcm_override, pcm_cancel_ "AEB_STATUS": 0, } - if car_fingerprint == CAR.CLARITY: + if car_fingerprint == CAR.HONDA_CLARITY: values["COMPUTER_BRAKE_ALT"] = apply_brake values["BRAKE_PUMP_REQUEST_ALT"] = apply_brake > 0 else: values["COMPUTER_BRAKE"] = apply_brake values["BRAKE_PUMP_REQUEST"] = pump_on - bus = get_pt_bus(car_fingerprint) - return packer.make_can_msg("BRAKE_COMMAND", bus, values) + return packer.make_can_msg("BRAKE_COMMAND", CAN.pt, values) -def create_acc_commands(packer, enabled, active, accel, gas, stopping_counter, car_fingerprint): +def create_acc_commands(packer, CAN, enabled, active, accel, gas, stopping_counter, car_fingerprint): commands = [] - bus = get_pt_bus(car_fingerprint) min_gas_accel = CarControllerParams.BOSCH_GAS_LOOKUP_BP[0] control_on = 5 if enabled else 0 @@ -96,43 +114,43 @@ def create_acc_commands(packer, enabled, active, accel, gas, stopping_counter, c "SET_TO_75": 0x75, "SET_TO_30": 0x30, } - commands.append(packer.make_can_msg("ACC_CONTROL_ON", bus, acc_control_on_values)) + commands.append(packer.make_can_msg("ACC_CONTROL_ON", CAN.pt, acc_control_on_values)) - commands.append(packer.make_can_msg("ACC_CONTROL", bus, acc_control_values)) + commands.append(packer.make_can_msg("ACC_CONTROL", CAN.pt, acc_control_values)) return commands -def create_steering_control(packer, apply_steer, lkas_active, car_fingerprint, radar_disabled): +def create_steering_control(packer, CAN, apply_steer, lkas_active, car_fingerprint, radar_disabled): values = { "STEER_TORQUE": apply_steer if lkas_active else 0, "STEER_TORQUE_REQUEST": lkas_active, } - bus = get_lkas_cmd_bus(car_fingerprint, radar_disabled) + bus = get_lkas_cmd_bus(CAN, car_fingerprint, radar_disabled) return packer.make_can_msg("STEERING_CONTROL", bus, values) -def create_bosch_supplemental_1(packer, car_fingerprint): +def create_bosch_supplemental_1(packer, CAN, car_fingerprint): # non-active params values = { "SET_ME_X04": 0x04, "SET_ME_X80": 0x80, "SET_ME_X10": 0x10, } - bus = get_lkas_cmd_bus(car_fingerprint) + bus = get_lkas_cmd_bus(CAN, car_fingerprint) return packer.make_can_msg("BOSCH_SUPPLEMENTAL_1", bus, values) -def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, lkas_hud, lat_active, gac_tr_cluster): +def create_ui_commands(packer, CAN, CP, enabled, pcm_speed, hud, is_metric, acc_hud, lkas_hud, lat_active): commands = [] - bus_pt = get_pt_bus(CP.carFingerprint) radar_disabled = CP.carFingerprint in (HONDA_BOSCH - HONDA_BOSCH_RADARLESS) and CP.openpilotLongitudinalControl - bus_lkas = get_lkas_cmd_bus(CP.carFingerprint, radar_disabled) + bus_lkas = get_lkas_cmd_bus(CAN, CP.carFingerprint, radar_disabled) if CP.openpilotLongitudinalControl: acc_hud_values = { 'CRUISE_SPEED': hud.v_cruise, 'ENABLE_MINI_CAR': 1 if enabled else 0, - 'HUD_DISTANCE': gac_tr_cluster, # max distance setting on display + # only moves the lead car without ACC_ON + 'HUD_DISTANCE': (hud.lead_distance_bars + 1) % 4, # wraps to 0 at 4 bars 'IMPERIAL_UNIT': int(not is_metric), 'HUD_LEAD': 2 if enabled and hud.lead_visible else 1 if enabled else 0, 'SET_ME_X01_2': 1, @@ -143,6 +161,8 @@ def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, acc_hud_values['FCM_OFF'] = 1 acc_hud_values['FCM_OFF_2'] = 1 else: + # Shows the distance bars, TODO: stock camera shows updates temporarily while disabled + acc_hud_values['ACC_ON'] = int(enabled) acc_hud_values['PCM_SPEED'] = pcm_speed * CV.MS_TO_KPH acc_hud_values['PCM_GAS'] = hud.pcm_accel acc_hud_values['SET_ME_X01'] = 1 @@ -150,7 +170,7 @@ def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, acc_hud_values['FCM_OFF_2'] = acc_hud['FCM_OFF_2'] acc_hud_values['FCM_PROBLEM'] = acc_hud['FCM_PROBLEM'] acc_hud_values['ICONS'] = acc_hud['ICONS'] - commands.append(packer.make_can_msg("ACC_HUD", bus_pt, acc_hud_values)) + commands.append(packer.make_can_msg("ACC_HUD", CAN.pt, acc_hud_values)) lkas_hud_values = { 'SET_ME_X41': 0x41, @@ -180,19 +200,19 @@ def create_ui_commands(packer, CP, enabled, pcm_speed, hud, is_metric, acc_hud, 'CMBS_OFF': 0x01, 'SET_TO_1': 0x01, } - commands.append(packer.make_can_msg('RADAR_HUD', bus_pt, radar_hud_values)) + commands.append(packer.make_can_msg('RADAR_HUD', CAN.pt, radar_hud_values)) - if CP.carFingerprint == CAR.CIVIC_BOSCH: - commands.append(packer.make_can_msg("LEGACY_BRAKE_COMMAND", bus_pt, {})) + if CP.carFingerprint == CAR.HONDA_CIVIC_BOSCH: + commands.append(packer.make_can_msg("LEGACY_BRAKE_COMMAND", CAN.pt, {})) return commands -def spam_buttons_command(packer, button_val, car_fingerprint): +def spam_buttons_command(packer, CAN, button_val, car_fingerprint): values = { 'CRUISE_BUTTONS': button_val, 'CRUISE_SETTING': 0, } # send buttons to camera on radarless cars - bus = 2 if car_fingerprint in HONDA_BOSCH_RADARLESS else get_pt_bus(car_fingerprint) + bus = CAN.camera if car_fingerprint in HONDA_BOSCH_RADARLESS else CAN.pt return packer.make_can_msg("SCM_BUTTONS", bus, values) diff --git a/selfdrive/car/honda/interface.py b/selfdrive/car/honda/interface.py index c9d1096333..4631de6ec7 100755 --- a/selfdrive/car/honda/interface.py +++ b/selfdrive/car/honda/interface.py @@ -3,9 +3,9 @@ from cereal import car from panda import Panda from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import interp -from openpilot.selfdrive.car.honda.hondacan import get_pt_bus -from openpilot.selfdrive.car.honda.values import CarControllerParams, CruiseButtons, HondaFlags, CAR, HONDA_BOSCH, HONDA_NIDEC_ALT_SCM_MESSAGES, \ - HONDA_BOSCH_RADARLESS +from openpilot.selfdrive.car.honda.hondacan import CanBus +from openpilot.selfdrive.car.honda.values import CarControllerParams, CruiseButtons, CruiseSettings, HondaFlags, CAR, HONDA_BOSCH, \ + HONDA_NIDEC_ALT_SCM_MESSAGES, HONDA_BOSCH_RADARLESS from openpilot.selfdrive.car import create_button_events, get_safety_config from openpilot.selfdrive.car.interfaces import CarInterfaceBase from openpilot.selfdrive.car.disable_ecu import disable_ecu @@ -17,6 +17,7 @@ GearShifter = car.CarState.GearShifter TransmissionType = car.CarParams.TransmissionType BUTTONS_DICT = {CruiseButtons.RES_ACCEL: ButtonType.accelCruise, CruiseButtons.DECEL_SET: ButtonType.decelCruise, CruiseButtons.MAIN: ButtonType.altButton3, CruiseButtons.CANCEL: ButtonType.cancel} +SETTINGS_BUTTONS_DICT = {CruiseSettings.DISTANCE: ButtonType.gapAdjustCruise, CruiseSettings.LKAS: ButtonType.altButton1} class CarInterface(CarInterfaceBase): @@ -24,7 +25,7 @@ class CarInterface(CarInterfaceBase): def get_pid_accel_limits(CP, current_speed, cruise_speed): if CP.carFingerprint in HONDA_BOSCH: return CarControllerParams.BOSCH_ACCEL_MIN, CarControllerParams.BOSCH_ACCEL_MAX - elif CP.enableGasInterceptor: + elif CP.enableGasInterceptorDEPRECATED: return CarControllerParams.NIDEC_ACCEL_MIN, CarControllerParams.NIDEC_ACCEL_MAX else: # NIDECs don't allow acceleration near cruise_speed, @@ -37,6 +38,8 @@ class CarInterface(CarInterfaceBase): def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs): ret.carName = "honda" + CAN = CanBus(ret, fingerprint) + if candidate in HONDA_BOSCH: ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.hondaBosch)] ret.radarUnavailable = True @@ -49,20 +52,20 @@ class CarInterface(CarInterfaceBase): ret.customStockLongAvailable = True else: ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.hondaNidec)] - ret.enableGasInterceptor = 0x201 in fingerprint[0] + ret.enableGasInterceptorDEPRECATED = 0x201 in fingerprint[CAN.pt] ret.openpilotLongitudinalControl = True - ret.pcmCruise = not ret.enableGasInterceptor + ret.pcmCruise = not ret.enableGasInterceptorDEPRECATED - if candidate == CAR.CRV_5G: - ret.enableBsm = 0x12f8bfa7 in fingerprint[0] + if candidate == CAR.HONDA_CRV_5G: + ret.enableBsm = 0x12f8bfa7 in fingerprint[CAN.radar] # Detect Bosch cars with new HUD msgs if any(0x33DA in f for f in fingerprint.values()): ret.flags |= HondaFlags.BOSCH_EXT_HUD.value - # Accord 1.5T CVT has different gearbox message - if candidate == CAR.ACCORD and 0x191 in fingerprint[1]: + # Accord ICE 1.5T CVT has different gearbox message + if candidate == CAR.HONDA_ACCORD and 0x191 in fingerprint[CAN.pt]: ret.transmissionType = TransmissionType.cvt # Certain Hondas have an extra steering sensor at the bottom of the steering rack, @@ -91,11 +94,7 @@ class CarInterface(CarInterfaceBase): if fw.ecu == "eps" and b"," in fw.fwVersion: eps_modified = True - if candidate == CAR.CIVIC: - ret.mass = 1326. - ret.wheelbase = 2.70 - ret.centerToFront = ret.wheelbase * 0.4 - ret.steerRatio = 15.38 # 10.93 is end-to-end spec + if candidate == CAR.HONDA_CIVIC: if eps_modified: # stock request input values: 0x0000, 0x00DE, 0x014D, 0x01EF, 0x0290, 0x0377, 0x0454, 0x0610, 0x06EE # stock request output values: 0x0000, 0x0917, 0x0DC5, 0x1017, 0x119F, 0x140B, 0x1680, 0x1680, 0x1680 @@ -109,11 +108,7 @@ class CarInterface(CarInterfaceBase): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2560], [0, 2560]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[1.1], [0.33]] - elif candidate in (CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CIVIC_2022): - ret.mass = 1326. - ret.wheelbase = 2.70 - ret.centerToFront = ret.wheelbase * 0.4 - ret.steerRatio = 15.38 # 10.93 is end-to-end spec + elif candidate in (CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_BOSCH_DIESEL, CAR.HONDA_CIVIC_2022): if eps_modified: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 2564, 8000], [0, 2564, 3840]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.3], [0.09]] # 2.5x Modded EPS @@ -121,13 +116,8 @@ class CarInterface(CarInterfaceBase): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] - elif candidate in (CAR.ACCORD, CAR.ACCORDH): - ret.mass = 3279. * CV.LB_TO_KG - ret.wheelbase = 2.83 - ret.centerToFront = ret.wheelbase * 0.39 - ret.steerRatio = 16.33 # 11.82 is spec end-to-end + elif candidate == CAR.HONDA_ACCORD: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.8467 if eps_modified: ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.3], [0.09]] @@ -135,29 +125,15 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] elif candidate == CAR.ACURA_ILX: - ret.mass = 3095. * CV.LB_TO_KG - ret.wheelbase = 2.67 - ret.centerToFront = ret.wheelbase * 0.37 - ret.steerRatio = 18.61 # 15.3 is spec end-to-end ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.72 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] - elif candidate in (CAR.CRV, CAR.CRV_EU): - ret.mass = 3572. * CV.LB_TO_KG - ret.wheelbase = 2.62 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 16.89 # as spec + elif candidate in (CAR.HONDA_CRV, CAR.HONDA_CRV_EU): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 1000], [0, 1000]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.444 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] ret.wheelSpeedFactor = 1.025 - elif candidate == CAR.CRV_5G: - ret.mass = 3410. * CV.LB_TO_KG - ret.wheelbase = 2.66 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 16.0 # 12.3 is spec end-to-end + elif candidate == CAR.HONDA_CRV_5G: if eps_modified: # stock request input values: 0x0000, 0x00DB, 0x01BB, 0x0296, 0x0377, 0x0454, 0x0532, 0x0610, 0x067F # stock request output values: 0x0000, 0x0500, 0x0A15, 0x0E6D, 0x1100, 0x1200, 0x129A, 0x134D, 0x1400 @@ -167,74 +143,38 @@ class CarInterface(CarInterfaceBase): else: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.64], [0.192]] - ret.tireStiffnessFactor = 0.677 ret.wheelSpeedFactor = 1.025 - elif candidate == CAR.CRV_HYBRID: - ret.mass = 1667. # mean of 4 models in kg - ret.wheelbase = 2.66 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 16.0 # 12.3 is spec end-to-end + elif candidate == CAR.HONDA_CRV_HYBRID: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.677 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] ret.wheelSpeedFactor = 1.025 - elif candidate == CAR.FIT: - ret.mass = 2644. * CV.LB_TO_KG - ret.wheelbase = 2.53 - ret.centerToFront = ret.wheelbase * 0.39 - ret.steerRatio = 13.06 + elif candidate == CAR.HONDA_FIT: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.75 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.05]] - elif candidate == CAR.FREED: - ret.mass = 3086. * CV.LB_TO_KG - ret.wheelbase = 2.74 - # the remaining parameters were copied from FIT - ret.centerToFront = ret.wheelbase * 0.39 - ret.steerRatio = 13.06 + elif candidate == CAR.HONDA_FREED: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] - ret.tireStiffnessFactor = 0.75 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.05]] - elif candidate in (CAR.HRV, CAR.HRV_3G): - ret.mass = 3125 * CV.LB_TO_KG - ret.wheelbase = 2.61 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 15.2 + elif candidate in (CAR.HONDA_HRV, CAR.HONDA_HRV_3G): ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] - ret.tireStiffnessFactor = 0.5 - if candidate == CAR.HRV: + if candidate == CAR.HONDA_HRV: ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.16], [0.025]] ret.wheelSpeedFactor = 1.025 else: ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] # TODO: can probably use some tuning elif candidate == CAR.ACURA_RDX: - ret.mass = 3935. * CV.LB_TO_KG - ret.wheelbase = 2.68 - ret.centerToFront = ret.wheelbase * 0.38 - ret.steerRatio = 15.0 # as spec - ret.tireStiffnessFactor = 0.444 ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 1000], [0, 1000]] # TODO: determine if there is a dead zone at the top end ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.8], [0.24]] elif candidate == CAR.ACURA_RDX_3G: - ret.mass = 4068. * CV.LB_TO_KG - ret.wheelbase = 2.75 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 11.95 # as spec ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 3840], [0, 3840]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.2], [0.06]] - ret.tireStiffnessFactor = 0.677 - elif candidate == CAR.ACCORD_NIDEC_4CYL: - ret.mass = 3279. * CV.LB_TO_KG - ret.wheelbase = 2.75 - ret.centerToFront = ret.wheelbase * 0.39 - ret.steerRatio = 13.66 # 13.37 is spec + elif candidate == CAR.HONDA_ACCORD_4CYL_9TH_GEN: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 239], [0, 239]] ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0.,20], [0.,20]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.4,0.3], [0,0]] @@ -244,55 +184,30 @@ class CarInterface(CarInterfaceBase): ret.longitudinalTuning.kiBP = [0., 35.] ret.longitudinalTuning.kiV = [0.2, 0.16] - elif candidate in (CAR.ODYSSEY, CAR.ODYSSEY_CHN): - ret.mass = 1900. - ret.wheelbase = 3.00 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 14.35 # as spec - ret.tireStiffnessFactor = 0.82 + elif candidate in (CAR.HONDA_ODYSSEY, CAR.HONDA_ODYSSEY_CHN): ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.28], [0.08]] - if candidate == CAR.ODYSSEY_CHN: + if candidate == CAR.HONDA_ODYSSEY_CHN: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 32767], [0, 32767]] # TODO: determine if there is a dead zone at the top end else: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - elif candidate == CAR.PILOT: - ret.mass = 4278. * CV.LB_TO_KG # average weight - ret.wheelbase = 2.86 - ret.centerToFront = ret.wheelbase * 0.428 - ret.steerRatio = 16.0 # as spec + elif candidate == CAR.HONDA_PILOT: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.444 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]] - elif candidate == CAR.RIDGELINE: - ret.mass = 4515. * CV.LB_TO_KG - ret.wheelbase = 3.18 - ret.centerToFront = ret.wheelbase * 0.41 - ret.steerRatio = 15.59 # as spec + elif candidate == CAR.HONDA_RIDGELINE: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.444 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.38], [0.11]] - elif candidate == CAR.INSIGHT: - ret.mass = 2987. * CV.LB_TO_KG - ret.wheelbase = 2.7 - ret.centerToFront = ret.wheelbase * 0.39 - ret.steerRatio = 15.0 # 12.58 is spec end-to-end + elif candidate == CAR.HONDA_INSIGHT: ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.82 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] elif candidate == CAR.HONDA_E: - ret.mass = 3338.8 * CV.LB_TO_KG - ret.wheelbase = 2.5 - ret.centerToFront = ret.wheelbase * 0.5 - ret.steerRatio = 16.71 ret.lateralParams.torqueBP, ret.lateralParams.torqueV = [[0, 4096], [0, 4096]] # TODO: determine if there is a dead zone at the top end - ret.tireStiffnessFactor = 0.82 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.6], [0.18]] # TODO: can probably use some tuning - elif candidate == CAR.CLARITY: + elif candidate == CAR.HONDA_CLARITY: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_CLARITY ret.mass = 4052. * CV.LB_TO_KG ret.wheelbase = 2.75 @@ -316,8 +231,11 @@ class CarInterface(CarInterfaceBase): raise ValueError(f"unsupported car {candidate}") # These cars use alternate user brake msg (0x1BE) - if 0x1BE in fingerprint[get_pt_bus(candidate)] and candidate in HONDA_BOSCH: + # TODO: Only detect feature for Accord/Accord Hybrid, not all Bosch DBCs have BRAKE_MODULE + if 0x1BE in fingerprint[CAN.pt] and candidate in (CAR.HONDA_ACCORD, CAR.HONDA_HRV_3G): ret.flags |= HondaFlags.BOSCH_ALT_BRAKE.value + + if ret.flags & HondaFlags.BOSCH_ALT_BRAKE: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_ALT_BRAKE # These cars use alternate SCM messages (SCM_FEEDBACK AND SCM_BUTTON) @@ -327,7 +245,7 @@ class CarInterface(CarInterfaceBase): if ret.openpilotLongitudinalControl and candidate in HONDA_BOSCH: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_BOSCH_LONG - if ret.enableGasInterceptor and candidate not in HONDA_BOSCH: + if ret.enableGasInterceptorDEPRECATED and candidate not in HONDA_BOSCH: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_HONDA_GAS_INTERCEPTOR if candidate in HONDA_BOSCH_RADARLESS: @@ -336,7 +254,7 @@ class CarInterface(CarInterfaceBase): # min speed to enable ACC. if car can do stop and go, then set enabling speed # to a negative value, so it won't matter. Otherwise, add 0.5 mph margin to not # conflict with PCM acc - ret.autoResumeSng = candidate in (HONDA_BOSCH | {CAR.CIVIC, CAR.CLARITY}) or ret.enableGasInterceptor + ret.autoResumeSng = candidate in (HONDA_BOSCH | {CAR.HONDA_CIVIC, CAR.HONDA_CLARITY}) or ret.enableGasInterceptorDEPRECATED ret.minEnableSpeed = -1. if ret.autoResumeSng else 25.5 * CV.MPH_TO_MS ret.steerActuatorDelay = 0.1 @@ -352,17 +270,17 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam, self.cp_body) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() buttonEvents = [ *create_button_events(self.CS.cruise_buttons, self.CS.prev_cruise_buttons, BUTTONS_DICT), - *create_button_events(self.CS.cruise_setting, self.CS.prev_cruise_setting, {1: ButtonType.altButton1}), + *create_button_events(self.CS.cruise_setting, self.CS.prev_cruise_setting, SETTINGS_BUTTONS_DICT), ] self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) - self.CS.accEnabled, buttonEvents = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - buttonEvents, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, + buttonEvents, c.vCruise) if ret.cruiseState.available: if self.enable_mads: @@ -371,7 +289,6 @@ class CarInterface(CarInterfaceBase): if self.CS.prev_cruise_setting != 1 and self.CS.cruise_setting == 1: self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, (self.CS.cruise_setting == 3), 1, 3, 0, "-") else: self.CS.madsEnabled = False @@ -422,8 +339,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - # pass in a car.CarControl - # to be called @ 100hz - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/honda/tests/test_honda.py b/selfdrive/car/honda/tests/test_honda.py index 4e3f9182ea..60d91b84a8 100755 --- a/selfdrive/car/honda/tests/test_honda.py +++ b/selfdrive/car/honda/tests/test_honda.py @@ -4,7 +4,7 @@ import unittest from openpilot.selfdrive.car.honda.fingerprints import FW_VERSIONS -HONDA_FW_VERSION_RE = br"\d{5}-[A-Z0-9]{3}(-|,)[A-Z0-9]{4}(\x00){2}$" +HONDA_FW_VERSION_RE = br"[A-Z0-9]{5}-[A-Z0-9]{3}(-|,)[A-Z0-9]{4}(\x00){2}$" class TestHondaFingerprint(unittest.TestCase): diff --git a/selfdrive/car/honda/values.py b/selfdrive/car/honda/values.py index a787ac4945..070cc3e1ca 100644 --- a/selfdrive/car/honda/values.py +++ b/selfdrive/car/honda/values.py @@ -1,11 +1,11 @@ from dataclasses import dataclass -from enum import Enum, IntFlag, StrEnum +from enum import Enum, IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV from panda.python import uds -from openpilot.selfdrive.car import dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 Ecu = car.CarParams.Ecu @@ -46,10 +46,19 @@ class CarControllerParams: class HondaFlags(IntFlag): + # Detected flags # Bosch models with alternate set of LKAS_HUD messages BOSCH_EXT_HUD = 1 BOSCH_ALT_BRAKE = 2 + # Static flags + BOSCH = 4 + BOSCH_RADARLESS = 8 + + NIDEC = 16 + NIDEC_ALT_PCM_ACCEL = 32 + NIDEC_ALT_SCM_MESSAGES = 64 + # Car button codes class CruiseButtons: @@ -59,6 +68,11 @@ class CruiseButtons: MAIN = 1 +class CruiseSettings: + DISTANCE = 3 + LKAS = 1 + + # See dbc files for info on values VISUAL_HUD = { VisualAlert.none: 0, @@ -72,32 +86,15 @@ VISUAL_HUD = { } -class CAR(StrEnum): - ACCORD = "HONDA ACCORD 2018" - ACCORDH = "HONDA ACCORD HYBRID 2018" - ACCORD_NIDEC_4CYL = "HONDA ACCORD 4CYL 9TH GEN" - CIVIC = "HONDA CIVIC 2016" - CIVIC_BOSCH = "HONDA CIVIC (BOSCH) 2019" - CIVIC_BOSCH_DIESEL = "HONDA CIVIC SEDAN 1.6 DIESEL 2019" - CIVIC_2022 = "HONDA CIVIC 2022" - ACURA_ILX = "ACURA ILX 2016" - CRV = "HONDA CR-V 2016" - CRV_5G = "HONDA CR-V 2017" - CRV_EU = "HONDA CR-V EU 2016" - CRV_HYBRID = "HONDA CR-V HYBRID 2019" - FIT = "HONDA FIT 2018" - FREED = "HONDA FREED 2020" - HRV = "HONDA HRV 2019" - HRV_3G = "HONDA HR-V 2023" - ODYSSEY = "HONDA ODYSSEY 2018" - ODYSSEY_CHN = "HONDA ODYSSEY CHN 2019" - ACURA_RDX = "ACURA RDX 2018" - ACURA_RDX_3G = "ACURA RDX 2020" - PILOT = "HONDA PILOT 2017" - RIDGELINE = "HONDA RIDGELINE 2017" - INSIGHT = "HONDA INSIGHT 2019" - HONDA_E = "HONDA E 2020" - CLARITY = "HONDA CLARITY 2018" +@dataclass +class HondaCarDocs(CarDocs): + package: str = "Honda Sensing" + + def init_make(self, CP: car.CarParams): + if CP.flags & HondaFlags.BOSCH: + self.car_parts = CarParts.common([CarHarness.bosch_b]) if CP.flags & HondaFlags.BOSCH_RADARLESS else CarParts.common([CarHarness.bosch_a]) + else: + self.car_parts = CarParts.common([CarHarness.nidec]) class Footnote(Enum): @@ -114,61 +111,178 @@ class Footnote(Enum): Column.HARDWARE) -@dataclass -class HondaCarInfo(CarInfo): - package: str = "Honda Sensing" - - def init_make(self, CP: car.CarParams): - if CP.carFingerprint in HONDA_BOSCH: - self.car_parts = CarParts.common([CarHarness.bosch_b]) if CP.carFingerprint in HONDA_BOSCH_RADARLESS else CarParts.common([CarHarness.bosch_a]) - else: - self.car_parts = CarParts.common([CarHarness.nidec]) +class HondaBoschPlatformConfig(PlatformConfig): + def init(self): + self.flags |= HondaFlags.BOSCH -CAR_INFO: dict[str, HondaCarInfo | list[HondaCarInfo] | None] = { - CAR.ACCORD: [ - HondaCarInfo("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), - HondaCarInfo("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), - ], - CAR.ACCORDH: HondaCarInfo("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CAR.CIVIC: HondaCarInfo("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE"), - CAR.CIVIC_BOSCH: [ - HondaCarInfo("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", - footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), - HondaCarInfo("Honda Civic Hatchback 2017-21", min_steer_speed=12. * CV.MPH_TO_MS), - ], - CAR.CIVIC_BOSCH_DIESEL: None, # same platform - CAR.CIVIC_2022: [ - HondaCarInfo("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), - HondaCarInfo("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), - ], - CAR.ACURA_ILX: HondaCarInfo("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS), - CAR.CRV: HondaCarInfo("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.CRV_5G: HondaCarInfo("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.CRV_EU: None, # HondaCarInfo("Honda CR-V EU", "Touring"), # Euro version of CRV Touring - CAR.CRV_HYBRID: HondaCarInfo("Honda CR-V Hybrid 2017-20", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.FIT: HondaCarInfo("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.FREED: HondaCarInfo("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.HRV: HondaCarInfo("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.HRV_3G: HondaCarInfo("Honda HR-V 2023", "All"), - CAR.ODYSSEY: HondaCarInfo("Honda Odyssey 2018-20"), - CAR.ODYSSEY_CHN: None, # Chinese version of Odyssey - CAR.ACURA_RDX: HondaCarInfo("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.ACURA_RDX_3G: HondaCarInfo("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CAR.PILOT: [ - HondaCarInfo("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), - HondaCarInfo("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), - ], - CAR.RIDGELINE: HondaCarInfo("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS), - CAR.INSIGHT: HondaCarInfo("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CAR.HONDA_E: HondaCarInfo("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS), - CAR.CLARITY: HondaCarInfo("Honda Clarity 2018-22"), - CAR.ACCORD_NIDEC_4CYL: HondaCarInfo("Honda Accord 4-Cylinder 2016-17", footnotes=[Footnote.ACCORD_NIDEC, Footnote.SERIAL_STEERING], min_steer_speed=3. * CV.MPH_TO_MS), -} +class HondaNidecPlatformConfig(PlatformConfig): + def init(self): + self.flags |= HondaFlags.NIDEC -HONDA_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ + +class CAR(Platforms): + # Bosch Cars + HONDA_ACCORD = HondaBoschPlatformConfig( + [ + HondaCarDocs("Honda Accord 2018-22", "All", video_link="https://www.youtube.com/watch?v=mrUwlj3Mi58", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarDocs("Honda Inspire 2018", "All", min_steer_speed=3. * CV.MPH_TO_MS), + HondaCarDocs("Honda Accord Hybrid 2018-22", "All", min_steer_speed=3. * CV.MPH_TO_MS), + ], + # steerRatio: 11.82 is spec end-to-end + CarSpecs(mass=3279 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=16.33, centerToFrontRatio=0.39, tireStiffnessFactor=0.8467), + dbc_dict('honda_accord_2018_can_generated', None), + ) + HONDA_CIVIC_BOSCH = HondaBoschPlatformConfig( + [ + HondaCarDocs("Honda Civic 2019-21", "All", video_link="https://www.youtube.com/watch?v=4Iz1Mz5LGF8", + footnotes=[Footnote.CIVIC_DIESEL], min_steer_speed=2. * CV.MPH_TO_MS), + HondaCarDocs("Honda Civic Hatchback 2017-21", min_steer_speed=12. * CV.MPH_TO_MS), + ], + CarSpecs(mass=1326, wheelbase=2.7, steerRatio=15.38, centerToFrontRatio=0.4), # steerRatio: 10.93 is end-to-end spec + dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), + ) + HONDA_CIVIC_BOSCH_DIESEL = HondaBoschPlatformConfig( + [], # don't show in docs + HONDA_CIVIC_BOSCH.specs, + dbc_dict('honda_accord_2018_can_generated', None), + ) + HONDA_CIVIC_2022 = HondaBoschPlatformConfig( + [ + HondaCarDocs("Honda Civic 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), + HondaCarDocs("Honda Civic Hatchback 2022-23", "All", video_link="https://youtu.be/ytiOT5lcp6Q"), + ], + HONDA_CIVIC_BOSCH.specs, + dbc_dict('honda_civic_ex_2022_can_generated', None), + flags=HondaFlags.BOSCH_RADARLESS, + ) + HONDA_CRV_5G = HondaBoschPlatformConfig( + [HondaCarDocs("Honda CR-V 2017-22", min_steer_speed=12. * CV.MPH_TO_MS)], + # steerRatio: 12.3 is spec end-to-end + CarSpecs(mass=3410 * CV.LB_TO_KG, wheelbase=2.66, steerRatio=16.0, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), + dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), + flags=HondaFlags.BOSCH_ALT_BRAKE, + ) + HONDA_CRV_HYBRID = HondaBoschPlatformConfig( + [HondaCarDocs("Honda CR-V Hybrid 2017-21", min_steer_speed=12. * CV.MPH_TO_MS)], + # mass: mean of 4 models in kg, steerRatio: 12.3 is spec end-to-end + CarSpecs(mass=1667, wheelbase=2.66, steerRatio=16, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), + dbc_dict('honda_accord_2018_can_generated', None), + ) + HONDA_HRV_3G = HondaBoschPlatformConfig( + [HondaCarDocs("Honda HR-V 2023", "All")], + CarSpecs(mass=3125 * CV.LB_TO_KG, wheelbase=2.61, steerRatio=15.2, centerToFrontRatio=0.41, tireStiffnessFactor=0.5), + dbc_dict('honda_civic_ex_2022_can_generated', None), + flags=HondaFlags.BOSCH_RADARLESS, + ) + ACURA_RDX_3G = HondaBoschPlatformConfig( + [HondaCarDocs("Acura RDX 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], + CarSpecs(mass=4068 * CV.LB_TO_KG, wheelbase=2.75, steerRatio=11.95, centerToFrontRatio=0.41, tireStiffnessFactor=0.677), # as spec + dbc_dict('acura_rdx_2020_can_generated', None), + flags=HondaFlags.BOSCH_ALT_BRAKE, + ) + HONDA_INSIGHT = HondaBoschPlatformConfig( + [HondaCarDocs("Honda Insight 2019-22", "All", min_steer_speed=3. * CV.MPH_TO_MS)], + CarSpecs(mass=2987 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.0, centerToFrontRatio=0.39, tireStiffnessFactor=0.82), # as spec + dbc_dict('honda_insight_ex_2019_can_generated', None), + ) + HONDA_E = HondaBoschPlatformConfig( + [HondaCarDocs("Honda e 2020", "All", min_steer_speed=3. * CV.MPH_TO_MS)], + CarSpecs(mass=3338.8 * CV.LB_TO_KG, wheelbase=2.5, centerToFrontRatio=0.5, steerRatio=16.71, tireStiffnessFactor=0.82), + dbc_dict('acura_rdx_2020_can_generated', None), + ) + + # Nidec Cars + ACURA_ILX = HondaNidecPlatformConfig( + [HondaCarDocs("Acura ILX 2016-19", "AcuraWatch Plus", min_steer_speed=25. * CV.MPH_TO_MS)], + CarSpecs(mass=3095 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=18.61, centerToFrontRatio=0.37, tireStiffnessFactor=0.72), # 15.3 is spec end-to-end + dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_CRV = HondaNidecPlatformConfig( + [HondaCarDocs("Honda CR-V 2015-16", "Touring Trim", min_steer_speed=12. * CV.MPH_TO_MS)], + CarSpecs(mass=3572 * CV.LB_TO_KG, wheelbase=2.62, steerRatio=16.89, centerToFrontRatio=0.41, tireStiffnessFactor=0.444), # as spec + dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_CRV_EU = HondaNidecPlatformConfig( + [], # Euro version of CRV Touring, don't show in docs + HONDA_CRV.specs, + dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_FIT = HondaNidecPlatformConfig( + [HondaCarDocs("Honda Fit 2018-20", min_steer_speed=12. * CV.MPH_TO_MS)], + CarSpecs(mass=2644 * CV.LB_TO_KG, wheelbase=2.53, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), + dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_FREED = HondaNidecPlatformConfig( + [HondaCarDocs("Honda Freed 2020", min_steer_speed=12. * CV.MPH_TO_MS)], + CarSpecs(mass=3086. * CV.LB_TO_KG, wheelbase=2.74, steerRatio=13.06, centerToFrontRatio=0.39, tireStiffnessFactor=0.75), # mostly copied from FIT + dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_HRV = HondaNidecPlatformConfig( + [HondaCarDocs("Honda HR-V 2019-22", min_steer_speed=12. * CV.MPH_TO_MS)], + HONDA_HRV_3G.specs, + dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_ODYSSEY = HondaNidecPlatformConfig( + [HondaCarDocs("Honda Odyssey 2018-20")], + CarSpecs(mass=1900, wheelbase=3.0, steerRatio=14.35, centerToFrontRatio=0.41, tireStiffnessFactor=0.82), + dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_PCM_ACCEL, + ) + HONDA_ODYSSEY_CHN = HondaNidecPlatformConfig( + [], # Chinese version of Odyssey, don't show in docs + HONDA_ODYSSEY.specs, + dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + ACURA_RDX = HondaNidecPlatformConfig( + [HondaCarDocs("Acura RDX 2016-18", "AcuraWatch Plus", min_steer_speed=12. * CV.MPH_TO_MS)], + CarSpecs(mass=3925 * CV.LB_TO_KG, wheelbase=2.68, steerRatio=15.0, centerToFrontRatio=0.38, tireStiffnessFactor=0.444), # as spec + dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_PILOT = HondaNidecPlatformConfig( + [ + HondaCarDocs("Honda Pilot 2016-22", min_steer_speed=12. * CV.MPH_TO_MS), + HondaCarDocs("Honda Passport 2019-23", "All", min_steer_speed=12. * CV.MPH_TO_MS), + ], + CarSpecs(mass=4278 * CV.LB_TO_KG, wheelbase=2.86, centerToFrontRatio=0.428, steerRatio=16.0, tireStiffnessFactor=0.444), # as spec + dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_RIDGELINE = HondaNidecPlatformConfig( + [HondaCarDocs("Honda Ridgeline 2017-24", min_steer_speed=12. * CV.MPH_TO_MS)], + CarSpecs(mass=4515 * CV.LB_TO_KG, wheelbase=3.18, centerToFrontRatio=0.41, steerRatio=15.59, tireStiffnessFactor=0.444), # as spec + dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_CIVIC = HondaNidecPlatformConfig( + [HondaCarDocs("Honda Civic 2016-18", min_steer_speed=12. * CV.MPH_TO_MS, video_link="https://youtu.be/-IkImTe1NYE")], + CarSpecs(mass=1326, wheelbase=2.70, centerToFrontRatio=0.4, steerRatio=15.38), # 10.93 is end-to-end spec + dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), + ) + HONDA_ACCORD_4CYL_9TH_GEN = HondaNidecPlatformConfig( + [HondaCarDocs("Honda Accord 4-Cylinder 2016-17")], + CarSpecs(mass=1487, wheelbase=2.75, centerToFrontRatio=0.39, steerRatio=13.66), # 13.37 is end-to-end spec + dbc_dict('honda_accord_touring_2016_can_generated', 'acura_ilx_2016_nidec'), + flags=HondaFlags.NIDEC_ALT_SCM_MESSAGES, + ) + HONDA_CLARITY = HondaNidecPlatformConfig( + [HondaCarDocs("Honda Clarity 2018-22", footnotes=[Footnote.ACCORD_NIDEC, Footnote.SERIAL_STEERING])], + CarSpecs(mass=1838, wheelbase=2.75, centerToFrontRatio=0.4, steerRatio=16.50), # 12.72 is end-to-end spec + dbc_dict('honda_clarity_hybrid_2018_can_generated', 'acura_ilx_2016_nidec'), + ) + + +HONDA_ALT_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(0xF112) -HONDA_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ +HONDA_ALT_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ p16(0xF112) FW_QUERY_CONFIG = FwQueryConfig( @@ -181,17 +295,10 @@ FW_QUERY_CONFIG = FwQueryConfig( ), # Data collection requests: - # Attempt to get the radarless Civic 2022+ camera FW + # Log manufacturer-specific identifier for current ECUs Request( - [StdQueries.TESTER_PRESENT_REQUEST, StdQueries.UDS_VERSION_REQUEST], - [StdQueries.TESTER_PRESENT_RESPONSE, StdQueries.UDS_VERSION_RESPONSE], - bus=0, - logging=True - ), - # Log extra identifiers for current ECUs - Request( - [HONDA_VERSION_REQUEST], - [HONDA_VERSION_RESPONSE], + [HONDA_ALT_VERSION_REQUEST], + [HONDA_ALT_VERSION_RESPONSE], bus=1, logging=True, ), @@ -200,7 +307,6 @@ FW_QUERY_CONFIG = FwQueryConfig( [StdQueries.UDS_VERSION_REQUEST], [StdQueries.UDS_VERSION_RESPONSE], bus=0, - logging=True, ), # Bosch PT bus Request( @@ -213,62 +319,34 @@ FW_QUERY_CONFIG = FwQueryConfig( # We lose these ECUs without the comma power on these cars. # Note that we still attempt to match with them when they are present non_essential_ecus={ - Ecu.programmedFuelInjection: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.transmission: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.vsa: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.combinationMeter: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.gateway: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.electricBrakeBooster: [CAR.CIVIC_BOSCH, CAR.CRV_5G], - Ecu.shiftByWire: [CAR.ACCORD], # existence correlates with transmission type for ICE - Ecu.hud: [CAR.ACCORD, CAR.ACCORDH], # existence correlates with trim level + Ecu.eps: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC_2022, CAR.HONDA_E, CAR.HONDA_HRV_3G], + Ecu.vsa: [CAR.ACURA_RDX_3G, CAR.HONDA_ACCORD, CAR.HONDA_CIVIC, CAR.HONDA_CIVIC_BOSCH, CAR.HONDA_CIVIC_2022, CAR.HONDA_CRV_5G, CAR.HONDA_CRV_HYBRID, + CAR.HONDA_E, CAR.HONDA_HRV_3G, CAR.HONDA_INSIGHT], }, extra_ecus=[ + (Ecu.combinationMeter, 0x18da60f1, None), # The only other ECU on PT bus accessible by camera on radarless Civic - (Ecu.unknown, 0x18DAB3F1, None), + # This is likely a manufacturer-specific sub-address implementation: the camera responds to this and 0x18dab0f1 + # Unclear what the part number refers to: 8S103 is 'Camera Set Mono', while 36160 is 'Camera Monocular - Honda' + # TODO: add query back, camera does not support querying both in parallel and 0x18dab0f1 often fails to respond + # (Ecu.unknown, 0x18DAB3F1, None), ], ) - -DBC = { - CAR.ACCORD_NIDEC_4CYL: dbc_dict('honda_accord_touring_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.ACCORD: dbc_dict('honda_accord_2018_can_generated', None), - CAR.ACCORDH: dbc_dict('honda_accord_2018_can_generated', None), - CAR.ACURA_ILX: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.ACURA_RDX: dbc_dict('acura_rdx_2018_can_generated', 'acura_ilx_2016_nidec'), - CAR.ACURA_RDX_3G: dbc_dict('acura_rdx_2020_can_generated', None), - CAR.CIVIC: dbc_dict('honda_civic_touring_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.CIVIC_BOSCH: dbc_dict('honda_civic_hatchback_ex_2017_can_generated', None), - CAR.CIVIC_BOSCH_DIESEL: dbc_dict('honda_accord_2018_can_generated', None), - CAR.CRV: dbc_dict('honda_crv_touring_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.CRV_5G: dbc_dict('honda_crv_ex_2017_can_generated', None, body_dbc='honda_crv_ex_2017_body_generated'), - CAR.CRV_EU: dbc_dict('honda_crv_executive_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.CRV_HYBRID: dbc_dict('honda_accord_2018_can_generated', None), - CAR.FIT: dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - CAR.FREED: dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - CAR.HRV: dbc_dict('honda_fit_ex_2018_can_generated', 'acura_ilx_2016_nidec'), - CAR.HRV_3G: dbc_dict('honda_civic_ex_2022_can_generated', None), - CAR.ODYSSEY: dbc_dict('honda_odyssey_exl_2018_generated', 'acura_ilx_2016_nidec'), - CAR.ODYSSEY_CHN: dbc_dict('honda_odyssey_extreme_edition_2018_china_can_generated', 'acura_ilx_2016_nidec'), - CAR.PILOT: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.RIDGELINE: dbc_dict('acura_ilx_2016_can_generated', 'acura_ilx_2016_nidec'), - CAR.INSIGHT: dbc_dict('honda_insight_ex_2019_can_generated', None), - CAR.HONDA_E: dbc_dict('acura_rdx_2020_can_generated', None), - CAR.CIVIC_2022: dbc_dict('honda_civic_ex_2022_can_generated', None), - CAR.CLARITY: dbc_dict('honda_clarity_hybrid_2018_can_generated', 'acura_ilx_2016_nidec'), -} - STEER_THRESHOLD = { # default is 1200, overrides go here - CAR.ACCORD_NIDEC_4CYL: 30, + CAR.HONDA_ACCORD_4CYL_9TH_GEN: 30, CAR.ACURA_RDX: 400, - CAR.CRV_EU: 400, + CAR.HONDA_CRV_EU: 400, } -HONDA_NIDEC_ALT_PCM_ACCEL = {CAR.ODYSSEY} -HONDA_NIDEC_ALT_SCM_MESSAGES = {CAR.ACURA_ILX, CAR.ACURA_RDX, CAR.CRV, CAR.CRV_EU, CAR.FIT, CAR.FREED, CAR.HRV, CAR.ODYSSEY_CHN, - CAR.PILOT, CAR.RIDGELINE, CAR.ACCORD_NIDEC_4CYL} -HONDA_BOSCH = {CAR.ACCORD, CAR.ACCORDH, CAR.CIVIC_BOSCH, CAR.CIVIC_BOSCH_DIESEL, CAR.CRV_5G, - CAR.CRV_HYBRID, CAR.INSIGHT, CAR.ACURA_RDX_3G, CAR.HONDA_E, CAR.CIVIC_2022, CAR.HRV_3G} -HONDA_BOSCH_RADARLESS = {CAR.CIVIC_2022, CAR.HRV_3G} +HONDA_NIDEC_ALT_PCM_ACCEL = CAR.with_flags(HondaFlags.NIDEC_ALT_PCM_ACCEL) +HONDA_NIDEC_ALT_SCM_MESSAGES = CAR.with_flags(HondaFlags.NIDEC_ALT_SCM_MESSAGES) +HONDA_BOSCH = CAR.with_flags(HondaFlags.BOSCH) +HONDA_BOSCH_RADARLESS = CAR.with_flags(HondaFlags.BOSCH_RADARLESS) +SERIAL_STEERING = {CAR.HONDA_ACCORD_4CYL_9TH_GEN, } -SERIAL_STEERING = {CAR.ACCORD_NIDEC_4CYL, } + +DBC = CAR.create_dbc_map() + +SERIAL_STEERING = {CAR.HONDA_ACCORD_4CYL_9TH_GEN, } diff --git a/selfdrive/car/hyundai/carcontroller.py b/selfdrive/car/hyundai/carcontroller.py index ed47aaa3bb..4c891fbe81 100644 --- a/selfdrive/car/hyundai/carcontroller.py +++ b/selfdrive/car/hyundai/carcontroller.py @@ -9,6 +9,7 @@ from openpilot.selfdrive.car import apply_driver_steer_torque_limits, common_fau from openpilot.selfdrive.car.hyundai import hyundaicanfd, hyundaican from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus from openpilot.selfdrive.car.hyundai.values import HyundaiFlags, HyundaiFlagsSP, Buttons, CarControllerParams, CANFD_CAR, CAR, CAMERA_SCC_CAR, LEGACY_SAFETY_MODE_CAR +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.controls.lib.drive_helpers import HYUNDAI_V_CRUISE_MIN VisualAlert = car.CarControl.HUDControl.VisualAlert @@ -45,7 +46,7 @@ def process_hud_alert(enabled, fingerprint, hud_control): return sys_warning, sys_state, left_lane_warning, right_lane_warning -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.CAN = CanBus(CP) @@ -235,7 +236,7 @@ class CarController: can_sends.extend(hyundaicanfd.create_adrv_messages(self.packer, self.CAN, self.frame)) if self.frame % 2 == 0: can_sends.append(hyundaicanfd.create_acc_control(self.packer, self.CAN, CC.enabled and CS.out.cruiseState.enabled, self.accel_last, accel, stopping, CC.cruiseControl.override, - set_speed_in_units, CS.gac_tr_cluster)) + set_speed_in_units, hud_control)) self.accel_last = accel else: # button presses @@ -250,7 +251,7 @@ class CarController: if self.frame % 2 == 0: can_sends.append(hyundaicanfd.create_buttons(self.packer, self.CP, self.CAN, ((self.frame // 2) + 1) % 0x10, self.cruise_button)) else: - can_sends.append(hyundaican.create_lkas11(self.packer, self.frame, self.car_fingerprint, apply_steer, apply_steer_req, + can_sends.append(hyundaican.create_lkas11(self.packer, self.frame, self.CP, apply_steer, apply_steer_req, torque_fault, CS.lkas11, sys_warning, sys_state, CC.enabled, hud_control.leftLaneVisible, hud_control.rightLaneVisible, left_lane_warning, right_lane_warning, @@ -286,8 +287,8 @@ class CarController: jerk = 3.0 if actuators.longControlState == LongCtrlState.pid else 1.0 use_fca = self.CP.flags & HyundaiFlags.USE_FCA.value can_sends.extend(hyundaican.create_acc_commands(self.packer, CC.enabled and CS.out.cruiseState.enabled, accel, jerk, int(self.frame / 2), - self.lead_distance, set_speed_in_units, stopping, - CC.cruiseControl.override, use_fca, CS.mainEnabled, CS, escc, self.CP.carFingerprint)) + hud_control, set_speed_in_units, stopping, + CC.cruiseControl.override, use_fca, CS, escc, self.CP, self.lead_distance)) # 20 Hz LFA MFA message if self.frame % 5 == 0 and self.CP.flags & HyundaiFlags.SEND_LFA.value: @@ -295,7 +296,7 @@ class CarController: # 5 Hz ACC options if self.frame % 20 == 0 and self.CP.openpilotLongitudinalControl: - can_sends.extend(hyundaican.create_acc_opt(self.packer, escc, CS, self.CP.carFingerprint)) + can_sends.extend(hyundaican.create_acc_opt(self.packer, escc, CS, self.CP)) # 2 Hz front radar options if self.frame % 50 == 0 and self.CP.openpilotLongitudinalControl and not escc: @@ -313,12 +314,12 @@ class CarController: can_sends = [] if use_clu11: if CC.cruiseControl.cancel: - can_sends.append(hyundaican.create_clu11(self.packer, self.frame, CS.clu11, Buttons.CANCEL, self.CP.carFingerprint)) + can_sends.append(hyundaican.create_clu11(self.packer, self.frame, CS.clu11, Buttons.CANCEL, self.CP)) elif CC.cruiseControl.resume: # send resume at a max freq of 10Hz if (self.frame - self.last_button_frame) * DT_CTRL > 0.1: # send 25 messages at a time to increases the likelihood of resume being accepted - can_sends.extend([hyundaican.create_clu11(self.packer, self.frame, CS.clu11, Buttons.RES_ACCEL, self.CP.carFingerprint)] * 25) + can_sends.extend([hyundaican.create_clu11(self.packer, self.frame, CS.clu11, Buttons.RES_ACCEL, self.CP)] * 25) if (self.frame - self.last_button_frame) * DT_CTRL >= 0.15: self.last_button_frame = self.frame else: diff --git a/selfdrive/car/hyundai/carstate.py b/selfdrive/car/hyundai/carstate.py index 927fe2ebd8..f88ca1f3aa 100644 --- a/selfdrive/car/hyundai/carstate.py +++ b/selfdrive/car/hyundai/carstate.py @@ -8,7 +8,7 @@ from opendbc.can.parser import CANParser from opendbc.can.can_define import CANDefine from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus from openpilot.selfdrive.car.hyundai.values import HyundaiFlags, HyundaiFlagsSP, CAR, DBC, CAN_GEARS, CAMERA_SCC_CAR, \ - CANFD_CAR, NON_SCC_CAR, NON_SCC_NO_FCA_CAR, NON_SCC_RADAR_FCA_CAR, \ + CANFD_CAR, NON_SCC_CAR, NON_SCC_FCA_CAR, NON_SCC_RADAR_FCA_CAR, \ Buttons, CarControllerParams from openpilot.selfdrive.car.interfaces import CarStateBase @@ -67,7 +67,7 @@ class CarState(CarStateBase): return self.update_canfd(cp, cp_cam) ret = car.CarState.new_message() - cp_cruise = cp_cam if self.CP.carFingerprint in (CAMERA_SCC_CAR | (NON_SCC_CAR - NON_SCC_NO_FCA_CAR - NON_SCC_RADAR_FCA_CAR)) else cp + cp_cruise = cp_cam if self.CP.carFingerprint in (CAMERA_SCC_CAR | (NON_SCC_FCA_CAR - NON_SCC_RADAR_FCA_CAR)) else cp self.is_metric = cp.vl["CLU11"]["CF_Clu_SPEED_UNIT"] == 0 speed_conv = CV.KPH_TO_MS if self.is_metric else CV.MPH_TO_MS @@ -134,6 +134,7 @@ class CarState(CarStateBase): ret.brakePressed = cp.vl["TCS13"]["DriverOverride"] == 2 # 2 includes regen braking by user on HEV/EV ret.brakeHoldActive = cp.vl["TCS15"]["AVH_LAMP"] == 2 # 0 OFF, 1 ERROR, 2 ACTIVE, 3 READY ret.parkingBrake = cp.vl["TCS13"]["PBRAKE_ACT"] == 1 + ret.espDisabled = cp.vl["TCS11"]["TCS_PAS"] == 1 ret.brakeLightsDEPRECATED = bool(cp.vl["TCS13"]["BrakeLight"]) ret.accFaulted = cp.vl["TCS13"]["ACCEnable"] != 0 # 0 ACC CONTROL ENABLED, 1-3 ACC CONTROL DISABLED @@ -160,7 +161,7 @@ class CarState(CarStateBase): ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(gear)) - if not self.CP.openpilotLongitudinalControl and self.CP.carFingerprint not in NON_SCC_NO_FCA_CAR: + if not self.CP.openpilotLongitudinalControl and self.CP.carFingerprint in NON_SCC_FCA_CAR: aeb_src = "FCA11" if self.CP.flags & HyundaiFlags.USE_FCA.value else "SCC12" aeb_sig = "FCA_CmdAct" if self.CP.flags & HyundaiFlags.USE_FCA.value else "AEB_CmdAct" aeb_warning = cp_cruise.vl[aeb_src]["CF_VSM_Warn"] != 0 @@ -259,7 +260,7 @@ class CarState(CarStateBase): # TODO: alt signal usage may be described by cp.vl['BLINKERS']['USE_ALT_LAMP'] left_blinker_sig, right_blinker_sig = "LEFT_LAMP", "RIGHT_LAMP" - if self.CP.carFingerprint == CAR.KONA_EV_2ND_GEN: + if self.CP.carFingerprint == CAR.HYUNDAI_KONA_EV_2ND_GEN: left_blinker_sig, right_blinker_sig = "LEFT_LAMP_ALT", "RIGHT_LAMP_ALT" ret.leftBlinker, ret.rightBlinker = ret.leftBlinkerOn, ret.rightBlinkerOn = self.update_blinker_from_lamp( 50, cp.vl["BLINKERS"][left_blinker_sig], cp.vl["BLINKERS"][right_blinker_sig]) @@ -327,6 +328,7 @@ class CarState(CarStateBase): messages = [ # address, frequency ("MDPS12", 50), + ("TCS11", 100), ("TCS13", 50), ("TCS15", 10), ("CLU11", 50), @@ -392,7 +394,7 @@ class CarState(CarStateBase): ("LKAS11", 100), ] - if not CP.openpilotLongitudinalControl and CP.carFingerprint in (CAMERA_SCC_CAR | (NON_SCC_CAR - NON_SCC_NO_FCA_CAR - NON_SCC_RADAR_FCA_CAR)): + if not CP.openpilotLongitudinalControl and CP.carFingerprint in (CAMERA_SCC_CAR | (NON_SCC_FCA_CAR - NON_SCC_RADAR_FCA_CAR)): if CP.carFingerprint in CAMERA_SCC_CAR: messages += [ ("SCC11", 50), diff --git a/selfdrive/car/hyundai/fingerprints.py b/selfdrive/car/hyundai/fingerprints.py index 4f2e66b0aa..c347be330f 100644 --- a/selfdrive/car/hyundai/fingerprints.py +++ b/selfdrive/car/hyundai/fingerprints.py @@ -5,22 +5,7 @@ from openpilot.selfdrive.car.hyundai.values import CAR Ecu = car.CarParams.Ecu FINGERPRINTS = { - CAR.HYUNDAI_GENESIS: [{ - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 916: 8, 1024: 2, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1342: 6, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 5, 1407: 8, 1419: 8, 1427: 6, 1434: 2, 1456: 4 - }, - { - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 916: 8, 1024: 2, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1281: 3, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1378: 4, 1379: 8, 1384: 5, 1407: 8, 1419: 8, 1427: 6, 1434: 2, 1456: 4 - }, - { - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 912: 7, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1268: 8, 1280: 1, 1281: 3, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 5, 1407: 8, 1419: 8, 1427: 6, 1434: 2, 1437: 8, 1456: 4 - }, - { - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1378: 4, 1379: 8, 1384: 5, 1407: 8, 1425: 2, 1427: 6, 1437: 8, 1456: 4 - }, - { - 67: 8, 68: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 7, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 5, 897: 8, 902: 8, 903: 6, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1287: 4, 1292: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1334: 8, 1335: 8, 1345: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 5, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1437: 8, 1456: 4 - }], - CAR.SANTA_FE: [{ + CAR.HYUNDAI_SANTA_FE: [{ 67: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 593: 8, 608: 8, 688: 6, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1155: 8, 1156: 8, 1162: 8, 1164: 8, 1168: 7, 1170: 8, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1227: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1379: 8, 1384: 8, 1407: 8, 1414: 3, 1419: 8, 1427: 6, 1456: 4, 1470: 8 }, { @@ -29,40 +14,22 @@ FINGERPRINTS = { { 67: 8, 68: 8, 80: 4, 160: 8, 161: 8, 272: 8, 288: 4, 339: 8, 356: 8, 357: 8, 399: 8, 544: 8, 608: 8, 672: 8, 688: 5, 704: 1, 790: 8, 809: 8, 848: 8, 880: 8, 898: 8, 900: 8, 901: 8, 904: 8, 1056: 8, 1064: 8, 1065: 8, 1072: 8, 1075: 8, 1087: 8, 1088: 8, 1151: 8, 1200: 8, 1201: 8, 1232: 4, 1264: 8, 1265: 8, 1266: 8, 1296: 8, 1306: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1348: 8, 1349: 8, 1369: 8, 1370: 8, 1371: 8, 1407: 8, 1415: 8, 1419: 8, 1440: 8, 1442: 4, 1461: 8, 1470: 8 }], - CAR.SONATA: [{ + CAR.HYUNDAI_SONATA: [{ 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 546: 8, 549: 8, 550: 8, 576: 8, 593: 8, 608: 8, 688: 6, 809: 8, 832: 8, 854: 8, 865: 8, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 905: 8, 908: 8, 909: 8, 912: 7, 913: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1089: 5, 1096: 8, 1107: 5, 1108: 8, 1114: 8, 1136: 8, 1145: 8, 1151: 8, 1155: 8, 1156: 8, 1157: 4, 1162: 8, 1164: 8, 1168: 8, 1170: 8, 1173: 8, 1180: 8, 1183: 8, 1184: 8, 1186: 2, 1191: 2, 1193: 8, 1210: 8, 1225: 8, 1227: 8, 1265: 4, 1268: 8, 1280: 8, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1330: 8, 1339: 8, 1342: 6, 1343: 8, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 8, 1379: 8, 1384: 8, 1394: 8, 1407: 8, 1419: 8, 1427: 6, 1446: 8, 1456: 4, 1460: 8, 1470: 8, 1485: 8, 1504: 3, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2008: 8, 2012: 8, 2015: 8 }], - CAR.SONATA_LF: [{ - 66: 8, 67: 8, 68: 8, 127: 8, 273: 8, 274: 8, 275: 8, 339: 8, 356: 4, 399: 8, 447: 8, 512: 6, 544: 8, 593: 8, 608: 8, 688: 5, 790: 8, 809: 8, 832: 8, 884: 8, 897: 8, 899: 8, 902: 8, 903: 6, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1151: 6, 1168: 7, 1170: 8, 1253: 8, 1254: 8, 1255: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1314: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1342: 6, 1345: 8, 1348: 8, 1349: 8, 1351: 8, 1353: 8, 1363: 8, 1365: 8, 1366: 8, 1367: 8, 1369: 8, 1397: 8, 1407: 8, 1415: 8, 1419: 8, 1425: 2, 1427: 6, 1440: 8, 1456: 4, 1470: 8, 1472: 8, 1486: 8, 1487: 8, 1491: 8, 1530: 8, 1532: 5, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2008: 8, 2009: 8, 2012: 8, 2013: 8, 2014: 8, 2016: 8, 2017: 8, 2024: 8, 2025: 8 - }], - CAR.KIA_SORENTO: [{ - 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1331: 8, 1332: 8, 1333: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1384: 8, 1407: 8, 1411: 8, 1419: 8, 1425: 2, 1427: 6, 1444: 8, 1456: 4, 1470: 8, 1489: 1 - }], CAR.KIA_STINGER: [{ 67: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 359: 8, 544: 8, 576: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1281: 4, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 4, 1379: 8, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1456: 4, 1470: 8 }], - CAR.GENESIS_G80: [{ - 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1024: 2, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1156: 8, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1191: 2, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1434: 2, 1456: 4, 1470: 8 - }, - { - 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 359: 8, 544: 8, 546: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1156: 8, 1157: 4, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1281: 3, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1434: 2, 1437: 8, 1456: 4, 1470: 8 - }, - { - 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1156: 8, 1157: 4, 1162: 8, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1193: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 4, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1437: 8, 1456: 4, 1470: 8 - }], CAR.GENESIS_G90: [{ 67: 8, 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 358: 6, 359: 8, 544: 8, 593: 8, 608: 8, 688: 5, 809: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1107: 5, 1136: 8, 1151: 6, 1162: 4, 1168: 7, 1170: 8, 1173: 8, 1184: 8, 1265: 4, 1280: 1, 1281: 3, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1370: 8, 1371: 8, 1378: 4, 1384: 8, 1407: 8, 1419: 8, 1425: 2, 1427: 6, 1434: 2, 1456: 4, 1470: 8, 1988: 8, 2000: 8, 2003: 8, 2004: 8, 2005: 8, 2008: 8, 2011: 8, 2012: 8, 2013: 8 }], - CAR.IONIQ_EV_2020: [{ + CAR.HYUNDAI_IONIQ_EV_2020: [{ 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 524: 8, 544: 7, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 8, 1151: 6, 1155: 8, 1156: 8, 1157: 4, 1164: 8, 1168: 7, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1225: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1379: 8, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1456: 4, 1470: 8, 1473: 8, 1507: 8, 1535: 8, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2005: 8, 2008: 8, 2012: 8, 2013: 8 }], - CAR.IONIQ: [{ - 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 524: 8, 544: 8, 576: 8, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 6, 1151: 6, 1155: 8, 1156: 8, 1157: 4, 1164: 8, 1168: 7, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1225: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1379: 8, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1448: 8, 1456: 4, 1470: 8, 1473: 8, 1476: 8, 1507: 8, 1535: 8, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2005: 8, 2008: 8, 2012: 8, 2013: 8 - }], - CAR.KONA_EV: [{ + CAR.HYUNDAI_KONA_EV: [{ 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 544: 8, 549: 8, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 8, 1151: 6, 1168: 7, 1173: 8, 1183: 8, 1186: 2, 1191: 2, 1225: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1307: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1378: 4, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1456: 4, 1470: 8, 1473: 8, 1507: 8, 1535: 8, 2000: 8, 2004: 8, 2008: 8, 2012: 8, 1157: 4, 1193: 8, 1379: 8, 1988: 8, 1996: 8 }], - CAR.KONA_EV_2022: [{ + CAR.HYUNDAI_KONA_EV_2022: [{ 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 544: 8, 593: 8, 688: 5, 832: 8, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 913: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1069: 8, 1078: 4, 1136: 8, 1145: 8, 1151: 8, 1155: 8, 1156: 8, 1157: 4, 1162: 8, 1164: 8, 1168: 8, 1173: 8, 1183: 8, 1188: 8, 1191: 2, 1193: 8, 1225: 8, 1227: 8, 1265: 4, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1339: 8, 1342: 8, 1343: 8, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1379: 8, 1407: 8, 1419: 8, 1426: 8, 1427: 6, 1429: 8, 1430: 8, 1446: 8, 1456: 4, 1470: 8, 1473: 8, 1485: 8, 1507: 8, 1535: 8, 1990: 8, 1998: 8 }], CAR.KIA_NIRO_EV: [{ @@ -74,13 +41,10 @@ FINGERPRINTS = { { 68: 8, 127: 8, 304: 8, 320: 8, 339: 8, 352: 8, 356: 4, 544: 8, 576: 8, 593: 8, 688: 5, 881: 8, 882: 8, 897: 8, 902: 8, 903: 8, 909: 8, 912: 7, 916: 8, 1040: 8, 1056: 8, 1057: 8, 1078: 4, 1136: 6, 1151: 6, 1168: 7, 1173: 8, 1180: 8, 1186: 2, 1191: 2, 1265: 4, 1268: 8, 1280: 1, 1287: 4, 1290: 8, 1291: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1355: 8, 1363: 8, 1369: 8, 1371: 8, 1407: 8, 1419: 8, 1420: 8, 1425: 2, 1427: 6, 1429: 8, 1430: 8, 1448: 8, 1456: 4, 1470: 8, 1476: 8, 1535: 8 }], - CAR.PALISADE: [{ - 67: 8, 127: 8, 304: 8, 320: 8, 339: 8, 356: 4, 544: 8, 546: 8, 547: 8, 548: 8, 549: 8, 576: 8, 593: 8, 608: 8, 688: 6, 809: 8, 832: 8, 854: 7, 870: 7, 871: 8, 872: 8, 897: 8, 902: 8, 903: 8, 905: 8, 909: 8, 913: 8, 916: 8, 1040: 8, 1042: 8, 1056: 8, 1057: 8, 1064: 8, 1078: 4, 1107: 5, 1123: 8, 1136: 8, 1151: 6, 1155: 8, 1156: 8, 1157: 4, 1162: 8, 1164: 8, 1168: 7, 1170: 8, 1173: 8, 1180: 8, 1186: 2, 1191: 2, 1193: 8, 1210: 8, 1225: 8, 1227: 8, 1265: 4, 1280: 8, 1287: 4, 1290: 8, 1292: 8, 1294: 8, 1312: 8, 1322: 8, 1342: 6, 1345: 8, 1348: 8, 1363: 8, 1369: 8, 1371: 8, 1378: 8, 1384: 8, 1407: 8, 1419: 8, 1427: 6, 1456: 4, 1470: 8, 1988: 8, 1996: 8, 2000: 8, 2004: 8, 2005: 8, 2008: 8, 2012: 8 - }], } FW_VERSIONS = { - CAR.AZERA_6TH_GEN: { + CAR.HYUNDAI_AZERA_6TH_GEN: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00IG__ SCC F-CU- 1.00 1.00 99110-G8100 ', ], @@ -90,33 +54,22 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00IG MFC AT MES LHD 1.00 1.04 99211-G8100 200511', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 U912\x00\x00\x00\x00\x00\x00SIG0M35MH0\xa4 |.', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81641KA051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, - CAR.AZERA_HEV_6TH_GEN: { + CAR.HYUNDAI_AZERA_HEV_6TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00IGH MFC AT KOR LHD 1.00 1.00 99211-G8000 180903', + b'\xf1\x00IGH MFC AT KOR LHD 1.00 1.01 99211-G8000 181109', b'\xf1\x00IGH MFC AT KOR LHD 1.00 1.02 99211-G8100 191029', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00IG MDPS C 1.00 1.00 56310M9600\x00 4IHSC100', b'\xf1\x00IG MDPS C 1.00 1.01 56310M9350\x00 4IH8C101', + b'\xf1\x00IG MDPS C 1.00 1.02 56310M9350\x00 4IH8C102', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00IGhe SCC FHCUP 1.00 1.00 99110-M9100 ', b'\xf1\x00IGhe SCC FHCUP 1.00 1.01 99110-M9000 ', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006T7N0_C2\x00\x006T7Q2051\x00\x00TIG2H24KA2\x12@\x11\xb7', - b'\xf1\x006T7N0_C2\x00\x006T7VA051\x00\x00TIGSH24KA1\xc7\x85\xe2`', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H570051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H590051\x00\x00\x00\x00\x00\x00\x00\x00', + b'\xf1\x00IGhe SCC FHCUP 1.00 1.02 99110-M9000 ', ], }, CAR.HYUNDAI_GENESIS: { @@ -126,42 +79,36 @@ FW_VERSIONS = { b'\xf1\x00DH LKAS 1.5 -140425', ], }, - CAR.IONIQ: { + CAR.HYUNDAI_IONIQ: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2000 ', + b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2100 ', ], (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00AE MDPS C 1.00 1.05 56310/G2501 4AEHC105', b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2301 4AEHC107', + b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2501 4AEHC107', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00AEH MFC AT EUR LHD 1.00 1.00 95740-G2400 180222', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6F2051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U3H1051\x00\x00\xf1\x006U3H0_C2\x00\x006U3H1051\x00\x00HAE0G16US2\x00\x00\x00\x00', + b'\xf1\x00AEH MFC AT USA LHD 1.00 1.00 95740-G2400 180222', ], }, - CAR.IONIQ_PHEV_2019: { + CAR.HYUNDAI_IONIQ_PHEV_2019: { (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2000 ', b'\xf1\x00AEhe SCC H-CUP 1.01 1.01 96400-G2100 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2501 4AEHC107', + b'\xf1\x00AE MDPS C 1.00 1.07 56310/G2551 4AEHC107', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00AEP MFC AT AUS RHD 1.00 1.00 95740-G2400 180222', b'\xf1\x00AEP MFC AT USA LHD 1.00 1.00 95740-G2400 180222', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U3J2051\x00\x00\xf1\x006U3H0_C2\x00\x006U3J2051\x00\x00PAE0G16NS1\x00\x00\x00\x00', - b'\xf1\x816U3J2051\x00\x00\xf1\x006U3H0_C2\x00\x006U3J2051\x00\x00PAE0G16NS1\xdbD\r\x81', - ], }, - CAR.IONIQ_PHEV: { + CAR.HYUNDAI_IONIQ_PHEV: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEhe SCC F-CUP 1.00 1.00 99110-G2200 ', b'\xf1\x00AEhe SCC F-CUP 1.00 1.00 99110-G2600 ', @@ -181,21 +128,8 @@ FW_VERSIONS = { b'\xf1\x00AEP MFC AT USA LHD 1.00 1.00 95740-G2700 201027', b'\xf1\x00AEP MFC AT USA LHD 1.00 1.01 95740-G2600 190819', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3H1_C2\x00\x006U3J8051\x00\x00PAETG16UL0\x00\x00\x00\x00', - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PAE0G16NL0\x00\x00\x00\x00', - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PAE0G16NL2\xad\xeb\xabt', - b'\xf1\x816U3J8051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J8051\x00\x00PAETG16UL0\x00\x00\x00\x00', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PAE0G16NL0\x82zT\xd2', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PAE0G16NL2\x00\x00\x00\x00', - ], }, - CAR.IONIQ_EV_2020: { + CAR.HYUNDAI_IONIQ_EV_2020: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEev SCC F-CUP 1.00 1.00 99110-G7200 ', b'\xf1\x00AEev SCC F-CUP 1.00 1.00 99110-G7500 ', @@ -213,7 +147,7 @@ FW_VERSIONS = { b'\xf1\x00AEE MFC AT EUR RHD 1.00 1.01 95740-G2600 190819', ], }, - CAR.IONIQ_EV_LTD: { + CAR.HYUNDAI_IONIQ_EV_LTD: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEev SCC F-CUP 1.00 1.00 96400-G7000 ', b'\xf1\x00AEev SCC F-CUP 1.00 1.00 96400-G7100 ', @@ -232,7 +166,7 @@ FW_VERSIONS = { b'\xf1\x00AEE MFC AT USA LHD 1.00 1.00 95740-G2400 180222', ], }, - CAR.IONIQ_HEV_2022: { + CAR.HYUNDAI_IONIQ_HEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00AEhe SCC F-CUP 1.00 1.00 99110-G2600 ', b'\xf1\x00AEhe SCC FHCUP 1.00 1.00 99110-G2600 ', @@ -243,15 +177,8 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00AEH MFC AT USA LHD 1.00 1.00 95740-G2700 201027', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HAE0G16NL2\x96\xda\xd4\xee', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HAE0G16NL2\x00\x00\x00\x00', - ], }, - CAR.SONATA: { + CAR.HYUNDAI_SONATA: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DN8_ SCC F-CU- 1.00 1.00 99110-L0000 ', b'\xf1\x00DN8_ SCC F-CUP 1.00 1.00 99110-L0000 ', @@ -266,55 +193,26 @@ FW_VERSIONS = { b'\xf1\x00DN ESC \x06 104\x19\x08\x01 58910-L0100', b'\xf1\x00DN ESC \x06 106 \x07\x01 58910-L0100', b'\xf1\x00DN ESC \x06 107 \x07\x03 58910-L1300', + b'\xf1\x00DN ESC \x06 107"\x08\x07 58910-L0100', b'\xf1\x00DN ESC \x07 104\x19\x08\x01 58910-L0100', b'\xf1\x00DN ESC \x07 106 \x07\x01 58910-L0100', b'\xf1\x00DN ESC \x07 107"\x08\x07 58910-L0100', b'\xf1\x00DN ESC \x08 103\x19\x06\x01 58910-L1300', - b'\xf1\x8758910-L0100\xf1\x00DN ESC \x06 104\x19\x08\x01 58910-L0100', - b'\xf1\x8758910-L0100\xf1\x00DN ESC \x06 106 \x07\x01 58910-L0100', - b'\xf1\x8758910-L0100\xf1\x00DN ESC \x07 104\x19\x08\x01 58910-L0100', - b'\xf1\x8758910-L0100\xf1\x00DN ESC \x07 106 \x07\x01 58910-L0100', - ], - (Ecu.engine, 0x7e0, None): [ - b'HM6M1_0a0_F00', - b'HM6M1_0a0_G20', - b'HM6M2_0a0_BD0', - b'\xf1\x81HM6M1_0a0_F00', - b'\xf1\x81HM6M1_0a0_G20', - b'\xf1\x82DNBVN5GMCCXXXDCA', - b'\xf1\x82DNBVN5GMCCXXXG2F', - b'\xf1\x82DNBWN5TMDCXXXG2E', - b'\xf1\x82DNCVN5GMCCXXXF0A', - b'\xf1\x82DNCVN5GMCCXXXG2B', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M1_0a0_J10', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x82DNDWN5TMDCXXXJ1A', - b'\xf1\x8739110-2S041\xf1\x81HM6M1_0a0_M00', - b'\xf1\x8739110-2S041\xf1\x81HM6M1_0a0_M10', - b'\xf1\x8739110-2S042\xf1\x81HM6M1_0a0_M00', - b'\xf1\x8739110-2S278\xf1\x82DNDVD5GMCCXXXL5B', - b'\xf1\x87391162M003', - b'\xf1\x87391162M010', - b'\xf1\x87391162M013', - b'\xf1\x87391162M023', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DN8 MDPS C 1,00 1,01 56310L0010\x00 4DNAC101', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101', + b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310L0010\x00 4DNAC101', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310L0200\x00 4DNAC102', + b'\xf1\x00DN8 MDPS C 1.00 1.01 56310L0210\x00 4DNAC101', b'\xf1\x00DN8 MDPS C 1.00 1.01 56310L0210\x00 4DNAC102', + b'\xf1\x00DN8 MDPS C 1.00 1.03 56310-L1010 4DNDC103', + b'\xf1\x00DN8 MDPS C 1.00 1.03 56310-L1030 4DNDC103', b'\xf1\x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100', b'\xf1\x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP101', b'\xf1\x00DN8 MDPS R 1.00 1.02 57700-L1000 4DNDP105', - b'\xf1\x8756310-L0010\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101', - b'\xf1\x8756310-L0210\xf1\x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101', - b'\xf1\x8756310-L1010\xf1\x00DN8 MDPS C 1.00 1.03 56310-L1010 4DNDC103', - b'\xf1\x8756310-L1030\xf1\x00DN8 MDPS C 1.00 1.03 56310-L1030 4DNDC103', - b'\xf1\x8756310L0010\x00\xf1\x00DN8 MDPS C 1,00 1,01 56310L0010\x00 4DNAC101', - b'\xf1\x8756310L0010\x00\xf1\x00DN8 MDPS C 1.00 1.01 56310L0010\x00 4DNAC101', - b'\xf1\x8756310L0210\x00\xf1\x00DN8 MDPS C 1.00 1.01 56310L0210\x00 4DNAC101', - b'\xf1\x8757700-L0000\xf1\x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00DN8 MFC AT KOR LHD 1.00 1.02 99211-L1000 190422', @@ -327,74 +225,8 @@ FW_VERSIONS = { b'\xf1\x00DN8 MFC AT USA LHD 1.00 1.06 99211-L1000 210325', b'\xf1\x00DN8 MFC AT USA LHD 1.00 1.07 99211-L1000 211223', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00HT6TA260BLHT6TA800A1TDN8C20KS4\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x00HT6TA260BLHT6TA810A1TDN8M25GS0\x00\x00\x00\x00\x00\x00\xaa\x8c\xd9p', - b'\xf1\x00HT6WA250BLHT6WA910A1SDN8G25NB1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x00HT6WA250BLHT6WA910A1SDN8G25NB1\x00\x00\x00\x00\x00\x00\x96\xa1\xf1\x92', - b'\xf1\x00HT6WA280BLHT6WAD10A1SDN8G25NB2\x00\x00\x00\x00\x00\x00\x08\xc9O:', - b'\xf1\x00HT6WA280BLHT6WAD10A1SDN8G25NB4\x00\x00\x00\x00\x00\x00g!l[', - b'\xf1\x00HT6WA280BLHT6WAE10A1SDN8G25NB5\x00\x00\x00\x00\x00\x00\xe0t\xa9\xba', - b'\xf1\x00T02601BL T02730A1 VDN8T25XXX730NS5\xf7_\x92\xf5', - b'\xf1\x00T02601BL T02832A1 VDN8T25XXX832NS8G\x0e\xfeE', - b'\xf1\x00T02601BL T02900A1 VDN8T25XXX900NSA\xb9\x13\xf9p', - b'\xf1\x00T02601BL T02900A1 VDN8T25XXX900NSCF\xe4!Y', - b'\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16KB05\x95h%', - b'\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB1\xe3\xc10\xa1', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87954A02N060\x00\x00\x00\x00\x00\xf1\x81T02730A1 \xf1\x00T02601BL T02730A1 VDN8T25XXX730NS5\xf7_\x92\xf5', - b'\xf1\x87SAKFBA2926554GJ2VefVww\x87xwwwww\x88\x87xww\x87wTo\xfb\xffvUo\xff\x8d\x16\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SAKFBA3030524GJ2UVugww\x97yx\x88\x87\x88vw\x87gww\x87wto\xf9\xfffUo\xff\xa2\x0c\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SAKFBA3356084GJ2\x86fvgUUuWgw\x86www\x87wffvf\xb6\xcf\xfc\xffeUO\xff\x12\x19\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SAKFBA3474944GJ2ffvgwwwwg\x88\x86x\x88\x88\x98\x88ffvfeo\xfa\xff\x86fo\xff\t\xae\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SAKFBA3475714GJ2Vfvgvg\x96yx\x88\x97\x88ww\x87ww\x88\x87xs_\xfb\xffvUO\xff\x0f\xff\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALDBA3510954GJ3ww\x87xUUuWx\x88\x87\x88\x87w\x88wvfwfc_\xf9\xff\x98wO\xffl\xe0\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3573534GJ3\x89\x98\x89\x88EUuWgwvwwwwww\x88\x87xTo\xfa\xff\x86f\x7f\xffo\x0e\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3601464GJ3\x88\x88\x88\x88ffvggwvwvw\x87gww\x87wvo\xfb\xff\x98\x88\x7f\xffjJ\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3753044GJ3UUeVff\x86hwwwwvwwgvfgfvo\xf9\xfffU_\xffC\xae\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3862294GJ3vfvgvefVxw\x87\x87w\x88\x87xwwwwc_\xf9\xff\x87w\x9f\xff\xd5\xdc\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA3873834GJ3fefVwuwWx\x88\x97\x88w\x88\x97xww\x87wU_\xfb\xff\x86f\x8f\xffN\x04\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA4525334GJ3\x89\x99\x99\x99fevWh\x88\x86\x88fwvgw\x88\x87xfo\xfa\xffuDo\xff\xd1>\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA4626804GJ3wwww\x88\x87\x88xx\x88\x87\x88wwgw\x88\x88\x98\x88\x95_\xf9\xffuDo\xff|\xe7\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA4803224GJ3wwwwwvwg\x88\x88\x98\x88wwww\x87\x88\x88xu\x9f\xfc\xff\x87f\x8f\xff\xea\xea\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA6212564GJ3\x87wwwUTuGg\x88\x86xx\x88\x87\x88\x87\x88\x98xu?\xf9\xff\x97f\x7f\xff\xb8\n\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA6347404GJ3wwwwff\x86hx\x88\x97\x88\x88\x88\x88\x88vfgf\x88?\xfc\xff\x86Uo\xff\xec/\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA6901634GJ3UUuWVeVUww\x87wwwwwvUge\x86/\xfb\xff\xbb\x99\x7f\xff]2\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALDBA7077724GJ3\x98\x88\x88\x88ww\x97ygwvwww\x87ww\x88\x87x\x87_\xfd\xff\xba\x99o\xff\x99\x01\xf1\x89HT6WA910A1\xf1\x82SDN8G25NB1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SALFBA3525114GJ2wvwgvfvggw\x86wffvffw\x86g\x85_\xf9\xff\xa8wo\xffv\xcd\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA3624024GJ2\x88\x88\x88\x88wv\x87hx\x88\x97\x88x\x88\x97\x88ww\x87w\x86o\xfa\xffvU\x7f\xff\xd1\xec\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA3960824GJ2wwwwff\x86hffvfffffvfwfg_\xf9\xff\xa9\x88\x8f\xffb\x99\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4011074GJ2fgvwwv\x87hw\x88\x87xww\x87wwfgvu_\xfa\xffefo\xff\x87\xc0\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4121304GJ2x\x87xwff\x86hwwwwww\x87wwwww\x84_\xfc\xff\x98\x88\x9f\xffi\xa6\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4195874GJ2EVugvf\x86hgwvwww\x87wgw\x86wc_\xfb\xff\x98\x88\x8f\xff\xe23\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4625294GJ2eVefeUeVx\x88\x97\x88wwwwwwww\xa7o\xfb\xffvw\x9f\xff\xee.\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA4728774GJ2vfvg\x87vwgww\x87ww\x88\x97xww\x87w\x86_\xfb\xffeD?\xffk0\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA5129064GJ2vfvgwv\x87hx\x88\x87\x88ww\x87www\x87wd_\xfa\xffvfo\xff\x1d\x00\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA5454914GJ2\x98\x88\x88\x88\x87vwgx\x88\x87\x88xww\x87ffvf\xa7\x7f\xf9\xff\xa8w\x7f\xff\x1b\x90\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA5987784GJ2UVugDDtGx\x88\x87\x88w\x88\x87xwwwwd/\xfb\xff\x97fO\xff\xb0h\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA5987864GJ2fgvwUUuWgwvw\x87wxwwwww\x84/\xfc\xff\x97w\x7f\xff\xdf\x1d\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA6337644GJ2vgvwwv\x87hgffvwwwwwwww\x85O\xfa\xff\xa7w\x7f\xff\xc5\xfc\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA6802004GJ2UUuWUUuWgw\x86www\x87www\x87w\x96?\xf9\xff\xa9\x88\x7f\xff\x9fK\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA6892284GJ233S5\x87w\x87xx\x88\x87\x88vwwgww\x87w\x84?\xfb\xff\x98\x88\x8f\xff*\x9e\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00SDN8T16NB0z{\xd4v', - b'\xf1\x87SALFBA7005534GJ2eUuWfg\x86xxww\x87x\x88\x87\x88\x88w\x88\x87\x87O\xfc\xffuUO\xff\xa3k\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB1\xe3\xc10\xa1', - b'\xf1\x87SALFBA7152454GJ2gvwgFf\x86hx\x88\x87\x88vfWfffffd?\xfa\xff\xba\x88o\xff,\xcf\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB1\xe3\xc10\xa1', - b'\xf1\x87SALFBA7460044GJ2gx\x87\x88Vf\x86hx\x88\x87\x88wwwwgw\x86wd?\xfa\xff\x86U_\xff\xaf\x1f\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SALFBA7485034GJ2ww\x87xww\x87xfwvgwwwwvfgf\xa5/\xfc\xff\xa9w_\xff40\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMDBA7743924GJ3wwwwww\x87xgwvw\x88\x88\x88\x88wwww\x85_\xfa\xff\x86f\x7f\xff0\x9d\xf1\x89HT6WAD10A1\xf1\x82SDN8G25NB2\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SAMDBA7817334GJ3Vgvwvfvgww\x87wwwwwwfgv\x97O\xfd\xff\x88\x88o\xff\x8e\xeb\xf1\x89HT6WAD10A1\xf1\x82SDN8G25NB2\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SAMDBA8054504GJ3gw\x87xffvgffffwwwweUVUf?\xfc\xffvU_\xff\xddl\xf1\x89HT6WAD10A1\xf1\x82SDN8G25NB2\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SAMFB41553621GC7ww\x87xUU\x85Xvwwg\x88\x88\x88\x88wwgw\x86\xaf\xfb\xffuDo\xff\xaa\x8f\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFB42555421GC7\x88\x88\x88\x88wvwgx\x88\x87\x88wwgw\x87wxw3\x8f\xfc\xff\x98f\x8f\xffga\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFBA7978674GJ2gw\x87xgw\x97ywwwwvUGeUUeU\x87O\xfb\xff\x98w\x8f\xfffF\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFBA8105254GJ2wx\x87\x88Vf\x86hx\x88\x87\x88wwwwwwww\x86O\xfa\xff\x99\x88\x7f\xffZG\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFBA9283024GJ2wwwwEUuWwwgwwwwwwwww\x87/\xfb\xff\x98w\x8f\xff<\xd3\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SAMFBA9708354GJ2wwwwVf\x86h\x88wx\x87xww\x87\x88\x88\x88\x88w/\xfa\xff\x97w\x8f\xff\x86\xa0\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - b'\xf1\x87SANDB45316691GC6\x99\x99\x99\x99\x88\x88\xa8\x8avfwfwwww\x87wxwT\x9f\xfd\xff\x88wo\xff\x1c\xfa\xf1\x89HT6WAD10A1\xf1\x82SDN8G25NB3\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SANFB45889451GC7wx\x87\x88gw\x87x\x88\x88x\x88\x87wxw\x87wxw\x87\x8f\xfc\xffeU\x8f\xff+Q\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00SDN8T16NB2\n\xdd^\xbc', - ], }, - CAR.SONATA_LF: { + CAR.HYUNDAI_SONATA_LF: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00LF__ SCC F-CUP 1.00 1.00 96401-C2200 ', ], @@ -402,44 +234,22 @@ FW_VERSIONS = { b'\xf1\x00LF ESC \t 11 \x17\x01\x13 58920-C2610', b'\xf1\x00LF ESC \x0c 11 \x17\x01\x13 58920-C2610', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81606D5051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81606D5K51\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81606G1051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00LFF LKAS AT USA LHD 1.00 1.01 95740-C1000 E51', b'\xf1\x00LFF LKAS AT USA LHD 1.01 1.02 95740-C1000 E52', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24NL1\xb0\x9f\xee\xf5', - b'\xf1\x87LAHSGN012918KF10\x98\x88x\x87\x88\x88x\x87\x88\x88\x98\x88\x87w\x88w\x88\x88\x98\x886o\xf6\xff\x98w\x7f\xff3\x00\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2\x00\x00\x00\x00', - b'\xf1\x87LAHSGN012918KF10\x98\x88x\x87\x88\x88x\x87\x88\x88\x98\x88\x87w\x88w\x88\x88\x98\x886o\xf6\xff\x98w\x7f\xff3\x00\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2H\r\xbdm', - b'\xf1\x87LAJSG49645724HF0\x87x\x87\x88\x87www\x88\x99\xa8\x89\x88\x99\xa8\x89\x88\x99\xa8\x89S_\xfb\xff\x87f\x7f\xff^2\xf1\x816W3B1051\x00\x00\xf1\x006W351_C2\x00\x006W3B1051\x00\x00TLF0T20NL2H\r\xbdm', - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6B4051\x00\x00\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24NL1\x00\x00\x00\x00', - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6B4051\x00\x00\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24NL1\xb0\x9f\xee\xf5', - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6B4051\x00\x00\xf1\x006T6H0_C2\x00\x006T6B4051\x00\x00TLF0G24SL2n\x8d\xbe\xd8', - ], }, - CAR.TUCSON: { + CAR.HYUNDAI_TUCSON: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TL__ FCA F-CUP 1.00 1.01 99110-D3500 ', b'\xf1\x00TL__ FCA F-CUP 1.00 1.02 99110-D3510 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81606G3051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x8971TLC2NAIDDIR002\xf1\x8271TLC2NAIDDIR002', - ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00TL MFC AT KOR LHD 1.00 1.02 95895-D3800 180719', b'\xf1\x00TL MFC AT USA LHD 1.00 1.06 95895-D3800 190107', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x87KMLDCU585233TJ20wx\x87\x88x\x88\x98\x89vfwfwwww\x87f\x9f\xff\x98\xff\x7f\xf9\xf7s\xf1\x816T6G4051\x00\x00\xf1\x006T6J0_C2\x00\x006T6G4051\x00\x00TTL4G24NH2\x00\x00\x00\x00', - b'\xf1\x87LBJXAN202299KF22\x87x\x87\x88ww\x87xx\x88\x97\x88\x87\x88\x98x\x88\x99\x98\x89\x87o\xf6\xff\x87w\x7f\xff\x12\x9a\xf1\x81U083\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U083\x00\x00\x00\x00\x00\x00TTL2V20KL1\x8fRn\x8a', - ], }, - CAR.SANTA_FE: { + CAR.HYUNDAI_SANTA_FE: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TM__ SCC F-CUP 1.00 1.00 99110-S1210 ', b'\xf1\x00TM__ SCC F-CUP 1.00 1.01 99110-S2000 ', @@ -458,11 +268,6 @@ FW_VERSIONS = { b'\xf1\x00TM ESC \r 104\x19\x07\x08 58910-S2650', b'\xf1\x00TM ESC \r 105\x19\x05# 58910-S1500', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81606EA051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81606G1051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81606G3051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00TM MDPS C 1.00 1.00 56340-S2000 8409', b'\xf1\x00TM MDPS C 1.00 1.00 56340-S2000 8A12', @@ -473,66 +278,26 @@ FW_VERSIONS = { b'\xf1\x00TM MFC AT EUR LHD 1.00 1.01 99211-S1010 181207', b'\xf1\x00TM MFC AT USA LHD 1.00 1.00 99211-S2000 180409', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS5\x00\x00\x00\x00', - b'\xf1\x00bcsh8p54 U833\x00\x00\x00\x00\x00\x00TTM4V22US3_<]\xf1', - b'\xf1\x87LBJSGA7082574HG0\x87www\x98\x88\x88\x88\x99\xaa\xb9\x9afw\x86gx\x99\xa7\x89co\xf8\xffvU_\xffR\xaf\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2T20NS1\x00\xa6\xe0\x91', - b'\xf1\x87LBKSGA0458404HG0vfvg\x87www\x89\x99\xa8\x99y\xaa\xa7\x9ax\x88\xa7\x88t_\xf9\xff\x86w\x8f\xff\x15x\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2T20NS1\x00\x00\x00\x00', - b'\xf1\x87LDJUEA6010814HG1\x87w\x87x\x86gvw\x88\x88\x98\x88gw\x86wx\x88\x97\x88\x85o\xf8\xff\x86f_\xff\xd37\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4T20NS0\xf8\x19\x92g', - b'\xf1\x87LDJUEA6458264HG1ww\x87x\x97x\x87\x88\x88\x99\x98\x89g\x88\x86xw\x88\x97x\x86o\xf7\xffvw\x8f\xff3\x9a\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4T20NS0\xf8\x19\x92g', - b'\xf1\x87LDKUEA2045844HG1wwww\x98\x88x\x87\x88\x88\xa8\x88x\x99\x97\x89x\x88\xa7\x88U\x7f\xf8\xffvfO\xffC\x1e\xf1\x816W3E0051\x00\x00\xf1\x006W351_C2\x00\x006W3E0051\x00\x00TTM4T20NS3\x00\x00\x00\x00', - b'\xf1\x87LDKUEA9993304HG1\x87www\x97x\x87\x88\x99\x99\xa9\x99x\x99\xa7\x89w\x88\x97x\x86_\xf7\xffwwO\xffl#\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4T20NS1R\x7f\x90\n', - b'\xf1\x87LDLUEA6061564HG1\xa9\x99\x89\x98\x87wwwx\x88\x97\x88x\x99\xa7\x89x\x99\xa7\x89sO\xf9\xffvU_\xff<\xde\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS50\xcb\xc3\xed', - b'\xf1\x87LDLUEA6159884HG1\x88\x87hv\x99\x99y\x97\x89\xaa\xb8\x9ax\x99\x87\x89y\x99\xb7\x99\xa7?\xf7\xff\x97wo\xff\xf3\x05\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS5\x00\x00\x00\x00', - b'\xf1\x87LDLUEA6852664HG1\x97wWu\x97www\x89\xaa\xc8\x9ax\x99\x97\x89x\x99\xa7\x89SO\xf7\xff\xa8\x88\x7f\xff\x03z\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS50\xcb\xc3\xed', - b'\xf1\x87LDLUEA6898374HG1fevW\x87wwwx\x88\x97\x88h\x88\x96\x88x\x88\xa7\x88ao\xf9\xff\x98\x99\x7f\xffD\xe2\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS5\x00\x00\x00\x00', - b'\xf1\x87LDLUEA6898374HG1fevW\x87wwwx\x88\x97\x88h\x88\x96\x88x\x88\xa7\x88ao\xf9\xff\x98\x99\x7f\xffD\xe2\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4T20NS50\xcb\xc3\xed', - b'\xf1\x87SBJWAA5842214GG0\x88\x87\x88xww\x87x\x89\x99\xa8\x99\x88\x99\x98\x89w\x88\x87xw_\xfa\xfffU_\xff\xd1\x8d\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS1\x98{|\xe3', - b'\xf1\x87SBJWAA5890864GG0\xa9\x99\x89\x98\x98\x87\x98y\x89\x99\xa8\x99w\x88\x87xww\x87wvo\xfb\xffuD_\xff\x9f\xb5\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS1\x98{|\xe3', - b'\xf1\x87SBJWAA6562474GG0ffvgeTeFx\x88\x97\x88ww\x87www\x87w\x84o\xfa\xff\x87fO\xff\xc2 \xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS1\x00\x00\x00\x00', - b'\xf1\x87SBJWAA6562474GG0ffvgeTeFx\x88\x97\x88ww\x87www\x87w\x84o\xfa\xff\x87fO\xff\xc2 \xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS1\x98{|\xe3', - b'\xf1\x87SBJWAA7780564GG0wvwgUUeVwwwwx\x88\x87\x88wwwwd_\xfc\xff\x86f\x7f\xff\xd7*\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS2F\x84<\xc0', - b'\xf1\x87SBJWAA8278284GG0ffvgUU\x85Xx\x88\x87\x88x\x88w\x88ww\x87w\x96o\xfd\xff\xa7U_\xff\xf2\xa0\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM2G24NS2F\x84<\xc0', - b'\xf1\x87SBLWAA4363244GG0wvwgwv\x87hgw\x86ww\x88\x87xww\x87wdo\xfb\xff\x86f\x7f\xff3$\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM2G24NS6\x00\x00\x00\x00', - b'\xf1\x87SBLWAA4363244GG0wvwgwv\x87hgw\x86ww\x88\x87xww\x87wdo\xfb\xff\x86f\x7f\xff3$\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM2G24NS6x0\x17\xfe', - b'\xf1\x87SBLWAA4899564GG0VfvgUU\x85Xx\x88\x87\x88vfgf\x87wxwvO\xfb\xff\x97f\xb1\xffSB\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM2G24NS7\x00\x00\x00\x00', - b'\xf1\x87SBLWAA6622844GG0wwwwff\x86hwwwwx\x88\x87\x88\x88\x88\x88\x88\x98?\xfd\xff\xa9\x88\x7f\xffn\xe5\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM2G24NS7u\x1e{\x1c', - b'\xf1\x87SDJXAA7656854GG1DEtWUU\x85X\x88\x88\x98\x88w\x88\x87xx\x88\x87\x88\x96o\xfb\xff\x86f\x7f\xff.\xca\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4G24NS2\x00\x00\x00\x00', - b'\xf1\x87SDJXAA7656854GG1DEtWUU\x85X\x88\x88\x98\x88w\x88\x87xx\x88\x87\x88\x96o\xfb\xff\x86f\x7f\xff.\xca\xf1\x816W3C2051\x00\x00\xf1\x006W351_C2\x00\x006W3C2051\x00\x00TTM4G24NS2K\xdaV0', - b'\xf1\x87SDKXAA2443414GG1vfvgwv\x87h\x88\x88\x88\x88ww\x87wwwww\x99_\xfc\xffvD?\xffl\xd2\xf1\x816W3E1051\x00\x00\xf1\x006W351_C2\x00\x006W3E1051\x00\x00TTM4G24NS6\x00\x00\x00\x00', - ], }, - CAR.SANTA_FE_2022: { + CAR.HYUNDAI_SANTA_FE_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TM__ SCC F-CUP 1.00 1.00 99110-S1500 ', + b'\xf1\x00TM__ SCC F-CUP 1.00 1.01 99110-S1500 ', b'\xf1\x00TM__ SCC FHCUP 1.00 1.00 99110-S1500 ', + b'\xf1\x00TM__ SCC FHCUP 1.00 1.01 99110-S1500 ', ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00TM ESC \x01 102!\x04\x03 58910-S2DA0', + b'\xf1\x00TM ESC \x01 104"\x10\x07 58910-S2DA0', b'\xf1\x00TM ESC \x02 101 \x08\x04 58910-S2GA0', b'\xf1\x00TM ESC \x02 103"\x07\x08 58910-S2GA0', b'\xf1\x00TM ESC \x03 101 \x08\x02 58910-S2DA0', + b'\xf1\x00TM ESC \x03 102!\x04\x03 58910-S2DA0', b'\xf1\x00TM ESC \x04 101 \x08\x04 58910-S2GA0', b'\xf1\x00TM ESC \x04 102!\x04\x05 58910-S2GA0', + b'\xf1\x00TM ESC \x04 103"\x07\x08 58910-S2GA0', + b'\xf1\x00TM ESC \x1e 102 \x08\x08 58910-S1DA0', b'\xf1\x00TM ESC 103!\x030 58910-S1MA0', - b'\xf1\x8758910-S1DA0\xf1\x00TM ESC \x1e 102 \x08\x08 58910-S1DA0', - b'\xf1\x8758910-S2DA0\xf1\x00TM ESC \x03 101 \x08\x02 58910-S2DA0', - b'\xf1\x8758910-S2GA0\xf1\x00TM ESC \x02 101 \x08\x04 58910-S2GA0', - b'\xf1\x8758910-S2GA0\xf1\x00TM ESC \x04 102!\x04\x05 58910-S2GA0', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81HM6M1_0a0_G20', - b'\xf1\x81HM6M1_0a0_H00', - b'\xf1\x81HM6M2_0a0_G00', - b'\xf1\x82TACVN5GMI3XXXH0A', - b'\xf1\x82TACVN5GSI3XXXH0A', - b'\xf1\x82TMBZN5TMD3XXXG2E', - b'\xf1\x82TMCFD5MMCXXXXG0A', - b'\xf1\x87 \xf1\x81 ', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M1_0a0_J10', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M1_0a0_L50', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x82TMDWN5TMD3TXXJ1A', - b'\xf1\x8739101-2STN8\xf1\x81HM6M1_0a0_M00', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00TM MDPS C 1.00 1.01 56310-S1AB0 4TSDC101', @@ -547,54 +312,33 @@ FW_VERSIONS = { b'\xf1\x00TMA MFC AT USA LHD 1.00 1.01 99211-S2500 210205', b'\xf1\x00TMA MFC AT USA LHD 1.00 1.03 99211-S2500 220414', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00HT6TA290BLHT6TAF00A1STM0M25GS1\x00\x00\x00\x00\x00\x006\xd8\x97\x15', - b'\xf1\x00HT6WA280BLHT6WAD00A1STM2G25NH2\x00\x00\x00\x00\x00\x00\xf8\xc0\xc3\xaa', - b'\xf1\x00HT6WA280BLHT6WAD00A1STM4G25NH1\x00\x00\x00\x00\x00\x00\x9cl\x04\xbc', - b'\xf1\x00T02601BL T02730A1 VTMPT25XXX730NS2\xa6\x06\x88\xf7', - b'\xf1\x00T02601BL T02800A1 VTMPT25XXX800NS4\xed\xaf\xed\xf5', - b'\xf1\x00T02601BL T02900A1 VTMPT25XXW900NS1c\x918\xc5', - b'\xf1\x00T02601BL T02900A1 VTMPT25XXX900NS8\xb7\xaa\xfe\xfc', - b'\xf1\x00T02601BL T02900A1 VTMPT25XXX900NSA\xf3\xf4Uj', - b'\xf1\x87954A02N250\x00\x00\x00\x00\x00\xf1\x81T02730A1 \xf1\x00T02601BL T02730A1 VTMPT25XXX730NS2\xa6', - b'\xf1\x87954A02N250\x00\x00\x00\x00\x00\xf1\x81T02730A1 \xf1\x00T02601BL T02730A1 VTMPT25XXX730NS2\xa6\x06\x88\xf7', - b'\xf1\x87954A02N250\x00\x00\x00\x00\x00\xf1\x81T02900A1 \xf1\x00T02601BL T02900A1 VTMPT25XXX900NS8\xb7\xaa\xfe\xfc', - b'\xf1\x87KMMYBU034207SB72x\x89\x88\x98h\x88\x98\x89\x87fhvvfWf33_\xff\x87\xff\x8f\xfa\x81\xe5\xf1\x89HT6TAF00A1\xf1\x82STM0M25GS1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SDMXCA8653204GN1EVugEUuWwwwwww\x87wwwwwv/\xfb\xff\xa8\x88\x9f\xff\xa5\x9c\xf1\x89HT6WAD00A1\xf1\x82STM4G25NH1\x00\x00\x00\x00\x00\x00', - b'\xf1\x87SDMXCA9087684GN1VfvgUUeVwwgwwwwwffffU?\xfb\xff\x97\x88\x7f\xff+\xa4\xf1\x89HT6WAD00A1\xf1\x82STM4G25NH1\x00\x00\x00\x00\x00\x00', - ], }, - CAR.SANTA_FE_HEV_2022: { + CAR.HYUNDAI_SANTA_FE_HEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00TMhe SCC FHCUP 1.00 1.00 99110-CL500 ', + b'\xf1\x00TMhe SCC FHCUP 1.00 1.01 99110-CL500 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102', b'\xf1\x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102', b'\xf1\x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100', b'\xf1\x00TM MDPS R 1.00 1.05 57700-CL000 4TSHP105', + b'\xf1\x00TM MDPS R 1.00 1.06 57700-CL000 4TSHP106', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00TMA MFC AT USA LHD 1.00 1.03 99211-S2500 220414', b'\xf1\x00TMH MFC AT EUR LHD 1.00 1.06 99211-S1500 220727', + b'\xf1\x00TMH MFC AT KOR LHD 1.00 1.06 99211-S1500 220727', b'\xf1\x00TMH MFC AT USA LHD 1.00 1.03 99211-S1500 210224', + b'\xf1\x00TMH MFC AT USA LHD 1.00 1.05 99211-S1500 220126', b'\xf1\x00TMH MFC AT USA LHD 1.00 1.06 99211-S1500 220727', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2H16SA3\xa3\x1b\xe14', - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2H16UA3I\x94\xac\x8f', - b'\xf1\x87959102T250\x00\x00\x00\x00\x00\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E14\x00\x00\x00\x00\x00\x00\x00TTM2H16SA2\x80\xd7l\xb2', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391312MTC1', - b'\xf1\x87391312MTE0', - b'\xf1\x87391312MTL0', - ], }, - CAR.SANTA_FE_PHEV_2022: { + CAR.HYUNDAI_SANTA_FE_PHEV_2022: { (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00TMhe SCC F-CUP 1.00 1.00 99110-CL500 ', + b'\xf1\x00TMhe SCC FHCUP 1.00 1.00 99110-CL500 ', b'\xf1\x00TMhe SCC FHCUP 1.00 1.01 99110-CL500 ', - b'\xf1\x8799110CL500\xf1\x00TMhe SCC FHCUP 1.00 1.00 99110-CL500 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102', @@ -603,19 +347,11 @@ FW_VERSIONS = { ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00TMP MFC AT USA LHD 1.00 1.03 99211-S1500 210224', + b'\xf1\x00TMP MFC AT USA LHD 1.00 1.05 99211-S1500 220126', b'\xf1\x00TMP MFC AT USA LHD 1.00 1.06 99211-S1500 220727', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA1\x0b\xc5\x0f\xea', - b'\xf1\x8795441-3D121\x00\xf1\x81E16\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA0o\x88^\xbe', - b'\xf1\x8795441-3D121\x00\xf1\x81E16\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TTM2P16SA1\x0b\xc5\x0f\xea', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391312MTF0', - b'\xf1\x87391312MTF1', - ], }, - CAR.CUSTIN_1ST_GEN: { + CAR.HYUNDAI_CUSTIN_1ST_GEN: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00KU ESC \x01 101!\x02\x03 58910-O3200', ], @@ -628,12 +364,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00KU2 MFC AT CHN LHD 1.00 1.02 99211-O3000 220923', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391212MEC0', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 U928\x00\x00\x00\x00\x00\x00SKU0T15KB2\x92U\xf9M', - ], }, CAR.KIA_STINGER: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -642,14 +372,6 @@ FW_VERSIONS = { b'\xf1\x00CK__ SCC F_CUP 1.00 1.02 96400-J5100 ', b'\xf1\x00CK__ SCC F_CUP 1.00 1.03 96400-J5100 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\xe0\x19\xff\xe7\xe7g\x01\xa2\x00\x0f\x00\x9e\x00\x06\x00\xff\xff\xff\xff\xff\xff\x00\x00\xff\xff\xff\xff\xff\xff\x00\x00\x0f\x0e\x0f\x0f\x0e\r\x00\x00\x7f\x02.\xff\x00\x00~p\x00\x00\x00\x00u\xff\xf9\xff\x00\x00\x00\x00V\t\xd5\x01\xc0\x00\x00\x00\x007\xfb\xfc\x0b\x8d\x00', - b'\xf1\x81606DE051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640E0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640H0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x82CKJN3TMSDE0B\x00\x00\x00\x00', - b'\xf1\x82CKKN3TMD_H0A\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CK MDPS R 1.00 1.04 57700-J5200 4C2CL104', b'\xf1\x00CK MDPS R 1.00 1.04 57700-J5220 4C2VL104', @@ -663,20 +385,6 @@ FW_VERSIONS = { b'\xf1\x00CK MFC AT USA LHD 1.00 1.03 95740-J5000 170822', b'\xf1\x00CK MFC AT USA LHD 1.00 1.04 95740-J5000 180504', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\t\xb7\x17\xf5', - b'\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SCK0T33NB2\xb3\xee\xba\xdc', - b'\xf1\x87VCJLE17622572DK0vd6D\x99\x98y\x97vwVffUfvfC%CuT&Dx\x87o\xff{\x1c\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x87VDHLG17000192DK2xdFffT\xa5VUD$DwT\x86wveVeeD&T\x99\xba\x8f\xff\xcc\x99\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\t\xb7\x17\xf5', - b'\xf1\x87VDHLG17000192DK2xdFffT\xa5VUD$DwT\x86wveVeeD&T\x99\xba\x8f\xff\xcc\x99\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x87VDHLG17000192DK2xdFffT\xa5VUD$DwT\x86wveVeeD&T\x99\xba\x8f\xff\xcc\x99\xf1\x89E21\x00\x00\x00\x00\x00\x00\x00\xf1\x82SCK0T33NB0', - b'\xf1\x87VDHLG17034412DK2vD6DfVvVTD$D\x99w\x88\x98EDEDeT6DgfO\xff\xc3=\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x87VDHLG17118862DK2\x8awWwgu\x96wVfUVwv\x97xWvfvUTGTx\x87o\xff\xc9\xed\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SCK0T33NB0\x88\xa2\xe6\xf0', - b'\xf1\x87VDHLG17274082DK2wfFf\x89x\x98wUT5T\x88v\x97xgeGefTGTVvO\xff\x1c\x14\xf1\x81E19\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E19\x00\x00\x00\x00\x00\x00\x00SCK0T33UB2\xee[\x97S', - b'\xf1\x87VDKLJ18675252DK6\x89vhgwwwwveVU\x88w\x87w\x99vgf\x97vXfgw_\xff\xc2\xfb\xf1\x89E25\x00\x00\x00\x00\x00\x00\x00\xf1\x82TCK0T33NB2', - b'\xf1\x87WAJTE17552812CH4vfFffvfVeT5DwvvVVdFeegeg\x88\x88o\xff\x1a]\xf1\x81E21\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00TCK2T20NB1\x19\xd2\x00\x94', - ], }, CAR.KIA_STINGER_2022: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -685,15 +393,11 @@ FW_VERSIONS = { b'\xf1\x00CK__ SCC FHCUP 1.00 1.00 99110-J5600 ', b'\xf1\x00CK__ SCC FHCUP 1.00 1.01 99110-J5100 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640N2051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640R0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81HM6M1_0a0_H00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503', b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5320 4C2VL503', b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503', + b'\xf1\x00CK MDPS R 1.00 5.03 57700-J5520 4C4VL503', b'\xf1\x00CK MDPS R 1.00 5.04 57700-J5520 4C4VL504', ], (Ecu.fwdCamera, 0x7c4, None): [ @@ -702,29 +406,29 @@ FW_VERSIONS = { b'\xf1\x00CK MFC AT USA LHD 1.00 1.00 99211-J5500 210622', b'\xf1\x00CK MFC AT USA LHD 1.00 1.03 99211-J5000 201209', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 E31\x00\x00\x00\x00\x00\x00\x00SCK0T25KH2B\xfbI\xe2', - b'\xf1\x00bcsh8p54 E31\x00\x00\x00\x00\x00\x00\x00SCK0T33NH07\xdf\xf0\xc1', - b'\xf1\x00bcsh8p54 E31\x00\x00\x00\x00\x00\x00\x00TCK0T33NH0%g~\xd3', - b'\xf1\x87VCNLF11383972DK1vffV\x99\x99\x89\x98\x86eUU\x88wg\x89vfff\x97fff\x99\x87o\xff"\xc1\xf1\x81E30\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E30\x00\x00\x00\x00\x00\x00\x00SCK0T33GH0\xbe`\xfb\xc6', - ], }, - CAR.PALISADE: { + CAR.HYUNDAI_PALISADE: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00LX2 SCC FHCUP 1.00 1.04 99110-S8100 ', b'\xf1\x00LX2_ SCC F-CUP 1.00 1.04 99110-S8100 ', b'\xf1\x00LX2_ SCC F-CUP 1.00 1.05 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCU- 1.00 1.05 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCUP 1.00 1.00 99110-S8110 ', + b'\xf1\x00LX2_ SCC FHCUP 1.00 1.03 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCUP 1.00 1.04 99110-S8100 ', b'\xf1\x00LX2_ SCC FHCUP 1.00 1.05 99110-S8100 ', + b'\xf1\x00ON__ FCA FHCUP 1.00 1.00 99110-S9110 ', b'\xf1\x00ON__ FCA FHCUP 1.00 1.01 99110-S9110 ', b'\xf1\x00ON__ FCA FHCUP 1.00 1.02 99110-S9100 ', + b'\xf1\x00ON__ FCA FHCUP 1.00 1.03 99110-S9100 ', ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00LX ESC \x01 103\x19\t\x10 58910-S8360', b'\xf1\x00LX ESC \x01 1031\t\x10 58910-S8360', + b'\xf1\x00LX ESC \x01 104 \x10\x15 58910-S8350', + b'\xf1\x00LX ESC \x01 104 \x10\x16 58910-S8360', b'\xf1\x00LX ESC \x0b 101\x19\x03\x17 58910-S8330', + b'\xf1\x00LX ESC \x0b 101\x19\x03 58910-S8360', b'\xf1\x00LX ESC \x0b 102\x19\x05\x07 58910-S8330', b'\xf1\x00LX ESC \x0b 103\x19\t\x07 58910-S8330', b'\xf1\x00LX ESC \x0b 103\x19\t\t 58910-S8350', @@ -735,20 +439,19 @@ FW_VERSIONS = { b'\xf1\x00ON ESC \x0b 101\x19\t\x05 58910-S9320', b'\xf1\x00ON ESC \x0b 101\x19\t\x08 58910-S9360', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640J0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640K0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640S1051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00LX2 MDPS C 1,00 1,03 56310-S8020 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-S8000 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103', + b'\xf1\x00LX2 MDPS C 1.00 1.03 56310-XX000 4LXDC103', b'\xf1\x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104', + b'\xf1\x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104', + b'\xf1\x00LX2 MDPS R 1.00 1.02 56370-S8300 9318', b'\xf1\x00ON MDPS C 1.00 1.00 56340-S9000 8B13', b'\xf1\x00ON MDPS C 1.00 1.01 56340-S9000 9201', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00LX2 MFC AT KOR LHD 1.00 1.08 99211-S8100 200903', b'\xf1\x00LX2 MFC AT USA LHD 1.00 1.00 99211-S8110 210226', b'\xf1\x00LX2 MFC AT USA LHD 1.00 1.03 99211-S8100 190125', b'\xf1\x00LX2 MFC AT USA LHD 1.00 1.05 99211-S8100 190909', @@ -758,74 +461,12 @@ FW_VERSIONS = { b'\xf1\x00ON MFC AT USA LHD 1.00 1.03 99211-S9100 200720', b'\xf1\x00ON MFC AT USA LHD 1.00 1.04 99211-S9100 211227', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 U872\x00\x00\x00\x00\x00\x00TON4G38NB1\x96z28', - b'\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00TON2G38NB5j\x94.\xde', - b'\xf1\x87LBLUFN591307KF25vgvw\x97wwwy\x99\xa7\x99\x99\xaa\xa9\x9af\x88\x96h\x95o\xf7\xff\x99f/\xff\xe4c\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB2\xd7\xc1/\xd1', - b"\xf1\x87LBLUFN622950KF36\xa8\x88\x88\x88\x87w\x87xh\x99\x96\x89\x88\x99\x98\x89\x88\x99\x98\x89\x87o\xf6\xff\x98\x88o\xffx'\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB3\xd1\xc3\xf8\xa8", - b'\xf1\x87LBLUFN650868KF36\xa9\x98\x89\x88\xa8\x88\x88\x88h\x99\xa6\x89fw\x86gw\x88\x97x\xaa\x7f\xf6\xff\xbb\xbb\x8f\xff+\x82\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB3\xd1\xc3\xf8\xa8', - b'\xf1\x87LBLUFN655162KF36\x98\x88\x88\x88\x98\x88\x88\x88x\x99\xa7\x89x\x99\xa7\x89x\x99\x97\x89g\x7f\xf7\xffwU_\xff\xe9!\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB3\xd1\xc3\xf8\xa8', - b'\xf1\x87LBLUFN731381KF36\xb9\x99\x89\x98\x98\x88\x88\x88\x89\x99\xa8\x99\x88\x99\xa8\x89\x88\x88\x98\x88V\x7f\xf6\xff\x99w\x8f\xff\xad\xd8\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX2G38NB3\xd1\xc3\xf8\xa8', - b'\xf1\x87LDKVAA0028604HH1\xa8\x88x\x87vgvw\x88\x99\xa8\x89gw\x86ww\x88\x97x\x97o\xf9\xff\x97w\x7f\xffo\x02\xf1\x81U872\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U872\x00\x00\x00\x00\x00\x00TON4G38NB1\x96z28', - b'\xf1\x87LDKVAA3068374HH1wwww\x87xw\x87y\x99\xa7\x99w\x88\x87xw\x88\x97x\x85\xaf\xfa\xffvU/\xffU\xdc\xf1\x81U872\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U872\x00\x00\x00\x00\x00\x00TON4G38NB1\x96z28', - b'\xf1\x87LDKVBN382172KF26\x98\x88\x88\x88\xa8\x88\x88\x88x\x99\xa7\x89\x87\x88\x98x\x98\x99\xa9\x89\xa5_\xf6\xffDDO\xff\xcd\x16\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB2\xafL]\xe7', - b'\xf1\x87LDKVBN424201KF26\xba\xaa\x9a\xa9\x99\x99\x89\x98\x89\x99\xa8\x99\x88\x99\x98\x89\x88\x99\xa8\x89v\x7f\xf7\xffwf_\xffq\xa6\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB2\xafL]\xe7', - b'\xf1\x87LDKVBN540766KF37\x87wgv\x87w\x87xx\x99\x97\x89v\x88\x97h\x88\x88\x88\x88x\x7f\xf6\xffvUo\xff\xd3\x01\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB2\xafL]\xe7', - b'\xf1\x87LDLVAA4225634HH1\x98\x88\x88\x88eUeVx\x88\x87\x88g\x88\x86xx\x88\x87\x88\x86o\xf9\xff\x87w\x7f\xff\xf2\xf7\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVAA4478824HH1\x87wwwvfvg\x89\x99\xa8\x99w\x88\x87x\x89\x99\xa8\x99\xa6o\xfa\xfffU/\xffu\x92\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVAA4777834HH1\x98\x88x\x87\x87wwwx\x88\x87\x88x\x99\x97\x89x\x88\x97\x88\x86o\xfa\xff\x86fO\xff\x1d9\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVAA5194534HH1ffvguUUUx\x88\xa7\x88h\x99\x96\x89x\x88\x97\x88ro\xf9\xff\x98wo\xff\xaaM\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVAA5949924HH1\xa9\x99y\x97\x87wwwx\x99\x97\x89x\x99\xa7\x89x\x99\xa7\x89\x87_\xfa\xffeD?\xff\xf1\xfd\xf1\x81U903\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U903\x00\x00\x00\x00\x00\x00TON4G38NB2[v\\\xb6', - b'\xf1\x87LDLVBN560098KF26\x86fff\x87vgfg\x88\x96xfw\x86gfw\x86g\x95\xf6\xffeU_\xff\x92c\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB2\xafL]\xe7', - b'\xf1\x87LDLVBN602045KF26\xb9\x99\x89\x98\x97vwgy\xaa\xb7\x9af\x88\x96hw\x99\xa7y\xa9\x7f\xf5\xff\x99w\x7f\xff,\xd3\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN628911KF26\xa9\x99\x89\x98\x98\x88\x88\x88y\x99\xa7\x99fw\x86gw\x88\x87x\x83\x7f\xf6\xff\x98wo\xff2\xda\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN645817KF37\x87www\x98\x87xwx\x99\x97\x89\x99\x99\x99\x99g\x88\x96x\xb6_\xf7\xff\x98fo\xff\xe2\x86\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN662115KF37\x98\x88\x88\x88\xa8\x88\x88\x88x\x99\x97\x89x\x99\xa7\x89\x88\x99\xa8\x89\x88\x7f\xf7\xfffD_\xff\xdc\x84\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN667933KF37\xb9\x99\x89\x98\xb9\x99\x99\x99x\x88\x87\x88w\x88\x87x\x88\x88\x98\x88\xcbo\xf7\xffe3/\xffQ!\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN673087KF37\x97www\x86fvgx\x99\x97\x89\x99\xaa\xa9\x9ag\x88\x86x\xe9_\xf8\xff\x98w\x7f\xff"\xad\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN673841KF37\x98\x88x\x87\x86g\x86xy\x99\xa7\x99\x88\x99\xa8\x89w\x88\x97xdo\xf5\xff\x98\x88\x8f\xffT\xec\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN681363KF37\x98\x88\x88\x88\x97x\x87\x88y\xaa\xa7\x9a\x88\x88\x98\x88\x88\x88\x88\x88vo\xf6\xffvD\x7f\xff%v\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN713782KF37\x99\x99y\x97\x98\x88\x88\x88x\x88\x97\x88\x88\x99\x98\x89\x88\x99\xa8\x89\x87o\xf7\xffeU?\xff7,\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN713890KF26\xb9\x99\x89\x98\xa9\x99\x99\x99x\x99\x97\x89\x88\x99\xa8\x89\x88\x99\xb8\x89Do\xf7\xff\xa9\x88o\xffs\r\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN733215KF37\x99\x98y\x87\x97wwwi\x99\xa6\x99x\x99\xa7\x89V\x88\x95h\x86o\xf7\xffeDO\xff\x12\xe7\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN750044KF37\xca\xa9\x8a\x98\xa7wwwy\xaa\xb7\x9ag\x88\x96x\x88\x99\xa8\x89\xb9\x7f\xf6\xff\xa8w\x7f\xff\xbe\xde\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN752612KF37\xba\xaa\x8a\xa8\x87w\x87xy\xaa\xa7\x9a\x88\x99\x98\x89x\x88\x97\x88\x96o\xf6\xffvU_\xffh\x1b\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN755553KF37\x87xw\x87\x97w\x87xy\x99\xa7\x99\x99\x99\xa9\x99Vw\x95gwo\xf6\xffwUO\xff\xb5T\xf1\x81U891\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U891\x00\x00\x00\x00\x00\x00SLX4G38NB3X\xa8\xc08', - b'\xf1\x87LDLVBN757883KF37\x98\x87xw\x98\x87\x88xy\xaa\xb7\x9ag\x88\x96x\x89\x99\xa8\x99e\x7f\xf6\xff\xa9\x88o\xff5\x15\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN778156KF37\x87vWe\xa9\x99\x99\x99y\x99\xb7\x99\x99\x99\x99\x99x\x99\x97\x89\xa8\x7f\xf8\xffwf\x7f\xff\x82_\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN780576KF37\x98\x87hv\x97x\x97\x89x\x99\xa7\x89\x88\x99\x98\x89w\x88\x97x\x98\x7f\xf7\xff\xba\x88\x8f\xff\x1e0\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN783485KF37\x87www\x87vwgy\x99\xa7\x99\x99\x99\xa9\x99Vw\x95g\x89_\xf6\xff\xa9w_\xff\xc5\xd6\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN811844KF37\x87vwgvfffx\x99\xa7\x89Vw\x95gg\x88\xa6xe\x8f\xf6\xff\x97wO\xff\t\x80\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN830601KF37\xa7www\xa8\x87xwx\x99\xa7\x89Uw\x85Ww\x88\x97x\x88o\xf6\xff\x8a\xaa\x7f\xff\xe2:\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB4\xd6\xe8\xd7\xa6', - b'\xf1\x87LDMVBN848789KF37\x87w\x87x\x87w\x87xy\x99\xb7\x99\x87\x88\x98x\x88\x99\xa8\x89\x87\x7f\xf6\xfffUo\xff\xe3!\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN851595KF37\x97wgvvfffx\x99\xb7\x89\x88\x99\x98\x89\x87\x88\x98x\x99\x7f\xf7\xff\x97w\x7f\xff@\xf3\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN871852KF37\xb9\x99\x99\x99\xa8\x88\x88\x88y\x99\xa7\x99x\x99\xa7\x89\x88\x88\x98\x88\x89o\xf7\xff\xaa\x88o\xff\x0e\xed\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN873175KF26\xa8\x88\x88\x88vfVex\x99\xb7\x89\x88\x99\x98\x89x\x88\x97\x88f\x7f\xf7\xff\xbb\xaa\x8f\xff,\x04\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN879401KF26veVU\xa8\x88\x88\x88g\x88\xa6xVw\x95gx\x88\xa7\x88v\x8f\xf9\xff\xdd\xbb\xbf\xff\xb3\x99\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN881314KF37\xa8\x88h\x86\x97www\x89\x99\xa8\x99w\x88\x97xx\x99\xa7\x89\xca\x7f\xf8\xff\xba\x99\x8f\xff\xd8v\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN888651KF37\xa9\x99\x89\x98vfff\x88\x99\x98\x89w\x99\xa7y\x88\x88\x98\x88D\x8f\xf9\xff\xcb\x99\x8f\xff\xa5\x1e\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN889419KF37\xa9\x99y\x97\x87w\x87xx\x88\x97\x88w\x88\x97x\x88\x99\x98\x89e\x9f\xf9\xffeUo\xff\x901\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN895969KF37vefV\x87vgfx\x99\xa7\x89\x99\x99\xb9\x99f\x88\x96he_\xf7\xffxwo\xff\x14\xf9\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN899222KF37\xa8\x88x\x87\x97www\x98\x99\x99\x89\x88\x99\x98\x89f\x88\x96hdo\xf7\xff\xbb\xaa\x9f\xff\xe2U\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - b'\xf1\x87LDMVBN950669KF37\x97www\x96fffy\x99\xa7\x99\xa9\x99\xaa\x99g\x88\x96x\xb8\x8f\xf9\xffTD/\xff\xa7\xcb\xf1\x81U922\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U922\x00\x00\x00\x00\x00\x00SLX4G38NB5\xb9\x94\xe8\x89', - ], }, - CAR.VELOSTER: { + CAR.HYUNDAI_VELOSTER: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00JS__ SCC H-CUP 1.00 1.02 95650-J3200 ', b'\xf1\x00JS__ SCC HNCUP 1.00 1.02 95650-J3100 ', ], - (Ecu.abs, 0x7d1, None): [ - b'\xf1\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816V8RAC00121.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.engine, 0x7e0, None): [ - b'\x01TJS-JDK06F200H0A', - b'\x01TJS-JNU06F200H0A', - b'391282BJF5 ', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00JSL MDPS C 1.00 1.03 56340-J3000 8308', ], @@ -833,119 +474,77 @@ FW_VERSIONS = { b'\xf1\x00JS LKAS AT KOR LHD 1.00 1.03 95740-J3000 K33', b'\xf1\x00JS LKAS AT USA LHD 1.00 1.02 95740-J3000 K32', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U2V8051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJS0T16KS2\x0e\xba\x1e\xa2', - b'\xf1\x816U2V8051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJS0T16NS1\x00\x00\x00\x00', - b'\xf1\x816U2V8051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJS0T16NS1\xba\x02\xb8\x80', - ], }, CAR.GENESIS_G70: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00IK__ SCC F-CUP 1.00 1.01 96400-G9100 ', b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640F0051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00IK MFC AT USA LHD 1.00 1.01 95740-G9000 170920', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB2\x11\x1am\xda', - b'\xf1\x87VDJLT17895112DN4\x88fVf\x99\x88\x88\x88\x87fVe\x88vhwwUFU\x97eFex\x99\x7f\xff\xb7\x82\xf1\x81E25\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB2\x11\x1am\xda', - ], }, CAR.GENESIS_G70_2020: { (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00IK MDPS R 1.00 1.06 57700-G9220 4I2VL106', b'\xf1\x00IK MDPS R 1.00 1.07 57700-G9220 4I2VL107', b'\xf1\x00IK MDPS R 1.00 1.07 57700-G9420 4I4VL107', b'\xf1\x00IK MDPS R 1.00 1.08 57700-G9200 4I2CL108', b'\xf1\x00IK MDPS R 1.00 1.08 57700-G9420 4I4VL108', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB4\xecE\xefL', - b'\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T20KB3Wuvz', - b'\xf1\x87VCJLP18407832DN3\x88vXfvUVT\x97eFU\x87d7v\x88eVeveFU\x89\x98\x7f\xff\xb2\xb0\xf1\x81E25\x00\x00\x00', - b'\xf1\x87VDJLC18480772DK9\x88eHfwfff\x87eFUeDEU\x98eFe\x86T5DVyo\xff\x87s\xf1\x81E25\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33KB5\x9f\xa5&\x81', - b'\xf1\x87VDKLT18912362DN4wfVfwefeveVUwfvw\x88vWfvUFU\x89\xa9\x8f\xff\x87w\xf1\x81E25\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 E25\x00\x00\x00\x00\x00\x00\x00SIK0T33NB4\xecE\xefL', + b'\xf1\x00IK MDPS R 1.00 5.09 57700-G9520 4I4VL509', ], (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00IK__ SCC F-CUP 1.00 1.01 96400-G9100 ', b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 ', b'\xf1\x00IK__ SCC F-CUP 1.00 1.02 96400-G9100 \xf1\xa01.02', + b'\xf1\x00IK__ SCC FHCUP 1.00 1.00 99110-G9300 ', b'\xf1\x00IK__ SCC FHCUP 1.00 1.02 96400-G9000 ', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00IK MFC AT KOR LHD 1.00 1.01 95740-G9000 170920', b'\xf1\x00IK MFC AT USA LHD 1.00 1.01 95740-G9000 170920', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81606G2051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640H0051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640J0051\x00\x00\x00\x00\x00\x00\x00\x00', + b'\xf1\x00IK MFC AT USA LHD 1.00 1.04 99211-G9000 220401', ], }, CAR.GENESIS_G80: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DH__ SCC F-CUP 1.00 1.01 96400-B1120 ', + b'\xf1\x00DH__ SCC F-CUP 1.00 1.02 96400-B1120 ', b'\xf1\x00DH__ SCC FHCUP 1.00 1.01 96400-B1110 ', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00DH LKAS AT KOR LHD 1.01 1.01 95895-B1500 161014', b'\xf1\x00DH LKAS AT KOR LHD 1.01 1.02 95895-B1500 170810', b'\xf1\x00DH LKAS AT USA LHD 1.01 1.01 95895-B1500 161014', b'\xf1\x00DH LKAS AT USA LHD 1.01 1.02 95895-B1500 170810', b'\xf1\x00DH LKAS AT USA LHD 1.01 1.03 95895-B1500 180713', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0G33KH2\xae\xde\xd5!', - b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0G38NH2j\x9dA\x1c', - b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00SDH0T33NH3\x97\xe6\xbc\xb8', - b'\xf1\x00bcsh8p54 E18\x00\x00\x00\x00\x00\x00\x00TDH0G38NH3:-\xa9n', - b'\xf1\x00bcsh8p54 E21\x00\x00\x00\x00\x00\x00\x00SDH0T33NH4\xd7O\x9e\xc9', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640A4051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81640F0051\x00\x00\x00\x00\x00\x00\x00\x00', + b'\xf1\x00DH LKAS AT USA LHD 1.01 1.04 95895-B1500 181213', ], }, CAR.GENESIS_G90: { - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x87VDGMD15352242DD3w\x87gxwvgv\x87wvw\x88wXwffVfffUfw\x88o\xff\x06J\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcshcm49 E14\x00\x00\x00\x00\x00\x00\x00SHI0G50NB1tc5\xb7', - b'\xf1\x87VDGMD15866192DD3x\x88x\x89wuFvvfUf\x88vWwgwwwvfVgx\x87o\xff\xbc^\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcshcm49 E14\x00\x00\x00\x00\x00\x00\x00SHI0G50NB1tc5\xb7', - b'\xf1\x87VDHMD16446682DD3WwwxxvGw\x88\x88\x87\x88\x88whxx\x87\x87\x87\x85fUfwu_\xffT\xf8\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00bcshcm49 E14\x00\x00\x00\x00\x00\x00\x00SHI0G50NB1tc5\xb7', - ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00HI__ SCC F-CUP 1.00 1.01 96400-D2100 ', + b'\xf1\x00HI__ SCC FHCUP 1.00 1.02 99110-D2100 ', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00HI LKAS AT USA LHD 1.00 1.00 95895-D2020 160302', b'\xf1\x00HI LKAS AT USA LHD 1.00 1.00 95895-D2030 170208', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x810000000000\x00', + b'\xf1\x00HI MFC AT USA LHD 1.00 1.03 99211-D2000 190831', ], }, - CAR.KONA: { + CAR.HYUNDAI_KONA: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00OS__ SCC F-CUP 1.00 1.00 95655-J9200 ', ], - (Ecu.abs, 0x7d1, None): [ - b'\xf1\x816V5RAK00018.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.engine, 0x7e0, None): [ - b'"\x01TOS-0NU06F301J02', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00OS MDPS C 1.00 1.05 56310J9030\x00 4OSDC105', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00OS9 LKAS AT USA LHD 1.00 1.00 95740-J9300 g21', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U2VE051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VE051\x00\x00DOS4T16NS3\x00\x00\x00\x00', - ], }, CAR.KIA_CEED: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -957,13 +556,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00CD LKAS AT EUR LHD 1.00 1.01 99211-J7000 B40', ], - (Ecu.engine, 0x7e0, None): [ - b'\x01TCD-JECU4F202H0K', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U2V7051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V7051\x00\x00DCD0T14US1\x00\x00\x00\x00', - b'\xf1\x816U2V7051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V7051\x00\x00DCD0T14US1U\x867Z', - ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00CD ESC \x03 102\x18\x08\x05 58920-J7350', ], @@ -984,22 +576,6 @@ FW_VERSIONS = { b'\xf1\x00BDPE_SCC FHCUPC 1.00 1.04 99110-M6500\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'\xf1\x00BD__ SCC H-CUP 1.00 1.02 99110-M6000 ', ], - (Ecu.engine, 0x7e0, None): [ - b'\x01TBDM1NU06F200H01', - b'391182B945\x00', - b'\xf1\x81616F2051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.abs, 0x7d1, None): [ - b'\xf1\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816VGRAH00018.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x8758900-M7AB0 \xf1\x816VQRAD00127.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006V2B0_C2\x00\x006V2C6051\x00\x00CBD0N20NL1\x00\x00\x00\x00', - b'\xf1\x006V2B0_C2\x00\x006V2C6051\x00\x00CBD0N20NL1\x90@\xc6\xae', - b'\xf1\x816U2VC051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VC051\x00\x00DBD0T16SS0\x00\x00\x00\x00', - b"\xf1\x816U2VC051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VC051\x00\x00DBD0T16SS0\xcf\x1e'\xc3", - ], }, CAR.KIA_K5_2021: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1007,17 +583,13 @@ FW_VERSIONS = { b'\xf1\x00DL3_ SCC FHCUP 1.00 1.03 99110-L2000 ', b'\xf1\x00DL3_ SCC FHCUP 1.00 1.03 99110-L2100 ', b'\xf1\x00DL3_ SCC FHCUP 1.00 1.04 99110-L2100 ', - b'\xf1\x8799110L2000\xf1\x00DL3_ SCC FHCUP 1.00 1.03 99110-L2000 ', - b'\xf1\x8799110L2100\xf1\x00DL3_ SCC F-CUP 1.00 1.03 99110-L2100 ', - b'\xf1\x8799110L2100\xf1\x00DL3_ SCC FHCUP 1.00 1.03 99110-L2100 ', ], (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00DL3 MDPS C 1.00 1.01 56310-L3110 4DLAC101', b'\xf1\x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101', b'\xf1\x00DL3 MDPS C 1.00 1.02 56310-L2220 4DLDC102', b'\xf1\x00DL3 MDPS C 1.00 1.02 56310L3220\x00 4DLAC102', - b'\xf1\x8756310-L3110\xf1\x00DL3 MDPS C 1.00 1.01 56310-L3110 4DLAC101', - b'\xf1\x8756310-L3220\xf1\x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101', - b'\xf1\x8757700-L3000\xf1\x00DL3 MDPS R 1.00 1.02 57700-L3000 4DLAP102', + b'\xf1\x00DL3 MDPS R 1.00 1.02 57700-L3000 4DLAP102', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00DL3 MFC AT KOR LHD 1.00 1.04 99210-L2000 210527', @@ -1027,29 +599,12 @@ FW_VERSIONS = { ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00DL ESC \x01 104 \x07\x12 58910-L2200', + b'\xf1\x00DL ESC \x03 100 \x08\x02 58910-L3600', b'\xf1\x00DL ESC \x06 101 \x04\x02 58910-L3200', b'\xf1\x00DL ESC \x06 103"\x08\x06 58910-L3200', b'\xf1\x00DL ESC \t 100 \x06\x02 58910-L3800', - b'\xf1\x8758910-L3200\xf1\x00DL ESC \x06 101 \x04\x02 58910-L3200', - b'\xf1\x8758910-L3600\xf1\x00DL ESC \x03 100 \x08\x02 58910-L3600', - b'\xf1\x8758910-L3800\xf1\x00DL ESC \t 101 \x07\x02 58910-L3800', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81HM6M2_0a0_DQ0', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x82DLDWN5TMDCXXXJ1B', - b'\xf1\x87391212MKT0', - b'\xf1\x87391212MKT3', - b'\xf1\x87391212MKV0', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00HT6TA261BLHT6TAB00A1SDL0C20KS0\x00\x00\x00\x00\x00\x00\\\x9f\xa5\x15', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL2T16NB1ia\x0b\xb8', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL2T16NB2.\x13\xf6\xed', - b'\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL4T16NB05\x94t\x18', - b'\xf1\x87954A02N300\x00\x00\x00\x00\x00\xf1\x81T02730A1 \xf1\x00T02601BL T02730A1 WDL3T25XXX730NS2b\x1f\xb8%', - b'\xf1\x87SALFEA5652514GK2UUeV\x88\x87\x88xxwg\x87ww\x87wwfwvd/\xfb\xffvU_\xff\x93\xd3\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL2T16NB1ia\x0b\xb8', - b'\xf1\x87SALFEA6046104GK2wvwgeTeFg\x88\x96xwwwwffvfe?\xfd\xff\x86fo\xff\x97A\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL2T16NB1ia\x0b\xb8', - b'\xf1\x87SCMSAA8572454GK1\x87x\x87\x88Vf\x86hgwvwvwwgvwwgT?\xfb\xff\x97fo\xffH\xb8\xf1\x81U913\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U913\x00\x00\x00\x00\x00\x00TDL4T16NB05\x94t\x18', + b'\xf1\x00DL ESC \t 101 \x07\x02 58910-L3800', + b'\xf1\x00DL ESC \t 102"\x08\x10 58910-L3800', ], }, CAR.KIA_K5_HEV_2020: { @@ -1064,17 +619,11 @@ FW_VERSIONS = { b'\xf1\x00DL3HMFC AT KOR LHD 1.00 1.02 99210-L2000 200309', b'\xf1\x00DL3HMFC AT KOR LHD 1.00 1.04 99210-L2000 210527', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391162JLA0', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00PSBG2323 E08\x00\x00\x00\x00\x00\x00\x00TDL2H20KA2\xe3\xc6cz', - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TDL2H20KA5T\xf2\xc9\xc2', - ], }, - CAR.KONA_EV: { + CAR.HYUNDAI_KONA_EV: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00OS IEB \x01 212 \x11\x13 58520-K4000', + b'\xf1\x00OS IEB \x02 210 \x02\x14 58520-K4000', b'\xf1\x00OS IEB \x02 212 \x11\x13 58520-K4000', b'\xf1\x00OS IEB \x03 210 \x02\x14 58520-K4000', b'\xf1\x00OS IEB \x03 212 \x11\x13 58520-K4000', @@ -1085,10 +634,12 @@ FW_VERSIONS = { b'\xf1\x00OSE LKAS AT EUR LHD 1.00 1.00 95740-K4100 W40', b'\xf1\x00OSE LKAS AT EUR RHD 1.00 1.00 95740-K4100 W40', b'\xf1\x00OSE LKAS AT KOR LHD 1.00 1.00 95740-K4100 W40', + b'\xf1\x00OSE LKAS AT USA LHD 1.00 1.00 95740-K4100 W40', b'\xf1\x00OSE LKAS AT USA LHD 1.00 1.00 95740-K4300 W50', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00OS MDPS C 1.00 1.03 56310/K4550 4OEDC103', + b'\xf1\x00OS MDPS C 1.00 1.04 56310-XX000 4OEDC104', b'\xf1\x00OS MDPS C 1.00 1.04 56310K4000\x00 4OEDC104', b'\xf1\x00OS MDPS C 1.00 1.04 56310K4050\x00 4OEDC104', ], @@ -1099,14 +650,12 @@ FW_VERSIONS = { b'\xf1\x00OSev SCC FNCUP 1.00 1.01 99110-K4000 ', ], }, - CAR.KONA_EV_2022: { + CAR.HYUNDAI_KONA_EV_2022: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00OS IEB \x02 102"\x05\x16 58520-K4010', + b'\xf1\x00OS IEB \x03 101 \x11\x13 58520-K4010', b'\xf1\x00OS IEB \x03 102"\x05\x16 58520-K4010', b'\xf1\x00OS IEB \r 102"\x05\x16 58520-K4010', - b'\xf1\x8758520-K4010\xf1\x00OS IEB \x02 101 \x11\x13 58520-K4010', - b'\xf1\x8758520-K4010\xf1\x00OS IEB \x03 101 \x11\x13 58520-K4010', - b'\xf1\x8758520-K4010\xf1\x00OS IEB \x04 101 \x11\x13 58520-K4010', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00OSP LKA AT AUS RHD 1.00 1.04 99211-J9200 904', @@ -1128,7 +677,7 @@ FW_VERSIONS = { b'\xf1\x00YB__ FCA ----- 1.00 1.01 99110-K4500 \x00\x00\x00', ], }, - CAR.KONA_EV_2ND_GEN: { + CAR.HYUNDAI_KONA_EV_2ND_GEN: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00SXev RDR ----- 1.00 1.00 99110-BF000 ', ], @@ -1139,16 +688,15 @@ FW_VERSIONS = { CAR.KIA_NIRO_EV: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4000 ', + b'\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4100 ', + b'\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4500 ', + b'\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4600 ', b'\xf1\x00DEev SCC F-CUP 1.00 1.02 96400-Q4000 ', b'\xf1\x00DEev SCC F-CUP 1.00 1.02 96400-Q4100 ', b'\xf1\x00DEev SCC F-CUP 1.00 1.03 96400-Q4100 ', + b'\xf1\x00DEev SCC FHCUP 1.00 1.00 99110-Q4600 ', b'\xf1\x00DEev SCC FHCUP 1.00 1.03 96400-Q4000 ', - b'\xf1\x8799110Q4000\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4000 ', - b'\xf1\x8799110Q4100\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4100 ', - b'\xf1\x8799110Q4500\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4500 ', - b'\xf1\x8799110Q4600\xf1\x00DEev SCC F-CUP 1.00 1.00 99110-Q4600 ', - b'\xf1\x8799110Q4600\xf1\x00DEev SCC FHCUP 1.00 1.00 99110-Q4600 ', - b'\xf1\x8799110Q4600\xf1\x00DEev SCC FNCUP 1.00 1.00 99110-Q4600 ', + b'\xf1\x00DEev SCC FNCUP 1.00 1.00 99110-Q4600 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DE MDPS C 1.00 1.04 56310Q4100\x00 4DEEC104', @@ -1175,23 +723,12 @@ FW_VERSIONS = { ], }, CAR.KIA_NIRO_PHEV: { - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6D1051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6F4051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PDE0G16NL2&[\xc3\x01', - b'\xf1\x816U3H3051\x00\x00\xf1\x006U3H0_C2\x00\x006U3H3051\x00\x00PDE0G16NS1\x00\x00\x00\x00', - b'\xf1\x816U3H3051\x00\x00\xf1\x006U3H0_C2\x00\x006U3H3051\x00\x00PDE0G16NS1\x13\xcd\x88\x92', - b'\xf1\x816U3J2051\x00\x00\xf1\x006U3H0_C2\x00\x006U3J2051\x00\x00PDE0G16NS2\x00\x00\x00\x00', - b"\xf1\x816U3J2051\x00\x00\xf1\x006U3H0_C2\x00\x006U3J2051\x00\x00PDE0G16NS2\xf4'\\\x91", - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DE MDPS C 1.00 1.01 56310G5520\x00 4DEPC101', b'\xf1\x00DE MDPS C 1.00 1.09 56310G5301\x00 4DEHC109', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00DEH MFC AT USA LHD 1.00 1.00 95740-G5010 170117', b'\xf1\x00DEP MFC AT USA LHD 1.00 1.00 95740-G5010 170117', b'\xf1\x00DEP MFC AT USA LHD 1.00 1.01 95740-G5010 170424', b'\xf1\x00DEP MFC AT USA LHD 1.00 1.05 99211-G5000 190826', @@ -1202,14 +739,6 @@ FW_VERSIONS = { ], }, CAR.KIA_NIRO_PHEV_2022: { - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PDE0G16NL3\x00\x00\x00\x00', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00PDE0G16NL3\x00\x00\x00\x00', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DE MDPS C 1.00 1.01 56310G5520\x00 4DEPC101', ], @@ -1222,37 +751,26 @@ FW_VERSIONS = { ], }, CAR.KIA_NIRO_HEV_2021: { - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HDE0G16NL3\x00\x00\x00\x00', - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HDE0G16NL3\xb9\xd3\xfaW', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00DE MDPS C 1.00 1.01 56310G5520\x00 4DEPC101', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00DEH MFC AT KOR LHD 1.00 1.04 99211-G5000 190516', b'\xf1\x00DEH MFC AT USA LHD 1.00 1.00 99211-G5500 210428', b'\xf1\x00DEH MFC AT USA LHD 1.00 1.07 99211-G5000 201221', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DEhe SCC FHCUP 1.00 1.00 99110-G5600 ', + b'\xf1\x00DEhe SCC FHCUP 1.00 1.01 99110-G5000 ', ], }, CAR.KIA_SELTOS: { (Ecu.fwdRadar, 0x7d0, None): [ - b'\xf1\x8799110Q5100\xf1\x00SP2_ SCC FHCUP 1.01 1.05 99110-Q5100 ', + b'\xf1\x00SP2_ SCC FHCUP 1.01 1.05 99110-Q5100 ', ], (Ecu.abs, 0x7d1, None): [ - b'\xf1\x8758910-Q5450\xf1\x00SP ESC \x07 101\x19\t\x05 58910-Q5450', - b'\xf1\x8758910-Q5450\xf1\x00SP ESC \t 101\x19\t\x05 58910-Q5450', - ], - (Ecu.engine, 0x7e0, None): [ - b'\x01TSP2KNL06F100J0K', - b'\x01TSP2KNL06F200J0K', - b'\xf1\x81616D2051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x81616D5051\x00\x00\x00\x00\x00\x00\x00\x00', + b'\xf1\x00SP ESC \x07 101\x19\t\x05 58910-Q5450', + b'\xf1\x00SP ESC \t 101\x19\t\x05 58910-Q5450', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00SP2 MDPS C 1.00 1.04 56300Q5200 ', @@ -1262,11 +780,6 @@ FW_VERSIONS = { b'\xf1\x00SP2 MFC AT USA LHD 1.00 1.04 99210-Q5000 191114', b'\xf1\x00SP2 MFC AT USA LHD 1.00 1.05 99210-Q5000 201012', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x87954A22D200\xf1\x81T01950A1 \xf1\x00T0190XBL T01950A1 DSP2T16X4X950NS6\xd30\xa5\xb9', - b'\xf1\x87954A22D200\xf1\x81T01950A1 \xf1\x00T0190XBL T01950A1 DSP2T16X4X950NS8\r\xfe\x9c\x8b', - b'\xf1\x87CZLUB49370612JF7h\xa8y\x87\x99\xa7hv\x99\x97fv\x88\x87x\x89x\x96O\xff\x88\xff\xff\xff.@\xf1\x816V2C2051\x00\x00\xf1\x006V2B0_C2\x00\x006V2C2051\x00\x00CSP4N20NS3\x00\x00\x00\x00', - ], }, CAR.KIA_OPTIMA_G4: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1278,9 +791,6 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00JFWGN LDWS AT USA LHD 1.00 1.02 95895-D4100 G21', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6J0051\x00\x00\xf1\x006T6J0_C2\x00\x006T6J0051\x00\x00TJF0T20NSB\x00\x00\x00\x00', - ], }, CAR.KIA_OPTIMA_G4_FL: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1294,17 +804,6 @@ FW_VERSIONS = { b'\xf1\x00JFA LKAS AT USA LHD 1.00 1.00 95895-D5001 h32', b'\xf1\x00JFA LKAS AT USA LHD 1.00 1.00 95895-D5100 h32', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJF0T16NL0\t\xd2GW', - b'\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DJF0T16NL1\x00\x00\x00\x00', - b'\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DJF0T16NL1\xca3\xeb.', - b'\xf1\x006U2V0_C2\x00\x006U2VC051\x00\x00DJF0T16NL2\x9eA\x80\x01', - b'\xf1\x816U2V8051\x00\x00\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DJF0T16NL0\t\xd2GW', - b'\xf1\x816U2VA051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DJF0T16NL1\x00\x00\x00\x00', - b'\xf1\x816U2VA051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DJF0T16NL1\xca3\xeb.', - b'\xf1\x816U2VC051\x00\x00\xf1\x006U2V0_C2\x00\x006U2VC051\x00\x00DJF0T16NL2\x9eA\x80\x01', - b'\xf1\x87\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xf1\x816T6B8051\x00\x00\xf1\x006T6H0_C2\x00\x006T6B8051\x00\x00TJFSG24NH27\xa7\xc2\xb4', - ], }, CAR.KIA_OPTIMA_H: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1321,28 +820,12 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00JFH MFC AT KOR LHD 1.00 1.01 95895-A8200 180323', ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6D1051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, - CAR.ELANTRA: { + CAR.HYUNDAI_ELANTRA: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00AD LKAS AT USA LHD 1.01 1.01 95895-F2000 251', b'\xf1\x00ADP LKAS AT USA LHD 1.00 1.03 99211-F2000 X31', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006T6J0_C2\x00\x006T6F0051\x00\x00TAD0N20NS2\x00\x00\x00\x00', - b'\xf1\x006T6J0_C2\x00\x006T6F0051\x00\x00TAD0N20NS2\xc5\x92\x9e\x8a', - b'\xf1\x006T6J0_C2\x00\x006T6F0051\x00\x00TAD0N20SS2.~\x90\x87', - b'\xf1\x006T6K0_C2\x00\x006T6S2051\x00\x00TAD0N20NSD\x00\x00\x00\x00', - b'\xf1\x006T6K0_C2\x00\x006T6S2051\x00\x00TAD0N20NSD(\xfcA\x9d', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x8161657051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816165D051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816165E051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x8161698051\x00\x00\x00\x00\x00\x00\x00\x00', - ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00AD ESC \x11 11 \x18\x05\x06 58910-F2840', b'\xf1\x00AD ESC \x11 12 \x15\t\t 58920-F2810', @@ -1352,18 +835,12 @@ FW_VERSIONS = { b'\xf1\x00AD__ SCC H-CUP 1.00 1.01 96400-F2100 ', ], }, - CAR.ELANTRA_GT_I30: { + CAR.HYUNDAI_ELANTRA_GT_I30: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00PD LKAS AT KOR LHD 1.00 1.02 95740-G3000 A51', b'\xf1\x00PD LKAS AT USA LHD 1.00 1.02 95740-G3000 A51', b'\xf1\x00PD LKAS AT USA LHD 1.01 1.01 95740-G3100 A54', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U2U0_C2\x00\x006U2T0051\x00\x00DPD0D16KS0u\xce\x1fk', - b'\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DPD0T16NS4\x00\x00\x00\x00', - b'\xf1\x006U2V0_C2\x00\x006U2V8051\x00\x00DPD0T16NS4\xda\x7f\xd6\xa7', - b'\xf1\x006U2V0_C2\x00\x006U2VA051\x00\x00DPD0H16NS0e\x0e\xcd\x8e', - ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00PD MDPS C 1.00 1.00 56310G3300\x00 4PDDC100', b'\xf1\x00PD MDPS C 1.00 1.03 56310/G3300 4PDDC103', @@ -1380,49 +857,33 @@ FW_VERSIONS = { b'\xf1\x00PD__ SCC FNCUP 1.01 1.00 96400-G3000 ', ], }, - CAR.ELANTRA_2021: { + CAR.HYUNDAI_ELANTRA_2021: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00CN7_ SCC F-CUP 1.00 1.01 99110-AA000 ', b'\xf1\x00CN7_ SCC FHCUP 1.00 1.01 99110-AA000 ', b'\xf1\x00CN7_ SCC FNCUP 1.00 1.01 99110-AA000 ', - b'\xf1\x8799110AA000\xf1\x00CN7_ SCC F-CUP 1.00 1.01 99110-AA000 ', - b'\xf1\x8799110AA000\xf1\x00CN7_ SCC FHCUP 1.00 1.01 99110-AA000 ', ], (Ecu.eps, 0x7d4, None): [ b'\xf1\x00CN7 MDPS C 1.00 1.06 56310/AA070 4CNDC106', b'\xf1\x00CN7 MDPS C 1.00 1.06 56310AA050\x00 4CNDC106', + b'\xf1\x00CN7 MDPS C 1.00 1.07 56310AA050\x00 4CNDC107', ], (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.00 99210-AB000 200819', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.01 99210-AB000 210205', + b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.02 99210-AB000 220111', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.03 99210-AA000 200819', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.03 99210-AB000 220426', b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.06 99210-AA000 220111', + b'\xf1\x00CN7 MFC AT USA LHD 1.00 1.08 99210-AA000 220728', ], (Ecu.abs, 0x7d1, None): [ b'\xf1\x00CN ESC \t 101 \x10\x03 58910-AB800', - b'\xf1\x8758910-AA800\xf1\x00CN ESC \t 104 \x08\x03 58910-AA800', - b'\xf1\x8758910-AA800\xf1\x00CN ESC \t 105 \x10\x03 58910-AA800', - b'\xf1\x8758910-AB800\xf1\x00CN ESC \t 101 \x10\x03 58910-AB800\xf1\xa01.01', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00HT6WA280BLHT6VA640A1CCN0N20NS5\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x00HT6WA280BLHT6VA640A1CCN0N20NS5\x00\x00\x00\x00\x00\x00\xe8\xba\xce\xfa', - b'\xf1\x87CXLQF40189012JL2f\x88\x86\x88\x88vUex\xb8\x88\x88\x88\x87\x88\x89fh?\xffz\xff\xff\xff\x08z\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - b'\xf1\x87CXMQFM1916035JB2\x88vvgg\x87Wuwgev\xa9\x98\x88\x98h\x99\x9f\xffh\xff\xff\xff\xa5\xee\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - b'\xf1\x87CXMQFM2135005JB2E\xb9\x89\x98W\xa9y\x97h\xa9\x98\x99wxvwh\x87\x7f\xffx\xff\xff\xff,,\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - b'\xf1\x87CXMQFM2728305JB2E\x97\x87xw\x87vwgw\x84x\x88\x88w\x89EI\xbf\xff{\xff\xff\xff\xe6\x0e\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - b'\xf1\x87CXMQFM3806705JB2\x89\x87wwx\x88g\x86\x99\x87\x86xwwv\x88yv\x7f\xffz\xff\xff\xffV\x15\xf1\x89HT6VA640A1\xf1\x82CCN0N20NS5\x00\x00\x00\x00\x00\x00', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81HM6M2_0a0_FF0', - b'\xf1\x82CNCVD0AMFCXCSFFB', - b'\xf1\x82CNCWD0AMFCXCSFFA', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M2_0a0_G80', - b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81HM6M2_0a0_HC0', + b'\xf1\x00CN ESC \t 104 \x08\x03 58910-AA800', + b'\xf1\x00CN ESC \t 105 \x10\x03 58910-AA800', ], }, - CAR.ELANTRA_HEV_2021: { + CAR.HYUNDAI_ELANTRA_HEV_2021: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00CN7HMFC AT USA LHD 1.00 1.03 99210-AA000 200819', b'\xf1\x00CN7HMFC AT USA LHD 1.00 1.05 99210-AA000 210930', @@ -1432,28 +893,16 @@ FW_VERSIONS = { ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00CNhe SCC FHCUP 1.00 1.01 99110-BY000 ', - b'\xf1\x8799110BY000\xf1\x00CNhe SCC FHCUP 1.00 1.01 99110-BY000 ', ], (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00CN7 MDPS C 1.00 1.02 56310/BY050 4CNHC102', + b'\xf1\x00CN7 MDPS C 1.00 1.03 56310/BY050 4CNHC103', + b'\xf1\x00CN7 MDPS C 1.00 1.03 56310BY050\x00 4CNHC103', b'\xf1\x00CN7 MDPS C 1.00 1.03 56310BY0500 4CNHC103', b'\xf1\x00CN7 MDPS C 1.00 1.04 56310BY050\x00 4CNHC104', - b'\xf1\x8756310/BY050\xf1\x00CN7 MDPS C 1.00 1.02 56310/BY050 4CNHC102', - b'\xf1\x8756310/BY050\xf1\x00CN7 MDPS C 1.00 1.03 56310/BY050 4CNHC103', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x006U3L0_C2\x00\x006U3K3051\x00\x00HCN0G16NS0\x00\x00\x00\x00', - b'\xf1\x006U3L0_C2\x00\x006U3K3051\x00\x00HCN0G16NS0\xb9?A\xaa', - b'\xf1\x006U3L0_C2\x00\x006U3K9051\x00\x00HCN0G16NS1\x00\x00\x00\x00', - b'\xf1\x816U3K3051\x00\x00\xf1\x006U3L0_C2\x00\x006U3K3051\x00\x00HCN0G16NS0\x00\x00\x00\x00', - b'\xf1\x816U3K3051\x00\x00\xf1\x006U3L0_C2\x00\x006U3K3051\x00\x00HCN0G16NS0\xb9?A\xaa', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6G5051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G6051\x00\x00\x00\x00\x00\x00\x00\x00', - b'\xf1\x816H6G8051\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.KONA_HEV: { + CAR.HYUNDAI_KONA_HEV: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x00OS IEB \x01 104 \x11 58520-CM000', ], @@ -1466,64 +915,43 @@ FW_VERSIONS = { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00OSH LKAS AT KOR LHD 1.00 1.01 95740-CM000 l31', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x816U3J9051\x00\x00\xf1\x006U3H1_C2\x00\x006U3J9051\x00\x00HOS0G16DS1\x16\xc7\xb0\xd9', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x816H6F6051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, - CAR.SONATA_HYBRID: { + CAR.HYUNDAI_SONATA_HYBRID: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00DNhe SCC F-CUP 1.00 1.02 99110-L5000 ', + b'\xf1\x00DNhe SCC FHCUP 1.00 1.00 99110-L5000 ', b'\xf1\x00DNhe SCC FHCUP 1.00 1.02 99110-L5000 ', - b'\xf1\x8799110L5000\xf1\x00DNhe SCC F-CUP 1.00 1.02 99110-L5000 ', - b'\xf1\x8799110L5000\xf1\x00DNhe SCC FHCUP 1.00 1.02 99110-L5000 ', ], (Ecu.eps, 0x7d4, None): [ + b'\xf1\x00DN8 MDPS C 1.00 1.01 56310-L5000 4DNHC101', + b'\xf1\x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102', + b'\xf1\x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102', + b'\xf1\x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103', b'\xf1\x00DN8 MDPS C 1.00 1.03 56310L5450\x00 4DNHC104', - b'\xf1\x8756310-L5450\xf1\x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102', - b'\xf1\x8756310-L5450\xf1\x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103', - b'\xf1\x8756310-L5500\xf1\x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102', - b'\xf1\x8756310L5450\x00\xf1\x00DN8 MDPS C 1.00 1.03 56310L5450\x00 4DNHC104', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00DN8HMFC AT KOR LHD 1.00 1.03 99211-L1000 190705', b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.04 99211-L1000 191016', b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.05 99211-L1000 201109', b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.06 99211-L1000 210325', b'\xf1\x00DN8HMFC AT USA LHD 1.00 1.07 99211-L1000 211223', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x00PSBG2323 E09\x00\x00\x00\x00\x00\x00\x00TDN2H20SA5\x97R\x88\x9e', - b'\xf1\x00PSBG2333 E14\x00\x00\x00\x00\x00\x00\x00TDN2H20SA6N\xc2\xeeW', - b'\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TDN2H20SA7\x1a3\xf9\xab', - b'\xf1\x87959102T250\x00\x00\x00\x00\x00\xf1\x81E09\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2323 E09\x00\x00\x00\x00\x00\x00\x00TDN2H20SA5\x97R\x88\x9e', - b'\xf1\x87959102T250\x00\x00\x00\x00\x00\xf1\x81E14\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E14\x00\x00\x00\x00\x00\x00\x00TDN2H20SA6N\xc2\xeeW', - b'\xf1\x87PCU\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x81E16\x00\x00\x00\x00\x00\x00\x00\xf1\x00PSBG2333 E16\x00\x00\x00\x00\x00\x00\x00TDN2H20SA7\x1a3\xf9\xab', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x87391062J002', - b'\xf1\x87391162J012', - b'\xf1\x87391162J013', - b'\xf1\x87391162J014', - ], }, CAR.KIA_SORENTO: { (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00UMP LKAS AT KOR LHD 1.00 1.00 95740-C5550 S30', + b'\xf1\x00UMP LKAS AT USA LHD 1.00 1.00 95740-C6550 d00', b'\xf1\x00UMP LKAS AT USA LHD 1.01 1.01 95740-C6550 d01', ], (Ecu.abs, 0x7d1, None): [ + b'\xf1\x00UM ESC \x02 12 \x18\x05\x05 58910-C6300', b'\xf1\x00UM ESC \x0c 12 \x18\x05\x06 58910-C6330', + b'\xf1\x00UM ESC \x13 12 \x17\x07\x05 58910-C5320', ], (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00UM__ SCC F-CUP 1.00 1.00 96400-C5500 ', b'\xf1\x00UM__ SCC F-CUP 1.00 1.00 96400-C6500 ', ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x87LDKUAA0348164HE3\x87www\x87www\x88\x88\xa8\x88w\x88\x97xw\x88\x97x\x86o\xf8\xff\x87f\x7f\xff\x15\xe0\xf1\x81U811\x00\x00\x00\x00\x00\x00\xf1\x00bcsh8p54 U811\x00\x00\x00\x00\x00\x00TUM4G33NL3V|DG', - ], - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x81640F0051\x00\x00\x00\x00\x00\x00\x00\x00', - ], }, CAR.KIA_EV6: { (Ecu.fwdRadar, 0x7d0, None): [ @@ -1541,12 +969,15 @@ FW_VERSIONS = { b'\xf1\x00CV1 MFC AT USA LHD 1.00 1.06 99210-CV000 220328', ], }, - CAR.IONIQ_5: { + CAR.HYUNDAI_IONIQ_5: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00NE1_ RDR ----- 1.00 1.00 99110-GI000 ', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00NE1 MFC AT CAN LHD 1.00 1.05 99211-GI010 220614', + b'\xf1\x00NE1 MFC AT EUR LHD 1.00 1.01 99211-GI010 211007', b'\xf1\x00NE1 MFC AT EUR LHD 1.00 1.06 99211-GI000 210813', + b'\xf1\x00NE1 MFC AT EUR LHD 1.00 1.06 99211-GI010 230110', b'\xf1\x00NE1 MFC AT EUR RHD 1.00 1.01 99211-GI010 211007', b'\xf1\x00NE1 MFC AT EUR RHD 1.00 1.02 99211-GI010 211206', b'\xf1\x00NE1 MFC AT KOR LHD 1.00 1.00 99211-GI020 230719', @@ -1559,17 +990,19 @@ FW_VERSIONS = { b'\xf1\x00NE1 MFC AT USA LHD 1.00 1.06 99211-GI010 230110', ], }, - CAR.IONIQ_6: { + CAR.HYUNDAI_IONIQ_6: { (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00CE__ RDR ----- 1.00 1.01 99110-KL000 ', ], (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00CE MFC AT CAN LHD 1.00 1.04 99211-KL000 221213', b'\xf1\x00CE MFC AT EUR LHD 1.00 1.03 99211-KL000 221011', b'\xf1\x00CE MFC AT USA LHD 1.00 1.04 99211-KL000 221213', ], }, - CAR.TUCSON_4TH_GEN: { + CAR.HYUNDAI_TUCSON_4TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00NX4 FR_CMR AT CAN LHD 1.00 1.01 99211-N9100 14A', b'\xf1\x00NX4 FR_CMR AT EUR LHD 1.00 1.00 99211-N9220 14K', b'\xf1\x00NX4 FR_CMR AT EUR LHD 1.00 2.02 99211-N9000 14E', b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-N9210 14G', @@ -1587,10 +1020,11 @@ FW_VERSIONS = { b'\xf1\x00NX4__ 1.01 1.00 99110-N9100 ', ], }, - CAR.SANTA_CRUZ_1ST_GEN: { + CAR.HYUNDAI_SANTA_CRUZ_1ST_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-CW000 14M', b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-CW010 14X', + b'\xf1\x00NX4 FR_CMR AT USA LHD 1.00 1.00 99211-CW020 14Z', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00NX4__ 1.00 1.00 99110-K5000 ', @@ -1604,9 +1038,11 @@ FW_VERSIONS = { b'\xf1\x00NQ5 FR_CMR AT USA LHD 1.00 1.00 99211-P1030 662', b'\xf1\x00NQ5 FR_CMR AT USA LHD 1.00 1.00 99211-P1040 663', b'\xf1\x00NQ5 FR_CMR AT USA LHD 1.00 1.00 99211-P1060 665', + b'\xf1\x00NQ5 FR_CMR AT USA LHD 1.00 1.00 99211-P1070 690', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00NQ5__ 1.00 1.02 99110-P1000 ', + b'\xf1\x00NQ5__ 1.00 1.03 99110-CH000 ', b'\xf1\x00NQ5__ 1.00 1.03 99110-P1000 ', b'\xf1\x00NQ5__ 1.01 1.03 99110-CH000 ', b'\xf1\x00NQ5__ 1.01 1.03 99110-P1000 ', @@ -1679,13 +1115,16 @@ FW_VERSIONS = { }, CAR.KIA_CARNIVAL_4TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ + b'\xf1\x00KA4 MFC AT EUR LHD 1.00 1.06 99210-R0000 220221', b'\xf1\x00KA4 MFC AT KOR LHD 1.00 1.06 99210-R0000 220221', b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.00 99210-R0100 230105', + b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.01 99210-R0100 230710', b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.05 99210-R0000 201221', b'\xf1\x00KA4 MFC AT USA LHD 1.00 1.06 99210-R0000 220221', b'\xf1\x00KA4CMFC AT CHN LHD 1.00 1.01 99211-I4000 210525', ], (Ecu.fwdRadar, 0x7d0, None): [ + b'\xf1\x00KA4_ SCC F-CUP 1.00 1.03 99110-R0000 ', b'\xf1\x00KA4_ SCC FHCUP 1.00 1.00 99110-R0100 ', b'\xf1\x00KA4_ SCC FHCUP 1.00 1.03 99110-R0000 ', b'\xf1\x00KA4c SCC FHCUP 1.00 1.01 99110-I4000 ', @@ -1694,12 +1133,13 @@ FW_VERSIONS = { CAR.KIA_K8_HEV_1ST_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00GL3HMFC AT KOR LHD 1.00 1.03 99211-L8000 210907', + b'\xf1\x00GL3HMFC AT KOR LHD 1.00 1.04 99211-L8000 230207', ], (Ecu.fwdRadar, 0x7d0, None): [ b'\xf1\x00GL3_ RDR ----- 1.00 1.02 99110-L8000 ', ], }, - CAR.STARIA_4TH_GEN: { + CAR.HYUNDAI_STARIA_4TH_GEN: { (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00US4 MFC AT KOR LHD 1.00 1.06 99211-CG000 230524', ], @@ -1723,7 +1163,7 @@ FW_VERSIONS = { b'\xf1\x81606G2051\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.KONA_NON_SCC: { + CAR.HYUNDAI_KONA_NON_SCC: { (Ecu.abs, 0x7d1, None): [ b'\xf1\x816V5RAJ00040.ELF\xf1\x00\x00\x00\x00\x00\x00\x00', ], @@ -1796,7 +1236,7 @@ FW_VERSIONS = { b'\xf1\x006V2B0_C2\x00\x006V2D4051\x00\x00CSP2N20KL1\x00\x00\x00\x00', ], }, - CAR.ELANTRA_2022_NON_SCC: { + CAR.HYUNDAI_ELANTRA_2022_NON_SCC: { (Ecu.eps, 0x7d4, None): [ b'\xf1\x8756310AA030\x00\xf1\x00CN7 MDPS C 1.00 1.06 56310AA030\x00 4CNDC106', ], @@ -1813,7 +1253,7 @@ FW_VERSIONS = { b'\xf1\x870\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf1\x82CNDWD0ANF3XCSG8A', ], }, - CAR.BAYON_1ST_GEN_NON_SCC: { + CAR.HYUNDAI_BAYON_1ST_GEN_NON_SCC: { # TODO: Check working route for more FW (Ecu.fwdCamera, 0x7c4, None): [ b'\xf1\x00BC3 LKA AT EUR LHD 1.00 1.01 99211-Q0100 261' diff --git a/selfdrive/car/hyundai/hyundaican.py b/selfdrive/car/hyundai/hyundaican.py index 2a624d6099..bcfe88f484 100644 --- a/selfdrive/car/hyundai/hyundaican.py +++ b/selfdrive/car/hyundai/hyundaican.py @@ -1,9 +1,9 @@ import crcmod -from openpilot.selfdrive.car.hyundai.values import CAR, CHECKSUM, CAMERA_SCC_CAR +from openpilot.selfdrive.car.hyundai.values import CAR, HyundaiFlags hyundai_checksum = crcmod.mkCrcFun(0x11D, initCrc=0xFD, rev=False, xorOut=0xdf) -def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, +def create_lkas11(packer, frame, CP, apply_steer, steer_req, torque_fault, lkas11, sys_warning, sys_state, enabled, left_lane, right_lane, left_lane_depart, right_lane_depart, @@ -34,13 +34,14 @@ def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, values["CF_Lkas_ToiFlt"] = torque_fault # seems to allow actuation on CR_Lkas_StrToqReq values["CF_Lkas_MsgCount"] = frame % 0x10 - if car_fingerprint in (CAR.SONATA, CAR.PALISADE, CAR.KIA_NIRO_EV, CAR.KIA_NIRO_HEV_2021, CAR.SANTA_FE, - CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV, CAR.KIA_SELTOS, CAR.ELANTRA_2021, CAR.GENESIS_G70_2020, - CAR.ELANTRA_HEV_2021, CAR.SONATA_HYBRID, CAR.KONA_EV, CAR.KONA_HEV, CAR.KONA_EV_2022, - CAR.SANTA_FE_2022, CAR.KIA_K5_2021, CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022, - CAR.SANTA_FE_PHEV_2022, CAR.KIA_STINGER_2022, CAR.KIA_K5_HEV_2020, CAR.KIA_CEED, - CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN, CAR.CUSTIN_1ST_GEN, CAR.ELANTRA_2022_NON_SCC, - CAR.GENESIS_G70_2021_NON_SCC, CAR.KIA_SELTOS_2023_NON_SCC, CAR.BAYON_1ST_GEN_NON_SCC): + if CP.carFingerprint in (CAR.HYUNDAI_SONATA, CAR.HYUNDAI_PALISADE, CAR.KIA_NIRO_EV, CAR.KIA_NIRO_HEV_2021, CAR.HYUNDAI_SANTA_FE, + CAR.HYUNDAI_IONIQ_EV_2020, CAR.HYUNDAI_IONIQ_PHEV, CAR.KIA_SELTOS, CAR.HYUNDAI_ELANTRA_2021, CAR.GENESIS_G70_2020, + CAR.HYUNDAI_ELANTRA_HEV_2021, CAR.HYUNDAI_SONATA_HYBRID, CAR.HYUNDAI_KONA_EV, CAR.HYUNDAI_KONA_HEV, CAR.HYUNDAI_KONA_EV_2022, + CAR.HYUNDAI_SANTA_FE_2022, CAR.KIA_K5_2021, CAR.HYUNDAI_IONIQ_HEV_2022, CAR.HYUNDAI_SANTA_FE_HEV_2022, + CAR.HYUNDAI_SANTA_FE_PHEV_2022, CAR.KIA_STINGER_2022, CAR.KIA_K5_HEV_2020, CAR.KIA_CEED, + CAR.HYUNDAI_AZERA_6TH_GEN, CAR.HYUNDAI_AZERA_HEV_6TH_GEN, CAR.HYUNDAI_CUSTIN_1ST_GEN, + CAR.HYUNDAI_ELANTRA_2022_NON_SCC, CAR.GENESIS_G70_2021_NON_SCC, CAR.KIA_SELTOS_2023_NON_SCC, + CAR.HYUNDAI_BAYON_1ST_GEN_NON_SCC): values["CF_Lkas_LdwsActivemode"] = int(left_lane) + (int(right_lane) << 1) values["CF_Lkas_LdwsOpt_USM"] = 2 @@ -60,7 +61,7 @@ def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, values["CF_Lkas_SysWarning"] = 4 if sys_warning else 0 # Likely cars lacking the ability to show individual lane lines in the dash - elif car_fingerprint in (CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL): + elif CP.carFingerprint in (CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL): # SysWarning 4 = keep hands on wheel + beep values["CF_Lkas_SysWarning"] = 4 if sys_warning else 0 @@ -75,18 +76,18 @@ def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, values["CF_Lkas_LdwsActivemode"] = 0 values["CF_Lkas_FcwOpt_USM"] = 0 - elif car_fingerprint == CAR.HYUNDAI_GENESIS: + elif CP.carFingerprint == CAR.HYUNDAI_GENESIS: # This field is actually LdwsActivemode # Genesis and Optima fault when forwarding while engaged values["CF_Lkas_LdwsActivemode"] = 2 dat = packer.make_can_msg("LKAS11", 0, values)[2] - if car_fingerprint in CHECKSUM["crc8"]: + if CP.flags & HyundaiFlags.CHECKSUM_CRC8: # CRC Checksum as seen on 2019 Hyundai Santa Fe dat = dat[:6] + dat[7:8] checksum = hyundai_checksum(dat) - elif car_fingerprint in CHECKSUM["6B"]: + elif CP.flags & HyundaiFlags.CHECKSUM_6B: # Checksum of first 6 Bytes, as seen on 2018 Kia Sorento checksum = sum(dat[:6]) % 256 else: @@ -98,7 +99,7 @@ def create_lkas11(packer, frame, car_fingerprint, apply_steer, steer_req, return packer.make_can_msg("LKAS11", 0, values) -def create_clu11(packer, frame, clu11, button, car_fingerprint): +def create_clu11(packer, frame, clu11, button, CP): values = {s: clu11[s] for s in [ "CF_Clu_CruiseSwState", "CF_Clu_CruiseSwMain", @@ -116,7 +117,7 @@ def create_clu11(packer, frame, clu11, button, car_fingerprint): values["CF_Clu_CruiseSwState"] = button values["CF_Clu_AliveCnt1"] = frame % 0x10 # send buttons to camera on camera-scc based cars - bus = 2 if car_fingerprint in CAMERA_SCC_CAR else 0 + bus = 2 if CP.flags & HyundaiFlags.CAMERA_SCC else 0 return packer.make_can_msg("CLU11", bus, values) @@ -129,13 +130,13 @@ def create_lfahda_mfc(packer, enabled, lat_active, lateral_paused, blinking_icon } return packer.make_can_msg("LFAHDA_MFC", 0, values) -def create_acc_commands(packer, enabled, accel, upper_jerk, idx, lead_distance, set_speed, stopping, long_override, use_fca, - main_enabled, CS, escc, car_fingerprint): +def create_acc_commands(packer, enabled, accel, upper_jerk, idx, hud_control, set_speed, stopping, long_override, use_fca, + CS, escc, CP, lead_distance): commands = [] scc11_values = { - "MainMode_ACC": 1 if main_enabled else 0, - "TauGapSet": CS.gac_tr_cluster, + "MainMode_ACC": 1 if CS.mainEnabled else 0, + "TauGapSet": hud_control.leadDistanceBars, "VSetDis": set_speed if enabled else 0, "AliveCounterACC": idx % 0x10, "ObjValid": 1, # close lead makes controls tighter @@ -176,13 +177,13 @@ def create_acc_commands(packer, enabled, accel, upper_jerk, idx, lead_distance, "JerkUpperLimit": upper_jerk, # stock usually is 1.0 but sometimes uses higher values "JerkLowerLimit": 5.0, # stock usually is 0.5 but sometimes uses higher values "ACCMode": 2 if enabled and long_override else 1 if enabled else 4, # stock will always be 4 instead of 0 after first disengage - "ObjGap": get_object_gap(lead_distance) # 5: >30, m, 4: 25-30 m, 3: 20-25 m, 2: < 20 m, 0: no lead + "ObjGap": get_object_gap(lead_distance), # 5: >30, m, 4: 25-30 m, 3: 20-25 m, 2: < 20 m, 0: no lead } commands.append(packer.make_can_msg("SCC14", 0, scc14_values)) # Only send FCA11 on cars where it exists on the bus if use_fca and not escc: - if car_fingerprint in CAMERA_SCC_CAR: + if CP.flags & HyundaiFlags.CAMERA_SCC: fca11_values = CS.fca11 fca11_values["PAINT1_Status"] = 1 fca11_values["FCA_DrvSetStatus"] = 1 @@ -202,7 +203,7 @@ def create_acc_commands(packer, enabled, accel, upper_jerk, idx, lead_distance, return commands -def create_acc_opt(packer, escc, CS, car_fingerprint): +def create_acc_opt(packer, escc, CS, CP): commands = [] scc13_values = { @@ -214,7 +215,7 @@ def create_acc_opt(packer, escc, CS, car_fingerprint): if not escc: # TODO: this needs to be detected and conditionally sent on unsupported long cars - if car_fingerprint in CAMERA_SCC_CAR: + if CP.flags & HyundaiFlags.CAMERA_SCC: fca12_values = CS.fca12 fca12_values["FCA_DrvSetState"] = 2 fca12_values["FCA_USM"] = 1 # AEB disabled, until a route with AEB or FCW trigger is verified diff --git a/selfdrive/car/hyundai/hyundaicanfd.py b/selfdrive/car/hyundai/hyundaicanfd.py index 2489790085..8225166bfa 100644 --- a/selfdrive/car/hyundai/hyundaicanfd.py +++ b/selfdrive/car/hyundai/hyundaicanfd.py @@ -121,7 +121,7 @@ def create_lfahda_cluster(packer, CAN, enabled, lat_active, lateral_paused, blin return packer.make_can_msg("LFAHDA_CLUSTER", CAN.ECAN, values) -def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_override, set_speed, gac_tr_cluster): +def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_override, set_speed, hud_control): jerk = 5 jn = jerk / 50 if not enabled or gas_override: @@ -146,7 +146,7 @@ def create_acc_control(packer, CAN, enabled, accel_last, accel, stopping, gas_ov "SET_ME_2": 0x4, "SET_ME_3": 0x3, "SET_ME_TMP_64": 0x64, - "DISTANCE_SETTING": gac_tr_cluster, + "DISTANCE_SETTING": hud_control.leadDistanceBars, } return packer.make_can_msg("SCC_CONTROL", CAN.ECAN, values) diff --git a/selfdrive/car/hyundai/interface.py b/selfdrive/car/hyundai/interface.py index d899ac878a..d06cdbd209 100644 --- a/selfdrive/car/hyundai/interface.py +++ b/selfdrive/car/hyundai/interface.py @@ -1,6 +1,5 @@ from cereal import car from panda import Panda -from openpilot.common.conversions import Conversions as CV from openpilot.common.params import Params from openpilot.selfdrive.car.hyundai.enable_radar_tracks import enable_radar_tracks from openpilot.selfdrive.car.hyundai.hyundaicanfd import CanBus @@ -88,203 +87,10 @@ class CarInterface(CarInterfaceBase): ret.steerLimitTimer = 0.4 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - if candidate in (CAR.AZERA_6TH_GEN, CAR.AZERA_HEV_6TH_GEN): - ret.mass = 1600. if candidate == CAR.AZERA_6TH_GEN else 1675. # ICE is ~average of 2.5L and 3.5L - ret.wheelbase = 2.885 - ret.steerRatio = 14.5 - elif candidate in (CAR.SANTA_FE, CAR.SANTA_FE_2022, CAR.SANTA_FE_HEV_2022, CAR.SANTA_FE_PHEV_2022): - ret.mass = 3982. * CV.LB_TO_KG - ret.wheelbase = 2.766 - # Values from optimizer - ret.steerRatio = 16.55 # 13.8 is spec end-to-end - ret.tireStiffnessFactor = 0.82 - if candidate in (CAR.SANTA_FE_2022, CAR.SANTA_FE_HEV_2022, CAR.SANTA_FE_PHEV_2022): - if any(fw.ecu == "fwdRadar" and fw.fwVersion is not None for fw in car_fw): - ret.radarUnavailable = False - ret.spFlags |= HyundaiFlagsSP.SP_RADAR_TRACKS.value - elif candidate in (CAR.SONATA, CAR.SONATA_HYBRID): - ret.mass = 1513. - ret.wheelbase = 2.84 - ret.steerRatio = 13.27 * 1.15 # 15% higher at the center seems reasonable - ret.tireStiffnessFactor = 0.65 - elif candidate == CAR.SONATA_LF: - ret.mass = 1536. - ret.wheelbase = 2.804 - ret.steerRatio = 13.27 * 1.15 # 15% higher at the center seems reasonable - elif candidate == CAR.PALISADE: - ret.mass = 1999. - ret.wheelbase = 2.90 - ret.steerRatio = 15.6 * 1.15 - ret.tireStiffnessFactor = 0.63 - elif candidate == CAR.BAYON_1ST_GEN_NON_SCC: - ret.mass = 1150. - ret.wheelbase = 2.58 - ret.steerRatio = 13.27 * 1.15 # Variable steering ratio? https://www.hyundai.news/newsroom/dam/eu/uk/20210302_bayon_technical_data/hyundai-reveals-all-new_bayon-technical-data.pdf - elif candidate in (CAR.ELANTRA, CAR.ELANTRA_GT_I30): - ret.mass = 1275. - ret.wheelbase = 2.7 - ret.steerRatio = 15.4 # 14 is Stock | Settled Params Learner values are steerRatio: 15.401566348670535 - ret.tireStiffnessFactor = 0.385 # stiffnessFactor settled on 1.0081302973865127 - ret.minSteerSpeed = 32 * CV.MPH_TO_MS - elif candidate in (CAR.ELANTRA_2021, CAR.ELANTRA_2022_NON_SCC): - ret.mass = 2800. * CV.LB_TO_KG - ret.wheelbase = 2.72 - ret.steerRatio = 12.9 - ret.tireStiffnessFactor = 0.65 - elif candidate == CAR.ELANTRA_HEV_2021: - ret.mass = 3017. * CV.LB_TO_KG - ret.wheelbase = 2.72 - ret.steerRatio = 12.9 - ret.tireStiffnessFactor = 0.65 - elif candidate == CAR.HYUNDAI_GENESIS: - ret.mass = 2060. - ret.wheelbase = 3.01 - ret.steerRatio = 16.5 - ret.minSteerSpeed = 60 * CV.KPH_TO_MS - elif candidate in (CAR.KONA, CAR.KONA_EV, CAR.KONA_HEV, CAR.KONA_EV_2022, CAR.KONA_EV_2ND_GEN, CAR.KONA_NON_SCC): - ret.mass = {CAR.KONA_EV: 1685., CAR.KONA_HEV: 1425., CAR.KONA_EV_2022: 1743., CAR.KONA_EV_2ND_GEN: 1740.}.get(candidate, 1275.) - ret.wheelbase = {CAR.KONA_EV_2ND_GEN: 2.66, }.get(candidate, 2.6) - ret.steerRatio = {CAR.KONA_EV_2ND_GEN: 13.6, }.get(candidate, 13.42) # Spec - ret.tireStiffnessFactor = 0.385 - elif candidate in (CAR.IONIQ, CAR.IONIQ_EV_LTD, CAR.IONIQ_PHEV_2019, CAR.IONIQ_HEV_2022, CAR.IONIQ_EV_2020, CAR.IONIQ_PHEV): - ret.mass = 1490. # weight per hyundai site https://www.hyundaiusa.com/ioniq-electric/specifications.aspx - ret.wheelbase = 2.7 - ret.steerRatio = 13.73 # Spec - ret.tireStiffnessFactor = 0.385 - if candidate in (CAR.IONIQ, CAR.IONIQ_EV_LTD, CAR.IONIQ_PHEV_2019): - ret.minSteerSpeed = 32 * CV.MPH_TO_MS - elif candidate in (CAR.IONIQ_5, CAR.IONIQ_6): - ret.mass = 1948 - ret.wheelbase = 2.97 - ret.steerRatio = 14.26 - ret.tireStiffnessFactor = 0.65 - elif candidate == CAR.VELOSTER: - ret.mass = 2917. * CV.LB_TO_KG - ret.wheelbase = 2.80 - ret.steerRatio = 13.75 * 1.15 - ret.tireStiffnessFactor = 0.5 - elif candidate == CAR.TUCSON: - ret.mass = 3520. * CV.LB_TO_KG - ret.wheelbase = 2.67 - ret.steerRatio = 14.00 * 1.15 - ret.tireStiffnessFactor = 0.385 - elif candidate == CAR.TUCSON_4TH_GEN: - ret.mass = 1630. # average - ret.wheelbase = 2.756 - ret.steerRatio = 16. - ret.tireStiffnessFactor = 0.385 - elif candidate == CAR.SANTA_CRUZ_1ST_GEN: - ret.mass = 1870. # weight from Limited trim - the only supported trim - ret.wheelbase = 3.000 - # steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf - ret.steerRatio = 14.2 - elif candidate == CAR.CUSTIN_1ST_GEN: - ret.mass = 1690. # from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0 - ret.wheelbase = 3.055 - ret.steerRatio = 17.0 # from learner - elif candidate == CAR.STARIA_4TH_GEN: - ret.mass = 2205. - ret.wheelbase = 3.273 - ret.steerRatio = 11.94 # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf - - # Kia - elif candidate == CAR.KIA_SORENTO: - ret.mass = 1985. - ret.wheelbase = 2.78 - ret.steerRatio = 14.4 * 1.1 # 10% higher at the center seems reasonable - elif candidate in (CAR.KIA_NIRO_EV, CAR.KIA_NIRO_EV_2ND_GEN, CAR.KIA_NIRO_PHEV, CAR.KIA_NIRO_HEV_2021, CAR.KIA_NIRO_HEV_2ND_GEN, CAR.KIA_NIRO_PHEV_2022): - ret.mass = 3543. * CV.LB_TO_KG # average of all the cars - ret.wheelbase = 2.7 - ret.steerRatio = 13.6 # average of all the cars - ret.tireStiffnessFactor = 0.385 - if candidate == CAR.KIA_NIRO_PHEV: - ret.minSteerSpeed = 32 * CV.MPH_TO_MS - elif candidate in (CAR.KIA_SELTOS, CAR.KIA_SELTOS_2023_NON_SCC): - ret.mass = 1337. - ret.wheelbase = 2.63 - ret.steerRatio = 14.56 - elif candidate == CAR.KIA_SPORTAGE_5TH_GEN: - ret.mass = 1725. # weight from SX and above trims, average of FWD and AWD versions - ret.wheelbase = 2.756 - ret.steerRatio = 13.6 # steering ratio according to Kia News https://www.kiamedia.com/us/en/models/sportage/2023/specifications - elif candidate in (CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL, CAR.KIA_OPTIMA_H, CAR.KIA_OPTIMA_H_G4_FL): - ret.mass = 3558. * CV.LB_TO_KG - ret.wheelbase = 2.80 - ret.steerRatio = 13.75 - ret.tireStiffnessFactor = 0.5 - if candidate == CAR.KIA_OPTIMA_G4: - ret.minSteerSpeed = 32 * CV.MPH_TO_MS - elif candidate in (CAR.KIA_STINGER, CAR.KIA_STINGER_2022): - ret.mass = 1825. - ret.wheelbase = 2.78 - ret.steerRatio = 14.4 * 1.15 # 15% higher at the center seems reasonable - elif candidate in (CAR.KIA_FORTE, CAR. KIA_FORTE_2019_NON_SCC, CAR.KIA_FORTE_2021_NON_SCC): - ret.mass = 2878. * CV.LB_TO_KG - ret.wheelbase = 2.80 - ret.steerRatio = 13.75 - ret.tireStiffnessFactor = 0.5 - elif candidate == CAR.KIA_CEED: - ret.mass = 1450. - ret.wheelbase = 2.65 - ret.steerRatio = 13.75 - ret.tireStiffnessFactor = 0.5 - elif candidate in (CAR.KIA_K5_2021, CAR.KIA_K5_HEV_2020): - ret.mass = 3381. * CV.LB_TO_KG - ret.wheelbase = 2.85 - ret.steerRatio = 13.27 # 2021 Kia K5 Steering Ratio (all trims) - ret.tireStiffnessFactor = 0.5 - elif candidate == CAR.KIA_EV6: - ret.mass = 2055 - ret.wheelbase = 2.9 - ret.steerRatio = 16. - ret.tireStiffnessFactor = 0.65 - elif candidate in (CAR.KIA_SORENTO_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN): - ret.wheelbase = 2.81 - ret.steerRatio = 13.5 # average of the platforms - if candidate == CAR.KIA_SORENTO_4TH_GEN: - ret.mass = 3957 * CV.LB_TO_KG - else: - ret.mass = 4396 * CV.LB_TO_KG - elif candidate == CAR.KIA_CARNIVAL_4TH_GEN: - ret.mass = 2087. - ret.wheelbase = 3.09 - ret.steerRatio = 14.23 - elif candidate == CAR.KIA_K8_HEV_1ST_GEN: - ret.mass = 1630. # https://carprices.ae/brands/kia/2023/k8/1.6-turbo-hybrid - ret.wheelbase = 2.895 - ret.steerRatio = 13.27 # guesstimate from K5 platform - - # Genesis - elif candidate == CAR.GENESIS_GV60_EV_1ST_GEN: - ret.mass = 2205 - ret.wheelbase = 2.9 - # https://www.motor1.com/reviews/586376/2023-genesis-gv60-first-drive/#:~:text=Relative%20to%20the%20related%20Ioniq,5%2FEV6%27s%2014.3%3A1. - ret.steerRatio = 12.6 - elif candidate == CAR.GENESIS_G70: - ret.steerActuatorDelay = 0.1 - ret.mass = 1640.0 - ret.wheelbase = 2.84 - ret.steerRatio = 13.56 - elif candidate in (CAR.GENESIS_G70_2020, CAR.GENESIS_G70_2021_NON_SCC): - ret.mass = 3673.0 * CV.LB_TO_KG - ret.wheelbase = 2.83 - ret.steerRatio = 12.9 - elif candidate == CAR.GENESIS_GV70_1ST_GEN: - ret.mass = 1950. - ret.wheelbase = 2.87 - ret.steerRatio = 14.6 - elif candidate == CAR.GENESIS_G80: - ret.mass = 2060. - ret.wheelbase = 3.01 - ret.steerRatio = 16.5 - elif candidate == CAR.GENESIS_G90: - ret.mass = 2200. - ret.wheelbase = 3.15 - ret.steerRatio = 12.069 - elif candidate == CAR.GENESIS_GV80: - ret.mass = 2258. - ret.wheelbase = 2.95 - ret.steerRatio = 14.14 + if candidate in (CAR.HYUNDAI_SANTA_FE_2022, CAR.HYUNDAI_SANTA_FE_HEV_2022, CAR.HYUNDAI_SANTA_FE_PHEV_2022): + if any(fw.ecu == "fwdRadar" and fw.fwVersion is not None for fw in car_fw): + ret.radarUnavailable = False + ret.spFlags |= HyundaiFlagsSP.SP_RADAR_TRACKS.value # *** longitudinal control *** if candidate in CANFD_CAR: @@ -360,7 +166,7 @@ class CarInterface(CarInterfaceBase): elif ret.flags & HyundaiFlags.EV: ret.safetyConfigs[-1].safetyParam |= Panda.FLAG_HYUNDAI_EV_GAS - if candidate in (CAR.KONA, CAR.KONA_EV, CAR.KONA_HEV, CAR.KONA_EV_2022, CAR.KONA_NON_SCC): + if candidate in (CAR.HYUNDAI_KONA, CAR.HYUNDAI_KONA_EV, CAR.HYUNDAI_KONA_HEV, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_NON_SCC): ret.flags |= HyundaiFlags.ALT_LIMITS.value ret.safetyConfigs[-1].safetyParam |= Panda.FLAG_HYUNDAI_ALT_LIMITS @@ -396,12 +202,12 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() buttonEvents = create_button_events(self.CS.cruise_buttons[-1], self.CS.prev_cruise_buttons, BUTTONS_DICT) - self.CS.accEnabled, buttonEvents = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - buttonEvents, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, + buttonEvents, c.vCruise) self.CS.mads_enabled = False if not self.mads_main_toggle else self.CS.mads_enabled @@ -419,7 +225,6 @@ class CarInterface(CarInterfaceBase): if self.CS.prev_lfa_enabled != 1 and self.CS.lfa_enabled == 1: self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, (self.CS.cruise_buttons[-1] == 3), 1, 3, 4, "-") else: self.CS.madsEnabled = False @@ -434,7 +239,7 @@ class CarInterface(CarInterfaceBase): self.CS.madsEnabled, self.CS.accEnabled = self.get_sp_cancel_cruise_state(self.CS.madsEnabled) ret.cruiseState.enabled = False if self.CP.pcmCruise else self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=(self.CS.cruise_buttons[-1] == 3)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: @@ -472,6 +277,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/hyundai/tests/test_hyundai.py b/selfdrive/car/hyundai/tests/test_hyundai.py index c7100d03f0..0753b372e1 100755 --- a/selfdrive/car/hyundai/tests/test_hyundai.py +++ b/selfdrive/car/hyundai/tests/test_hyundai.py @@ -18,24 +18,26 @@ ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} NO_DATES_PLATFORMS = { # CAN FD CAR.KIA_SPORTAGE_5TH_GEN, - CAR.SANTA_CRUZ_1ST_GEN, - CAR.TUCSON_4TH_GEN, + CAR.HYUNDAI_SANTA_CRUZ_1ST_GEN, + CAR.HYUNDAI_TUCSON_4TH_GEN, # CAN - CAR.ELANTRA, - CAR.ELANTRA_GT_I30, + CAR.HYUNDAI_ELANTRA, + CAR.HYUNDAI_ELANTRA_GT_I30, CAR.KIA_CEED, CAR.KIA_FORTE, CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL, CAR.KIA_SORENTO, - CAR.KONA, - CAR.KONA_EV, - CAR.KONA_EV_2022, - CAR.KONA_HEV, - CAR.SONATA_LF, - CAR.VELOSTER, + CAR.HYUNDAI_KONA, + CAR.HYUNDAI_KONA_EV, + CAR.HYUNDAI_KONA_EV_2022, + CAR.HYUNDAI_KONA_HEV, + CAR.HYUNDAI_SONATA_LF, + CAR.HYUNDAI_VELOSTER, } +CANFD_EXPECTED_ECUS = {Ecu.fwdCamera, Ecu.fwdRadar} + class TestHyundaiFingerprint(unittest.TestCase): def test_can_features(self): @@ -51,23 +53,21 @@ class TestHyundaiFingerprint(unittest.TestCase): self.assertEqual(HYBRID_CAR & EV_CAR, set(), "Shared cars between hybrid and EV") self.assertEqual(CANFD_CAR & HYBRID_CAR, set(), "Hard coding CAN FD cars as hybrid is no longer supported") - def test_auxiliary_request_ecu_whitelist(self): - # Asserts only auxiliary Ecus can exist in database for CAN-FD cars - whitelisted_ecus = {ecu for r in FW_QUERY_CONFIG.requests for ecu in r.whitelist_ecus if r.auxiliary} - + def test_canfd_ecu_whitelist(self): + # Asserts only expected Ecus can exist in database for CAN-FD cars for car_model in CANFD_CAR: ecus = {fw[0] for fw in FW_VERSIONS[car_model].keys()} - ecus_not_in_whitelist = ecus - whitelisted_ecus + ecus_not_in_whitelist = ecus - CANFD_EXPECTED_ECUS ecu_strings = ", ".join([f"Ecu.{ECU_NAME[ecu]}" for ecu in ecus_not_in_whitelist]) self.assertEqual(len(ecus_not_in_whitelist), 0, - f"{car_model}: Car model has ECUs not in auxiliary request whitelists: {ecu_strings}") + f"{car_model}: Car model has unexpected ECUs: {ecu_strings}") def test_blacklisted_parts(self): # Asserts no ECUs known to be shared across platforms exist in the database. # Tucson having Santa Cruz camera and EPS for example for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model.value): - if car_model == CAR.SANTA_CRUZ_1ST_GEN: + if car_model == CAR.HYUNDAI_SANTA_CRUZ_1ST_GEN: raise unittest.SkipTest("Skip checking Santa Cruz for its parts") for code, _ in get_platform_codes(ecus[(Ecu.fwdCamera, 0x7c4, None)]): @@ -85,10 +85,8 @@ class TestHyundaiFingerprint(unittest.TestCase): for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model.value): for ecu, fws in ecus.items(): - # TODO: enable for Ecu.fwdRadar, Ecu.abs, Ecu.eps, Ecu.transmission - if ecu[0] in (Ecu.fwdCamera,): - self.assertTrue(all(fw.startswith(expected_fw_prefix) for fw in fws), - f"FW from unexpected request in database: {(ecu, fws)}") + self.assertTrue(all(fw.startswith(expected_fw_prefix) for fw in fws), + f"FW from unexpected request in database: {(ecu, fws)}") @settings(max_examples=100) @given(data=st.data()) @@ -98,12 +96,29 @@ class TestHyundaiFingerprint(unittest.TestCase): fws = data.draw(fw_strategy) get_platform_codes(fws) + def test_expected_platform_codes(self): + # Ensures we don't accidentally add multiple platform codes for a car unless it is intentional + for car_model, ecus in FW_VERSIONS.items(): + with self.subTest(car_model=car_model.value): + for ecu, fws in ecus.items(): + if ecu[0] not in PLATFORM_CODE_ECUS: + continue + + # Third and fourth character are usually EV/hybrid identifiers + codes = {code.split(b"-")[0][:2] for code, _ in get_platform_codes(fws)} + if car_model == CAR.HYUNDAI_PALISADE: + self.assertEqual(codes, {b"LX", b"ON"}, f"Car has unexpected platform codes: {car_model} {codes}") + elif car_model == CAR.HYUNDAI_KONA_EV and ecu[0] == Ecu.fwdCamera: + self.assertEqual(codes, {b"OE", b"OS"}, f"Car has unexpected platform codes: {car_model} {codes}") + else: + self.assertEqual(len(codes), 1, f"Car has multiple platform codes: {car_model} {codes}") + # Tests for platform codes, part numbers, and FW dates which Hyundai will use to fuzzy # fingerprint in the absence of full FW matches: def test_platform_code_ecus_available(self): # TODO: add queries for these non-CAN FD cars to get EPS no_eps_platforms = CANFD_CAR | {CAR.KIA_SORENTO, CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL, CAR.KIA_OPTIMA_H, - CAR.KIA_OPTIMA_H_G4_FL, CAR.SONATA_LF, CAR.TUCSON, CAR.GENESIS_G90, CAR.GENESIS_G80, CAR.ELANTRA} + CAR.KIA_OPTIMA_H_G4_FL, CAR.HYUNDAI_SONATA_LF, CAR.HYUNDAI_TUCSON, CAR.GENESIS_G90, CAR.GENESIS_G80, CAR.HYUNDAI_ELANTRA} # Asserts ECU keys essential for fuzzy fingerprinting are available on all platforms for car_model, ecus in FW_VERSIONS.items(): @@ -194,7 +209,7 @@ class TestHyundaiFingerprint(unittest.TestCase): "subAddress": 0 if sub_addr is None else sub_addr}) CP = car.CarParams.new_message(carFw=car_fw) - matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), FW_VERSIONS) + matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), CP.carVin, FW_VERSIONS) if len(matches) == 1: self.assertEqual(list(matches)[0], platform) else: diff --git a/selfdrive/car/hyundai/values.py b/selfdrive/car/hyundai/values.py index 54669f3ae9..fd40109042 100644 --- a/selfdrive/car/hyundai/values.py +++ b/selfdrive/car/hyundai/values.py @@ -1,12 +1,12 @@ import re -from dataclasses import dataclass -from enum import Enum, IntFlag, StrEnum +from dataclasses import dataclass, field +from enum import Enum, IntFlag from cereal import car from panda.python import uds from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car import dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 Ecu = car.CarParams.Ecu @@ -35,8 +35,8 @@ class CarControllerParams: # To determine the limit for your car, find the maximum value that the stock LKAS will request. # If the max stock LKAS request is <384, add your car to this list. - elif CP.carFingerprint in (CAR.GENESIS_G80, CAR.GENESIS_G90, CAR.ELANTRA, CAR.ELANTRA_GT_I30, CAR.IONIQ, - CAR.IONIQ_EV_LTD, CAR.SANTA_FE_PHEV_2022, CAR.SONATA_LF, CAR.KIA_FORTE, CAR.KIA_NIRO_PHEV, + elif CP.carFingerprint in (CAR.GENESIS_G80, CAR.GENESIS_G90, CAR.HYUNDAI_ELANTRA, CAR.HYUNDAI_ELANTRA_GT_I30, CAR.HYUNDAI_IONIQ, + CAR.HYUNDAI_IONIQ_EV_LTD, CAR.HYUNDAI_SANTA_FE_PHEV_2022, CAR.HYUNDAI_SONATA_LF, CAR.KIA_FORTE, CAR.KIA_NIRO_PHEV, CAR.KIA_OPTIMA_H, CAR.KIA_OPTIMA_H_G4_FL, CAR.KIA_SORENTO): self.STEER_MAX = 255 @@ -52,108 +52,62 @@ class CarControllerParams: class HyundaiFlags(IntFlag): + # Dynamic Flags CANFD_HDA2 = 1 CANFD_ALT_BUTTONS = 2 - CANFD_ALT_GEARS = 4 - CANFD_CAMERA_SCC = 8 + CANFD_ALT_GEARS = 2 ** 2 + CANFD_CAMERA_SCC = 2 ** 3 - ALT_LIMITS = 16 - ENABLE_BLINKERS = 32 - CANFD_ALT_GEARS_2 = 64 - SEND_LFA = 128 - USE_FCA = 256 - CANFD_HDA2_ALT_STEERING = 512 - HYBRID = 1024 - EV = 2048 + ALT_LIMITS = 2 ** 4 + ENABLE_BLINKERS = 2 ** 5 + CANFD_ALT_GEARS_2 = 2 ** 6 + SEND_LFA = 2 ** 7 + USE_FCA = 2 ** 8 + CANFD_HDA2_ALT_STEERING = 2 ** 9 + + # these cars use a different gas signal + HYBRID = 2 ** 10 + EV = 2 ** 11 + + # Static flags + + # If 0x500 is present on bus 1 it probably has a Mando radar outputting radar points. + # If no points are outputted by default it might be possible to turn it on using selfdrive/debug/hyundai_enable_radar_points.py + MANDO_RADAR = 2 ** 12 + CANFD = 2 ** 13 + + # The radar does SCC on these cars when HDA I, rather than the camera + RADAR_SCC = 2 ** 14 + CAMERA_SCC = 2 ** 15 + CHECKSUM_CRC8 = 2 ** 16 + CHECKSUM_6B = 2 ** 17 + + # these cars require a special panda safety mode due to missing counters and checksums in the messages + LEGACY = 2 ** 18 + + # these cars have not been verified to work with longitudinal yet - radar disable, sending correct messages, etc. + UNSUPPORTED_LONGITUDINAL = 2 ** 19 + + CANFD_NO_RADAR_DISABLE = 2 ** 20 + + CLUSTER_GEARS = 2 ** 21 + TCU_GEARS = 2 ** 22 + + MIN_STEER_32_MPH = 2 ** 23 class HyundaiFlagsSP(IntFlag): SP_ENHANCED_SCC = 1 SP_CAN_LFA_BTN = 2 - SP_NAV_MSG = 4 - SP_CAMERA_SCC_LEAD = 8 - SP_LKAS12 = 16 - SP_RADAR_TRACKS = 32 + SP_NAV_MSG = 2 ** 2 + SP_NON_SCC = 2 ** 3 + SP_NON_SCC_FCA = 2 ** 4 + SP_NON_SCC_RADAR_FCA = 2 ** 5 -class CAR(StrEnum): - # Hyundai - AZERA_6TH_GEN = "HYUNDAI AZERA 6TH GEN" - AZERA_HEV_6TH_GEN = "HYUNDAI AZERA HYBRID 6TH GEN" - BAYON_1ST_GEN_NON_SCC = "HYUNDAI BAYON 1ST GEN NON-SCC" - ELANTRA = "HYUNDAI ELANTRA 2017" - ELANTRA_GT_I30 = "HYUNDAI I30 N LINE 2019 & GT 2018 DCT" - ELANTRA_2021 = "HYUNDAI ELANTRA 2021" - ELANTRA_2022_NON_SCC = "HYUNDAI ELANTRA SE 2022 NON-SCC" - ELANTRA_HEV_2021 = "HYUNDAI ELANTRA HYBRID 2021" - HYUNDAI_GENESIS = "HYUNDAI GENESIS 2015-2016" - IONIQ = "HYUNDAI IONIQ HYBRID 2017-2019" - IONIQ_HEV_2022 = "HYUNDAI IONIQ HYBRID 2020-2022" - IONIQ_EV_LTD = "HYUNDAI IONIQ ELECTRIC LIMITED 2019" - IONIQ_EV_2020 = "HYUNDAI IONIQ ELECTRIC 2020" - IONIQ_PHEV_2019 = "HYUNDAI IONIQ PLUG-IN HYBRID 2019" - IONIQ_PHEV = "HYUNDAI IONIQ PHEV 2020" - KONA = "HYUNDAI KONA 2020" - KONA_NON_SCC = "HYUNDAI KONA 2019 NON-SCC" - KONA_EV = "HYUNDAI KONA ELECTRIC 2019" - KONA_EV_2022 = "HYUNDAI KONA ELECTRIC 2022" - KONA_EV_2ND_GEN = "HYUNDAI KONA ELECTRIC 2ND GEN" - KONA_HEV = "HYUNDAI KONA HYBRID 2020" - SANTA_FE = "HYUNDAI SANTA FE 2019" - SANTA_FE_2022 = "HYUNDAI SANTA FE 2022" - SANTA_FE_HEV_2022 = "HYUNDAI SANTA FE HYBRID 2022" - SANTA_FE_PHEV_2022 = "HYUNDAI SANTA FE PlUG-IN HYBRID 2022" - SONATA = "HYUNDAI SONATA 2020" - SONATA_LF = "HYUNDAI SONATA 2019" - STARIA_4TH_GEN = "HYUNDAI STARIA 4TH GEN" - TUCSON = "HYUNDAI TUCSON 2019" - PALISADE = "HYUNDAI PALISADE 2020" - VELOSTER = "HYUNDAI VELOSTER 2019" - SONATA_HYBRID = "HYUNDAI SONATA HYBRID 2021" - IONIQ_5 = "HYUNDAI IONIQ 5 2022" - IONIQ_6 = "HYUNDAI IONIQ 6 2023" - TUCSON_4TH_GEN = "HYUNDAI TUCSON 4TH GEN" - SANTA_CRUZ_1ST_GEN = "HYUNDAI SANTA CRUZ 1ST GEN" - CUSTIN_1ST_GEN = "HYUNDAI CUSTIN 1ST GEN" - - # Kia - KIA_FORTE = "KIA FORTE E 2018 & GT 2021" - KIA_FORTE_2019_NON_SCC = "KIA FORTE 2019 NON-SCC" - KIA_FORTE_2021_NON_SCC = "KIA FORTE LXS 2021 NON-SCC" - KIA_K5_2021 = "KIA K5 2021" - KIA_K5_HEV_2020 = "KIA K5 HYBRID 2020" - KIA_K8_HEV_1ST_GEN = "KIA K8 HYBRID 1ST GEN" - KIA_NIRO_EV = "KIA NIRO EV 2020" - KIA_NIRO_EV_2ND_GEN = "KIA NIRO EV 2ND GEN" - KIA_NIRO_PHEV = "KIA NIRO HYBRID 2019" - KIA_NIRO_PHEV_2022 = "KIA NIRO PLUG-IN HYBRID 2022" - KIA_NIRO_HEV_2021 = "KIA NIRO HYBRID 2021" - KIA_NIRO_HEV_2ND_GEN = "KIA NIRO HYBRID 2ND GEN" - KIA_OPTIMA_G4 = "KIA OPTIMA 4TH GEN" - KIA_OPTIMA_G4_FL = "KIA OPTIMA 4TH GEN FACELIFT" - KIA_OPTIMA_H = "KIA OPTIMA HYBRID 2017 & SPORTS 2019" - KIA_OPTIMA_H_G4_FL = "KIA OPTIMA HYBRID 4TH GEN FACELIFT" - KIA_SELTOS = "KIA SELTOS 2021" - KIA_SELTOS_2023_NON_SCC = "KIA SELTOS 2023 NON-SCC" - KIA_SPORTAGE_5TH_GEN = "KIA SPORTAGE 5TH GEN" - KIA_SORENTO = "KIA SORENTO GT LINE 2018" - KIA_SORENTO_4TH_GEN = "KIA SORENTO 4TH GEN" - KIA_SORENTO_HEV_4TH_GEN = "KIA SORENTO HYBRID 4TH GEN" - KIA_STINGER = "KIA STINGER GT2 2018" - KIA_STINGER_2022 = "KIA STINGER 2022" - KIA_CEED = "KIA CEED INTRO ED 2019" - KIA_EV6 = "KIA EV6 2022" - KIA_CARNIVAL_4TH_GEN = "KIA CARNIVAL 4TH GEN" - - # Genesis - GENESIS_GV60_EV_1ST_GEN = "GENESIS GV60 ELECTRIC 1ST GEN" - GENESIS_G70 = "GENESIS G70 2018" - GENESIS_G70_2020 = "GENESIS G70 2020" - GENESIS_G70_2021_NON_SCC = "GENESIS G70 2021 NON-SCC" - GENESIS_GV70_1ST_GEN = "GENESIS GV70 1ST GEN" - GENESIS_G80 = "GENESIS G80 2017" - GENESIS_G90 = "GENESIS G90 2017" - GENESIS_GV80 = "GENESIS GV80 2023" + SP_CAMERA_SCC_LEAD = 2 ** 6 + SP_LKAS12 = 2 ** 7 + SP_RADAR_TRACKS = 2 ** 8 class Footnote(Enum): @@ -164,173 +118,483 @@ class Footnote(Enum): @dataclass -class HyundaiCarInfo(CarInfo): +class HyundaiCarDocs(CarDocs): package: str = "Smart Cruise Control (SCC)" def init_make(self, CP: car.CarParams): - if CP.carFingerprint in CANFD_CAR: + if CP.flags & HyundaiFlags.CANFD: self.footnotes.insert(0, Footnote.CANFD) -CAR_INFO: dict[str, HyundaiCarInfo | list[HyundaiCarInfo] | None] = { - CAR.AZERA_6TH_GEN: HyundaiCarInfo("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.AZERA_HEV_6TH_GEN: [ - HyundaiCarInfo("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - ], - CAR.ELANTRA: [ - # TODO: 2017-18 could be Hyundai G - HyundaiCarInfo("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])), - HyundaiCarInfo("Hyundai Elantra 2019", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_g])), - ], - CAR.ELANTRA_GT_I30: [ - HyundaiCarInfo("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), - HyundaiCarInfo("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), - ], - CAR.ELANTRA_2021: HyundaiCarInfo("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.ELANTRA_HEV_2021: HyundaiCarInfo("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", - car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.HYUNDAI_GENESIS: [ - # TODO: check 2015 packages - HyundaiCarInfo("Hyundai Genesis 2015-16", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), - HyundaiCarInfo("Genesis G80 2017", "All", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), - ], - CAR.IONIQ: HyundaiCarInfo("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.IONIQ_HEV_2022: HyundaiCarInfo("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h])), # TODO: confirm 2020-21 harness - CAR.IONIQ_EV_LTD: HyundaiCarInfo("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.IONIQ_EV_2020: HyundaiCarInfo("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - CAR.IONIQ_PHEV_2019: HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.IONIQ_PHEV: HyundaiCarInfo("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - CAR.KONA: HyundaiCarInfo("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b])), - CAR.KONA_EV: HyundaiCarInfo("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g])), - CAR.KONA_EV_2022: HyundaiCarInfo("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o])), - CAR.KONA_HEV: HyundaiCarInfo("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i])), # TODO: check packages - # TODO: this is the 2024 US MY, not yet released - CAR.KONA_EV_2ND_GEN: HyundaiCarInfo("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", - car_parts=CarParts.common([CarHarness.hyundai_r])), - CAR.SANTA_FE: HyundaiCarInfo("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", - car_parts=CarParts.common([CarHarness.hyundai_d])), - CAR.SANTA_FE_2022: HyundaiCarInfo("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", - car_parts=CarParts.common([CarHarness.hyundai_l])), - CAR.SANTA_FE_HEV_2022: HyundaiCarInfo("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), - CAR.SANTA_FE_PHEV_2022: HyundaiCarInfo("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), - CAR.SONATA: HyundaiCarInfo("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", - car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.STARIA_4TH_GEN: HyundaiCarInfo("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.SONATA_LF: HyundaiCarInfo("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e])), - CAR.TUCSON: [ - HyundaiCarInfo("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), - HyundaiCarInfo("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), - ], - CAR.PALISADE: [ - HyundaiCarInfo("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), - HyundaiCarInfo("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - ], - CAR.VELOSTER: HyundaiCarInfo("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e])), - CAR.SONATA_HYBRID: HyundaiCarInfo("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.IONIQ_5: [ - HyundaiCarInfo("Hyundai Ioniq 5 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_q])), - HyundaiCarInfo("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), - HyundaiCarInfo("Hyundai Ioniq 5 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), - ], - CAR.IONIQ_6: [ - HyundaiCarInfo("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])), - ], - CAR.TUCSON_4TH_GEN: [ - HyundaiCarInfo("Hyundai Tucson 2022", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarInfo("Hyundai Tucson 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarInfo("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), - ], - CAR.SANTA_CRUZ_1ST_GEN: HyundaiCarInfo("Hyundai Santa Cruz 2022-23", car_parts=CarParts.common([CarHarness.hyundai_n])), - CAR.CUSTIN_1ST_GEN: HyundaiCarInfo("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), +@dataclass +class HyundaiPlatformConfig(PlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict("hyundai_kia_generic", None)) + + def init(self): + if self.flags & HyundaiFlags.MANDO_RADAR: + self.dbc_dict = dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated') + + if self.flags & HyundaiFlags.MIN_STEER_32_MPH: + self.specs = self.specs.override(minSteerSpeed=32 * CV.MPH_TO_MS) + + +@dataclass +class HyundaiCanFDPlatformConfig(PlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict("hyundai_canfd", None)) + + def init(self): + self.flags |= HyundaiFlags.CANFD + + +class CAR(Platforms): + # Hyundai + HYUNDAI_AZERA_6TH_GEN = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Azera 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], + CarSpecs(mass=1600, wheelbase=2.885, steerRatio=14.5), + ) + HYUNDAI_AZERA_HEV_6TH_GEN = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Hyundai Azera Hybrid 2019", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarDocs("Hyundai Azera Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + ], + CarSpecs(mass=1675, wheelbase=2.885, steerRatio=14.5), + flags=HyundaiFlags.HYBRID, + ) + HYUNDAI_ELANTRA = HyundaiPlatformConfig( + [ + # TODO: 2017-18 could be Hyundai G + HyundaiCarDocs("Hyundai Elantra 2017-18", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_b])), + HyundaiCarDocs("Hyundai Elantra 2019", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_g])), + ], + # steerRatio: 14 is Stock | Settled Params Learner values are steerRatio: 15.401566348670535, stiffnessFactor settled on 1.0081302973865127 + CarSpecs(mass=1275, wheelbase=2.7, steerRatio=15.4, tireStiffnessFactor=0.385), + flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH, + ) + HYUNDAI_ELANTRA_GT_I30 = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Hyundai Elantra GT 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), + HyundaiCarDocs("Hyundai i30 2017-19", car_parts=CarParts.common([CarHarness.hyundai_e])), + ], + HYUNDAI_ELANTRA.specs, + flags=HyundaiFlags.LEGACY | HyundaiFlags.CLUSTER_GEARS | HyundaiFlags.MIN_STEER_32_MPH, + ) + HYUNDAI_ELANTRA_2021 = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Elantra 2021-23", video_link="https://youtu.be/_EdYQtV52-c", car_parts=CarParts.common([CarHarness.hyundai_k]))], + CarSpecs(mass=2800 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), + flags=HyundaiFlags.CHECKSUM_CRC8, + ) + HYUNDAI_ELANTRA_HEV_2021 = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Elantra Hybrid 2021-23", video_link="https://youtu.be/_EdYQtV52-c", + car_parts=CarParts.common([CarHarness.hyundai_k]))], + CarSpecs(mass=3017 * CV.LB_TO_KG, wheelbase=2.72, steerRatio=12.9, tireStiffnessFactor=0.65), + flags=HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, + ) + HYUNDAI_GENESIS = HyundaiPlatformConfig( + [ + # TODO: check 2015 packages + HyundaiCarDocs("Hyundai Genesis 2015-16", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), + HyundaiCarDocs("Genesis G80 2017", "All", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_j])), + ], + CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5, minSteerSpeed=60 * CV.KPH_TO_MS), + flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.LEGACY, + ) + HYUNDAI_IONIQ = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Ioniq Hybrid 2017-19", car_parts=CarParts.common([CarHarness.hyundai_c]))], + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, + ) + HYUNDAI_IONIQ_HEV_2022 = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Ioniq Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_h]))], # TODO: confirm 2020-21 harness, + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, + ) + HYUNDAI_IONIQ_EV_LTD = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Ioniq Electric 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV | HyundaiFlags.LEGACY | HyundaiFlags.MIN_STEER_32_MPH, + ) + HYUNDAI_IONIQ_EV_2020 = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Ioniq Electric 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + flags=HyundaiFlags.EV, + ) + HYUNDAI_IONIQ_PHEV_2019 = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Ioniq Plug-in Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_c]))], + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + flags=HyundaiFlags.HYBRID | HyundaiFlags.MIN_STEER_32_MPH, + ) + HYUNDAI_IONIQ_PHEV = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Ioniq Plug-in Hybrid 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], + CarSpecs(mass=1490, wheelbase=2.7, steerRatio=13.73, tireStiffnessFactor=0.385), + flags=HyundaiFlags.HYBRID, + ) + HYUNDAI_KONA = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Kona 2020", car_parts=CarParts.common([CarHarness.hyundai_b]))], + CarSpecs(mass=1275, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), + flags=HyundaiFlags.CLUSTER_GEARS, + ) + HYUNDAI_KONA_EV = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Kona Electric 2018-21", car_parts=CarParts.common([CarHarness.hyundai_g]))], + CarSpecs(mass=1685, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), + flags=HyundaiFlags.EV, + ) + HYUNDAI_KONA_EV_2022 = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Kona Electric 2022-23", car_parts=CarParts.common([CarHarness.hyundai_o]))], + CarSpecs(mass=1743, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), + flags=HyundaiFlags.CAMERA_SCC | HyundaiFlags.EV, + ) + HYUNDAI_KONA_EV_2ND_GEN = HyundaiCanFDPlatformConfig( + [HyundaiCarDocs("Hyundai Kona Electric (with HDA II, Korea only) 2023", video_link="https://www.youtube.com/watch?v=U2fOCmcQ8hw", + car_parts=CarParts.common([CarHarness.hyundai_r]))], + CarSpecs(mass=1740, wheelbase=2.66, steerRatio=13.6, tireStiffnessFactor=0.385), + flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, + ) + HYUNDAI_KONA_HEV = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Kona Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_i]))], # TODO: check packages, + CarSpecs(mass=1425, wheelbase=2.6, steerRatio=13.42, tireStiffnessFactor=0.385), + flags=HyundaiFlags.HYBRID, + ) + HYUNDAI_SANTA_FE = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Santa Fe 2019-20", "All", video_link="https://youtu.be/bjDR0YjM__s", + car_parts=CarParts.common([CarHarness.hyundai_d]))], + CarSpecs(mass=3982 * CV.LB_TO_KG, wheelbase=2.766, steerRatio=16.55, tireStiffnessFactor=0.82), + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, + ) + HYUNDAI_SANTA_FE_2022 = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Santa Fe 2021-23", "All", video_link="https://youtu.be/VnHzSTygTS4", + car_parts=CarParts.common([CarHarness.hyundai_l]))], + HYUNDAI_SANTA_FE.specs, + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, + ) + HYUNDAI_SANTA_FE_HEV_2022 = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Santa Fe Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], + HYUNDAI_SANTA_FE.specs, + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, + ) + HYUNDAI_SANTA_FE_PHEV_2022 = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Santa Fe Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l]))], + HYUNDAI_SANTA_FE.specs, + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, + ) + HYUNDAI_SONATA = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Sonata 2020-23", "All", video_link="https://www.youtube.com/watch?v=ix63r9kE3Fw", + car_parts=CarParts.common([CarHarness.hyundai_a]))], + CarSpecs(mass=1513, wheelbase=2.84, steerRatio=13.27 * 1.15, tireStiffnessFactor=0.65), # 15% higher at the center seems reasonable + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, + ) + HYUNDAI_SONATA_LF = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Sonata 2018-19", car_parts=CarParts.common([CarHarness.hyundai_e]))], + CarSpecs(mass=1536, wheelbase=2.804, steerRatio=13.27 * 1.15), # 15% higher at the center seems reasonable + + flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, + ) + HYUNDAI_STARIA_4TH_GEN = HyundaiCanFDPlatformConfig( + [HyundaiCarDocs("Hyundai Staria 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], + CarSpecs(mass=2205, wheelbase=3.273, steerRatio=11.94), # https://www.hyundai.com/content/dam/hyundai/au/en/models/staria-load/premium-pip-update-2023/spec-sheet/STARIA_Load_Spec-Table_March_2023_v3.1.pdf + ) + HYUNDAI_TUCSON = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Hyundai Tucson 2021", min_enable_speed=19 * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarDocs("Hyundai Tucson Diesel 2019", car_parts=CarParts.common([CarHarness.hyundai_l])), + ], + CarSpecs(mass=3520 * CV.LB_TO_KG, wheelbase=2.67, steerRatio=16.1, tireStiffnessFactor=0.385), + flags=HyundaiFlags.TCU_GEARS, + ) + HYUNDAI_PALISADE = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Hyundai Palisade 2020-22", "All", video_link="https://youtu.be/TAnDqjF4fDY?t=456", car_parts=CarParts.common([CarHarness.hyundai_h])), + HyundaiCarDocs("Kia Telluride 2020-22", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), + ], + CarSpecs(mass=1999, wheelbase=2.9, steerRatio=15.6 * 1.15, tireStiffnessFactor=0.63), + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8, + ) + HYUNDAI_VELOSTER = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Veloster 2019-20", min_enable_speed=5. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_e]))], + CarSpecs(mass=2917 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75 * 1.15, tireStiffnessFactor=0.5), + flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS, + ) + HYUNDAI_SONATA_HYBRID = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Sonata Hybrid 2020-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], + HYUNDAI_SONATA.specs, + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, + ) + HYUNDAI_IONIQ_5 = HyundaiCanFDPlatformConfig( + [ + HyundaiCarDocs("Hyundai Ioniq 5 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_q])), + HyundaiCarDocs("Hyundai Ioniq 5 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_k])), + HyundaiCarDocs("Hyundai Ioniq 5 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), + ], + CarSpecs(mass=1948, wheelbase=2.97, steerRatio=14.26, tireStiffnessFactor=0.65), + flags=HyundaiFlags.EV, + ) + HYUNDAI_IONIQ_6 = HyundaiCanFDPlatformConfig( + [HyundaiCarDocs("Hyundai Ioniq 6 (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p]))], + HYUNDAI_IONIQ_5.specs, + flags=HyundaiFlags.EV | HyundaiFlags.CANFD_NO_RADAR_DISABLE, + ) + HYUNDAI_TUCSON_4TH_GEN = HyundaiCanFDPlatformConfig( + [ + HyundaiCarDocs("Hyundai Tucson 2022", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Hyundai Tucson 2023-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Hyundai Tucson Hybrid 2022-24", "All", car_parts=CarParts.common([CarHarness.hyundai_n])), + ], + CarSpecs(mass=1630, wheelbase=2.756, steerRatio=13.7, tireStiffnessFactor=0.385), + ) + HYUNDAI_SANTA_CRUZ_1ST_GEN = HyundaiCanFDPlatformConfig( + [HyundaiCarDocs("Hyundai Santa Cruz 2022-24", car_parts=CarParts.common([CarHarness.hyundai_n]))], + # weight from Limited trim - the only supported trim, steering ratio according to Hyundai News https://www.hyundainews.com/assets/documents/original/48035-2022SantaCruzProductGuideSpecsv2081521.pdf + CarSpecs(mass=1870, wheelbase=3, steerRatio=14.2), + ) + HYUNDAI_CUSTIN_1ST_GEN = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Custin 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], + CarSpecs(mass=1690, wheelbase=3.055, steerRatio=17), # mass: from https://www.hyundai-motor.com.tw/clicktobuy/custin#spec_0, steerRatio: from learner + flags=HyundaiFlags.CHECKSUM_CRC8, + ) # Kia - CAR.KIA_FORTE: [ - HyundaiCarInfo("Kia Forte 2019-21", car_parts=CarParts.common([CarHarness.hyundai_g])), - HyundaiCarInfo("Kia Forte 2023", car_parts=CarParts.common([CarHarness.hyundai_e])), - ], - CAR.KIA_K5_2021: HyundaiCarInfo("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_K5_HEV_2020: HyundaiCarInfo("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_K8_HEV_1ST_GEN: HyundaiCarInfo("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q])), - CAR.KIA_NIRO_EV: [ - HyundaiCarInfo("Kia Niro EV 2019", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), - HyundaiCarInfo("Kia Niro EV 2020", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_f])), - HyundaiCarInfo("Kia Niro EV 2021", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Kia Niro EV 2022", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), - ], - CAR.KIA_NIRO_EV_2ND_GEN: HyundaiCarInfo("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_NIRO_PHEV: [ - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), - ], - CAR.KIA_NIRO_PHEV_2022: [ - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2021", "All", car_parts=CarParts.common([CarHarness.hyundai_d])), - HyundaiCarInfo("Kia Niro Plug-in Hybrid 2022", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), - ], - CAR.KIA_NIRO_HEV_2021: [ - HyundaiCarInfo("Kia Niro Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), - HyundaiCarInfo("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), - ], - CAR.KIA_NIRO_HEV_2ND_GEN: HyundaiCarInfo("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_OPTIMA_G4: HyundaiCarInfo("Kia Optima 2017", "Advanced Smart Cruise Control", - car_parts=CarParts.common([CarHarness.hyundai_b])), # TODO: may support 2016, 2018 - CAR.KIA_OPTIMA_G4_FL: HyundaiCarInfo("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g])), + KIA_FORTE = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Kia Forte 2019-21", car_parts=CarParts.common([CarHarness.hyundai_g])), + HyundaiCarDocs("Kia Forte 2023", car_parts=CarParts.common([CarHarness.hyundai_e])), + ], + CarSpecs(mass=2878 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5) + ) + KIA_K5_2021 = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia K5 2021-24", car_parts=CarParts.common([CarHarness.hyundai_a]))], + CarSpecs(mass=3381 * CV.LB_TO_KG, wheelbase=2.85, steerRatio=13.27, tireStiffnessFactor=0.5), # 2021 Kia K5 Steering Ratio (all trims) + flags=HyundaiFlags.CHECKSUM_CRC8, + ) + KIA_K5_HEV_2020 = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia K5 Hybrid 2020-22", car_parts=CarParts.common([CarHarness.hyundai_a]))], + KIA_K5_2021.specs, + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.CHECKSUM_CRC8 | HyundaiFlags.HYBRID, + ) + KIA_K8_HEV_1ST_GEN = HyundaiCanFDPlatformConfig( + [HyundaiCarDocs("Kia K8 Hybrid (with HDA II) 2023", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_q]))], + # mass: https://carprices.ae/brands/kia/2023/k8/1.6-turbo-hybrid, steerRatio: guesstimate from K5 platform + CarSpecs(mass=1630, wheelbase=2.895, steerRatio=13.27) + ) + KIA_NIRO_EV = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Kia Niro EV 2019", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), + HyundaiCarDocs("Kia Niro EV 2020", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_f])), + HyundaiCarDocs("Kia Niro EV 2021", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarDocs("Kia Niro EV 2022", "All", video_link="https://www.youtube.com/watch?v=lT7zcG6ZpGo", car_parts=CarParts.common([CarHarness.hyundai_h])), + ], + CarSpecs(mass=3543 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=13.6, tireStiffnessFactor=0.385), # average of all the cars + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.EV, + ) + KIA_NIRO_EV_2ND_GEN = HyundaiCanFDPlatformConfig( + [HyundaiCarDocs("Kia Niro EV 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a]))], + KIA_NIRO_EV.specs, + flags=HyundaiFlags.EV, + ) + KIA_NIRO_PHEV = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Kia Niro Hybrid 2018", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2018-19", "All", min_enable_speed=10. * CV.MPH_TO_MS, car_parts=CarParts.common([CarHarness.hyundai_c])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2020", car_parts=CarParts.common([CarHarness.hyundai_d])), + ], + KIA_NIRO_EV.specs, + flags=HyundaiFlags.MANDO_RADAR | HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.MIN_STEER_32_MPH, + ) + KIA_NIRO_PHEV_2022 = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), + HyundaiCarDocs("Kia Niro Plug-in Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), + ], + KIA_NIRO_EV.specs, + flags=HyundaiFlags.HYBRID | HyundaiFlags.MANDO_RADAR, + ) + KIA_NIRO_HEV_2021 = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Kia Niro Hybrid 2021", car_parts=CarParts.common([CarHarness.hyundai_d])), + HyundaiCarDocs("Kia Niro Hybrid 2022", car_parts=CarParts.common([CarHarness.hyundai_f])), + ], + KIA_NIRO_EV.specs, + flags=HyundaiFlags.HYBRID, + ) + KIA_NIRO_HEV_2ND_GEN = HyundaiCanFDPlatformConfig( + [HyundaiCarDocs("Kia Niro Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_a]))], + KIA_NIRO_EV.specs, + ) + KIA_OPTIMA_G4 = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Optima 2017", "Advanced Smart Cruise Control", + car_parts=CarParts.common([CarHarness.hyundai_b]))], # TODO: may support 2016, 2018 + CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), + flags=HyundaiFlags.LEGACY | HyundaiFlags.TCU_GEARS | HyundaiFlags.MIN_STEER_32_MPH, + ) + KIA_OPTIMA_G4_FL = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Optima 2019-20", car_parts=CarParts.common([CarHarness.hyundai_g]))], + CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), + flags=HyundaiFlags.UNSUPPORTED_LONGITUDINAL | HyundaiFlags.TCU_GEARS, + ) # TODO: may support adjacent years. may have a non-zero minimum steering speed - CAR.KIA_OPTIMA_H: HyundaiCarInfo("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.KIA_OPTIMA_H_G4_FL: HyundaiCarInfo("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h])), - CAR.KIA_SELTOS: HyundaiCarInfo("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a])), - CAR.KIA_SPORTAGE_5TH_GEN: [ - HyundaiCarInfo("Kia Sportage 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), - HyundaiCarInfo("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), - ], - CAR.KIA_SORENTO: [ - HyundaiCarInfo("Kia Sorento 2018", "Advanced Smart Cruise Control & LKAS", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", - car_parts=CarParts.common([CarHarness.hyundai_e])), - HyundaiCarInfo("Kia Sorento 2019", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), - ], - CAR.KIA_SORENTO_4TH_GEN: HyundaiCarInfo("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.KIA_SORENTO_HEV_4TH_GEN: [ - HyundaiCarInfo("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - HyundaiCarInfo("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - ], - CAR.KIA_STINGER: HyundaiCarInfo("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", - car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.KIA_STINGER_2022: HyundaiCarInfo("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.KIA_CEED: HyundaiCarInfo("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e])), - CAR.KIA_EV6: [ - HyundaiCarInfo("Kia EV6 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_p])), - HyundaiCarInfo("Kia EV6 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), - HyundaiCarInfo("Kia EV6 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) - ], - CAR.KIA_CARNIVAL_4TH_GEN: [ - HyundaiCarInfo("Kia Carnival 2022-24", car_parts=CarParts.common([CarHarness.hyundai_a])), - HyundaiCarInfo("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) - ], + KIA_OPTIMA_H = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Optima Hybrid 2017", "Advanced Smart Cruise Control", car_parts=CarParts.common([CarHarness.hyundai_c]))], + CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), + flags=HyundaiFlags.HYBRID | HyundaiFlags.LEGACY, + ) + KIA_OPTIMA_H_G4_FL = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Optima Hybrid 2019", car_parts=CarParts.common([CarHarness.hyundai_h]))], + CarSpecs(mass=3558 * CV.LB_TO_KG, wheelbase=2.8, steerRatio=13.75, tireStiffnessFactor=0.5), + flags=HyundaiFlags.HYBRID | HyundaiFlags.UNSUPPORTED_LONGITUDINAL, + ) + KIA_SELTOS = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Seltos 2021", car_parts=CarParts.common([CarHarness.hyundai_a]))], + CarSpecs(mass=1337, wheelbase=2.63, steerRatio=14.56), + flags=HyundaiFlags.CHECKSUM_CRC8, + ) + KIA_SPORTAGE_5TH_GEN = HyundaiCanFDPlatformConfig( + [ + HyundaiCarDocs("Kia Sportage 2023-24", car_parts=CarParts.common([CarHarness.hyundai_n])), + HyundaiCarDocs("Kia Sportage Hybrid 2023", car_parts=CarParts.common([CarHarness.hyundai_n])), + ], + # weight from SX and above trims, average of FWD and AWD version, steering ratio according to Kia News https://www.kiamedia.com/us/en/models/sportage/2023/specifications + CarSpecs(mass=1725, wheelbase=2.756, steerRatio=13.6), + ) + KIA_SORENTO = HyundaiPlatformConfig( + [ + HyundaiCarDocs("Kia Sorento 2018", "Advanced Smart Cruise Control & LKAS", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", + car_parts=CarParts.common([CarHarness.hyundai_e])), + HyundaiCarDocs("Kia Sorento 2019", video_link="https://www.youtube.com/watch?v=Fkh3s6WHJz8", car_parts=CarParts.common([CarHarness.hyundai_e])), + ], + CarSpecs(mass=1985, wheelbase=2.78, steerRatio=14.4 * 1.1), # 10% higher at the center seems reasonable + flags=HyundaiFlags.CHECKSUM_6B | HyundaiFlags.UNSUPPORTED_LONGITUDINAL, + ) + KIA_SORENTO_4TH_GEN = HyundaiCanFDPlatformConfig( + [HyundaiCarDocs("Kia Sorento 2021-23", car_parts=CarParts.common([CarHarness.hyundai_k]))], + CarSpecs(mass=3957 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms + flags=HyundaiFlags.RADAR_SCC, + ) + KIA_SORENTO_HEV_4TH_GEN = HyundaiCanFDPlatformConfig( + [ + HyundaiCarDocs("Kia Sorento Hybrid 2021-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarDocs("Kia Sorento Plug-in Hybrid 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + ], + CarSpecs(mass=4395 * CV.LB_TO_KG, wheelbase=2.81, steerRatio=13.5), # average of the platforms + flags=HyundaiFlags.RADAR_SCC, + ) + KIA_STINGER = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Stinger 2018-20", video_link="https://www.youtube.com/watch?v=MJ94qoofYw0", + car_parts=CarParts.common([CarHarness.hyundai_c]))], + CarSpecs(mass=1825, wheelbase=2.78, steerRatio=14.4 * 1.15) # 15% higher at the center seems reasonable + ) + KIA_STINGER_2022 = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Stinger 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_k]))], + KIA_STINGER.specs, + ) + KIA_CEED = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Ceed 2019", car_parts=CarParts.common([CarHarness.hyundai_e]))], + CarSpecs(mass=1450, wheelbase=2.65, steerRatio=13.75, tireStiffnessFactor=0.5), + flags=HyundaiFlags.LEGACY, + ) + KIA_EV6 = HyundaiCanFDPlatformConfig( + [ + HyundaiCarDocs("Kia EV6 (Southeast Asia only) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_p])), + HyundaiCarDocs("Kia EV6 (without HDA II) 2022-23", "Highway Driving Assist", car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarDocs("Kia EV6 (with HDA II) 2022-23", "Highway Driving Assist II", car_parts=CarParts.common([CarHarness.hyundai_p])) + ], + CarSpecs(mass=2055, wheelbase=2.9, steerRatio=16, tireStiffnessFactor=0.65), + flags=HyundaiFlags.EV, + ) + KIA_CARNIVAL_4TH_GEN = HyundaiCanFDPlatformConfig( + [ + HyundaiCarDocs("Kia Carnival 2022-24", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarDocs("Kia Carnival (China only) 2023", car_parts=CarParts.common([CarHarness.hyundai_k])) + ], + CarSpecs(mass=2087, wheelbase=3.09, steerRatio=14.23), + flags=HyundaiFlags.RADAR_SCC, + ) # Genesis - CAR.GENESIS_GV60_EV_1ST_GEN: [ - HyundaiCarInfo("Genesis GV60 (Advanced Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), - HyundaiCarInfo("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), - ], - CAR.GENESIS_G70: HyundaiCarInfo("Genesis G70 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), - CAR.GENESIS_G70_2020: HyundaiCarInfo("Genesis G70 2020", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), - CAR.GENESIS_GV70_1ST_GEN: [ - HyundaiCarInfo("Genesis GV70 (2.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), - HyundaiCarInfo("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), - ], - CAR.GENESIS_G80: HyundaiCarInfo("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h])), - CAR.GENESIS_G90: HyundaiCarInfo("Genesis G90 2017-18", "All", car_parts=CarParts.common([CarHarness.hyundai_c])), - CAR.GENESIS_GV80: HyundaiCarInfo("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), + GENESIS_GV60_EV_1ST_GEN = HyundaiCanFDPlatformConfig( + [ + HyundaiCarDocs("Genesis GV60 (Advanced Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_a])), + HyundaiCarDocs("Genesis GV60 (Performance Trim) 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_k])), + ], + CarSpecs(mass=2205, wheelbase=2.9, steerRatio=12.6), # steerRatio: https://www.motor1.com/reviews/586376/2023-genesis-gv60-first-drive/#:~:text=Relative%20to%20the%20related%20Ioniq,5%2FEV6%27s%2014.3%3A1. + flags=HyundaiFlags.EV, + ) + GENESIS_G70 = HyundaiPlatformConfig( + [HyundaiCarDocs("Genesis G70 2018", "All", car_parts=CarParts.common([CarHarness.hyundai_f]))], + CarSpecs(mass=1640, wheelbase=2.84, steerRatio=13.56), + flags=HyundaiFlags.LEGACY, + ) + GENESIS_G70_2020 = HyundaiPlatformConfig( + [ + # TODO: 2021 MY harness is unknown + HyundaiCarDocs("Genesis G70 2019-21", "All", car_parts=CarParts.common([CarHarness.hyundai_f])), + # TODO: From 3.3T Sport Advanced 2022 & Prestige 2023 Trim, 2.0T is unknown + HyundaiCarDocs("Genesis G70 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + ], + CarSpecs(mass=3673 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=12.9), + flags=HyundaiFlags.MANDO_RADAR, + ) + GENESIS_GV70_1ST_GEN = HyundaiCanFDPlatformConfig( + [ + HyundaiCarDocs("Genesis GV70 (2.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_l])), + HyundaiCarDocs("Genesis GV70 (3.5T Trim) 2022-23", "All", car_parts=CarParts.common([CarHarness.hyundai_m])), + ], + CarSpecs(mass=1950, wheelbase=2.87, steerRatio=14.6), + flags=HyundaiFlags.RADAR_SCC, + ) + GENESIS_G80 = HyundaiPlatformConfig( + [HyundaiCarDocs("Genesis G80 2018-19", "All", car_parts=CarParts.common([CarHarness.hyundai_h]))], + CarSpecs(mass=2060, wheelbase=3.01, steerRatio=16.5), + flags=HyundaiFlags.LEGACY, + ) + GENESIS_G90 = HyundaiPlatformConfig( + [HyundaiCarDocs("Genesis G90 2017-20", "All", car_parts=CarParts.common([CarHarness.hyundai_c]))], + CarSpecs(mass=2200, wheelbase=3.15, steerRatio=12.069), + ) + GENESIS_GV80 = HyundaiCanFDPlatformConfig( + [HyundaiCarDocs("Genesis GV80 2023", "All", car_parts=CarParts.common([CarHarness.hyundai_m]))], + CarSpecs(mass=2258, wheelbase=2.95, steerRatio=14.14), + flags=HyundaiFlags.RADAR_SCC, + ) # Non-SCC Cars - CAR.BAYON_1ST_GEN_NON_SCC: HyundaiCarInfo("Hyundai Bayon Non-SCC 2021", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_n])), - CAR.ELANTRA_2022_NON_SCC: HyundaiCarInfo("Hyundai Elantra Non-SCC 2022", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_k])), - CAR.KONA_NON_SCC: HyundaiCarInfo("Hyundai Kona Non-SCC 2019", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_b])), - CAR.KIA_FORTE_2019_NON_SCC: HyundaiCarInfo("Kia Forte Non-SCC 2019", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_g])), - CAR.KIA_FORTE_2021_NON_SCC: HyundaiCarInfo("Kia Forte Non-SCC 2021", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_g])), - CAR.KIA_SELTOS_2023_NON_SCC: HyundaiCarInfo("Kia Seltos Non-SCC 2023-24", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_l])), - CAR.GENESIS_G70_2021_NON_SCC: HyundaiCarInfo("Genesis G70 Non-SCC 2021", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_f])), -} + HYUNDAI_BAYON_1ST_GEN_NON_SCC = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Bayon Non-SCC 2021", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_n]))], + CarSpecs(mass=1150, wheelbase=2.58, steerRatio=13.27 * 1.15), + flags=HyundaiFlags.CHECKSUM_CRC8, + spFlags=HyundaiFlagsSP.SP_NON_SCC | HyundaiFlagsSP.SP_NON_SCC_FCA, + ) + HYUNDAI_ELANTRA_2022_NON_SCC = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Elantra Non-SCC 2022", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_k]))], + HYUNDAI_ELANTRA_2021.specs, + flags=HyundaiFlags.CHECKSUM_CRC8, + spFlags=HyundaiFlagsSP.SP_NON_SCC | HyundaiFlagsSP.SP_NON_SCC_FCA, + ) + HYUNDAI_KONA_NON_SCC = HyundaiPlatformConfig( + [HyundaiCarDocs("Hyundai Kona Non-SCC 2019", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_b]))], + HYUNDAI_KONA.specs, + spFlags=HyundaiFlagsSP.SP_NON_SCC | HyundaiFlagsSP.SP_NON_SCC_FCA, + ) + KIA_FORTE_2019_NON_SCC = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Forte Non-SCC 2019", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_g]))], + KIA_FORTE.specs, + spFlags=HyundaiFlagsSP.SP_NON_SCC, + ) + KIA_FORTE_2021_NON_SCC = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Forte Non-SCC 2021", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_g]))], + KIA_FORTE.specs, + spFlags=HyundaiFlagsSP.SP_NON_SCC | HyundaiFlagsSP.SP_NON_SCC_FCA, + ) + KIA_SELTOS_2023_NON_SCC = HyundaiPlatformConfig( + [HyundaiCarDocs("Kia Seltos Non-SCC 2023-24", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_l]))], + KIA_SELTOS.specs, + flags=HyundaiFlags.CHECKSUM_CRC8, + spFlags=HyundaiFlagsSP.SP_NON_SCC | HyundaiFlagsSP.SP_NON_SCC_FCA, + ) + GENESIS_G70_2021_NON_SCC = HyundaiPlatformConfig( + [HyundaiCarDocs("Genesis G70 Non-SCC 2021", "No Smart Cruise Control (SCC)", car_parts=CarParts.common([CarHarness.hyundai_f]))], + GENESIS_G70_2020.specs, + flags=HyundaiFlags.CHECKSUM_CRC8, + spFlags=HyundaiFlagsSP.SP_NON_SCC | HyundaiFlagsSP.SP_NON_SCC_FCA | HyundaiFlagsSP.SP_NON_SCC_RADAR_FCA, + ) + class Buttons: NONE = 0 @@ -359,7 +623,7 @@ def get_platform_codes(fw_versions: list[bytes]) -> set[tuple[bytes, bytes | Non return codes -def match_fw_to_car_fuzzy(live_fw_versions, offline_fw_versions) -> set[str]: +def match_fw_to_car_fuzzy(live_fw_versions, vin, offline_fw_versions) -> set[str]: # Non-electric CAN FD platforms often do not have platform code specifiers needed # to distinguish between hybrid and ICE. All EVs so far are either exclusively # electric or specify electric in the platform code. @@ -415,11 +679,6 @@ HYUNDAI_VERSION_REQUEST_LONG = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) HYUNDAI_VERSION_REQUEST_ALT = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(0xf110) # Alt long description -HYUNDAI_VERSION_REQUEST_MULTI = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ - p16(uds.DATA_IDENTIFIER_TYPE.VEHICLE_MANUFACTURER_SPARE_PART_NUMBER) + \ - p16(uds.DATA_IDENTIFIER_TYPE.APPLICATION_SOFTWARE_IDENTIFICATION) + \ - p16(0xf100) - HYUNDAI_ECU_MANUFACTURING_DATE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(uds.DATA_IDENTIFIER_TYPE.ECU_MANUFACTURING_DATE) @@ -432,7 +691,9 @@ DATE_FW_PATTERN = re.compile(b'(?<=[ -])([0-9]{6}$)') PART_NUMBER_FW_PATTERN = re.compile(b'(?<=[0-9][.,][0-9]{2} )([0-9]{5}[-/]?[A-Z][A-Z0-9]{3}[0-9])') # We've seen both ICE and hybrid for these platforms, and they have hybrid descriptors (e.g. MQ4 vs MQ4H) -CANFD_FUZZY_WHITELIST = {CAR.KIA_SORENTO_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN} +CANFD_FUZZY_WHITELIST = {CAR.KIA_SORENTO_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN, CAR.KIA_K8_HEV_1ST_GEN, + # TODO: the hybrid variant is not out yet + CAR.KIA_CARNIVAL_4TH_GEN} # List of ECUs expected to have platform codes, camera and radar should exist on all cars # TODO: use abs, it has the platform code and part number on many platforms @@ -441,36 +702,25 @@ PLATFORM_CODE_ECUS = [Ecu.fwdRadar, Ecu.fwdCamera, Ecu.eps] # TODO: there are date codes in the ABS firmware versions in hex DATE_FW_ECUS = [Ecu.fwdCamera] -ALL_HYUNDAI_ECUS = [Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.engine, Ecu.parkingAdas, Ecu.transmission, Ecu.adas, Ecu.hvac, Ecu.cornerRadar] - FW_QUERY_CONFIG = FwQueryConfig( requests=[ - # TODO: minimize shared whitelists for CAN and cornerRadar for CAN-FD + # TODO: add back whitelists # CAN queries (OBD-II port) Request( [HYUNDAI_VERSION_REQUEST_LONG], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.transmission, Ecu.eps, Ecu.abs, Ecu.fwdRadar, Ecu.fwdCamera], - ), - Request( - [HYUNDAI_VERSION_REQUEST_MULTI], - [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.engine, Ecu.transmission, Ecu.eps, Ecu.abs, Ecu.fwdRadar], ), - # CAN-FD queries (from camera) - # TODO: combine shared whitelists with CAN requests + # CAN & CAN-FD queries (from camera) Request( [HYUNDAI_VERSION_REQUEST_LONG], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.fwdCamera, Ecu.fwdRadar, Ecu.cornerRadar, Ecu.hvac], bus=0, auxiliary=True, ), Request( [HYUNDAI_VERSION_REQUEST_LONG], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.fwdCamera, Ecu.adas, Ecu.cornerRadar, Ecu.hvac], bus=1, auxiliary=True, obd_multiplexing=False, @@ -481,44 +731,15 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [HYUNDAI_ECU_MANUFACTURING_DATE], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.fwdCamera], bus=0, auxiliary=True, logging=True, ), - # CAN & CAN FD logging queries (from camera) - Request( - [HYUNDAI_VERSION_REQUEST_LONG], - [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=ALL_HYUNDAI_ECUS, - bus=0, - auxiliary=True, - logging=True, - ), - Request( - [HYUNDAI_VERSION_REQUEST_MULTI], - [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=ALL_HYUNDAI_ECUS, - bus=0, - auxiliary=True, - logging=True, - ), - Request( - [HYUNDAI_VERSION_REQUEST_LONG], - [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=ALL_HYUNDAI_ECUS, - bus=1, - auxiliary=True, - obd_multiplexing=False, - logging=True, - ), - - # CAN-FD alt request logging queries + # CAN-FD alt request logging queries for hvac and parkingAdas Request( [HYUNDAI_VERSION_REQUEST_ALT], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.parkingAdas, Ecu.hvac], bus=0, auxiliary=True, logging=True, @@ -526,148 +747,61 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [HYUNDAI_VERSION_REQUEST_ALT], [HYUNDAI_VERSION_RESPONSE], - whitelist_ecus=[Ecu.parkingAdas, Ecu.hvac], bus=1, auxiliary=True, logging=True, obd_multiplexing=False, ), ], + # We lose these ECUs without the comma power on these cars. + # Note that we still attempt to match with them when they are present + non_essential_ecus={ + Ecu.abs: [CAR.HYUNDAI_PALISADE, CAR.HYUNDAI_SONATA, CAR.HYUNDAI_SANTA_FE_2022, CAR.KIA_K5_2021, CAR.HYUNDAI_ELANTRA_2021, + CAR.HYUNDAI_SANTA_FE, CAR.HYUNDAI_KONA_EV_2022, CAR.HYUNDAI_KONA_EV, CAR.HYUNDAI_CUSTIN_1ST_GEN, CAR.KIA_SORENTO, + CAR.KIA_CEED, CAR.KIA_SELTOS], + }, extra_ecus=[ - (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms - (Ecu.parkingAdas, 0x7b1, None), # ADAS Parking ECU (may exist on all platforms) - (Ecu.hvac, 0x7b3, None), # HVAC Control Assembly + (Ecu.adas, 0x730, None), # ADAS Driving ECU on HDA2 platforms + (Ecu.parkingAdas, 0x7b1, None), # ADAS Parking ECU (may exist on all platforms) + (Ecu.hvac, 0x7b3, None), # HVAC Control Assembly (Ecu.cornerRadar, 0x7b7, None), + (Ecu.combinationMeter, 0x7c6, None), # CAN FD Instrument cluster ], # Custom fuzzy fingerprinting function using platform codes, part numbers + FW dates: match_fw_to_car_fuzzy=match_fw_to_car_fuzzy, ) - CHECKSUM = { - "crc8": [CAR.SANTA_FE, CAR.SONATA, CAR.PALISADE, CAR.KIA_SELTOS, CAR.ELANTRA_2021, CAR.ELANTRA_HEV_2021, - CAR.SONATA_HYBRID, CAR.SANTA_FE_2022, CAR.KIA_K5_2021, CAR.SANTA_FE_HEV_2022, CAR.SANTA_FE_PHEV_2022, - CAR.KIA_K5_HEV_2020, CAR.CUSTIN_1ST_GEN, CAR.ELANTRA_2022_NON_SCC, CAR.GENESIS_G70_2021_NON_SCC, - CAR.KIA_SELTOS_2023_NON_SCC, CAR.BAYON_1ST_GEN_NON_SCC], - "6B": [CAR.KIA_SORENTO, CAR.HYUNDAI_GENESIS], + "crc8": CAR.with_flags(HyundaiFlags.CHECKSUM_CRC8), + "6B": CAR.with_flags(HyundaiFlags.CHECKSUM_6B), } CAN_GEARS = { # which message has the gear. hybrid and EV use ELECT_GEAR - "use_cluster_gears": {CAR.ELANTRA, CAR.ELANTRA_GT_I30, CAR.KONA}, - "use_tcu_gears": {CAR.KIA_OPTIMA_G4, CAR.KIA_OPTIMA_G4_FL, CAR.SONATA_LF, CAR.VELOSTER, CAR.TUCSON}, + "use_cluster_gears": CAR.with_flags(HyundaiFlags.CLUSTER_GEARS), + "use_tcu_gears": CAR.with_flags(HyundaiFlags.TCU_GEARS), } -CANFD_CAR = {CAR.KIA_EV6, CAR.IONIQ_5, CAR.IONIQ_6, CAR.TUCSON_4TH_GEN, CAR.SANTA_CRUZ_1ST_GEN, CAR.KIA_SPORTAGE_5TH_GEN, CAR.GENESIS_GV70_1ST_GEN, - CAR.GENESIS_GV60_EV_1ST_GEN, CAR.KIA_SORENTO_4TH_GEN, CAR.KIA_NIRO_HEV_2ND_GEN, CAR.KIA_NIRO_EV_2ND_GEN, - CAR.GENESIS_GV80, CAR.KIA_CARNIVAL_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN, CAR.KONA_EV_2ND_GEN, CAR.KIA_K8_HEV_1ST_GEN, - CAR.STARIA_4TH_GEN} - -# The radar does SCC on these cars when HDA I, rather than the camera -CANFD_RADAR_SCC_CAR = {CAR.GENESIS_GV70_1ST_GEN, CAR.KIA_SORENTO_4TH_GEN, CAR.GENESIS_GV80, CAR.KIA_CARNIVAL_4TH_GEN, CAR.KIA_SORENTO_HEV_4TH_GEN} +CANFD_CAR = CAR.with_flags(HyundaiFlags.CANFD) +CANFD_RADAR_SCC_CAR = CAR.with_flags(HyundaiFlags.RADAR_SCC) # These CAN FD cars do not accept communication control to disable the ADAS ECU, # responds with 0x7F2822 - 'conditions not correct' -CANFD_UNSUPPORTED_LONGITUDINAL_CAR = {CAR.IONIQ_6, CAR.KONA_EV_2ND_GEN} +CANFD_UNSUPPORTED_LONGITUDINAL_CAR = CAR.with_flags(HyundaiFlags.CANFD_NO_RADAR_DISABLE) # The camera does SCC on these cars, rather than the radar -CAMERA_SCC_CAR = {CAR.KONA_EV_2022, } +CAMERA_SCC_CAR = CAR.with_flags(HyundaiFlags.CAMERA_SCC) -# these cars use a different gas signal -HYBRID_CAR = {CAR.IONIQ_PHEV, CAR.ELANTRA_HEV_2021, CAR.KIA_NIRO_PHEV, CAR.KIA_NIRO_HEV_2021, CAR.SONATA_HYBRID, CAR.KONA_HEV, CAR.IONIQ, - CAR.IONIQ_HEV_2022, CAR.SANTA_FE_HEV_2022, CAR.SANTA_FE_PHEV_2022, CAR.IONIQ_PHEV_2019, CAR.KIA_K5_HEV_2020, - CAR.KIA_OPTIMA_H, CAR.KIA_OPTIMA_H_G4_FL, CAR.AZERA_HEV_6TH_GEN, CAR.KIA_NIRO_PHEV_2022} +HYBRID_CAR = CAR.with_flags(HyundaiFlags.HYBRID) -EV_CAR = {CAR.IONIQ_EV_2020, CAR.IONIQ_EV_LTD, CAR.KONA_EV, CAR.KIA_NIRO_EV, CAR.KIA_NIRO_EV_2ND_GEN, CAR.KONA_EV_2022, - CAR.KIA_EV6, CAR.IONIQ_5, CAR.IONIQ_6, CAR.GENESIS_GV60_EV_1ST_GEN, CAR.KONA_EV_2ND_GEN} +EV_CAR = CAR.with_flags(HyundaiFlags.EV) -# these cars require a special panda safety mode due to missing counters and checksums in the messages -LEGACY_SAFETY_MODE_CAR = {CAR.HYUNDAI_GENESIS, CAR.IONIQ_EV_LTD, CAR.KIA_OPTIMA_G4, - CAR.VELOSTER, CAR.GENESIS_G70, CAR.GENESIS_G80, CAR.KIA_CEED, CAR.ELANTRA, CAR.IONIQ_HEV_2022, - CAR.KIA_OPTIMA_H, CAR.ELANTRA_GT_I30} +LEGACY_SAFETY_MODE_CAR = CAR.with_flags(HyundaiFlags.LEGACY) -# these cars have not been verified to work with longitudinal yet - radar disable, sending correct messages, etc. -UNSUPPORTED_LONGITUDINAL_CAR = LEGACY_SAFETY_MODE_CAR | {CAR.KIA_NIRO_PHEV, CAR.KIA_SORENTO, CAR.SONATA_LF, CAR.KIA_OPTIMA_G4_FL, - CAR.KIA_OPTIMA_H_G4_FL} +UNSUPPORTED_LONGITUDINAL_CAR = CAR.with_flags(HyundaiFlags.LEGACY) | CAR.with_flags(HyundaiFlags.UNSUPPORTED_LONGITUDINAL) -NON_SCC_CAR = {CAR.KIA_FORTE_2021_NON_SCC, CAR.ELANTRA_2022_NON_SCC, CAR.KIA_FORTE_2019_NON_SCC, CAR.GENESIS_G70_2021_NON_SCC, - CAR.KIA_SELTOS_2023_NON_SCC, CAR.KONA_NON_SCC, CAR.BAYON_1ST_GEN_NON_SCC} -NON_SCC_NO_FCA_CAR = {CAR.KIA_FORTE_2019_NON_SCC, } -NON_SCC_RADAR_FCA_CAR = {CAR.GENESIS_G70_2021_NON_SCC, } +NON_SCC_CAR = CAR.with_sp_flags(HyundaiFlagsSP.SP_NON_SCC) +NON_SCC_FCA_CAR = CAR.with_sp_flags(HyundaiFlagsSP.SP_NON_SCC_FCA) +NON_SCC_RADAR_FCA_CAR = CAR.with_sp_flags(HyundaiFlagsSP.SP_NON_SCC_RADAR_FCA) -# If 0x500 is present on bus 1 it probably has a Mando radar outputting radar points. -# If no points are outputted by default it might be possible to turn it on using selfdrive/debug/hyundai_enable_radar_points.py -DBC = { - CAR.AZERA_6TH_GEN: dbc_dict('hyundai_kia_generic', None), - CAR.AZERA_HEV_6TH_GEN: dbc_dict('hyundai_kia_generic', None), - CAR.BAYON_1ST_GEN_NON_SCC: dbc_dict('hyundai_kia_generic', None), - CAR.ELANTRA: dbc_dict('hyundai_kia_generic', None), - CAR.ELANTRA_GT_I30: dbc_dict('hyundai_kia_generic', None), - CAR.ELANTRA_2021: dbc_dict('hyundai_kia_generic', None), - CAR.ELANTRA_2022_NON_SCC: dbc_dict('hyundai_kia_generic', None), - CAR.ELANTRA_HEV_2021: dbc_dict('hyundai_kia_generic', None), - CAR.GENESIS_G70: dbc_dict('hyundai_kia_generic', None), - CAR.GENESIS_G70_2020: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.GENESIS_G70_2021_NON_SCC: dbc_dict('hyundai_kia_generic', None), - CAR.GENESIS_G80: dbc_dict('hyundai_kia_generic', None), - CAR.GENESIS_G90: dbc_dict('hyundai_kia_generic', None), - CAR.HYUNDAI_GENESIS: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_PHEV_2019: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_PHEV: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_EV_2020: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_EV_LTD: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.IONIQ: dbc_dict('hyundai_kia_generic', None), - CAR.IONIQ_HEV_2022: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_FORTE: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_FORTE_2019_NON_SCC: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_FORTE_2021_NON_SCC: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_K5_2021: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_K5_HEV_2020: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.KIA_NIRO_EV: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.KIA_NIRO_PHEV: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.KIA_NIRO_HEV_2021: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_OPTIMA_G4: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_OPTIMA_G4_FL: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_OPTIMA_H: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_OPTIMA_H_G4_FL: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_SELTOS: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_SELTOS_2023_NON_SCC: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_SORENTO: dbc_dict('hyundai_kia_generic', None), # Has 0x5XX messages, but different format - CAR.KIA_STINGER: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_STINGER_2022: dbc_dict('hyundai_kia_generic', None), - CAR.KONA: dbc_dict('hyundai_kia_generic', None), - CAR.KONA_NON_SCC: dbc_dict('hyundai_kia_generic', None), - CAR.KONA_EV: dbc_dict('hyundai_kia_generic', None), - CAR.KONA_EV_2022: dbc_dict('hyundai_kia_generic', None), - CAR.KONA_HEV: dbc_dict('hyundai_kia_generic', None), - CAR.SANTA_FE: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.SANTA_FE_2022: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.SANTA_FE_HEV_2022: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.SANTA_FE_PHEV_2022: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.SONATA: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.SONATA_LF: dbc_dict('hyundai_kia_generic', None), # Has 0x5XX messages, but different format - CAR.TUCSON: dbc_dict('hyundai_kia_generic', None), - CAR.PALISADE: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.VELOSTER: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_CEED: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_EV6: dbc_dict('hyundai_canfd', None), - CAR.SONATA_HYBRID: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.TUCSON_4TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.IONIQ_5: dbc_dict('hyundai_canfd', None), - CAR.IONIQ_6: dbc_dict('hyundai_canfd', None), - CAR.SANTA_CRUZ_1ST_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_SPORTAGE_5TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.GENESIS_GV70_1ST_GEN: dbc_dict('hyundai_canfd', None), - CAR.GENESIS_GV60_EV_1ST_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_SORENTO_4TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_NIRO_HEV_2ND_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_NIRO_EV_2ND_GEN: dbc_dict('hyundai_canfd', None), - CAR.GENESIS_GV80: dbc_dict('hyundai_canfd', None), - CAR.KIA_CARNIVAL_4TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_SORENTO_HEV_4TH_GEN: dbc_dict('hyundai_canfd', None), - CAR.KONA_EV_2ND_GEN: dbc_dict('hyundai_canfd', None), - CAR.KIA_K8_HEV_1ST_GEN: dbc_dict('hyundai_canfd', None), - CAR.CUSTIN_1ST_GEN: dbc_dict('hyundai_kia_generic', None), - CAR.KIA_NIRO_PHEV_2022: dbc_dict('hyundai_kia_generic', 'hyundai_kia_mando_front_radar_generated'), - CAR.STARIA_4TH_GEN: dbc_dict('hyundai_canfd', None), -} +DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/interfaces.py b/selfdrive/car/interfaces.py index 0ef758cafe..036e7ba2d5 100644 --- a/selfdrive/car/interfaces.py +++ b/selfdrive/car/interfaces.py @@ -1,5 +1,4 @@ import json -import operator import os import numpy as np import time @@ -18,7 +17,7 @@ from openpilot.common.numpy_fast import clip from openpilot.common.params import Params from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import apply_hysteresis, gen_empty_fingerprint, scale_rot_inertia, scale_tire_stiffness, STD_CARGO_KG -from openpilot.selfdrive.car.values import Platform +from openpilot.selfdrive.car.values import PLATFORMS from openpilot.selfdrive.controls.lib.desire_helper import LANE_CHANGE_SPEED_MIN from openpilot.selfdrive.controls.lib.drive_helpers import V_CRUISE_MAX, V_CRUISE_UNSET, get_friction from openpilot.selfdrive.controls.lib.events import Events @@ -41,7 +40,6 @@ TORQUE_NN_MODEL_PATH = os.path.join(BASEDIR, 'selfdrive/car/torque_data/lat_mode # dict used to rename activation functions whose names aren't valid python identifiers ACTIVATION_FUNCTION_NAMES = {'σ': 'sigmoid'} -GAC_DICT = {1: 1, 2: 2, 3: 3} FORWARD_GEARS = [GearShifter.drive, GearShifter.low, GearShifter.eco, GearShifter.sport, GearShifter.manumatic, GearShifter.brake] @@ -203,21 +201,16 @@ class CarInterfaceBase(ABC): self.silent_steer_warning = True self.v_ego_cluster_seen = False - self.CS = None - self.can_parsers = [] - if CarState is not None: - self.CS = CarState(CP) + self.CS = CarState(CP) + self.cp = self.CS.get_can_parser(CP) + self.cp_cam = self.CS.get_cam_can_parser(CP) + self.cp_adas = self.CS.get_adas_can_parser(CP) + self.cp_body = self.CS.get_body_can_parser(CP) + self.cp_loopback = self.CS.get_loopback_can_parser(CP) + self.can_parsers = [self.cp, self.cp_cam, self.cp_adas, self.cp_body, self.cp_loopback] - self.cp = self.CS.get_can_parser(CP) - self.cp_cam = self.CS.get_cam_can_parser(CP) - self.cp_adas = self.CS.get_adas_can_parser(CP) - self.cp_body = self.CS.get_body_can_parser(CP) - self.cp_loopback = self.CS.get_loopback_can_parser(CP) - self.can_parsers = [self.cp, self.cp_cam, self.cp_adas, self.cp_body, self.cp_loopback] - - self.CC = None - if CarController is not None: - self.CC = CarController(self.cp.dbc_name, CP, self.VM) + dbc_name = "" if self.cp is None else self.cp.dbc_name + self.CC: CarControllerBase = CarController(dbc_name, CP, self.VM) self.param_s = Params() self.disengage_on_accelerator = self.param_s.get_bool("DisengageOnAccelerator") @@ -234,9 +227,6 @@ class CarInterfaceBase(ABC): self.experimental_mode_hold = False self.experimental_mode = self.param_s.get_bool("ExperimentalMode") self._frame = 0 - self.op_lookup = {"+": operator.add, "-": operator.sub} - self.prev_gac_button = False - self.gac_button_counter = 0 self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam") self.mads_main_toggle = self.param_s.get_bool("MadsCruiseMain") self.lkas_toggle = self.param_s.get_bool("LkasToggle") @@ -255,29 +245,33 @@ class CarInterfaceBase(ABC): self.lat_torque_nn_model, _ = get_nn_model(_car, eps_firmware) return self.lat_torque_nn_model is not None and self.param_s.get_bool("NNFF") + def apply(self, c: car.CarControl, now_nanos: int) -> tuple[car.CarControl.Actuators, list[tuple[int, int, bytes, int]]]: + return self.CC.update(c, self.CS, now_nanos) + @staticmethod def get_pid_accel_limits(CP, current_speed, cruise_speed): return ACCEL_MIN, ACCEL_MAX @classmethod - def get_non_essential_params(cls, candidate: Platform): + def get_non_essential_params(cls, candidate: str): """ Parameters essential to controlling the car may be incomplete or wrong without FW versions or fingerprints. """ return cls.get_params(candidate, gen_empty_fingerprint(), list(), False, False) @classmethod - def get_params(cls, candidate: Platform, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, docs: bool): + def get_params(cls, candidate: str, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, docs: bool): ret = CarInterfaceBase.get_std_params(candidate) - if hasattr(candidate, "config"): - if candidate.config.specs is not None: - ret.mass = candidate.config.specs.mass - ret.wheelbase = candidate.config.specs.wheelbase - ret.steerRatio = candidate.config.specs.steerRatio - ret.centerToFront = ret.wheelbase * candidate.config.specs.centerToFrontRatio - ret.minEnableSpeed = candidate.config.specs.minEnableSpeed - ret.minSteerSpeed = candidate.config.specs.minSteerSpeed + platform = PLATFORMS[candidate] + ret.mass = platform.config.specs.mass + ret.wheelbase = platform.config.specs.wheelbase + ret.steerRatio = platform.config.specs.steerRatio + ret.centerToFront = ret.wheelbase * platform.config.specs.centerToFrontRatio + ret.minEnableSpeed = platform.config.specs.minEnableSpeed + ret.minSteerSpeed = platform.config.specs.minSteerSpeed + ret.tireStiffnessFactor = platform.config.specs.tireStiffnessFactor + ret.flags |= int(platform.config.flags) ret = cls._get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs) @@ -314,7 +308,7 @@ class CarInterfaceBase(ABC): @staticmethod @abstractmethod - def _get_params(ret: car.CarParams, candidate: Platform, fingerprint: dict[int, dict[int, int]], + def _get_params(ret: car.CarParams, candidate, fingerprint: dict[int, dict[int, int]], car_fw: list[car.CarParams.CarFw], experimental_long: bool, docs: bool): raise NotImplementedError @@ -440,9 +434,6 @@ class CarInterfaceBase(ABC): return reader - @abstractmethod - def apply(self, c: car.CarControl, now_nanos: int) -> tuple[car.CarControl.Actuators, list[bytes]]: - pass def create_common_events(self, cs_out, c, extra_gears=None, pcm_enable=True, allow_enable=True, enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise)): @@ -560,7 +551,7 @@ class CarInterfaceBase(ABC): else: acc_enabled = False - return acc_enabled, button_events + return acc_enabled def get_sp_cancel_cruise_state(self, mads_enabled, acc_enabled=False): mads_enabled = False if not self.enable_mads or self.disengage_on_accelerator else mads_enabled @@ -602,7 +593,7 @@ class CarInterfaceBase(ABC): else: return CS.madsEnabled - def get_sp_common_state(self, cs_out, CS, min_enable_speed_pcm=False, gear_allowed=True, gap_button=False): + def get_sp_common_state(self, cs_out, CS, min_enable_speed_pcm=False, gear_allowed=True): cs_out.cruiseState.enabled = CS.accEnabled if not self.CP.pcmCruise or not self.CP.pcmCruiseSpeed or min_enable_speed_pcm else \ cs_out.cruiseState.enabled @@ -612,8 +603,6 @@ class CarInterfaceBase(ABC): elif not cs_out.cruiseState.enabled and CS.out.cruiseState.enabled: CS.madsEnabled = False - self.toggle_exp_mode(gap_button) - cs_out.belowLaneChangeSpeed = cs_out.vEgo < LANE_CHANGE_SPEED_MIN and self.below_speed_pause if cs_out.gearShifter in [GearShifter.park, GearShifter.reverse] or cs_out.doorOpen or \ @@ -639,53 +628,6 @@ class CarInterfaceBase(ABC): return cs_out, CS - def toggle_exp_mode(self, gap_pressed): - if not self.CP.openpilotLongitudinalControl: - return None - if gap_pressed: - if not self.experimental_mode_hold: - self.gap_button_counter += 1 - if self.gap_button_counter > 50: - self.gap_button_counter = 0 - self.experimental_mode_hold = True - self.param_s.put_bool_nonblocking("ExperimentalMode", not self.experimental_mode) - else: - self.gap_button_counter = 0 - self.experimental_mode_hold = False - - def get_sp_gac_state(self, gac_tr, gac_min, gac_max, inc_dec): - op = self.op_lookup.get(inc_dec) - gac_tr = op(gac_tr, 1) - if inc_dec == "+": - gac_tr = gac_min if gac_tr > gac_max else gac_tr - else: - gac_tr = gac_max if gac_tr < gac_min else gac_tr - return int(gac_tr) - - def get_sp_distance(self, gac_tr, gac_max, gac_dict=None): - if gac_dict is None: - gac_dict = GAC_DICT - return next((key for key, value in gac_dict.items() if value == gac_tr), gac_max) - - def toggle_gac(self, cs_out, CS, gac_button, gac_min, gac_max, gac_default, inc_dec): - if not self.CP.openpilotLongitudinalControl: - CS.gac_tr_cluster = gac_default - if CS.gac_tr != 2: - CS.gac_tr = 2 - self.param_s.put_nonblocking("LongitudinalPersonality", "2") - return cs_out, CS - if gac_button: - self.gac_button_counter += 1 - elif self.prev_gac_button and not gac_button and self.gac_button_counter < 50: - self.gac_button_counter = 0 - CS.gac_tr = self.get_sp_gac_state(CS.gac_tr, 0, 2, inc_dec) - self.param_s.put_nonblocking("LongitudinalPersonality", str(CS.gac_tr)) - else: - self.gac_button_counter = 0 - CS.gac_tr_cluster = clip(CS.gac_tr + 1, gac_min, gac_max) # always 1 higher - self.prev_gac_button = gac_button - return cs_out, CS - def create_sp_events(self, CS, cs_out, events, main_enabled=False, allow_enable=True, enable_pressed=False, enable_from_brake=False, enable_pressed_long=False, enable_buttons=(ButtonType.accelCruise, ButtonType.decelCruise)): @@ -747,14 +689,12 @@ class CarInterfaceBase(ABC): return events, cs_out - def sp_update_params(self, CS): + def sp_update_params(self): self.experimental_mode = self.param_s.get_bool("ExperimentalMode") - CS.gac_tr = int(self.param_s.get("LongitudinalPersonality")) self._frame += 1 if self._frame % 300 == 0: self._frame = 0 self.reverse_dm_cam = self.param_s.get_bool("ReverseDmCam") - return CS class RadarInterfaceBase(ABC): def __init__(self, CP): @@ -763,7 +703,6 @@ class RadarInterfaceBase(ABC): self.delay = 0 self.radar_ts = CP.radarTimeStep self.frame = 0 - self.no_radar_sleep = 'NO_RADAR_SLEEP' in os.environ def update(self, can_strings): self.frame += 1 @@ -795,9 +734,6 @@ class CarStateBase(ABC): self.prev_mads_enabled = False self.control_initialized = False self.pcm_cruise_enabled = False - self.gap_dist_button = 0 - self.gac_tr = int(self.param_s.get("LongitudinalPersonality")) - self.gac_tr_cluster = clip(int(self.param_s.get("LongitudinalPersonality")), 1, 3) Q = [[0.0, 0.0], [0.0, 100.0]] R = 0.3 @@ -889,6 +825,10 @@ class CarStateBase(ABC): } return d.get(gear.upper(), GearShifter.unknown) + @staticmethod + def get_can_parser(CP): + return None + @staticmethod def get_cam_can_parser(CP): return None @@ -906,6 +846,18 @@ class CarStateBase(ABC): return None +SendCan = tuple[int, int, bytes, int] + + +class CarControllerBase(ABC): + def __init__(self, dbc_name: str, CP, VM): + pass + + @abstractmethod + def update(self, CC: car.CarControl.Actuators, CS: car.CarState, now_nanos: int) -> tuple[car.CarControl.Actuators, list[SendCan]]: + pass + + INTERFACE_ATTR_FILE = { "FINGERPRINTS": "fingerprints", "FW_VERSIONS": "fingerprints", diff --git a/selfdrive/car/mazda/carcontroller.py b/selfdrive/car/mazda/carcontroller.py index d348406714..16f9875870 100644 --- a/selfdrive/car/mazda/carcontroller.py +++ b/selfdrive/car/mazda/carcontroller.py @@ -5,6 +5,7 @@ from openpilot.common.params import Params from openpilot.common.realtime import DT_CTRL from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_driver_steer_torque_limits +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.mazda import mazdacan from openpilot.selfdrive.car.mazda.values import CarControllerParams, Buttons from openpilot.selfdrive.controls.lib.drive_helpers import MAZDA_V_CRUISE_MIN @@ -14,7 +15,7 @@ VisualAlert = car.CarControl.HUDControl.VisualAlert BUTTONS_STATES = ["accelCruise", "decelCruise", "cancel", "resumeCruise"] -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.apply_steer_last = 0 @@ -103,18 +104,18 @@ class CarController: if self.frame % 10 == 0 and not (CS.out.brakePressed and self.brake_counter < 7): # Cancel Stock ACC if it's enabled while OP is disengaged # Send at a rate of 10hz until we sync with stock ACC state - can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP.carFingerprint, CS.crz_btns_counter, Buttons.CANCEL)) + can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP, CS.crz_btns_counter, Buttons.CANCEL)) else: self.brake_counter = 0 if CC.cruiseControl.resume and self.frame % 5 == 0: # Mazda Stop and Go requires a RES button (or gas) press if the car stops more than 3 seconds # Send Resume button when planner wants car to move - can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP.carFingerprint, CS.crz_btns_counter, Buttons.RESUME)) + can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP, CS.crz_btns_counter, Buttons.RESUME)) elif CS.out.cruiseState.enabled and not self.CP.pcmCruiseSpeed: self.cruise_button = self.get_cruise_buttons(CS, CC.vCruise) if self.cruise_button is not None: if self.frame % 10 == 0: - can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP.carFingerprint, self.frame // 10, self.cruise_button)) + can_sends.append(mazdacan.create_button_cmd(self.packer, self.CP, self.frame // 10, self.cruise_button)) self.apply_steer_last = apply_steer @@ -127,7 +128,7 @@ class CarController: can_sends.append(mazdacan.create_alert_command(self.packer, CS.cam_laneinfo, ldw, steer_required)) # send steering command - can_sends.append(mazdacan.create_steering_control(self.packer, self.CP.carFingerprint, + can_sends.append(mazdacan.create_steering_control(self.packer, self.CP, self.frame, apply_steer, CS.cam_lkas)) new_actuators = CC.actuators.copy() diff --git a/selfdrive/car/mazda/carstate.py b/selfdrive/car/mazda/carstate.py index 94e1e4e6f5..dea768c03a 100644 --- a/selfdrive/car/mazda/carstate.py +++ b/selfdrive/car/mazda/carstate.py @@ -3,7 +3,7 @@ from openpilot.common.conversions import Conversions as CV from opendbc.can.can_define import CANDefine from opendbc.can.parser import CANParser from openpilot.selfdrive.car.interfaces import CarStateBase -from openpilot.selfdrive.car.mazda.values import DBC, LKAS_LIMITS, GEN1, BUTTON_STATES +from openpilot.selfdrive.car.mazda.values import DBC, LKAS_LIMITS, MazdaFlags, BUTTON_STATES class CarState(CarStateBase): def __init__(self, CP): @@ -18,6 +18,9 @@ class CarState(CarStateBase): self.lkas_allowed_speed = False self.lkas_disabled = False + self.prev_distance_button = 0 + self.distance_button = 0 + self.lkas_enabled = False self.prev_lkas_enabled = False @@ -28,6 +31,9 @@ class CarState(CarStateBase): ret = car.CarState.new_message() + self.prev_distance_button = self.distance_button + self.distance_button = cp.vl["CRZ_BTNS"]["DISTANCE_LESS"] + self.prev_mads_enabled = self.mads_enabled self.prev_lkas_enabled = self.lkas_enabled self.buttonStatesPrev = self.buttonStates.copy() @@ -134,7 +140,7 @@ class CarState(CarStateBase): ("WHEEL_SPEEDS", 100), ] - if CP.carFingerprint in GEN1: + if CP.flags & MazdaFlags.GEN1: messages += [ ("ENGINE_DATA", 100), ("CRZ_CTRL", 50), @@ -154,7 +160,7 @@ class CarState(CarStateBase): def get_cam_can_parser(CP): messages = [] - if CP.carFingerprint in GEN1: + if CP.flags & MazdaFlags.GEN1: messages += [ # sig_address, frequency ("CAM_LANEINFO", 2), diff --git a/selfdrive/car/mazda/fingerprints.py b/selfdrive/car/mazda/fingerprints.py index 292f407935..f460fe9950 100644 --- a/selfdrive/car/mazda/fingerprints.py +++ b/selfdrive/car/mazda/fingerprints.py @@ -4,12 +4,14 @@ from openpilot.selfdrive.car.mazda.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.CX5_2022: { + CAR.MAZDA_CX5_2022: { (Ecu.eps, 0x730, None): [ b'KSD5-3210X-C-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.engine, 0x7e0, None): [ b'PEW5-188K2-A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PW67-188K2-C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PX2D-188K2-G\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2G-188K2-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2H-188K2-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PX2H-188K2-J\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -31,15 +33,17 @@ FW_VERSIONS = { ], (Ecu.transmission, 0x7e1, None): [ b'PG69-21PS1-A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PW66-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PXDL-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PXFG-21PS1-A\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PXFG-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PYB2-21PS1-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'PYB2-21PS1-J\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'PYJ3-21PS1-H\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'SH51-21PS1-C\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.CX5: { + CAR.MAZDA_CX5: { (Ecu.eps, 0x730, None): [ b'K319-3210X-A-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'KCB8-3210X-B-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -108,7 +112,7 @@ FW_VERSIONS = { b'SH9T-21PS1-D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.CX9: { + CAR.MAZDA_CX9: { (Ecu.eps, 0x730, None): [ b'K070-3210X-C-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'KJ01-3210X-G-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -158,7 +162,7 @@ FW_VERSIONS = { b'PYFM-21PS1-D\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.MAZDA3: { + CAR.MAZDA_3: { (Ecu.eps, 0x730, None): [ b'BHN1-3210X-J-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'K070-3210X-C-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -193,7 +197,7 @@ FW_VERSIONS = { b'PYKE-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.MAZDA6: { + CAR.MAZDA_6: { (Ecu.eps, 0x730, None): [ b'GBEF-3210X-B-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'GBEF-3210X-C-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', @@ -225,7 +229,7 @@ FW_VERSIONS = { b'PYH7-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], }, - CAR.CX9_2021: { + CAR.MAZDA_CX9_2021: { (Ecu.eps, 0x730, None): [ b'TC3M-3210X-A-00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], @@ -250,6 +254,7 @@ FW_VERSIONS = { b'GSH7-67XK2-P\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'GSH7-67XK2-S\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', b'GSH7-67XK2-T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', + b'GSH7-67XK2-U\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', ], (Ecu.transmission, 0x7e1, None): [ b'PXM4-21PS1-B\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', diff --git a/selfdrive/car/mazda/interface.py b/selfdrive/car/mazda/interface.py index 4bc1d1491e..2d6b68f9e1 100755 --- a/selfdrive/car/mazda/interface.py +++ b/selfdrive/car/mazda/interface.py @@ -2,7 +2,7 @@ from cereal import car from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.mazda.values import CAR, LKAS_LIMITS, BUTTON_STATES -from openpilot.selfdrive.car import get_safety_config, create_mads_event +from openpilot.selfdrive.car import create_button_events, get_safety_config, create_mads_event from openpilot.selfdrive.car.interfaces import CarInterfaceBase ButtonType = car.CarState.ButtonEvent.Type @@ -21,32 +21,14 @@ class CarInterface(CarInterfaceBase): ret.radarUnavailable = True ret.customStockLongAvailable = True - ret.dashcamOnly = candidate not in (CAR.CX5_2022, CAR.CX9_2021) + ret.dashcamOnly = candidate not in (CAR.MAZDA_CX5_2022, CAR.MAZDA_CX9_2021) ret.steerActuatorDelay = 0.1 ret.steerLimitTimer = 0.8 - ret.tireStiffnessFactor = 0.70 # not optimized yet CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - if candidate in (CAR.CX5, CAR.CX5_2022): - ret.mass = 3655 * CV.LB_TO_KG - ret.wheelbase = 2.7 - ret.steerRatio = 15.5 - elif candidate in (CAR.CX9, CAR.CX9_2021): - ret.mass = 4217 * CV.LB_TO_KG - ret.wheelbase = 3.1 - ret.steerRatio = 17.6 - elif candidate == CAR.MAZDA3: - ret.mass = 2875 * CV.LB_TO_KG - ret.wheelbase = 2.7 - ret.steerRatio = 14.0 - elif candidate == CAR.MAZDA6: - ret.mass = 3443 * CV.LB_TO_KG - ret.wheelbase = 2.83 - ret.steerRatio = 15.5 - - if candidate not in (CAR.CX5_2022, ): + if candidate not in (CAR.MAZDA_CX5_2022, ): ret.minSteerSpeed = LKAS_LIMITS.DISABLE_SPEED * CV.KPH_TO_MS ret.centerToFront = ret.wheelbase * 0.41 @@ -56,9 +38,10 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() - buttonEvents = [] + # TODO: add button types for inc and dec + buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) for button in self.CS.buttonStates: if self.CS.buttonStates[button] != self.buttonStatesPrev[button]: @@ -69,8 +52,8 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) - self.CS.accEnabled, buttonEvents = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - buttonEvents, c.vCruise) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, + buttonEvents, c.vCruise) if ret.cruiseState.available: if self.enable_mads: @@ -128,6 +111,3 @@ class CarInterface(CarInterfaceBase): self.buttonStatesPrev = self.CS.buttonStates.copy() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/mazda/mazdacan.py b/selfdrive/car/mazda/mazdacan.py index 12ca5d21f3..7c56809918 100644 --- a/selfdrive/car/mazda/mazdacan.py +++ b/selfdrive/car/mazda/mazdacan.py @@ -1,7 +1,7 @@ -from openpilot.selfdrive.car.mazda.values import GEN1, Buttons +from openpilot.selfdrive.car.mazda.values import Buttons, MazdaFlags -def create_steering_control(packer, car_fingerprint, frame, apply_steer, lkas): +def create_steering_control(packer, CP, frame, apply_steer, lkas): tmp = apply_steer + 2048 @@ -45,7 +45,7 @@ def create_steering_control(packer, car_fingerprint, frame, apply_steer, lkas): csum = csum % 256 values = {} - if car_fingerprint in GEN1: + if CP.flags & MazdaFlags.GEN1: values = { "LKAS_REQUEST": apply_steer, "CTR": ctr, @@ -88,14 +88,14 @@ def create_alert_command(packer, cam_msg: dict, ldw: bool, steer_required: bool) return packer.make_can_msg("CAM_LANEINFO", 0, values) -def create_button_cmd(packer, car_fingerprint, counter, button): +def create_button_cmd(packer, CP, counter, button): can = int(button == Buttons.CANCEL) res = int(button == Buttons.RESUME) inc = int(button == Buttons.SET_PLUS) dec = int(button == Buttons.SET_MINUS) - if car_fingerprint in GEN1: + if CP.flags & MazdaFlags.GEN1: values = { "CAN_OFF": can, "CAN_OFF_INV": (can + 1) % 2, diff --git a/selfdrive/car/mazda/values.py b/selfdrive/car/mazda/values.py index 332870e960..2aac951dbb 100644 --- a/selfdrive/car/mazda/values.py +++ b/selfdrive/car/mazda/values.py @@ -1,9 +1,10 @@ from dataclasses import dataclass, field -from enum import StrEnum +from enum import IntFlag from cereal import car -from openpilot.selfdrive.car import dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarHarness, CarInfo, CarParts +from openpilot.common.conversions import Conversions as CV +from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car.docs_definitions import CarHarness, CarDocs, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -25,15 +26,6 @@ class CarControllerParams: pass -class CAR(StrEnum): - CX5 = "MAZDA CX-5" - CX9 = "MAZDA CX-9" - MAZDA3 = "MAZDA 3" - MAZDA6 = "MAZDA 6" - CX9_2021 = "MAZDA CX-9 2021" - CX5_2022 = "MAZDA CX-5 2022" - - BUTTON_STATES = { "accelCruise": False, "decelCruise": False, @@ -43,19 +35,53 @@ BUTTON_STATES = { @dataclass -class MazdaCarInfo(CarInfo): +class MazdaCarDocs(CarDocs): package: str = "All" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.mazda])) -CAR_INFO: dict[str, MazdaCarInfo | list[MazdaCarInfo]] = { - CAR.CX5: MazdaCarInfo("Mazda CX-5 2017-21"), - CAR.CX9: MazdaCarInfo("Mazda CX-9 2016-20"), - CAR.MAZDA3: MazdaCarInfo("Mazda 3 2017-18"), - CAR.MAZDA6: MazdaCarInfo("Mazda 6 2017-20"), - CAR.CX9_2021: MazdaCarInfo("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4"), - CAR.CX5_2022: MazdaCarInfo("Mazda CX-5 2022-24"), -} +@dataclass(frozen=True, kw_only=True) +class MazdaCarSpecs(CarSpecs): + tireStiffnessFactor: float = 0.7 # not optimized yet + + +class MazdaFlags(IntFlag): + # Static flags + # Gen 1 hardware: same CAN messages and same camera + GEN1 = 1 + + +@dataclass +class MazdaPlatformConfig(PlatformConfig): + dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('mazda_2017', None)) + flags: int = MazdaFlags.GEN1 + + +class CAR(Platforms): + MAZDA_CX5 = MazdaPlatformConfig( + [MazdaCarDocs("Mazda CX-5 2017-21")], + MazdaCarSpecs(mass=3655 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.5) + ) + MAZDA_CX9 = MazdaPlatformConfig( + [MazdaCarDocs("Mazda CX-9 2016-20")], + MazdaCarSpecs(mass=4217 * CV.LB_TO_KG, wheelbase=3.1, steerRatio=17.6) + ) + MAZDA_3 = MazdaPlatformConfig( + [MazdaCarDocs("Mazda 3 2017-18")], + MazdaCarSpecs(mass=2875 * CV.LB_TO_KG, wheelbase=2.7, steerRatio=14.0) + ) + MAZDA_6 = MazdaPlatformConfig( + [MazdaCarDocs("Mazda 6 2017-20")], + MazdaCarSpecs(mass=3443 * CV.LB_TO_KG, wheelbase=2.83, steerRatio=15.5) + ) + MAZDA_CX9_2021 = MazdaPlatformConfig( + [MazdaCarDocs("Mazda CX-9 2021-23", video_link="https://youtu.be/dA3duO4a0O4")], + MAZDA_CX9.specs + ) + MAZDA_CX5_2022 = MazdaPlatformConfig( + [MazdaCarDocs("Mazda CX-5 2022-24")], + MAZDA_CX5.specs, + ) class LKAS_LIMITS: @@ -83,15 +109,4 @@ FW_QUERY_CONFIG = FwQueryConfig( ], ) - -DBC = { - CAR.CX5: dbc_dict('mazda_2017', None), - CAR.CX9: dbc_dict('mazda_2017', None), - CAR.MAZDA3: dbc_dict('mazda_2017', None), - CAR.MAZDA6: dbc_dict('mazda_2017', None), - CAR.CX9_2021: dbc_dict('mazda_2017', None), - CAR.CX5_2022: dbc_dict('mazda_2017', None), -} - -# Gen 1 hardware: same CAN messages and same camera -GEN1 = {CAR.CX5, CAR.CX9, CAR.CX9_2021, CAR.MAZDA3, CAR.MAZDA6, CAR.CX5_2022} +DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/mock/carcontroller.py b/selfdrive/car/mock/carcontroller.py new file mode 100644 index 0000000000..2b2da954ff --- /dev/null +++ b/selfdrive/car/mock/carcontroller.py @@ -0,0 +1,5 @@ +from openpilot.selfdrive.car.interfaces import CarControllerBase + +class CarController(CarControllerBase): + def update(self, CC, CS, now_nanos): + return CC.actuators.copy(), [] diff --git a/selfdrive/car/mock/carstate.py b/selfdrive/car/mock/carstate.py new file mode 100644 index 0000000000..ece908b51c --- /dev/null +++ b/selfdrive/car/mock/carstate.py @@ -0,0 +1,4 @@ +from openpilot.selfdrive.car.interfaces import CarStateBase + +class CarState(CarStateBase): + pass diff --git a/selfdrive/car/mock/interface.py b/selfdrive/car/mock/interface.py index 2e4ac43033..7506bab053 100755 --- a/selfdrive/car/mock/interface.py +++ b/selfdrive/car/mock/interface.py @@ -18,6 +18,7 @@ class CarInterface(CarInterfaceBase): ret.wheelbase = 2.70 ret.centerToFront = ret.wheelbase * 0.5 ret.steerRatio = 13. + ret.dashcamOnly = True return ret def _update(self, c): @@ -29,7 +30,3 @@ class CarInterface(CarInterfaceBase): ret.vEgoRaw = self.sm[gps_sock].speed return ret - - def apply(self, c, now_nanos): - actuators = car.CarControl.Actuators.new_message() - return actuators, [] diff --git a/selfdrive/car/mock/values.py b/selfdrive/car/mock/values.py index e75665c98f..f98aac2ee3 100644 --- a/selfdrive/car/mock/values.py +++ b/selfdrive/car/mock/values.py @@ -1,12 +1,9 @@ -from enum import StrEnum - -from openpilot.selfdrive.car.docs_definitions import CarInfo +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms -class CAR(StrEnum): - MOCK = 'mock' - - -CAR_INFO: dict[str, CarInfo | list[CarInfo] | None] = { - CAR.MOCK: None, -} +class CAR(Platforms): + MOCK = PlatformConfig( + [], + CarSpecs(mass=1700, wheelbase=2.7, steerRatio=13), + {} + ) diff --git a/selfdrive/car/nissan/carcontroller.py b/selfdrive/car/nissan/carcontroller.py index eb634a7bb3..29ecfcc8f4 100644 --- a/selfdrive/car/nissan/carcontroller.py +++ b/selfdrive/car/nissan/carcontroller.py @@ -2,13 +2,14 @@ from cereal import car from openpilot.common.realtime import DT_CTRL from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_std_steer_angle_limits +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.nissan import nissancan from openpilot.selfdrive.car.nissan.values import CAR, CarControllerParams VisualAlert = car.CarControl.HUDControl.VisualAlert -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.car_fingerprint = CP.carFingerprint @@ -68,21 +69,21 @@ class CarController: self.apply_angle_last = apply_angle - if self.CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL, CAR.ALTIMA) and pcm_cancel_cmd: + if self.CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL, CAR.NISSAN_ALTIMA) and pcm_cancel_cmd: can_sends.append(nissancan.create_acc_cancel_cmd(self.packer, self.car_fingerprint, CS.cruise_throttle_msg)) # TODO: Find better way to cancel! # For some reason spamming the cancel button is unreliable on the Leaf # We now cancel by making propilot think the seatbelt is unlatched, # this generates a beep and a warning message every time you disengage - if self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC) and self.frame % 2 == 0: + if self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC) and self.frame % 2 == 0: can_sends.append(nissancan.create_cancel_msg(self.packer, CS.cancel_msg, pcm_cancel_cmd)) can_sends.append(nissancan.create_steering_control( self.packer, apply_angle, self.frame, CC.latActive, self.lkas_max_torque)) # Below are the HUD messages. We copy the stock message and modify - if self.CP.carFingerprint != CAR.ALTIMA: + if self.CP.carFingerprint != CAR.NISSAN_ALTIMA: if self.frame % 2 == 0: can_sends.append(nissancan.create_lkas_hud_msg(self.packer, CS.lkas_hud_msg, CC.latActive, blinking_icon, lateral_paused, hud_control.leftLaneVisible, hud_control.rightLaneVisible, diff --git a/selfdrive/car/nissan/carstate.py b/selfdrive/car/nissan/carstate.py index 090fc5f269..17c6abf681 100644 --- a/selfdrive/car/nissan/carstate.py +++ b/selfdrive/car/nissan/carstate.py @@ -20,21 +20,27 @@ class CarState(CarStateBase): self.steeringTorqueSamples = deque(TORQUE_SAMPLES*[0], TORQUE_SAMPLES) self.shifter_values = can_define.dv["GEARBOX"]["GEAR_SHIFTER"] + self.prev_distance_button = 0 + self.distance_button = 0 + def update(self, cp, cp_adas, cp_cam): ret = car.CarState.new_message() + self.prev_distance_button = self.distance_button + self.distance_button = cp.vl["CRUISE_THROTTLE"]["FOLLOW_DISTANCE_BUTTON"] + self.prev_mads_enabled = self.mads_enabled - if self.CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL, CAR.ALTIMA): + if self.CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL, CAR.NISSAN_ALTIMA): ret.gas = cp.vl["GAS_PEDAL"]["GAS_PEDAL"] - elif self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + elif self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): ret.gas = cp.vl["CRUISE_THROTTLE"]["GAS_PEDAL"] ret.gasPressed = bool(ret.gas > 3) - if self.CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL, CAR.ALTIMA): + if self.CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL, CAR.NISSAN_ALTIMA): ret.brakePressed = bool(cp.vl["DOORS_LIGHTS"]["USER_BRAKE_PRESSED"]) - elif self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + elif self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): ret.brakePressed = bool(cp.vl["CRUISE_THROTTLE"]["USER_BRAKE_PRESSED"]) ret.wheelSpeeds = self.get_wheel_speeds( @@ -48,38 +54,38 @@ class CarState(CarStateBase): ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) ret.standstill = cp.vl["WHEEL_SPEEDS_REAR"]["WHEEL_SPEED_RL"] == 0.0 and cp.vl["WHEEL_SPEEDS_REAR"]["WHEEL_SPEED_RR"] == 0.0 - if self.CP.carFingerprint == CAR.ALTIMA: + if self.CP.carFingerprint == CAR.NISSAN_ALTIMA: ret.cruiseState.enabled = bool(cp.vl["CRUISE_STATE"]["CRUISE_ENABLED"]) else: ret.cruiseState.enabled = bool(cp_adas.vl["CRUISE_STATE"]["CRUISE_ENABLED"]) - if self.CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL): + if self.CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL): ret.seatbeltUnlatched = cp.vl["HUD"]["SEATBELT_DRIVER_LATCHED"] == 0 ret.cruiseState.available = bool(cp_cam.vl["PRO_PILOT"]["CRUISE_ON"]) - elif self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): - if self.CP.carFingerprint == CAR.LEAF: + elif self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): + if self.CP.carFingerprint == CAR.NISSAN_LEAF: ret.seatbeltUnlatched = cp.vl["SEATBELT"]["SEATBELT_DRIVER_LATCHED"] == 0 - elif self.CP.carFingerprint == CAR.LEAF_IC: + elif self.CP.carFingerprint == CAR.NISSAN_LEAF_IC: ret.seatbeltUnlatched = cp.vl["CANCEL_MSG"]["CANCEL_SEATBELT"] == 1 ret.cruiseState.available = bool(cp.vl["CRUISE_THROTTLE"]["CRUISE_AVAILABLE"]) - elif self.CP.carFingerprint == CAR.ALTIMA: + elif self.CP.carFingerprint == CAR.NISSAN_ALTIMA: ret.seatbeltUnlatched = cp.vl["HUD"]["SEATBELT_DRIVER_LATCHED"] == 0 ret.cruiseState.available = bool(cp_adas.vl["PRO_PILOT"]["CRUISE_ON"]) - if self.CP.carFingerprint == CAR.ALTIMA: + if self.CP.carFingerprint == CAR.NISSAN_ALTIMA: speed = cp.vl["PROPILOT_HUD"]["SET_SPEED"] else: speed = cp_adas.vl["PROPILOT_HUD"]["SET_SPEED"] if speed != 255: - if self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + if self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): conversion = CV.MPH_TO_MS if cp.vl["HUD_SETTINGS"]["SPEED_MPH"] else CV.KPH_TO_MS else: conversion = CV.MPH_TO_MS if cp.vl["HUD"]["SPEED_MPH"] else CV.KPH_TO_MS ret.cruiseState.speed = speed * conversion ret.cruiseState.speedCluster = (speed - 1) * conversion # Speed on HUD is always 1 lower than actually sent on can bus - if self.CP.carFingerprint == CAR.ALTIMA: + if self.CP.carFingerprint == CAR.NISSAN_ALTIMA: ret.steeringTorque = cp_cam.vl["STEER_TORQUE_SENSOR"]["STEER_TORQUE_DRIVER"] else: ret.steeringTorque = cp.vl["STEER_TORQUE_SENSOR"]["STEER_TORQUE_DRIVER"] @@ -103,17 +109,17 @@ class CarState(CarStateBase): can_gear = int(cp.vl["GEARBOX"]["GEAR_SHIFTER"]) ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(can_gear, None)) - if self.CP.carFingerprint == CAR.ALTIMA: + if self.CP.carFingerprint == CAR.NISSAN_ALTIMA: self.lkas_enabled = bool(cp.vl["LKAS_SETTINGS"]["LKAS_ENABLED"]) else: self.lkas_enabled = bool(cp_adas.vl["LKAS_SETTINGS"]["LKAS_ENABLED"]) self.cruise_throttle_msg = copy.copy(cp.vl["CRUISE_THROTTLE"]) - if self.CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + if self.CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): self.cancel_msg = copy.copy(cp.vl["CANCEL_MSG"]) - if self.CP.carFingerprint != CAR.ALTIMA: + if self.CP.carFingerprint != CAR.NISSAN_ALTIMA: self.lkas_hud_msg = copy.copy(cp_adas.vl["PROPILOT_HUD"]) self.lkas_hud_info_msg = copy.copy(cp_adas.vl["PROPILOT_HUD_INFO_MSG"]) @@ -132,14 +138,14 @@ class CarState(CarStateBase): ("LIGHTS", 10), ] - if CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL, CAR.ALTIMA): + if CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL, CAR.NISSAN_ALTIMA): messages += [ ("GAS_PEDAL", 100), ("CRUISE_THROTTLE", 50), ("HUD", 25), ] - elif CP.carFingerprint in (CAR.LEAF, CAR.LEAF_IC): + elif CP.carFingerprint in (CAR.NISSAN_LEAF, CAR.NISSAN_LEAF_IC): messages += [ ("BRAKE_PEDAL", 100), ("CRUISE_THROTTLE", 50), @@ -148,7 +154,7 @@ class CarState(CarStateBase): ("SEATBELT", 10), ] - if CP.carFingerprint == CAR.ALTIMA: + if CP.carFingerprint == CAR.NISSAN_ALTIMA: messages += [ ("CRUISE_STATE", 10), ("LKAS_SETTINGS", 10), @@ -164,7 +170,7 @@ class CarState(CarStateBase): def get_adas_can_parser(CP): # this function generates lists for signal, messages and initial values - if CP.carFingerprint == CAR.ALTIMA: + if CP.carFingerprint == CAR.NISSAN_ALTIMA: messages = [ ("LKAS", 100), ("PRO_PILOT", 100), @@ -184,9 +190,9 @@ class CarState(CarStateBase): def get_cam_can_parser(CP): messages = [] - if CP.carFingerprint in (CAR.ROGUE, CAR.XTRAIL): + if CP.carFingerprint in (CAR.NISSAN_ROGUE, CAR.NISSAN_XTRAIL): messages.append(("PRO_PILOT", 100)) - elif CP.carFingerprint == CAR.ALTIMA: + elif CP.carFingerprint == CAR.NISSAN_ALTIMA: messages.append(("STEER_TORQUE_SENSOR", 100)) return CANParser(DBC[CP.carFingerprint]["pt"], messages, 0) diff --git a/selfdrive/car/nissan/fingerprints.py b/selfdrive/car/nissan/fingerprints.py index 19267ded46..743feeace9 100644 --- a/selfdrive/car/nissan/fingerprints.py +++ b/selfdrive/car/nissan/fingerprints.py @@ -5,31 +5,31 @@ from openpilot.selfdrive.car.nissan.values import CAR Ecu = car.CarParams.Ecu FINGERPRINTS = { - CAR.XTRAIL: [{ + CAR.NISSAN_XTRAIL: [{ 2: 5, 42: 6, 346: 6, 347: 5, 348: 8, 349: 7, 361: 8, 386: 8, 389: 8, 397: 8, 398: 8, 403: 8, 520: 2, 523: 6, 548: 8, 645: 8, 658: 8, 665: 8, 666: 8, 674: 2, 682: 8, 683: 8, 689: 8, 723: 8, 758: 3, 768: 2, 783: 3, 851: 8, 855: 8, 1041: 8, 1055: 2, 1104: 4, 1105: 6, 1107: 4, 1108: 8, 1111: 4, 1227: 8, 1228: 8, 1247: 4, 1266: 8, 1273: 7, 1342: 1, 1376: 6, 1401: 8, 1474: 2, 1497: 3, 1821: 8, 1823: 8, 1837: 8, 2015: 8, 2016: 8, 2024: 8 }, { 2: 5, 42: 6, 346: 6, 347: 5, 348: 8, 349: 7, 361: 8, 386: 8, 389: 8, 397: 8, 398: 8, 403: 8, 520: 2, 523: 6, 527: 1, 548: 8, 637: 4, 645: 8, 658: 8, 665: 8, 666: 8, 674: 2, 682: 8, 683: 8, 689: 8, 723: 8, 758: 3, 768: 6, 783: 3, 851: 8, 855: 8, 1041: 8, 1055: 2, 1104: 4, 1105: 6, 1107: 4, 1108: 8, 1111: 4, 1227: 8, 1228: 8, 1247: 4, 1266: 8, 1273: 7, 1342: 1, 1376: 6, 1401: 8, 1474: 8, 1497: 3, 1534: 6, 1792: 8, 1821: 8, 1823: 8, 1837: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 2015: 8, 2016: 8, 2024: 8 }], - CAR.LEAF: [{ + CAR.NISSAN_LEAF: [{ 2: 5, 42: 6, 264: 3, 361: 8, 372: 8, 384: 8, 389: 8, 403: 8, 459: 7, 460: 4, 470: 8, 520: 1, 569: 8, 581: 8, 634: 7, 640: 8, 644: 8, 645: 8, 646: 5, 658: 8, 682: 8, 683: 8, 689: 8, 724: 6, 758: 3, 761: 2, 783: 3, 852: 8, 853: 8, 856: 8, 861: 8, 944: 1, 976: 6, 1008: 7, 1011: 7, 1057: 3, 1227: 8, 1228: 8, 1261: 5, 1342: 1, 1354: 8, 1361: 8, 1459: 8, 1477: 8, 1497: 3, 1549: 8, 1573: 6, 1821: 8, 1837: 8, 1856: 8, 1859: 8, 1861: 8, 1864: 8, 1874: 8, 1888: 8, 1891: 8, 1893: 8, 1906: 8, 1947: 8, 1949: 8, 1979: 8, 1981: 8, 2016: 8, 2017: 8, 2021: 8, 643: 5, 1792: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 1988: 8, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2015: 8 }, { 2: 5, 42: 8, 264: 3, 361: 8, 372: 8, 384: 8, 389: 8, 403: 8, 459: 7, 460: 4, 470: 8, 520: 1, 569: 8, 581: 8, 634: 7, 640: 8, 643: 5, 644: 8, 645: 8, 646: 5, 658: 8, 682: 8, 683: 8, 689: 8, 724: 6, 758: 3, 761: 2, 772: 8, 773: 6, 774: 7, 775: 8, 776: 6, 777: 7, 778: 6, 783: 3, 852: 8, 853: 8, 856: 8, 861: 8, 943: 8, 944: 1, 976: 6, 1008: 7, 1009: 8, 1010: 8, 1011: 7, 1012: 8, 1013: 8, 1019: 8, 1020: 8, 1021: 8, 1022: 8, 1057: 3, 1227: 8, 1228: 8, 1261: 5, 1342: 1, 1354: 8, 1361: 8, 1402: 8, 1459: 8, 1477: 8, 1497: 3, 1549: 8, 1573: 6, 1821: 8, 1837: 8 }], - CAR.LEAF_IC: [{ + CAR.NISSAN_LEAF_IC: [{ 2: 5, 42: 6, 264: 3, 282: 8, 361: 8, 372: 8, 384: 8, 389: 8, 403: 8, 459: 7, 460: 4, 470: 8, 520: 1, 569: 8, 581: 8, 634: 7, 640: 8, 643: 5, 644: 8, 645: 8, 646: 5, 658: 8, 682: 8, 683: 8, 689: 8, 756: 5, 758: 3, 761: 2, 783: 3, 830: 2, 852: 8, 853: 8, 856: 8, 861: 8, 943: 8, 944: 1, 1001: 6, 1057: 3, 1227: 8, 1228: 8, 1229: 8, 1342: 1, 1354: 8, 1361: 8, 1459: 8, 1477: 8, 1497: 3, 1514: 6, 1549: 8, 1573: 6, 1792: 8, 1821: 8, 1822: 8, 1837: 8, 1838: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 1988: 8, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2015: 8, 2016: 8, 2017: 8 }], - CAR.ROGUE: [{ + CAR.NISSAN_ROGUE: [{ 2: 5, 42: 6, 346: 6, 347: 5, 348: 8, 349: 7, 361: 8, 386: 8, 389: 8, 397: 8, 398: 8, 403: 8, 520: 2, 523: 6, 548: 8, 634: 7, 643: 5, 645: 8, 658: 8, 665: 8, 666: 8, 674: 2, 682: 8, 683: 8, 689: 8, 723: 8, 758: 3, 772: 8, 773: 6, 774: 7, 775: 8, 776: 6, 777: 7, 778: 6, 783: 3, 851: 8, 855: 8, 1041: 8, 1042: 8, 1055: 2, 1104: 4, 1105: 6, 1107: 4, 1108: 8, 1110: 7, 1111: 7, 1227: 8, 1228: 8, 1247: 4, 1266: 8, 1273: 7, 1342: 1, 1376: 6, 1401: 8, 1474: 2, 1497: 3, 1534: 7, 1792: 8, 1821: 8, 1823: 8, 1837: 8, 1839: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 1988: 8, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2015: 8, 2016: 8, 2017: 8, 2024: 8, 2025: 8 }], - CAR.ALTIMA: [{ + CAR.NISSAN_ALTIMA: [{ 2: 5, 42: 6, 346: 6, 347: 5, 348: 8, 349: 7, 361: 8, 386: 8, 389: 8, 397: 8, 398: 8, 403: 8, 438: 8, 451: 8, 517: 8, 520: 2, 522: 8, 523: 6, 539: 8, 541: 7, 542: 8, 543: 8, 544: 8, 545: 8, 546: 8, 547: 8, 548: 8, 570: 8, 576: 8, 577: 8, 582: 8, 583: 8, 584: 8, 586: 8, 587: 8, 588: 8, 589: 8, 590: 8, 591: 8, 592: 8, 600: 8, 601: 8, 610: 8, 611: 8, 612: 8, 614: 8, 615: 8, 616: 8, 617: 8, 622: 8, 623: 8, 634: 7, 638: 8, 645: 8, 648: 5, 654: 6, 658: 8, 659: 8, 660: 8, 661: 8, 665: 8, 666: 8, 674: 2, 675: 8, 676: 8, 682: 8, 683: 8, 684: 8, 685: 8, 686: 8, 687: 8, 689: 8, 690: 8, 703: 8, 708: 7, 709: 7, 711: 7, 712: 7, 713: 7, 714: 8, 715: 8, 716: 8, 717: 7, 718: 7, 719: 7, 720: 7, 723: 8, 726: 7, 727: 7, 728: 7, 735: 8, 746: 8, 748: 6, 749: 6, 750: 8, 758: 3, 772: 8, 773: 6, 774: 7, 775: 8, 776: 6, 777: 7, 778: 6, 779: 7, 781: 7, 782: 7, 783: 3, 851: 8, 855: 5, 1001: 6, 1041: 8, 1042: 8, 1055: 3, 1100: 7, 1104: 4, 1105: 6, 1107: 4, 1108: 8, 1110: 7, 1111: 7, 1144: 7, 1145: 7, 1227: 8, 1228: 8, 1229: 8, 1232: 8, 1247: 4, 1258: 8, 1259: 8, 1266: 8, 1273: 7, 1306: 1, 1314: 8, 1323: 8, 1324: 8, 1342: 1, 1376: 8, 1401: 8, 1454: 8, 1497: 3, 1514: 6, 1526: 8, 1527: 5, 1792: 8, 1821: 8, 1823: 8, 1837: 8, 1872: 8, 1937: 8, 1953: 8, 1968: 8, 1988: 8, 2000: 8, 2001: 8, 2004: 8, 2005: 8, 2015: 8, 2016: 8, 2017: 8, 2024: 8, 2025: 8 }], } FW_VERSIONS = { - CAR.ALTIMA: { + CAR.NISSAN_ALTIMA: { (Ecu.fwdCamera, 0x707, None): [ b'284N86CA1D', ], @@ -43,7 +43,7 @@ FW_VERSIONS = { b'284U29HE0A', ], }, - CAR.LEAF: { + CAR.NISSAN_LEAF: { (Ecu.abs, 0x740, None): [ b'476605SA1C', b'476605SA7D', @@ -72,7 +72,7 @@ FW_VERSIONS = { b'284U26WK0C', ], }, - CAR.LEAF_IC: { + CAR.NISSAN_LEAF_IC: { (Ecu.fwdCamera, 0x707, None): [ b'5SH1BDB\x04\x18\x00\x00\x00\x00\x00_-?\x04\x91\xf2\x00\x00\x00\x80', b'5SH4BDB\x04\x18\x00\x00\x00\x00\x00_-?\x04\x91\xf2\x00\x00\x00\x80', @@ -94,7 +94,7 @@ FW_VERSIONS = { b'284U25SK2D', ], }, - CAR.XTRAIL: { + CAR.NISSAN_XTRAIL: { (Ecu.fwdCamera, 0x707, None): [ b'284N86FR2A', ], diff --git a/selfdrive/car/nissan/interface.py b/selfdrive/car/nissan/interface.py index 09d4614248..4416299230 100644 --- a/selfdrive/car/nissan/interface.py +++ b/selfdrive/car/nissan/interface.py @@ -1,6 +1,6 @@ from cereal import car from panda import Panda -from openpilot.selfdrive.car import get_safety_config, create_mads_event +from openpilot.selfdrive.car import create_button_events, get_safety_config, create_mads_event from openpilot.selfdrive.car.interfaces import CarInterfaceBase from openpilot.selfdrive.car.nissan.values import CAR @@ -23,7 +23,7 @@ class CarInterface(CarInterfaceBase): ret.steerControlType = car.CarParams.SteerControlType.angle ret.radarUnavailable = True - if candidate == CAR.ALTIMA: + if candidate == CAR.NISSAN_ALTIMA: # Altima has EPS on C-CAN unlike the others that have it on V-CAN ret.safetyConfigs[0].safetyParam |= Panda.FLAG_NISSAN_ALT_EPS_BUS @@ -32,12 +32,9 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_adas, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() - buttonEvents = [] - #be = car.CarState.ButtonEvent.new_message() - #be.type = car.CarState.ButtonEvent.Type.accelCruise - #buttonEvents.append(be) + buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) @@ -86,6 +83,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/nissan/nissancan.py b/selfdrive/car/nissan/nissancan.py index 32d94b2a59..c72c12ed45 100644 --- a/selfdrive/car/nissan/nissancan.py +++ b/selfdrive/car/nissan/nissancan.py @@ -39,7 +39,7 @@ def create_acc_cancel_cmd(packer, car_fingerprint, cruise_throttle_msg): "unsure2", "unsure3", ]} - can_bus = 1 if car_fingerprint == CAR.ALTIMA else 2 + can_bus = 1 if car_fingerprint == CAR.NISSAN_ALTIMA else 2 values["CANCEL_BUTTON"] = 1 values["NO_BUTTON_PRESSED"] = 0 diff --git a/selfdrive/car/nissan/values.py b/selfdrive/car/nissan/values.py index f48b2ecc04..9fbb4cf88b 100644 --- a/selfdrive/car/nissan/values.py +++ b/selfdrive/car/nissan/values.py @@ -3,7 +3,7 @@ from dataclasses import dataclass, field from cereal import car from panda.python import uds from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarInfo, CarHarness, CarParts +from openpilot.selfdrive.car.docs_definitions import CarDocs, CarHarness, CarParts from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -20,7 +20,7 @@ class CarControllerParams: @dataclass -class NissanCarInfo(CarInfo): +class NissanCarDocs(CarDocs): package: str = "ProPILOT Assist" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.nissan_a])) @@ -31,44 +31,38 @@ class NissanCarSpecs(CarSpecs): steerRatio: float = 17. -@dataclass(frozen=True) -class NissanPlaformConfig(PlatformConfig): +@dataclass +class NissanPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('nissan_x_trail_2017_generated', None)) class CAR(Platforms): - XTRAIL = NissanPlaformConfig( - "NISSAN X-TRAIL 2017", - NissanCarInfo("Nissan X-Trail 2017"), - specs=NissanCarSpecs(mass=1610, wheelbase=2.705) + NISSAN_XTRAIL = NissanPlatformConfig( + [NissanCarDocs("Nissan X-Trail 2017")], + NissanCarSpecs(mass=1610, wheelbase=2.705) ) - LEAF = NissanPlaformConfig( - "NISSAN LEAF 2018", - NissanCarInfo("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY"), - dbc_dict=dbc_dict('nissan_leaf_2018_generated', None), - specs=NissanCarSpecs(mass=1610, wheelbase=2.705) + NISSAN_LEAF = NissanPlatformConfig( + [NissanCarDocs("Nissan Leaf 2018-23", video_link="https://youtu.be/vaMbtAh_0cY")], + NissanCarSpecs(mass=1610, wheelbase=2.705), + dbc_dict('nissan_leaf_2018_generated', None), ) # Leaf with ADAS ECU found behind instrument cluster instead of glovebox # Currently the only known difference between them is the inverted seatbelt signal. - LEAF_IC = NissanPlaformConfig( - "NISSAN LEAF 2018 Instrument Cluster", - NissanCarInfo("Nissan Leaf Instrument Cluster 2018-23", video_link="https://youtu.be/vaMbtAh_0cY"), - dbc_dict=dbc_dict('nissan_leaf_2018_generated', None), - specs=NissanCarSpecs(mass=1610, wheelbase=2.705) + NISSAN_LEAF_IC = NissanPlatformConfig( + [NissanCarDocs("Nissan Leaf Instrument Cluster 2018-23", video_link="https://youtu.be/vaMbtAh_0cY")], + NISSAN_LEAF.specs, + dbc_dict('nissan_leaf_2018_generated', None), ) - ROGUE = NissanPlaformConfig( - "NISSAN ROGUE 2019", - NissanCarInfo("Nissan Rogue 2018-20"), - specs=NissanCarSpecs(mass=1610, wheelbase=2.705) + NISSAN_ROGUE = NissanPlatformConfig( + [NissanCarDocs("Nissan Rogue 2018-20")], + NissanCarSpecs(mass=1610, wheelbase=2.705) ) - ALTIMA = NissanPlaformConfig( - "NISSAN ALTIMA 2020", - NissanCarInfo("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b])), - specs=NissanCarSpecs(mass=1492, wheelbase=2.824) + NISSAN_ALTIMA = NissanPlatformConfig( + [NissanCarDocs("Nissan Altima 2019-20", car_parts=CarParts.common([CarHarness.nissan_b]))], + NissanCarSpecs(mass=1492, wheelbase=2.824) ) -CAR_INFO = CAR.create_carinfo_map() DBC = CAR.create_dbc_map() # Default diagnostic session diff --git a/selfdrive/car/subaru/carcontroller.py b/selfdrive/car/subaru/carcontroller.py index 8dc4e1e702..b3cb736298 100644 --- a/selfdrive/car/subaru/carcontroller.py +++ b/selfdrive/car/subaru/carcontroller.py @@ -3,9 +3,9 @@ from openpilot.common.numpy_fast import clip, interp from openpilot.common.params import Params from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_driver_steer_torque_limits, common_fault_avoidance +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.subaru import subarucan -from openpilot.selfdrive.car.subaru.values import DBC, GLOBAL_ES_ADDR, GLOBAL_GEN2, PREGLOBAL_CARS, HYBRID_CARS, STEER_RATE_LIMITED, \ - CanBus, CarControllerParams, SubaruFlags, SubaruFlagsSP +from openpilot.selfdrive.car.subaru.values import DBC, GLOBAL_ES_ADDR, CanBus, CarControllerParams, SubaruFlags, SubaruFlagsSP # FIXME: These limits aren't exact. The real limit is more than likely over a larger time period and # involves the total steering angle change rather than rate, but these limits work well for now @@ -16,7 +16,7 @@ _SNG_ACC_MIN_DIST = 3 _SNG_ACC_MAX_DIST = 4.5 -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.apply_steer_last = 0 @@ -64,12 +64,12 @@ class CarController: if not CC.latActive: apply_steer = 0 - if self.CP.carFingerprint in PREGLOBAL_CARS: + if self.CP.flags & SubaruFlags.PREGLOBAL: can_sends.append(subarucan.create_preglobal_steering_control(self.packer, self.frame // self.p.STEER_STEP, apply_steer, CC.latActive)) else: apply_steer_req = CC.latActive - if self.CP.carFingerprint in STEER_RATE_LIMITED: + if self.CP.flags & SubaruFlags.STEER_RATE_LIMITED: # Steering rate fault prevention self.steer_rate_counter, apply_steer_req = \ common_fault_avoidance(abs(CS.out.steeringRateDeg) > MAX_STEER_RATE, apply_steer_req, @@ -99,7 +99,7 @@ class CarController: cruise_brake = CarControllerParams.BRAKE_MIN # *** alerts and pcm cancel *** - if self.CP.carFingerprint in PREGLOBAL_CARS: + if self.CP.flags & SubaruFlags.PREGLOBAL: if self.frame % 5 == 0: # 1 = main, 2 = set shallow, 3 = set deep, 4 = resume shallow, 5 = resume deep # disengage ACC when OP is disengaged @@ -151,8 +151,8 @@ class CarController: self.CP.openpilotLongitudinalControl, cruise_brake > 0, cruise_throttle)) else: if pcm_cancel_cmd: - if self.CP.carFingerprint not in HYBRID_CARS: - bus = CanBus.alt if self.CP.carFingerprint in GLOBAL_GEN2 else CanBus.main + if not (self.CP.flags & SubaruFlags.HYBRID): + bus = CanBus.alt if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else CanBus.main can_sends.append(subarucan.create_es_distance(self.packer, CS.es_distance_msg["COUNTER"] + 1, CS.es_distance_msg, bus, pcm_cancel_cmd)) if self.CP.flags & SubaruFlags.DISABLE_EYESIGHT: @@ -181,7 +181,7 @@ class CarController: def stop_and_go(self, CC: car.CarControl, CS: car.CarState, throttle_cmd: bool = False, speed_cmd: bool = False) -> tuple[bool, bool]: if not self.subaru_sng: return throttle_cmd, speed_cmd - if self.CP.carFingerprint in PREGLOBAL_CARS: + if self.CP.flags & SubaruFlags.PREGLOBAL: # Initiate the ACC resume sequence if conditions are met if (CC.enabled # ACC active and CS.car_follow == 1 # lead car @@ -190,7 +190,7 @@ class CarController: and CS.close_distance < _SNG_ACC_MAX_DIST # acc resume trigger high threshold and CS.close_distance > self.prev_close_distance): # distance with lead car is increasing self.sng_acc_resume = True - elif self.CP.carFingerprint not in (GLOBAL_GEN2 | HYBRID_CARS): + elif not (self.CP.flags & (SubaruFlags.GLOBAL_GEN2 | SubaruFlags.HYBRID)): if self.manual_parking_brake: # Send brake message with non-zero speed in standstill to avoid non-EPB ACC disengage if (CC.enabled # ACC active diff --git a/selfdrive/car/subaru/carstate.py b/selfdrive/car/subaru/carstate.py index 036dcbcd49..5cff425efe 100644 --- a/selfdrive/car/subaru/carstate.py +++ b/selfdrive/car/subaru/carstate.py @@ -4,7 +4,7 @@ from opendbc.can.can_define import CANDefine from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.interfaces import CarStateBase from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.subaru.values import DBC, GLOBAL_GEN2, PREGLOBAL_CARS, HYBRID_CARS, CanBus, SubaruFlags, SubaruFlagsSP +from openpilot.selfdrive.car.subaru.values import DBC, CanBus, SubaruFlags, SubaruFlagsSP from openpilot.selfdrive.car import CanSignalRateCalculator @@ -25,20 +25,30 @@ class CarState(CarStateBase): self.prev_mads_enabled = self.mads_enabled self.prev_lkas_enabled = self.lkas_enabled - throttle_msg = cp.vl["Throttle"] if self.car_fingerprint not in HYBRID_CARS else cp_body.vl["Throttle_Hybrid"] + throttle_msg = cp.vl["Throttle"] if not (self.CP.flags & SubaruFlags.HYBRID) else cp_body.vl["Throttle_Hybrid"] ret.gas = throttle_msg["Throttle_Pedal"] / 255. ret.gasPressed = ret.gas > 1e-5 - if self.car_fingerprint in PREGLOBAL_CARS: + if self.CP.flags & SubaruFlags.PREGLOBAL: ret.brakePressed = cp.vl["Brake_Pedal"]["Brake_Pedal"] > 0 else: - cp_brakes = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp + cp_brakes = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp ret.brakePressed = cp_brakes.vl["Brake_Status"]["Brake"] == 1 - brake_msg = "ES_Brake" if self.car_fingerprint in PREGLOBAL_CARS else "ES_DashStatus" - brake_sig = "Cruise_Brake_Lights" if self.car_fingerprint in PREGLOBAL_CARS else "Brake_Lights" + brake_msg = "ES_Brake" if self.CP.flags & SubaruFlags.PREGLOBAL else "ES_DashStatus" + brake_sig = "Cruise_Brake_Lights" if self.CP.flags & SubaruFlags.PREGLOBAL else "Brake_Lights" ret.brakeLightsDEPRECATED = bool(cp_cam.vl[brake_msg][brake_sig]) - cp_wheels = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp + cp_es_distance = cp_body if self.CP.flags & (SubaruFlags.GLOBAL_GEN2 | SubaruFlags.HYBRID) else cp_cam + if not (self.CP.flags & SubaruFlags.HYBRID): + eyesight_fault = bool(cp_es_distance.vl["ES_Distance"]["Cruise_Fault"]) + + # if openpilot is controlling long, an eyesight fault is a non-critical fault. otherwise it's an ACC fault + if self.CP.openpilotLongitudinalControl: + ret.carFaultedNonCritical = eyesight_fault + else: + ret.accFaulted = eyesight_fault + + cp_wheels = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp ret.wheelSpeeds = self.get_wheel_speeds( cp_wheels.vl["Wheel_Speeds"]["FL"], cp_wheels.vl["Wheel_Speeds"]["FR"], @@ -49,7 +59,7 @@ class CarState(CarStateBase): ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) ret.standstill = ret.vEgoRaw == 0 - if self.car_fingerprint not in PREGLOBAL_CARS: + if not self.CP.flags & SubaruFlags.PREGLOBAL: self.lkas_enabled = cp_cam.vl["ES_LKAS_State"]["LKAS_Dash_State"] if self.prev_lkas_enabled is None: self.prev_lkas_enabled = self.lkas_enabled @@ -62,24 +72,24 @@ class CarState(CarStateBase): ret.leftBlindspot = (cp.vl["BSD_RCTA"]["L_ADJACENT"] == 1) or (cp.vl["BSD_RCTA"]["L_APPROACHING"] == 1) ret.rightBlindspot = (cp.vl["BSD_RCTA"]["R_ADJACENT"] == 1) or (cp.vl["BSD_RCTA"]["R_APPROACHING"] == 1) - cp_transmission = cp_body if self.car_fingerprint in HYBRID_CARS else cp + cp_transmission = cp_body if self.CP.flags & SubaruFlags.HYBRID else cp can_gear = int(cp_transmission.vl["Transmission"]["Gear"]) ret.gearShifter = self.parse_gear_shifter(self.shifter_values.get(can_gear, None)) ret.steeringAngleDeg = cp.vl["Steering_Torque"]["Steering_Angle"] - if self.car_fingerprint not in PREGLOBAL_CARS: + if not (self.CP.flags & SubaruFlags.PREGLOBAL): # ideally we get this from the car, but unclear if it exists. diagnostic software doesn't even have it ret.steeringRateDeg = self.angle_rate_calulator.update(ret.steeringAngleDeg, cp.vl["Steering_Torque"]["COUNTER"]) ret.steeringTorque = cp.vl["Steering_Torque"]["Steer_Torque_Sensor"] ret.steeringTorqueEps = cp.vl["Steering_Torque"]["Steer_Torque_Output"] - steer_threshold = 75 if self.CP.carFingerprint in PREGLOBAL_CARS else 80 + steer_threshold = 75 if self.CP.flags & SubaruFlags.PREGLOBAL else 80 ret.steeringPressed = abs(ret.steeringTorque) > steer_threshold - cp_cruise = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp - if self.car_fingerprint in HYBRID_CARS: + cp_cruise = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp + if self.CP.flags & SubaruFlags.HYBRID: ret.cruiseState.enabled = cp_cam.vl["ES_DashStatus"]['Cruise_Activated'] != 0 ret.cruiseState.available = cp_cam.vl["ES_DashStatus"]['Cruise_On'] != 0 else: @@ -87,8 +97,8 @@ class CarState(CarStateBase): ret.cruiseState.available = cp_cruise.vl["CruiseControl"]["Cruise_On"] != 0 ret.cruiseState.speed = cp_cam.vl["ES_DashStatus"]["Cruise_Set_Speed"] * CV.KPH_TO_MS - if (self.car_fingerprint in PREGLOBAL_CARS and cp.vl["Dash_State2"]["UNITS"] == 1) or \ - (self.car_fingerprint not in PREGLOBAL_CARS and cp.vl["Dashlights"]["UNITS"] == 1): + if (self.CP.flags & SubaruFlags.PREGLOBAL and cp.vl["Dash_State2"]["UNITS"] == 1) or \ + (not (self.CP.flags & SubaruFlags.PREGLOBAL) and cp.vl["Dashlights"]["UNITS"] == 1): ret.cruiseState.speed *= CV.MPH_TO_KPH ret.seatbeltUnlatched = cp.vl["Dashlights"]["SEATBELT_FL"] == 1 @@ -98,8 +108,7 @@ class CarState(CarStateBase): cp.vl["BodyInfo"]["DOOR_OPEN_FL"]]) ret.steerFaultPermanent = cp.vl["Steering_Torque"]["Steer_Error_1"] == 1 - cp_es_distance = cp_body if self.car_fingerprint in (GLOBAL_GEN2 | HYBRID_CARS) else cp_cam - if self.car_fingerprint in PREGLOBAL_CARS: + if self.CP.flags & SubaruFlags.PREGLOBAL: self.cruise_button = cp_cam.vl["ES_Distance"]["Cruise_Button"] self.ready = not cp_cam.vl["ES_DashStatus"]["Not_Ready_Startup"] else: @@ -110,12 +119,12 @@ class CarState(CarStateBase): (cp_cam.vl["ES_LKAS_State"]["LKAS_Alert"] == 2) self.es_lkas_state_msg = copy.copy(cp_cam.vl["ES_LKAS_State"]) - cp_es_brake = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp_cam + cp_es_brake = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp_cam self.es_brake_msg = copy.copy(cp_es_brake.vl["ES_Brake"]) - cp_es_status = cp_body if self.car_fingerprint in GLOBAL_GEN2 else cp_cam + cp_es_status = cp_body if self.CP.flags & SubaruFlags.GLOBAL_GEN2 else cp_cam # TODO: Hybrid cars don't have ES_Distance, need a replacement - if self.car_fingerprint not in HYBRID_CARS: + if not (self.CP.flags & SubaruFlags.HYBRID): # 8 is known AEB, there are a few other values related to AEB we ignore ret.stockAeb = (cp_es_distance.vl["ES_Brake"]["AEB_Status"] == 8) and \ (cp_es_distance.vl["ES_Brake"]["Brake_Pressure"] != 0) @@ -127,7 +136,7 @@ class CarState(CarStateBase): self.cruise_state = cp_cam.vl["ES_DashStatus"]["Cruise_State"] self.brake_pedal_msg = copy.copy(cp.vl["Brake_Pedal"]) - if self.car_fingerprint not in HYBRID_CARS: + if not (self.CP.flags & SubaruFlags.HYBRID): self.es_distance_msg = copy.copy(cp_es_distance.vl["ES_Distance"]) if self.CP.spFlags & SubaruFlagsSP.SP_SUBARU_SNG: self.throttle_msg = copy.copy(cp.vl["Throttle"]) @@ -147,7 +156,7 @@ class CarState(CarStateBase): ("Brake_Status", 50), ] - if CP.carFingerprint not in HYBRID_CARS: + if not (CP.flags & SubaruFlags.HYBRID): messages.append(("CruiseControl", 20)) return messages @@ -158,7 +167,7 @@ class CarState(CarStateBase): ("ES_Brake", 20), ] - if CP.carFingerprint not in HYBRID_CARS: + if not (CP.flags & SubaruFlags.HYBRID): messages += [ ("ES_Distance", 20), ("ES_Status", 20) @@ -186,7 +195,7 @@ class CarState(CarStateBase): ("Brake_Pedal", 50), ] - if CP.carFingerprint not in HYBRID_CARS: + if not (CP.flags & SubaruFlags.HYBRID): messages += [ ("Throttle", 100), ("Transmission", 100) @@ -195,8 +204,8 @@ class CarState(CarStateBase): if CP.enableBsm: messages.append(("BSD_RCTA", 17)) - if CP.carFingerprint not in PREGLOBAL_CARS: - if CP.carFingerprint not in GLOBAL_GEN2: + if not (CP.flags & SubaruFlags.PREGLOBAL): + if not (CP.flags & SubaruFlags.GLOBAL_GEN2): messages += CarState.get_common_global_body_messages(CP) else: messages += CarState.get_common_preglobal_body_messages() @@ -205,7 +214,7 @@ class CarState(CarStateBase): @staticmethod def get_cam_can_parser(CP): - if CP.carFingerprint in PREGLOBAL_CARS: + if CP.flags & SubaruFlags.PREGLOBAL: messages = [ ("ES_DashStatus", 20), ("ES_Distance", 20), @@ -217,7 +226,7 @@ class CarState(CarStateBase): ("ES_LKAS_State", 10), ] - if CP.carFingerprint not in GLOBAL_GEN2: + if not (CP.flags & SubaruFlags.GLOBAL_GEN2): messages += CarState.get_common_global_es_messages(CP) if CP.flags & SubaruFlags.SEND_INFOTAINMENT: @@ -229,11 +238,11 @@ class CarState(CarStateBase): def get_body_can_parser(CP): messages = [] - if CP.carFingerprint in GLOBAL_GEN2: + if CP.flags & SubaruFlags.GLOBAL_GEN2: messages += CarState.get_common_global_body_messages(CP) messages += CarState.get_common_global_es_messages(CP) - if CP.carFingerprint in HYBRID_CARS: + if CP.flags & SubaruFlags.HYBRID: messages += [ ("Throttle_Hybrid", 40), ("Transmission", 100) diff --git a/selfdrive/car/subaru/fingerprints.py b/selfdrive/car/subaru/fingerprints.py index 90fa6093d9..41727d7623 100644 --- a/selfdrive/car/subaru/fingerprints.py +++ b/selfdrive/car/subaru/fingerprints.py @@ -4,7 +4,7 @@ from openpilot.selfdrive.car.subaru.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.ASCENT: { + CAR.SUBARU_ASCENT: { (Ecu.abs, 0x7b0, None): [ b'\xa5 \x19\x02\x00', b'\xa5 !\x02\x00', @@ -26,13 +26,14 @@ FW_VERSIONS = { b'\xd1,\xa0q\x07', ], (Ecu.transmission, 0x7e1, None): [ + b'\x00>\xf0\x00\x00', b'\x00\xfe\xf7\x00\x00', b'\x01\xfe\xf7\x00\x00', b'\x01\xfe\xf9\x00\x00', b'\x01\xfe\xfa\x00\x00', ], }, - CAR.ASCENT_2023: { + CAR.SUBARU_ASCENT_2023: { (Ecu.abs, 0x7b0, None): [ b'\xa5 #\x03\x00', ], @@ -49,7 +50,7 @@ FW_VERSIONS = { b'\x04\xfe\xf3\x00\x00', ], }, - CAR.LEGACY: { + CAR.SUBARU_LEGACY: { (Ecu.abs, 0x7b0, None): [ b'\xa1 \x02\x01', b'\xa1 \x02\x02', @@ -77,7 +78,7 @@ FW_VERSIONS = { b'\xa7\xfe\xc4@\x00', ], }, - CAR.IMPREZA: { + CAR.SUBARU_IMPREZA: { (Ecu.abs, 0x7b0, None): [ b'z\x84\x19\x90\x00', b'z\x94\x08\x90\x00', @@ -148,6 +149,7 @@ FW_VERSIONS = { b'\xe3\xf5C\x00\x00', b'\xe3\xf5F\x00\x00', b'\xe3\xf5G\x00\x00', + b'\xe4\xe5\x021\x00', b'\xe4\xe5\x061\x00', b'\xe4\xf5\x02\x00\x00', b'\xe4\xf5\x07\x00\x00', @@ -156,7 +158,7 @@ FW_VERSIONS = { b'\xe5\xf5B\x00\x00', ], }, - CAR.IMPREZA_2020: { + CAR.SUBARU_IMPREZA_2020: { (Ecu.abs, 0x7b0, None): [ b'\xa2 \x193\x00', b'\xa2 \x194\x00', @@ -195,6 +197,7 @@ FW_VERSIONS = { b'\xe6"fp\x07', b'\xf3"f@\x07', b'\xf3"fp\x07', + b'\xf3"fr\x07', ], (Ecu.transmission, 0x7e1, None): [ b'\xe6\xf5\x04\x00\x00', @@ -209,7 +212,7 @@ FW_VERSIONS = { b'\xe9\xf6F0\x00', ], }, - CAR.CROSSTREK_HYBRID: { + CAR.SUBARU_CROSSTREK_HYBRID: { (Ecu.abs, 0x7b0, None): [ b'\xa2 \x19e\x01', b'\xa2 !e\x01', @@ -227,12 +230,13 @@ FW_VERSIONS = { b'\xf4!`0\x07', ], }, - CAR.FORESTER: { + CAR.SUBARU_FORESTER: { (Ecu.abs, 0x7b0, None): [ b'\xa3 \x18\x14\x00', b'\xa3 \x18&\x00', b'\xa3 \x19\x14\x00', b'\xa3 \x19&\x00', + b'\xa3 \x19h\x00', b'\xa3 \x14\x00', b'\xa3 \x14\x01', ], @@ -245,6 +249,7 @@ FW_VERSIONS = { b'\x00\x00e!\x1f@ \x11', b'\x00\x00e^\x00\x00\x00\x00', b'\x00\x00e^\x1f@ !', + b'\x00\x00e`\x00\x00\x00\x00', b'\x00\x00e`\x1f@ ', b'\x00\x00e\x97\x00\x00\x00\x00', b'\x00\x00e\x97\x1f@ 0', @@ -265,9 +270,10 @@ FW_VERSIONS = { b'\x1a\xf6F`\x00', b'\x1a\xf6b0\x00', b'\x1a\xf6b`\x00', + b'\x1a\xf6f`\x00', ], }, - CAR.FORESTER_HYBRID: { + CAR.SUBARU_FORESTER_HYBRID: { (Ecu.abs, 0x7b0, None): [ b'\xa3 \x19T\x00', ], @@ -284,7 +290,7 @@ FW_VERSIONS = { b'\x1b\xa7@a\x00', ], }, - CAR.FORESTER_PREGLOBAL: { + CAR.SUBARU_FORESTER_PREGLOBAL: { (Ecu.abs, 0x7b0, None): [ b'm\x97\x14@', b'}\x97\x14@', @@ -315,7 +321,7 @@ FW_VERSIONS = { b'\xdc\xf2`\x81\x00', ], }, - CAR.LEGACY_PREGLOBAL: { + CAR.SUBARU_LEGACY_PREGLOBAL: { (Ecu.abs, 0x7b0, None): [ b'[\x97D\x00', b'[\xba\xc4\x03', @@ -348,7 +354,7 @@ FW_VERSIONS = { b'\xbf\xfb\xc0\x80\x00', ], }, - CAR.OUTBACK_PREGLOBAL: { + CAR.SUBARU_OUTBACK_PREGLOBAL: { (Ecu.abs, 0x7b0, None): [ b'[\xba\xac\x03', b'[\xf7\xac\x00', @@ -401,7 +407,7 @@ FW_VERSIONS = { b'\xbf\xfb\xe0b\x00', ], }, - CAR.OUTBACK_PREGLOBAL_2018: { + CAR.SUBARU_OUTBACK_PREGLOBAL_2018: { (Ecu.abs, 0x7b0, None): [ b'\x8b\x97\xac\x00', b'\x8b\x97\xbc\x00', @@ -444,7 +450,7 @@ FW_VERSIONS = { b'\xbc\xfb\xe0\x80\x00', ], }, - CAR.OUTBACK: { + CAR.SUBARU_OUTBACK: { (Ecu.abs, 0x7b0, None): [ b'\xa1 \x06\x00', b'\xa1 \x06\x01', @@ -493,7 +499,7 @@ FW_VERSIONS = { b'\xa7\xfe\xf4@\x00', ], }, - CAR.FORESTER_2022: { + CAR.SUBARU_FORESTER_2022: { (Ecu.abs, 0x7b0, None): [ b'\xa3 !v\x00', b'\xa3 !x\x00', @@ -526,7 +532,7 @@ FW_VERSIONS = { b'\x1e\xf6D0\x00', ], }, - CAR.OUTBACK_2023: { + CAR.SUBARU_OUTBACK_2023: { (Ecu.abs, 0x7b0, None): [ b'\xa1 #\x14\x00', b'\xa1 #\x17\x00', diff --git a/selfdrive/car/subaru/interface.py b/selfdrive/car/subaru/interface.py index e6a1094753..4f0e285e62 100644 --- a/selfdrive/car/subaru/interface.py +++ b/selfdrive/car/subaru/interface.py @@ -1,43 +1,42 @@ from cereal import car from panda import Panda from openpilot.selfdrive.car import get_safety_config, create_mads_event -from openpilot.selfdrive.car.values import Platform from openpilot.selfdrive.car.disable_ecu import disable_ecu from openpilot.selfdrive.car.interfaces import CarInterfaceBase -from openpilot.selfdrive.car.subaru.values import CAR, GLOBAL_ES_ADDR, LKAS_ANGLE, GLOBAL_GEN2, PREGLOBAL_CARS, HYBRID_CARS, SubaruFlags, SubaruFlagsSP +from openpilot.selfdrive.car.subaru.values import CAR, GLOBAL_ES_ADDR, SubaruFlags, SubaruFlagsSP + ButtonType = car.CarState.ButtonEvent.Type EventName = car.CarEvent.EventName GearShifter = car.CarState.GearShifter - class CarInterface(CarInterfaceBase): @staticmethod - def _get_params(ret, candidate: Platform, fingerprint, car_fw, experimental_long, docs): + def _get_params(ret, candidate: CAR, fingerprint, car_fw, experimental_long, docs): ret.carName = "subaru" ret.radarUnavailable = True # for HYBRID CARS to be upstreamed, we need: # - replacement for ES_Distance so we can cancel the cruise control # - to find the Cruise_Activated bit from the car # - proper panda safety setup (use the correct cruise_activated bit, throttle from Throttle_Hybrid, etc) - ret.dashcamOnly = candidate in (LKAS_ANGLE | HYBRID_CARS) + ret.dashcamOnly = bool(ret.flags & (SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID)) ret.autoResumeSng = False # Detect infotainment message sent from the camera - if candidate not in PREGLOBAL_CARS and 0x323 in fingerprint[2]: + if not (ret.flags & SubaruFlags.PREGLOBAL) and 0x323 in fingerprint[2]: ret.flags |= SubaruFlags.SEND_INFOTAINMENT.value - if candidate in PREGLOBAL_CARS: + if ret.flags & SubaruFlags.PREGLOBAL: ret.enableBsm = 0x25c in fingerprint[0] ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.subaruPreglobal)] else: ret.enableBsm = 0x228 in fingerprint[0] ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.subaru)] - if candidate in GLOBAL_GEN2: + if ret.flags & SubaruFlags.GLOBAL_GEN2: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_SUBARU_GEN2 - if candidate not in (GLOBAL_GEN2 | HYBRID_CARS): + if not bool(ret.flags & (SubaruFlags.GLOBAL_GEN2 | SubaruFlags.HYBRID)): ret.autoResumeSng = True ret.spFlags |= SubaruFlagsSP.SP_SUBARU_SNG.value ret.safetyConfigs[0].safetyParam |= Panda.FLAG_SUBARU_SNG @@ -45,20 +44,20 @@ class CarInterface(CarInterfaceBase): ret.steerLimitTimer = 0.4 ret.steerActuatorDelay = 0.1 - if candidate in LKAS_ANGLE: + if ret.flags & SubaruFlags.LKAS_ANGLE: ret.steerControlType = car.CarParams.SteerControlType.angle else: CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) - if candidate in (CAR.ASCENT, CAR.ASCENT_2023): - ret.steerActuatorDelay = 0.3 # end-to-end angle controller + if candidate in (CAR.SUBARU_ASCENT, CAR.SUBARU_ASCENT_2023): + ret.steerActuatorDelay = 0.3 # end-to-end angle controller ret.lateralTuning.init('pid') ret.lateralTuning.pid.kf = 0.00003 ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 20.], [0., 20.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.0025, 0.1], [0.00025, 0.01]] - elif candidate == CAR.IMPREZA: - ret.steerActuatorDelay = 0.4 # end-to-end angle controller + elif candidate == CAR.SUBARU_IMPREZA: + ret.steerActuatorDelay = 0.4 # end-to-end angle controller ret.lateralTuning.init('pid') ret.lateralTuning.pid.kf = 0.00005 ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 20.], [0., 20.]] @@ -71,39 +70,40 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 0.00003333 ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.133, 0.2], [0.0133, 0.02]] - elif candidate == CAR.IMPREZA_2020: + elif candidate == CAR.SUBARU_IMPREZA_2020: ret.lateralTuning.init('pid') ret.lateralTuning.pid.kf = 0.00005 ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 14., 23.], [0., 14., 23.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.045, 0.042, 0.20], [0.04, 0.035, 0.045]] - elif candidate == CAR.CROSSTREK_HYBRID: + elif candidate == CAR.SUBARU_CROSSTREK_HYBRID: ret.steerActuatorDelay = 0.1 - elif candidate in (CAR.FORESTER, CAR.FORESTER_2022, CAR.FORESTER_HYBRID): + elif candidate in (CAR.SUBARU_FORESTER, CAR.SUBARU_FORESTER_2022, CAR.SUBARU_FORESTER_HYBRID): ret.lateralTuning.init('pid') ret.lateralTuning.pid.kf = 0.000038 ret.lateralTuning.pid.kiBP, ret.lateralTuning.pid.kpBP = [[0., 14., 23.], [0., 14., 23.]] ret.lateralTuning.pid.kpV, ret.lateralTuning.pid.kiV = [[0.01, 0.065, 0.2], [0.001, 0.015, 0.025]] - elif candidate in (CAR.OUTBACK, CAR.LEGACY, CAR.OUTBACK_2023): + elif candidate in (CAR.SUBARU_OUTBACK, CAR.SUBARU_LEGACY, CAR.SUBARU_OUTBACK_2023): ret.steerActuatorDelay = 0.1 - elif candidate in (CAR.FORESTER_PREGLOBAL, CAR.OUTBACK_PREGLOBAL_2018): + elif candidate in (CAR.SUBARU_FORESTER_PREGLOBAL, CAR.SUBARU_OUTBACK_PREGLOBAL_2018): ret.safetyConfigs[0].safetyParam |= Panda.FLAG_SUBARU_PREGLOBAL_REVERSED_DRIVER_TORQUE # Outback 2018-2019 and Forester have reversed driver torque signal - elif candidate == CAR.LEGACY_PREGLOBAL: + elif candidate == CAR.SUBARU_LEGACY_PREGLOBAL: ret.steerActuatorDelay = 0.15 - elif candidate == CAR.OUTBACK_PREGLOBAL: + elif candidate == CAR.SUBARU_OUTBACK_PREGLOBAL: pass else: raise ValueError(f"unknown car: {candidate}") - ret.experimentalLongitudinalAvailable = candidate not in (GLOBAL_GEN2 | PREGLOBAL_CARS | LKAS_ANGLE | HYBRID_CARS) + ret.experimentalLongitudinalAvailable = not (ret.flags & (SubaruFlags.GLOBAL_GEN2 | SubaruFlags.PREGLOBAL | + SubaruFlags.LKAS_ANGLE | SubaruFlags.HYBRID)) ret.openpilotLongitudinalControl = experimental_long and ret.experimentalLongitudinalAvailable - if candidate in GLOBAL_GEN2 and ret.openpilotLongitudinalControl: + if ret.flags & SubaruFlags.GLOBAL_GEN2 and ret.openpilotLongitudinalControl: ret.flags |= SubaruFlags.DISABLE_EYESIGHT.value if ret.openpilotLongitudinalControl: @@ -121,7 +121,7 @@ class CarInterface(CarInterfaceBase): def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam, self.cp_body) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() buttonEvents = [] @@ -131,7 +131,7 @@ class CarInterface(CarInterfaceBase): if self.enable_mads: if not self.CS.prev_mads_enabled and self.CS.mads_enabled: self.CS.madsEnabled = True - if self.CS.car_fingerprint not in PREGLOBAL_CARS: + if not (self.CP.flags & SubaruFlags.PREGLOBAL): if self.CS.prev_lkas_enabled != self.CS.lkas_enabled and self.CS.lkas_enabled != 2 and not (self.CS.prev_lkas_enabled == 2 and self.CS.lkas_enabled == 1): self.CS.madsEnabled = not self.CS.madsEnabled elif self.CS.prev_lkas_enabled != self.CS.lkas_enabled and self.CS.prev_lkas_enabled == 2 and self.CS.lkas_enabled != 1: @@ -181,6 +181,3 @@ class CarInterface(CarInterfaceBase): def init(CP, logcan, sendcan): if CP.flags & SubaruFlags.DISABLE_EYESIGHT: disable_ecu(logcan, sendcan, bus=2, addr=GLOBAL_ES_ADDR, com_cont_req=b'\x28\x03\x01') - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/subaru/values.py b/selfdrive/car/subaru/values.py index 0d761747b9..d0112748ab 100644 --- a/selfdrive/car/subaru/values.py +++ b/selfdrive/car/subaru/values.py @@ -5,7 +5,7 @@ from panda import Panda from cereal import car from panda.python import uds from openpilot.selfdrive.car import CarSpecs, DbcDict, PlatformConfig, Platforms, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Tool, Column +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Tool, Column from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16 Ecu = car.CarParams.Ecu @@ -20,11 +20,11 @@ class CarControllerParams: self.STEER_DRIVER_MULTIPLIER = 50 # weight driver torque heavily self.STEER_DRIVER_FACTOR = 1 # from dbc - if CP.carFingerprint in GLOBAL_GEN2: + if CP.flags & SubaruFlags.GLOBAL_GEN2: self.STEER_MAX = 1000 self.STEER_DELTA_UP = 40 self.STEER_DELTA_DOWN = 40 - elif CP.carFingerprint == CAR.IMPREZA_2020: + elif CP.carFingerprint == CAR.SUBARU_IMPREZA_2020: self.STEER_MAX = 1439 elif CP.safetyConfigs[0].safetyParam & Panda.FLAG_SUBARU_MAX_STEER_IMPREZA_2018: self.STEER_MAX = 3071 @@ -41,7 +41,7 @@ class CarControllerParams: BRAKE_MAX = 600 # about -3.5m/s2 from testing RPM_MIN = 0 - RPM_MAX = 2400 + RPM_MAX = 3600 RPM_INACTIVE = 600 # a good base rpm for zero acceleration @@ -56,9 +56,20 @@ class CarControllerParams: class SubaruFlags(IntFlag): + # Detected flags SEND_INFOTAINMENT = 1 DISABLE_EYESIGHT = 2 + # Static flags + GLOBAL_GEN2 = 4 + + # Cars that temporarily fault when steering angle rate is greater than some threshold. + # Appears to be all torque-based cars produced around 2019 - present + STEER_RATE_LIMITED = 8 + PREGLOBAL = 16 + HYBRID = 32 + LKAS_ANGLE = 64 + GLOBAL_ES_ADDR = 0x787 GEN2_ES_BUTTONS_DID = b'\x11\x30' @@ -84,7 +95,7 @@ class Footnote(Enum): @dataclass -class SubaruCarInfo(CarInfo): +class SubaruCarDocs(CarDocs): package: str = "EyeSight Driver Assistance" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.subaru_a])) footnotes: list[Enum] = field(default_factory=lambda: [Footnote.GLOBAL]) @@ -96,142 +107,164 @@ class SubaruCarInfo(CarInfo): self.footnotes.append(Footnote.EXP_LONG) -@dataclass(frozen=True) +@dataclass class SubaruPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('subaru_global_2017_generated', None)) + def init(self): + if self.flags & SubaruFlags.HYBRID: + self.dbc_dict = dbc_dict('subaru_global_2020_hybrid_generated', None) + + +@dataclass +class SubaruGen2PlatformConfig(SubaruPlatformConfig): + def init(self): + super().init() + self.flags |= SubaruFlags.GLOBAL_GEN2 + if not (self.flags & SubaruFlags.LKAS_ANGLE): + self.flags |= SubaruFlags.STEER_RATE_LIMITED + class CAR(Platforms): # Global platform - ASCENT = SubaruPlatformConfig( - "SUBARU ASCENT LIMITED 2019", - SubaruCarInfo("Subaru Ascent 2019-21", "All"), - specs=CarSpecs(mass=2031, wheelbase=2.89, steerRatio=13.5), + SUBARU_ASCENT = SubaruPlatformConfig( + [SubaruCarDocs("Subaru Ascent 2019-21", "All")], + CarSpecs(mass=2031, wheelbase=2.89, steerRatio=13.5), ) - OUTBACK = SubaruPlatformConfig( - "SUBARU OUTBACK 6TH GEN", - SubaruCarInfo("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), + SUBARU_OUTBACK = SubaruGen2PlatformConfig( + [SubaruCarDocs("Subaru Outback 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), ) - LEGACY = SubaruPlatformConfig( - "SUBARU LEGACY 7TH GEN", - SubaruCarInfo("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b])), - specs=OUTBACK.specs, + SUBARU_LEGACY = SubaruGen2PlatformConfig( + [SubaruCarDocs("Subaru Legacy 2020-22", "All", car_parts=CarParts.common([CarHarness.subaru_b]))], + SUBARU_OUTBACK.specs, ) - IMPREZA = SubaruPlatformConfig( - "SUBARU IMPREZA LIMITED 2019", + SUBARU_IMPREZA = SubaruPlatformConfig( [ - SubaruCarInfo("Subaru Impreza 2017-19"), - SubaruCarInfo("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), - SubaruCarInfo("Subaru XV 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), + SubaruCarDocs("Subaru Impreza 2017-19"), + SubaruCarDocs("Subaru Crosstrek 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), + SubaruCarDocs("Subaru XV 2018-19", video_link="https://youtu.be/Agww7oE1k-s?t=26"), ], - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=15), + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=15), ) - IMPREZA_2020 = SubaruPlatformConfig( - "SUBARU IMPREZA SPORT 2020", + SUBARU_IMPREZA_2020 = SubaruPlatformConfig( [ - SubaruCarInfo("Subaru Impreza 2020-22"), - SubaruCarInfo("Subaru Crosstrek 2020-23"), - SubaruCarInfo("Subaru XV 2020-21"), + SubaruCarDocs("Subaru Impreza 2020-22"), + SubaruCarDocs("Subaru Crosstrek 2020-23"), + SubaruCarDocs("Subaru XV 2020-21"), ], - specs=CarSpecs(mass=1480, wheelbase=2.67, steerRatio=17), + CarSpecs(mass=1480, wheelbase=2.67, steerRatio=17), + flags=SubaruFlags.STEER_RATE_LIMITED, ) # TODO: is there an XV and Impreza too? - CROSSTREK_HYBRID = SubaruPlatformConfig( - "SUBARU CROSSTREK HYBRID 2020", - SubaruCarInfo("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b])), - dbc_dict('subaru_global_2020_hybrid_generated', None), - specs=CarSpecs(mass=1668, wheelbase=2.67, steerRatio=17), + SUBARU_CROSSTREK_HYBRID = SubaruPlatformConfig( + [SubaruCarDocs("Subaru Crosstrek Hybrid 2020", car_parts=CarParts.common([CarHarness.subaru_b]))], + CarSpecs(mass=1668, wheelbase=2.67, steerRatio=17), + flags=SubaruFlags.HYBRID, ) - FORESTER = SubaruPlatformConfig( - "SUBARU FORESTER 2019", - SubaruCarInfo("Subaru Forester 2019-21", "All"), - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), + SUBARU_FORESTER = SubaruPlatformConfig( + [SubaruCarDocs("Subaru Forester 2019-21", "All")], + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=17), + flags=SubaruFlags.STEER_RATE_LIMITED, ) - FORESTER_HYBRID = SubaruPlatformConfig( - "SUBARU FORESTER HYBRID 2020", - SubaruCarInfo("Subaru Forester Hybrid 2020"), - dbc_dict('subaru_global_2020_hybrid_generated', None), - specs=FORESTER.specs, + SUBARU_FORESTER_HYBRID = SubaruPlatformConfig( + [SubaruCarDocs("Subaru Forester Hybrid 2020")], + SUBARU_FORESTER.specs, + flags=SubaruFlags.HYBRID, ) # Pre-global - FORESTER_PREGLOBAL = SubaruPlatformConfig( - "SUBARU FORESTER 2017 - 2018", - SubaruCarInfo("Subaru Forester 2017-18"), + SUBARU_FORESTER_PREGLOBAL = SubaruPlatformConfig( + [SubaruCarDocs("Subaru Forester 2017-18")], + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=20), dbc_dict('subaru_forester_2017_generated', None), - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=20), + flags=SubaruFlags.PREGLOBAL, ) - LEGACY_PREGLOBAL = SubaruPlatformConfig( - "SUBARU LEGACY 2015 - 2018", - SubaruCarInfo("Subaru Legacy 2015-18"), + SUBARU_LEGACY_PREGLOBAL = SubaruPlatformConfig( + [SubaruCarDocs("Subaru Legacy 2015-18")], + CarSpecs(mass=1568, wheelbase=2.67, steerRatio=12.5), dbc_dict('subaru_outback_2015_generated', None), - specs=CarSpecs(mass=1568, wheelbase=2.67, steerRatio=12.5), + flags=SubaruFlags.PREGLOBAL, ) - OUTBACK_PREGLOBAL = SubaruPlatformConfig( - "SUBARU OUTBACK 2015 - 2017", - SubaruCarInfo("Subaru Outback 2015-17"), + SUBARU_OUTBACK_PREGLOBAL = SubaruPlatformConfig( + [SubaruCarDocs("Subaru Outback 2015-17")], + SUBARU_FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2015_generated', None), - specs=FORESTER_PREGLOBAL.specs, + flags=SubaruFlags.PREGLOBAL, ) - OUTBACK_PREGLOBAL_2018 = SubaruPlatformConfig( - "SUBARU OUTBACK 2018 - 2019", - SubaruCarInfo("Subaru Outback 2018-19"), + SUBARU_OUTBACK_PREGLOBAL_2018 = SubaruPlatformConfig( + [SubaruCarDocs("Subaru Outback 2018-19")], + SUBARU_FORESTER_PREGLOBAL.specs, dbc_dict('subaru_outback_2019_generated', None), - specs=FORESTER_PREGLOBAL.specs, + flags=SubaruFlags.PREGLOBAL, ) # Angle LKAS - FORESTER_2022 = SubaruPlatformConfig( - "SUBARU FORESTER 2022", - SubaruCarInfo("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c])), - specs=FORESTER.specs, + SUBARU_FORESTER_2022 = SubaruPlatformConfig( + [SubaruCarDocs("Subaru Forester 2022-24", "All", car_parts=CarParts.common([CarHarness.subaru_c]))], + SUBARU_FORESTER.specs, + flags=SubaruFlags.LKAS_ANGLE, ) - OUTBACK_2023 = SubaruPlatformConfig( - "SUBARU OUTBACK 7TH GEN", - SubaruCarInfo("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), - specs=OUTBACK.specs, + SUBARU_OUTBACK_2023 = SubaruGen2PlatformConfig( + [SubaruCarDocs("Subaru Outback 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], + SUBARU_OUTBACK.specs, + flags=SubaruFlags.LKAS_ANGLE, ) - ASCENT_2023 = SubaruPlatformConfig( - "SUBARU ASCENT 2023", - SubaruCarInfo("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d])), - specs=ASCENT.specs, + SUBARU_ASCENT_2023 = SubaruGen2PlatformConfig( + [SubaruCarDocs("Subaru Ascent 2023", "All", car_parts=CarParts.common([CarHarness.subaru_d]))], + SUBARU_ASCENT.specs, + flags=SubaruFlags.LKAS_ANGLE, ) -LKAS_ANGLE = {CAR.FORESTER_2022, CAR.OUTBACK_2023, CAR.ASCENT_2023} -GLOBAL_GEN2 = {CAR.OUTBACK, CAR.LEGACY, CAR.OUTBACK_2023, CAR.ASCENT_2023} -PREGLOBAL_CARS = {CAR.FORESTER_PREGLOBAL, CAR.LEGACY_PREGLOBAL, CAR.OUTBACK_PREGLOBAL, CAR.OUTBACK_PREGLOBAL_2018} -HYBRID_CARS = {CAR.CROSSTREK_HYBRID, CAR.FORESTER_HYBRID} - -# Cars that temporarily fault when steering angle rate is greater than some threshold. -# Appears to be all torque-based cars produced around 2019 - present -STEER_RATE_LIMITED = GLOBAL_GEN2 | {CAR.IMPREZA_2020, CAR.FORESTER} - SUBARU_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ p16(uds.DATA_IDENTIFIER_TYPE.APPLICATION_DATA_IDENTIFICATION) SUBARU_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ p16(uds.DATA_IDENTIFIER_TYPE.APPLICATION_DATA_IDENTIFICATION) +# The EyeSight ECU takes 10s to respond to SUBARU_VERSION_REQUEST properly, +# log this alternate manufacturer-specific query +SUBARU_ALT_VERSION_REQUEST = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER]) + \ + p16(0xf100) +SUBARU_ALT_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + 0x40]) + \ + p16(0xf100) + FW_QUERY_CONFIG = FwQueryConfig( requests=[ Request( [StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], whitelist_ecus=[Ecu.abs, Ecu.eps, Ecu.fwdCamera, Ecu.engine, Ecu.transmission], + logging=True, ), + # Non-OBD requests # Some Eyesight modules fail on TESTER_PRESENT_REQUEST # TODO: check if this resolves the fingerprinting issue for the 2023 Ascent and other new Subaru cars Request( [SUBARU_VERSION_REQUEST], [SUBARU_VERSION_RESPONSE], whitelist_ecus=[Ecu.fwdCamera], + bus=0, + ), + Request( + [SUBARU_ALT_VERSION_REQUEST], + [SUBARU_ALT_VERSION_RESPONSE], + whitelist_ecus=[Ecu.fwdCamera], + bus=0, + logging=True, + ), + Request( + [StdQueries.DEFAULT_DIAGNOSTIC_REQUEST, StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], + [StdQueries.DEFAULT_DIAGNOSTIC_RESPONSE, StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], + whitelist_ecus=[Ecu.fwdCamera], + bus=0, + logging=True, ), - # Non-OBD requests Request( [StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], whitelist_ecus=[Ecu.abs, Ecu.eps, Ecu.fwdCamera, Ecu.engine, Ecu.transmission], bus=0, ), + # GEN2 powertrain bus query Request( [StdQueries.TESTER_PRESENT_REQUEST, SUBARU_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, SUBARU_VERSION_RESPONSE], @@ -242,9 +275,8 @@ FW_QUERY_CONFIG = FwQueryConfig( ], # We don't get the EPS from non-OBD queries on GEN2 cars. Note that we still attempt to match when it exists non_essential_ecus={ - Ecu.eps: list(GLOBAL_GEN2), + Ecu.eps: list(CAR.with_flags(SubaruFlags.GLOBAL_GEN2)), } ) -CAR_INFO = CAR.create_carinfo_map() DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/sunnypilot_carname.json b/selfdrive/car/sunnypilot_carname.json index 4499799c18..b42d6702e4 100644 --- a/selfdrive/car/sunnypilot_carname.json +++ b/selfdrive/car/sunnypilot_carname.json @@ -1,297 +1,304 @@ { "=== Not Selected ===": "", - "Acura ILX 2016-19": "ACURA ILX 2016", - "Acura RDX 2016-18": "ACURA RDX 2018", - "Acura RDX 2019-22": "ACURA RDX 2020", - "Audi A3 2014-19": "AUDI A3 3RD GEN", - "Audi A3 Sportback e-tron 2017-18": "AUDI A3 3RD GEN", - "Audi Q2 2018": "AUDI Q2 1ST GEN", - "Audi Q3 2019-23": "AUDI Q3 2ND GEN", - "Audi RS3 2018": "AUDI A3 3RD GEN", - "Audi S3 2015-17": "AUDI A3 3RD GEN", - "Buick LaCrosse 2017-19": "BUICK LACROSSE 2017", - "Cadillac Escalade 2017": "CADILLAC ESCALADE 2017", - "Cadillac Escalade ESV 2016": "CADILLAC ESCALADE ESV 2016", - "Cadillac Escalade ESV 2019": "CADILLAC ESCALADE ESV 2019", - "Chevrolet Bolt EUV 2022-23": "CHEVROLET BOLT EUV 2022", - "Chevrolet Bolt EV 2022-23": "CHEVROLET BOLT EUV 2022", - "Chevrolet Equinox 2019-22": "CHEVROLET EQUINOX 2019", - "Chevrolet Silverado 1500 2020-21": "CHEVROLET SILVERADO 1500 2020", - "Chevrolet Trailblazer 2021-22": "CHEVROLET TRAILBLAZER 2021", - "Chevrolet Volt 2017-18": "CHEVROLET VOLT PREMIER 2017", - "Chrysler Pacifica 2017-18": "CHRYSLER PACIFICA 2018", - "Chrysler Pacifica 2019-20": "CHRYSLER PACIFICA 2020", - "Chrysler Pacifica 2021-23": "CHRYSLER PACIFICA 2020", - "Chrysler Pacifica Hybrid 2017": "CHRYSLER PACIFICA HYBRID 2017", - "Chrysler Pacifica Hybrid 2018": "CHRYSLER PACIFICA HYBRID 2018", - "Chrysler Pacifica Hybrid 2019-23": "CHRYSLER PACIFICA HYBRID 2019", - "Dodge Durango 2020-21": "DODGE DURANGO 2021", - "Ford Bronco Sport 2021-22": "FORD BRONCO SPORT 1ST GEN", - "Ford Escape 2020-22": "FORD ESCAPE 4TH GEN", - "Ford Explorer 2020-23": "FORD EXPLORER 6TH GEN", - "Ford Focus 2018": "FORD FOCUS 4TH GEN", - "Ford Kuga 2020-22": "FORD ESCAPE 4TH GEN", - "Ford Maverick 2022": "FORD MAVERICK 1ST GEN", - "Ford Maverick 2023": "FORD MAVERICK 1ST GEN", - "Genesis G70 2018-19": "GENESIS G70 2018", - "Genesis G70 2020": "GENESIS G70 2020", - "Genesis G70 Non-SCC 2021": "GENESIS G70 2021 NON-SCC", - "Genesis G80 2017": "HYUNDAI GENESIS 2015-2016", - "Genesis G80 2018-19": "GENESIS G80 2017", - "Genesis G90 2017-18": "GENESIS G90 2017", - "Genesis GV60 (Advanced Trim) 2023": "GENESIS GV60 ELECTRIC 1ST GEN", - "Genesis GV60 (Performance Trim) 2023": "GENESIS GV60 ELECTRIC 1ST GEN", - "Genesis GV70 (2.5T Trim) 2022-23": "GENESIS GV70 1ST GEN", - "Genesis GV70 (3.5T Trim) 2022-23": "GENESIS GV70 1ST GEN", - "Genesis GV80 2023": "GENESIS GV80 2023", - "GMC Acadia 2018": "GMC ACADIA DENALI 2018", - "GMC Sierra 1500 2020-21": "CHEVROLET SILVERADO 1500 2020", - "Honda Accord 4-Cylinder 2016-17": "HONDA ACCORD 4CYL 9TH GEN", - "Honda Accord 2018-22": "HONDA ACCORD 2018", - "Honda Accord Hybrid 2018-22": "HONDA ACCORD HYBRID 2018", - "Honda Civic 2016-18": "HONDA CIVIC 2016", - "Honda Civic 2019-21": "HONDA CIVIC (BOSCH) 2019", - "Honda Civic 2022-23": "HONDA CIVIC 2022", - "Honda Civic Hatchback 2017-21": "HONDA CIVIC (BOSCH) 2019", - "Honda Civic Hatchback 2022-23": "HONDA CIVIC 2022", - "Honda Clarity 2018-22": "HONDA CLARITY 2018", - "Honda CR-V 2015-16": "HONDA CR-V 2016", - "Honda CR-V 2017-22": "HONDA CR-V 2017", - "Honda CR-V Hybrid 2017-20": "HONDA CR-V HYBRID 2019", - "Honda e 2020": "HONDA E 2020", - "Honda Fit 2018-20": "HONDA FIT 2018", - "Honda Freed 2020": "HONDA FREED 2020", - "Honda HR-V 2019-22": "HONDA HRV 2019", - "Honda HR-V 2023": "HONDA HR-V 2023", - "Honda Insight 2019-22": "HONDA INSIGHT 2019", - "Honda Inspire 2018": "HONDA ACCORD 2018", - "Honda Odyssey 2018-20": "HONDA ODYSSEY 2018", - "Honda Passport 2019-23": "HONDA PILOT 2017", - "Honda Pilot 2016-22": "HONDA PILOT 2017", - "Honda Ridgeline 2017-24": "HONDA RIDGELINE 2017", - "Hyundai Azera 2022": "HYUNDAI AZERA 6TH GEN", - "Hyundai Azera Hybrid 2019": "HYUNDAI AZERA HYBRID 6TH GEN", - "Hyundai Azera Hybrid 2020": "HYUNDAI AZERA HYBRID 6TH GEN", - "Hyundai Bayon Non-SCC 2021": "HYUNDAI BAYON 1ST GEN NON-SCC", - "Hyundai Custin 2023": "HYUNDAI CUSTIN 1ST GEN", - "Hyundai Elantra 2017-18": "HYUNDAI ELANTRA 2017", - "Hyundai Elantra 2019": "HYUNDAI ELANTRA 2017", - "Hyundai Elantra 2021-23": "HYUNDAI ELANTRA 2021", - "Hyundai Elantra GT 2017-19": "HYUNDAI I30 N LINE 2019 & GT 2018 DCT", - "Hyundai Elantra Hybrid 2021-23": "HYUNDAI ELANTRA HYBRID 2021", - "Hyundai Elantra Non-SCC 2022": "HYUNDAI ELANTRA SE 2022 NON-SCC", - "Hyundai Genesis 2015-16": "HYUNDAI GENESIS 2015-2016", - "Hyundai i30 2017-19": "HYUNDAI I30 N LINE 2019 & GT 2018 DCT", - "Hyundai Ioniq 5 (Southeast Asia only) 2022-23": "HYUNDAI IONIQ 5 2022", - "Hyundai Ioniq 5 (with HDA II) 2022-23": "HYUNDAI IONIQ 5 2022", - "Hyundai Ioniq 5 (without HDA II) 2022-23": "HYUNDAI IONIQ 5 2022", - "Hyundai Ioniq 6 (with HDA II) 2023": "HYUNDAI IONIQ 6 2023", - "Hyundai Ioniq Electric 2019": "HYUNDAI IONIQ ELECTRIC LIMITED 2019", - "Hyundai Ioniq Electric 2020": "HYUNDAI IONIQ ELECTRIC 2020", - "Hyundai Ioniq Hybrid 2017-19": "HYUNDAI IONIQ HYBRID 2017-2019", - "Hyundai Ioniq Hybrid 2020-22": "HYUNDAI IONIQ HYBRID 2020-2022", - "Hyundai Ioniq Plug-in Hybrid 2019": "HYUNDAI IONIQ PLUG-IN HYBRID 2019", - "Hyundai Ioniq Plug-in Hybrid 2020-22": "HYUNDAI IONIQ PHEV 2020", - "Hyundai Kona 2020": "HYUNDAI KONA 2020", - "Hyundai Kona Electric 2018-21": "HYUNDAI KONA ELECTRIC 2019", - "Hyundai Kona Electric 2022-23": "HYUNDAI KONA ELECTRIC 2022", - "Hyundai Kona Electric (with HDA II, Korea only) 2023": "HYUNDAI KONA ELECTRIC 2ND GEN", - "Hyundai Kona Hybrid 2020": "HYUNDAI KONA HYBRID 2020", - "Hyundai Kona Non-SCC 2019": "HYUNDAI KONA 2019 NON-SCC", - "Hyundai Palisade 2020-22": "HYUNDAI PALISADE 2020", - "Hyundai Santa Cruz 2022-23": "HYUNDAI SANTA CRUZ 1ST GEN", - "Hyundai Santa Fe 2019-20": "HYUNDAI SANTA FE 2019", - "Hyundai Santa Fe 2021-23": "HYUNDAI SANTA FE 2022", - "Hyundai Santa Fe Hybrid 2022-23": "HYUNDAI SANTA FE HYBRID 2022", - "Hyundai Santa Fe Plug-in Hybrid 2022-23": "HYUNDAI SANTA FE PlUG-IN HYBRID 2022", - "Hyundai Sonata 2018-19": "HYUNDAI SONATA 2019", - "Hyundai Sonata 2020-23": "HYUNDAI SONATA 2020", - "Hyundai Sonata Hybrid 2020-23": "HYUNDAI SONATA HYBRID 2021", - "Hyundai Staria 2023": "HYUNDAI STARIA 4TH GEN", - "Hyundai Tucson 2021": "HYUNDAI TUCSON 2019", - "Hyundai Tucson 2022": "HYUNDAI TUCSON 4TH GEN", - "Hyundai Tucson 2023": "HYUNDAI TUCSON 4TH GEN", - "Hyundai Tucson Diesel 2019": "HYUNDAI TUCSON 2019", - "Hyundai Tucson Hybrid 2022-24": "HYUNDAI TUCSON 4TH GEN", - "Hyundai Veloster 2019-20": "HYUNDAI VELOSTER 2019", - "Jeep Grand Cherokee 2016-18": "JEEP GRAND CHEROKEE V6 2018", - "Jeep Grand Cherokee 2019-21": "JEEP GRAND CHEROKEE 2019", - "Kia Carnival 2022-24": "KIA CARNIVAL 4TH GEN", - "Kia Carnival (China only) 2023": "KIA CARNIVAL 4TH GEN", - "Kia Ceed 2019": "KIA CEED INTRO ED 2019", - "Kia EV6 (Southeast Asia only) 2022-23": "KIA EV6 2022", - "Kia EV6 (with HDA II) 2022-23": "KIA EV6 2022", - "Kia EV6 (without HDA II) 2022-23": "KIA EV6 2022", - "Kia Forte 2019-21": "KIA FORTE E 2018 & GT 2021", - "Kia Forte 2023": "KIA FORTE E 2018 & GT 2021", - "Kia Forte Non-SCC 2019": "KIA FORTE 2019 NON-SCC", - "Kia Forte Non-SCC 2021": "KIA FORTE LXS 2021 NON-SCC", - "Kia K5 2021-24": "KIA K5 2021", - "Kia K5 Hybrid 2020-22": "KIA K5 HYBRID 2020", - "Kia K8 Hybrid (with HDA II) 2023": "KIA K8 HYBRID 1ST GEN", - "Kia Niro EV 2019": "KIA NIRO EV 2020", - "Kia Niro EV 2020": "KIA NIRO EV 2020", - "Kia Niro EV 2021": "KIA NIRO EV 2020", - "Kia Niro EV 2022": "KIA NIRO EV 2020", - "Kia Niro EV 2023": "KIA NIRO EV 2ND GEN", - "Kia Niro Hybrid 2021": "KIA NIRO HYBRID 2021", - "Kia Niro Hybrid 2022": "KIA NIRO HYBRID 2021", - "Kia Niro Hybrid 2023": "KIA NIRO HYBRID 2ND GEN", - "Kia Niro Plug-in Hybrid 2018-19": "KIA NIRO HYBRID 2019", - "Kia Niro Plug-in Hybrid 2020": "KIA NIRO HYBRID 2019", - "Kia Niro Plug-in Hybrid 2021": "KIA NIRO PLUG-IN HYBRID 2022", - "Kia Niro Plug-in Hybrid 2022": "KIA NIRO PLUG-IN HYBRID 2022", - "Kia Optima 2017": "KIA OPTIMA 4TH GEN", - "Kia Optima 2019-20": "KIA OPTIMA 4TH GEN FACELIFT", - "Kia Optima Hybrid 2019": "KIA OPTIMA HYBRID 4TH GEN FACELIFT", - "Kia Seltos 2021": "KIA SELTOS 2021", - "Kia Seltos Non-SCC 2023-24": "KIA SELTOS 2023 NON-SCC", - "Kia Sorento 2018": "KIA SORENTO GT LINE 2018", - "Kia Sorento 2019": "KIA SORENTO GT LINE 2018", - "Kia Sorento 2021-23": "KIA SORENTO 4TH GEN", - "Kia Sorento Hybrid 2021-23": "KIA SORENTO HYBRID 4TH GEN", - "Kia Sorento Plug-in Hybrid 2022-23": "KIA SORENTO HYBRID 4TH GEN", - "Kia Sportage 2023": "KIA SPORTAGE 5TH GEN", - "Kia Sportage Hybrid 2023": "KIA SPORTAGE 5TH GEN", - "Kia Stinger 2018-20": "KIA STINGER GT2 2018", - "Kia Stinger 2022-23": "KIA STINGER 2022", - "Kia Telluride 2020-22": "HYUNDAI PALISADE 2020", - "Lexus CT Hybrid 2017-18": "LEXUS CT HYBRID 2018", - "Lexus ES 2017-18": "LEXUS ES 2018", - "Lexus ES 2019-24": "LEXUS ES 2019", - "Lexus ES Hybrid 2017-18": "LEXUS ES 2018", - "Lexus ES Hybrid 2019-24": "LEXUS ES 2019", - "Lexus GS F 2016": "LEXUS GS F 2016", - "Lexus IS 2017-19": "LEXUS IS 2018", - "Lexus IS 2022-23": "LEXUS IS 2023", - "Lexus LC 2024": "LEXUS LC 2024", - "Lexus NX 2018-19": "LEXUS NX 2018", - "Lexus NX 2020-21": "LEXUS NX 2020", - "Lexus NX Hybrid 2018-19": "LEXUS NX 2018", - "Lexus NX Hybrid 2020-21": "LEXUS NX 2020", - "Lexus RC 2018-20": "LEXUS RC 2020", - "Lexus RX 2016": "LEXUS RX 2016", - "Lexus RX 2017-19": "LEXUS RX 2016", - "Lexus RX 2020-22": "LEXUS RX 2020", - "Lexus RX Hybrid 2016": "LEXUS RX 2016", - "Lexus RX Hybrid 2017-19": "LEXUS RX 2016", - "Lexus RX Hybrid 2020-22": "LEXUS RX 2020", - "Lexus UX Hybrid 2019-23": "TOYOTA COROLLA TSS2 2019", - "Lincoln Aviator 2020-21": "FORD EXPLORER 6TH GEN", - "MAN eTGE 2020-23": "VOLKSWAGEN CRAFTER 2ND GEN", - "MAN TGE 2017-23": "VOLKSWAGEN CRAFTER 2ND GEN", - "Mazda CX-5 2022-24": "MAZDA CX-5 2022", - "Mazda CX-9 2021-23": "MAZDA CX-9 2021", - "Nissan Altima 2019-20": "NISSAN ALTIMA 2020", - "Nissan Leaf 2018-23": "NISSAN LEAF 2018", - "Nissan Leaf Instrument Cluster 2018-23": "NISSAN LEAF 2018 Instrument Cluster", - "Nissan Rogue 2018-20": "NISSAN ROGUE 2019", - "Nissan X-Trail 2017": "NISSAN X-TRAIL 2017", - "Ram 1500 2019-24": "RAM 1500 5TH GEN", - "Ram 2500 2020-24": "RAM HD 5TH GEN", - "Ram 3500 2019-22": "RAM HD 5TH GEN", - "SEAT Ateca 2018": "SEAT ATECA 1ST GEN", - "SEAT Leon 2014-20": "SEAT LEON 3RD GEN", - "Subaru Ascent 2019-21": "SUBARU ASCENT LIMITED 2019", - "Subaru Crosstrek 2018-19": "SUBARU IMPREZA LIMITED 2019", - "Subaru Crosstrek 2020-23": "SUBARU IMPREZA SPORT 2020", - "Subaru Forester 2017-18": "SUBARU FORESTER 2017 - 2018", - "Subaru Forester 2019-21": "SUBARU FORESTER 2019", - "Subaru Impreza 2017-19": "SUBARU IMPREZA LIMITED 2019", - "Subaru Impreza 2020-22": "SUBARU IMPREZA SPORT 2020", - "Subaru Legacy 2015-18": "SUBARU LEGACY 2015 - 2018", - "Subaru Legacy 2020-22": "SUBARU LEGACY 7TH GEN", - "Subaru Outback 2015-17": "SUBARU OUTBACK 2015 - 2017", - "Subaru Outback 2018-19": "SUBARU OUTBACK 2018 - 2019", - "Subaru Outback 2020-22": "SUBARU OUTBACK 6TH GEN", - "Subaru XV 2018-19": "SUBARU IMPREZA LIMITED 2019", - "Subaru XV 2020-21": "SUBARU IMPREZA SPORT 2020", - "Škoda Fabia 2022-23": "SKODA FABIA 4TH GEN", - "Škoda Kamiq 2021-23": "SKODA KAMIQ 1ST GEN", - "Škoda Karoq 2019-23": "SKODA KAROQ 1ST GEN", - "Škoda Kodiaq 2017-23": "SKODA KODIAQ 1ST GEN", - "Škoda Octavia 2015-19": "SKODA OCTAVIA 3RD GEN", - "Škoda Octavia RS 2016": "SKODA OCTAVIA 3RD GEN", - "Škoda Scala 2020-23": "SKODA SCALA 1ST GEN", - "Škoda Superb 2015-22": "SKODA SUPERB 3RD GEN", - "Toyota Alphard 2019-20": "TOYOTA ALPHARD 2020", - "Toyota Alphard Hybrid 2021": "TOYOTA ALPHARD 2020", - "Toyota Avalon 2016": "TOYOTA AVALON 2016", - "Toyota Avalon 2017-18": "TOYOTA AVALON 2016", - "Toyota Avalon 2019-21": "TOYOTA AVALON 2019", - "Toyota Avalon 2022": "TOYOTA AVALON 2022", - "Toyota Avalon Hybrid 2019-21": "TOYOTA AVALON 2019", - "Toyota Avalon Hybrid 2022": "TOYOTA AVALON 2022", - "Toyota C-HR 2017-20": "TOYOTA C-HR 2018", - "Toyota C-HR 2021": "TOYOTA C-HR 2021", - "Toyota C-HR Hybrid 2017-20": "TOYOTA C-HR 2018", - "Toyota C-HR Hybrid 2021-22": "TOYOTA C-HR 2021", - "Toyota Camry 2018-20": "TOYOTA CAMRY 2018", - "Toyota Camry 2021-24": "TOYOTA CAMRY 2021", - "Toyota Camry Hybrid 2018-20": "TOYOTA CAMRY 2018", - "Toyota Camry Hybrid 2021-24": "TOYOTA CAMRY 2021", - "Toyota Corolla 2017-19": "TOYOTA COROLLA 2017", - "Toyota Corolla 2020-22": "TOYOTA COROLLA TSS2 2019", - "Toyota Corolla Cross (Non-US only) 2020-23": "TOYOTA COROLLA TSS2 2019", - "Toyota Corolla Cross Hybrid (Non-US only) 2020-22": "TOYOTA COROLLA TSS2 2019", - "Toyota Corolla Hatchback 2019-22": "TOYOTA COROLLA TSS2 2019", - "Toyota Corolla Hybrid 2020-22": "TOYOTA COROLLA TSS2 2019", - "Toyota Corolla Hybrid (Non-US only) 2020-23": "TOYOTA COROLLA TSS2 2019", - "Toyota Highlander 2017-19": "TOYOTA HIGHLANDER 2017", - "Toyota Highlander 2020-23": "TOYOTA HIGHLANDER 2020", - "Toyota Highlander Hybrid 2017-19": "TOYOTA HIGHLANDER 2017", - "Toyota Highlander Hybrid 2020-23": "TOYOTA HIGHLANDER 2020", - "Toyota Mirai 2021": "TOYOTA MIRAI 2021", - "Toyota Prius 2016": "TOYOTA PRIUS 2017", - "Toyota Prius 2017-20": "TOYOTA PRIUS 2017", - "Toyota Prius 2021-22": "TOYOTA PRIUS TSS2 2021", - "Toyota Prius Prime 2017-20": "TOYOTA PRIUS 2017", - "Toyota Prius Prime 2021-22": "TOYOTA PRIUS TSS2 2021", - "Toyota Prius v 2017": "TOYOTA PRIUS v 2017", - "Toyota RAV4 2016": "TOYOTA RAV4 2017", - "Toyota RAV4 2017-18": "TOYOTA RAV4 2017", - "Toyota RAV4 2019-21": "TOYOTA RAV4 2019", - "Toyota RAV4 2022": "TOYOTA RAV4 2022", - "Toyota RAV4 2023-24": "TOYOTA RAV4 2023", - "Toyota RAV4 Hybrid 2016": "TOYOTA RAV4 HYBRID 2017", - "Toyota RAV4 Hybrid 2017-18": "TOYOTA RAV4 HYBRID 2017", - "Toyota RAV4 Hybrid 2019-21": "TOYOTA RAV4 2019", - "Toyota RAV4 Hybrid 2022": "TOYOTA RAV4 2022", - "Toyota RAV4 Hybrid 2023-24": "TOYOTA RAV4 2023", - "Toyota Sienna 2018-20": "TOYOTA SIENNA 2018", - "Volkswagen Arteon 2018-23": "VOLKSWAGEN ARTEON 1ST GEN", - "Volkswagen Arteon eHybrid 2020-23": "VOLKSWAGEN ARTEON 1ST GEN", - "Volkswagen Arteon R 2020-23": "VOLKSWAGEN ARTEON 1ST GEN", - "Volkswagen Atlas 2018-23": "VOLKSWAGEN ATLAS 1ST GEN", - "Volkswagen Atlas Cross Sport 2020-22": "VOLKSWAGEN ATLAS 1ST GEN", - "Volkswagen California 2021-23": "VOLKSWAGEN TRANSPORTER T6.1", - "Volkswagen Caravelle 2020": "VOLKSWAGEN TRANSPORTER T6.1", - "Volkswagen CC 2018-22": "VOLKSWAGEN ARTEON 1ST GEN", - "Volkswagen Crafter 2017-23": "VOLKSWAGEN CRAFTER 2ND GEN", - "Volkswagen e-Crafter 2018-23": "VOLKSWAGEN CRAFTER 2ND GEN", - "Volkswagen e-Golf 2014-20": "VOLKSWAGEN GOLF 7TH GEN", - "Volkswagen Golf 2015-20": "VOLKSWAGEN GOLF 7TH GEN", - "Volkswagen Golf Alltrack 2015-19": "VOLKSWAGEN GOLF 7TH GEN", - "Volkswagen Golf GTD 2015-20": "VOLKSWAGEN GOLF 7TH GEN", - "Volkswagen Golf GTE 2015-20": "VOLKSWAGEN GOLF 7TH GEN", - "Volkswagen Golf GTI 2015-21": "VOLKSWAGEN GOLF 7TH GEN", - "Volkswagen Golf R 2015-19": "VOLKSWAGEN GOLF 7TH GEN", - "Volkswagen Golf SportsVan 2015-20": "VOLKSWAGEN GOLF 7TH GEN", - "Volkswagen Grand California 2019-23": "VOLKSWAGEN CRAFTER 2ND GEN", - "Volkswagen Jetta 2018-24": "VOLKSWAGEN JETTA 7TH GEN", - "Volkswagen Jetta GLI 2021-24": "VOLKSWAGEN JETTA 7TH GEN", - "Volkswagen Passat 2015-22": "VOLKSWAGEN PASSAT 8TH GEN", - "Volkswagen Passat Alltrack 2015-22": "VOLKSWAGEN PASSAT 8TH GEN", - "Volkswagen Passat GTE 2015-22": "VOLKSWAGEN PASSAT 8TH GEN", - "Volkswagen Polo 2018-23": "VOLKSWAGEN POLO 6TH GEN", - "Volkswagen Polo GTI 2018-23": "VOLKSWAGEN POLO 6TH GEN", - "Volkswagen T-Cross 2021": "VOLKSWAGEN T-CROSS 1ST GEN", - "Volkswagen T-Roc 2018-22": "VOLKSWAGEN T-ROC 1ST GEN", - "Volkswagen Taos 2022-23": "VOLKSWAGEN TAOS 1ST GEN", - "Volkswagen Teramont 2018-22": "VOLKSWAGEN ATLAS 1ST GEN", - "Volkswagen Teramont Cross Sport 2021-22": "VOLKSWAGEN ATLAS 1ST GEN", - "Volkswagen Teramont X 2021-22": "VOLKSWAGEN ATLAS 1ST GEN", - "Volkswagen Tiguan 2018-24": "VOLKSWAGEN TIGUAN 2ND GEN", - "Volkswagen Tiguan eHybrid 2021-23": "VOLKSWAGEN TIGUAN 2ND GEN", - "Volkswagen Touran 2016-23": "VOLKSWAGEN TOURAN 2ND GEN" + "Acura ILX 2016-19": "ACURA_ILX", + "Acura RDX 2016-18": "ACURA_RDX", + "Acura RDX 2019-22": "ACURA_RDX_3G", + "Audi A3 2014-19": "AUDI_A3_MK3", + "Audi A3 Sportback e-tron 2017-18": "AUDI_A3_MK3", + "Audi Q2 2018": "AUDI_Q2_MK1", + "Audi Q3 2019-23": "AUDI_Q3_MK2", + "Audi RS3 2018": "AUDI_A3_MK3", + "Audi S3 2015-17": "AUDI_A3_MK3", + "Chevrolet Bolt EUV 2022-23": "CHEVROLET_BOLT_EUV", + "Chevrolet Bolt EV 2022-23": "CHEVROLET_BOLT_EUV", + "Chevrolet Equinox 2019-22": "CHEVROLET_EQUINOX", + "Chevrolet Silverado 1500 2020-21": "CHEVROLET_SILVERADO", + "Chevrolet Trailblazer 2021-22": "CHEVROLET_TRAILBLAZER", + "Chrysler Pacifica 2017-18": "CHRYSLER_PACIFICA_2018", + "Chrysler Pacifica 2019-20": "CHRYSLER_PACIFICA_2020", + "Chrysler Pacifica 2021-23": "CHRYSLER_PACIFICA_2020", + "Chrysler Pacifica Hybrid 2017": "CHRYSLER_PACIFICA_2017_HYBRID", + "Chrysler Pacifica Hybrid 2018": "CHRYSLER_PACIFICA_2018_HYBRID", + "Chrysler Pacifica Hybrid 2019-23": "CHRYSLER_PACIFICA_2019_HYBRID", + "comma body": "COMMA_BODY", + "Dodge Durango 2020-21": "DODGE_DURANGO", + "Ford Bronco Sport 2021-23": "FORD_BRONCO_SPORT_MK1", + "Ford Escape 2020-22": "FORD_ESCAPE_MK4", + "Ford Escape Hybrid 2020-22": "FORD_ESCAPE_MK4", + "Ford Escape Plug-in Hybrid 2020-22": "FORD_ESCAPE_MK4", + "Ford Explorer 2020-23": "FORD_EXPLORER_MK6", + "Ford Explorer Hybrid 2020-23": "FORD_EXPLORER_MK6", + "Ford Focus 2018": "FORD_FOCUS_MK4", + "Ford Focus Hybrid 2018": "FORD_FOCUS_MK4", + "Ford Kuga 2020-22": "FORD_ESCAPE_MK4", + "Ford Kuga Hybrid 2020-22": "FORD_ESCAPE_MK4", + "Ford Kuga Plug-in Hybrid 2020-22": "FORD_ESCAPE_MK4", + "Ford Maverick 2022": "FORD_MAVERICK_MK1", + "Ford Maverick 2023-24": "FORD_MAVERICK_MK1", + "Ford Maverick Hybrid 2022": "FORD_MAVERICK_MK1", + "Ford Maverick Hybrid 2023-24": "FORD_MAVERICK_MK1", + "Genesis G70 2018": "GENESIS_G70", + "Genesis G70 2019-21": "GENESIS_G70_2020", + "Genesis G70 2022-23": "GENESIS_G70_2020", + "Genesis G70 Non-SCC 2021": "GENESIS_G70_2021_NON_SCC", + "Genesis G80 2017": "HYUNDAI_GENESIS", + "Genesis G80 2018-19": "GENESIS_G80", + "Genesis G90 2017-20": "GENESIS_G90", + "Genesis GV60 (Advanced Trim) 2023": "GENESIS_GV60_EV_1ST_GEN", + "Genesis GV60 (Performance Trim) 2023": "GENESIS_GV60_EV_1ST_GEN", + "Genesis GV70 (2.5T Trim) 2022-23": "GENESIS_GV70_1ST_GEN", + "Genesis GV70 (3.5T Trim) 2022-23": "GENESIS_GV70_1ST_GEN", + "Genesis GV80 2023": "GENESIS_GV80", + "GMC Sierra 1500 2020-21": "CHEVROLET_SILVERADO", + "Honda Accord 4-Cylinder 2016-17": "HONDA_ACCORD_4CYL_9TH_GEN", + "Honda Accord 2018-22": "HONDA_ACCORD", + "Honda Accord Hybrid 2018-22": "HONDA_ACCORD", + "Honda Civic 2016-18": "HONDA_CIVIC", + "Honda Civic 2019-21": "HONDA_CIVIC_BOSCH", + "Honda Civic 2022-23": "HONDA_CIVIC_2022", + "Honda Civic Hatchback 2017-21": "HONDA_CIVIC_BOSCH", + "Honda Civic Hatchback 2022-23": "HONDA_CIVIC_2022", + "Honda Clarity 2018-22": "HONDA_CLARITY", + "Honda CR-V 2015-16": "HONDA_CRV", + "Honda CR-V 2017-22": "HONDA_CRV_5G", + "Honda CR-V Hybrid 2017-21": "HONDA_CRV_HYBRID", + "Honda e 2020": "HONDA_E", + "Honda Fit 2018-20": "HONDA_FIT", + "Honda Freed 2020": "HONDA_FREED", + "Honda HR-V 2019-22": "HONDA_HRV", + "Honda HR-V 2023": "HONDA_HRV_3G", + "Honda Insight 2019-22": "HONDA_INSIGHT", + "Honda Inspire 2018": "HONDA_ACCORD", + "Honda Odyssey 2018-20": "HONDA_ODYSSEY", + "Honda Passport 2019-23": "HONDA_PILOT", + "Honda Pilot 2016-22": "HONDA_PILOT", + "Honda Ridgeline 2017-24": "HONDA_RIDGELINE", + "Hyundai Azera 2022": "HYUNDAI_AZERA_6TH_GEN", + "Hyundai Azera Hybrid 2019": "HYUNDAI_AZERA_HEV_6TH_GEN", + "Hyundai Azera Hybrid 2020": "HYUNDAI_AZERA_HEV_6TH_GEN", + "Hyundai Bayon Non-SCC 2021": "HYUNDAI_BAYON_1ST_GEN_NON_SCC", + "Hyundai Custin 2023": "HYUNDAI_CUSTIN_1ST_GEN", + "Hyundai Elantra 2017-18": "HYUNDAI_ELANTRA", + "Hyundai Elantra 2019": "HYUNDAI_ELANTRA", + "Hyundai Elantra 2021-23": "HYUNDAI_ELANTRA_2021", + "Hyundai Elantra GT 2017-19": "HYUNDAI_ELANTRA_GT_I30", + "Hyundai Elantra Hybrid 2021-23": "HYUNDAI_ELANTRA_HEV_2021", + "Hyundai Elantra Non-SCC 2022": "HYUNDAI_ELANTRA_2022_NON_SCC", + "Hyundai Genesis 2015-16": "HYUNDAI_GENESIS", + "Hyundai i30 2017-19": "HYUNDAI_ELANTRA_GT_I30", + "Hyundai Ioniq 5 (Southeast Asia only) 2022-23": "HYUNDAI_IONIQ_5", + "Hyundai Ioniq 5 (with HDA II) 2022-23": "HYUNDAI_IONIQ_5", + "Hyundai Ioniq 5 (without HDA II) 2022-23": "HYUNDAI_IONIQ_5", + "Hyundai Ioniq 6 (with HDA II) 2023": "HYUNDAI_IONIQ_6", + "Hyundai Ioniq Electric 2019": "HYUNDAI_IONIQ_EV_LTD", + "Hyundai Ioniq Electric 2020": "HYUNDAI_IONIQ_EV_2020", + "Hyundai Ioniq Hybrid 2017-19": "HYUNDAI_IONIQ", + "Hyundai Ioniq Hybrid 2020-22": "HYUNDAI_IONIQ_HEV_2022", + "Hyundai Ioniq Plug-in Hybrid 2019": "HYUNDAI_IONIQ_PHEV_2019", + "Hyundai Ioniq Plug-in Hybrid 2020-22": "HYUNDAI_IONIQ_PHEV", + "Hyundai Kona 2020": "HYUNDAI_KONA", + "Hyundai Kona Electric 2018-21": "HYUNDAI_KONA_EV", + "Hyundai Kona Electric 2022-23": "HYUNDAI_KONA_EV_2022", + "Hyundai Kona Electric (with HDA II, Korea only) 2023": "HYUNDAI_KONA_EV_2ND_GEN", + "Hyundai Kona Hybrid 2020": "HYUNDAI_KONA_HEV", + "Hyundai Kona Non-SCC 2019": "HYUNDAI_KONA_NON_SCC", + "Hyundai Palisade 2020-22": "HYUNDAI_PALISADE", + "Hyundai Santa Cruz 2022-24": "HYUNDAI_SANTA_CRUZ_1ST_GEN", + "Hyundai Santa Fe 2019-20": "HYUNDAI_SANTA_FE", + "Hyundai Santa Fe 2021-23": "HYUNDAI_SANTA_FE_2022", + "Hyundai Santa Fe Hybrid 2022-23": "HYUNDAI_SANTA_FE_HEV_2022", + "Hyundai Santa Fe Plug-in Hybrid 2022-23": "HYUNDAI_SANTA_FE_PHEV_2022", + "Hyundai Sonata 2018-19": "HYUNDAI_SONATA_LF", + "Hyundai Sonata 2020-23": "HYUNDAI_SONATA", + "Hyundai Sonata Hybrid 2020-23": "HYUNDAI_SONATA_HYBRID", + "Hyundai Staria 2023": "HYUNDAI_STARIA_4TH_GEN", + "Hyundai Tucson 2021": "HYUNDAI_TUCSON", + "Hyundai Tucson 2022": "HYUNDAI_TUCSON_4TH_GEN", + "Hyundai Tucson 2023-24": "HYUNDAI_TUCSON_4TH_GEN", + "Hyundai Tucson Diesel 2019": "HYUNDAI_TUCSON", + "Hyundai Tucson Hybrid 2022-24": "HYUNDAI_TUCSON_4TH_GEN", + "Hyundai Veloster 2019-20": "HYUNDAI_VELOSTER", + "Jeep Grand Cherokee 2016-18": "JEEP_GRAND_CHEROKEE", + "Jeep Grand Cherokee 2019-21": "JEEP_GRAND_CHEROKEE_2019", + "Kia Carnival 2022-24": "KIA_CARNIVAL_4TH_GEN", + "Kia Carnival (China only) 2023": "KIA_CARNIVAL_4TH_GEN", + "Kia Ceed 2019": "KIA_CEED", + "Kia EV6 (Southeast Asia only) 2022-23": "KIA_EV6", + "Kia EV6 (with HDA II) 2022-23": "KIA_EV6", + "Kia EV6 (without HDA II) 2022-23": "KIA_EV6", + "Kia Forte 2019-21": "KIA_FORTE", + "Kia Forte 2023": "KIA_FORTE", + "Kia Forte Non-SCC 2019": "KIA_FORTE_2019_NON_SCC", + "Kia Forte Non-SCC 2021": "KIA_FORTE_2021_NON_SCC", + "Kia K5 2021-24": "KIA_K5_2021", + "Kia K5 Hybrid 2020-22": "KIA_K5_HEV_2020", + "Kia K8 Hybrid (with HDA II) 2023": "KIA_K8_HEV_1ST_GEN", + "Kia Niro EV 2019": "KIA_NIRO_EV", + "Kia Niro EV 2020": "KIA_NIRO_EV", + "Kia Niro EV 2021": "KIA_NIRO_EV", + "Kia Niro EV 2022": "KIA_NIRO_EV", + "Kia Niro EV 2023": "KIA_NIRO_EV_2ND_GEN", + "Kia Niro Hybrid 2018": "KIA_NIRO_PHEV", + "Kia Niro Hybrid 2021": "KIA_NIRO_HEV_2021", + "Kia Niro Hybrid 2022": "KIA_NIRO_HEV_2021", + "Kia Niro Hybrid 2023": "KIA_NIRO_HEV_2ND_GEN", + "Kia Niro Plug-in Hybrid 2018-19": "KIA_NIRO_PHEV", + "Kia Niro Plug-in Hybrid 2020": "KIA_NIRO_PHEV", + "Kia Niro Plug-in Hybrid 2021": "KIA_NIRO_PHEV_2022", + "Kia Niro Plug-in Hybrid 2022": "KIA_NIRO_PHEV_2022", + "Kia Optima 2017": "KIA_OPTIMA_G4", + "Kia Optima 2019-20": "KIA_OPTIMA_G4_FL", + "Kia Optima Hybrid 2019": "KIA_OPTIMA_H_G4_FL", + "Kia Seltos 2021": "KIA_SELTOS", + "Kia Seltos Non-SCC 2023-24": "KIA_SELTOS_2023_NON_SCC", + "Kia Sorento 2018": "KIA_SORENTO", + "Kia Sorento 2019": "KIA_SORENTO", + "Kia Sorento 2021-23": "KIA_SORENTO_4TH_GEN", + "Kia Sorento Hybrid 2021-23": "KIA_SORENTO_HEV_4TH_GEN", + "Kia Sorento Plug-in Hybrid 2022-23": "KIA_SORENTO_HEV_4TH_GEN", + "Kia Sportage 2023-24": "KIA_SPORTAGE_5TH_GEN", + "Kia Sportage Hybrid 2023": "KIA_SPORTAGE_5TH_GEN", + "Kia Stinger 2018-20": "KIA_STINGER", + "Kia Stinger 2022-23": "KIA_STINGER_2022", + "Kia Telluride 2020-22": "HYUNDAI_PALISADE", + "Lexus CT Hybrid 2017-18": "LEXUS_CTH", + "Lexus ES 2017-18": "LEXUS_ES", + "Lexus ES 2019-24": "LEXUS_ES_TSS2", + "Lexus ES Hybrid 2017-18": "LEXUS_ES", + "Lexus ES Hybrid 2019-24": "LEXUS_ES_TSS2", + "Lexus GS F 2016": "LEXUS_GS_F", + "Lexus IS 2017-19": "LEXUS_IS", + "Lexus IS 2022-23": "LEXUS_IS_TSS2", + "Lexus LC 2024": "LEXUS_LC_TSS2", + "Lexus NX 2018-19": "LEXUS_NX", + "Lexus NX 2020-21": "LEXUS_NX_TSS2", + "Lexus NX Hybrid 2018-19": "LEXUS_NX", + "Lexus NX Hybrid 2020-21": "LEXUS_NX_TSS2", + "Lexus RC 2018-20": "LEXUS_RC", + "Lexus RX 2016": "LEXUS_RX", + "Lexus RX 2017-19": "LEXUS_RX", + "Lexus RX 2020-22": "LEXUS_RX_TSS2", + "Lexus RX Hybrid 2016": "LEXUS_RX", + "Lexus RX Hybrid 2017-19": "LEXUS_RX", + "Lexus RX Hybrid 2020-22": "LEXUS_RX_TSS2", + "Lexus UX Hybrid 2019-23": "TOYOTA_COROLLA_TSS2", + "Lincoln Aviator 2020-23": "FORD_EXPLORER_MK6", + "Lincoln Aviator Plug-in Hybrid 2020-23": "FORD_EXPLORER_MK6", + "MAN eTGE 2020-23": "VOLKSWAGEN_CRAFTER_MK2", + "MAN TGE 2017-23": "VOLKSWAGEN_CRAFTER_MK2", + "Mazda CX-5 2022-24": "MAZDA_CX5_2022", + "Mazda CX-9 2021-23": "MAZDA_CX9_2021", + "Nissan Altima 2019-20": "NISSAN_ALTIMA", + "Nissan Leaf 2018-23": "NISSAN_LEAF", + "Nissan Leaf Instrument Cluster 2018-23": "NISSAN_LEAF_IC", + "Nissan Rogue 2018-20": "NISSAN_ROGUE", + "Nissan X-Trail 2017": "NISSAN_XTRAIL", + "Ram 1500 2019-24": "RAM_1500_5TH_GEN", + "Ram 2500 2020-24": "RAM_HD_5TH_GEN", + "Ram 3500 2019-22": "RAM_HD_5TH_GEN", + "SEAT Ateca 2018": "SEAT_ATECA_MK1", + "SEAT Leon 2014-20": "SEAT_ATECA_MK1", + "Subaru Ascent 2019-21": "SUBARU_ASCENT", + "Subaru Crosstrek 2018-19": "SUBARU_IMPREZA", + "Subaru Crosstrek 2020-23": "SUBARU_IMPREZA_2020", + "Subaru Forester 2017-18": "SUBARU_FORESTER_PREGLOBAL", + "Subaru Forester 2019-21": "SUBARU_FORESTER", + "Subaru Impreza 2017-19": "SUBARU_IMPREZA", + "Subaru Impreza 2020-22": "SUBARU_IMPREZA_2020", + "Subaru Legacy 2015-18": "SUBARU_LEGACY_PREGLOBAL", + "Subaru Legacy 2020-22": "SUBARU_LEGACY", + "Subaru Outback 2015-17": "SUBARU_OUTBACK_PREGLOBAL", + "Subaru Outback 2018-19": "SUBARU_OUTBACK_PREGLOBAL_2018", + "Subaru Outback 2020-22": "SUBARU_OUTBACK", + "Subaru XV 2018-19": "SUBARU_IMPREZA", + "Subaru XV 2020-21": "SUBARU_IMPREZA_2020", + "Škoda Fabia 2022-23": "SKODA_FABIA_MK4", + "Škoda Kamiq 2021-23": "SKODA_KAMIQ_MK1", + "Škoda Karoq 2019-23": "SKODA_KAROQ_MK1", + "Škoda Kodiaq 2017-23": "SKODA_KODIAQ_MK1", + "Škoda Octavia 2015-19": "SKODA_OCTAVIA_MK3", + "Škoda Octavia RS 2016": "SKODA_OCTAVIA_MK3", + "Škoda Octavia Scout 2017-19": "SKODA_OCTAVIA_MK3", + "Škoda Scala 2020-23": "SKODA_KAMIQ_MK1", + "Škoda Superb 2015-22": "SKODA_SUPERB_MK3", + "Toyota Alphard 2019-20": "TOYOTA_ALPHARD_TSS2", + "Toyota Alphard Hybrid 2021": "TOYOTA_ALPHARD_TSS2", + "Toyota Avalon 2016": "TOYOTA_AVALON", + "Toyota Avalon 2017-18": "TOYOTA_AVALON", + "Toyota Avalon 2019-21": "TOYOTA_AVALON_2019", + "Toyota Avalon 2022": "TOYOTA_AVALON_TSS2", + "Toyota Avalon Hybrid 2019-21": "TOYOTA_AVALON_2019", + "Toyota Avalon Hybrid 2022": "TOYOTA_AVALON_TSS2", + "Toyota C-HR 2017-20": "TOYOTA_CHR", + "Toyota C-HR 2021": "TOYOTA_CHR_TSS2", + "Toyota C-HR Hybrid 2017-20": "TOYOTA_CHR", + "Toyota C-HR Hybrid 2021-22": "TOYOTA_CHR_TSS2", + "Toyota Camry 2018-20": "TOYOTA_CAMRY", + "Toyota Camry 2021-24": "TOYOTA_CAMRY_TSS2", + "Toyota Camry Hybrid 2018-20": "TOYOTA_CAMRY", + "Toyota Camry Hybrid 2021-24": "TOYOTA_CAMRY_TSS2", + "Toyota Corolla 2017-19": "TOYOTA_COROLLA", + "Toyota Corolla 2020-22": "TOYOTA_COROLLA_TSS2", + "Toyota Corolla Cross (Non-US only) 2020-23": "TOYOTA_COROLLA_TSS2", + "Toyota Corolla Cross Hybrid (Non-US only) 2020-22": "TOYOTA_COROLLA_TSS2", + "Toyota Corolla Hatchback 2019-22": "TOYOTA_COROLLA_TSS2", + "Toyota Corolla Hybrid 2020-22": "TOYOTA_COROLLA_TSS2", + "Toyota Corolla Hybrid (Non-US only) 2020-23": "TOYOTA_COROLLA_TSS2", + "Toyota Highlander 2017-19": "TOYOTA_HIGHLANDER", + "Toyota Highlander 2020-23": "TOYOTA_HIGHLANDER_TSS2", + "Toyota Highlander Hybrid 2017-19": "TOYOTA_HIGHLANDER", + "Toyota Highlander Hybrid 2020-23": "TOYOTA_HIGHLANDER_TSS2", + "Toyota Mirai 2021": "TOYOTA_MIRAI", + "Toyota Prius 2016": "TOYOTA_PRIUS", + "Toyota Prius 2017-20": "TOYOTA_PRIUS", + "Toyota Prius 2021-22": "TOYOTA_PRIUS_TSS2", + "Toyota Prius Prime 2017-20": "TOYOTA_PRIUS", + "Toyota Prius Prime 2021-22": "TOYOTA_PRIUS_TSS2", + "Toyota Prius v 2017": "TOYOTA_PRIUS_V", + "Toyota RAV4 2016": "TOYOTA_RAV4", + "Toyota RAV4 2017-18": "TOYOTA_RAV4", + "Toyota RAV4 2019-21": "TOYOTA_RAV4_TSS2", + "Toyota RAV4 2022": "TOYOTA_RAV4_TSS2_2022", + "Toyota RAV4 2023-24": "TOYOTA_RAV4_TSS2_2023", + "Toyota RAV4 Hybrid 2016": "TOYOTA_RAV4H", + "Toyota RAV4 Hybrid 2017-18": "TOYOTA_RAV4H", + "Toyota RAV4 Hybrid 2019-21": "TOYOTA_RAV4_TSS2", + "Toyota RAV4 Hybrid 2022": "TOYOTA_RAV4_TSS2_2022", + "Toyota RAV4 Hybrid 2023-24": "TOYOTA_RAV4_TSS2_2023", + "Toyota Sienna 2018-20": "TOYOTA_SIENNA", + "Volkswagen Arteon 2018-23": "VOLKSWAGEN_ARTEON_MK1", + "Volkswagen Arteon eHybrid 2020-23": "VOLKSWAGEN_ARTEON_MK1", + "Volkswagen Arteon R 2020-23": "VOLKSWAGEN_ARTEON_MK1", + "Volkswagen Atlas 2018-23": "VOLKSWAGEN_ATLAS_MK1", + "Volkswagen Atlas Cross Sport 2020-22": "VOLKSWAGEN_ATLAS_MK1", + "Volkswagen California 2021-23": "VOLKSWAGEN_TRANSPORTER_T61", + "Volkswagen Caravelle 2020": "VOLKSWAGEN_TRANSPORTER_T61", + "Volkswagen CC 2018-22": "VOLKSWAGEN_ARTEON_MK1", + "Volkswagen Crafter 2017-23": "VOLKSWAGEN_CRAFTER_MK2", + "Volkswagen e-Crafter 2018-23": "VOLKSWAGEN_CRAFTER_MK2", + "Volkswagen e-Golf 2014-20": "VOLKSWAGEN_GOLF_MK7", + "Volkswagen Golf 2015-20": "VOLKSWAGEN_GOLF_MK7", + "Volkswagen Golf Alltrack 2015-19": "VOLKSWAGEN_GOLF_MK7", + "Volkswagen Golf GTD 2015-20": "VOLKSWAGEN_GOLF_MK7", + "Volkswagen Golf GTE 2015-20": "VOLKSWAGEN_GOLF_MK7", + "Volkswagen Golf GTI 2015-21": "VOLKSWAGEN_GOLF_MK7", + "Volkswagen Golf R 2015-19": "VOLKSWAGEN_GOLF_MK7", + "Volkswagen Golf SportsVan 2015-20": "VOLKSWAGEN_GOLF_MK7", + "Volkswagen Grand California 2019-23": "VOLKSWAGEN_CRAFTER_MK2", + "Volkswagen Jetta 2018-24": "VOLKSWAGEN_JETTA_MK7", + "Volkswagen Jetta GLI 2021-24": "VOLKSWAGEN_JETTA_MK7", + "Volkswagen Passat 2015-22": "VOLKSWAGEN_PASSAT_MK8", + "Volkswagen Passat Alltrack 2015-22": "VOLKSWAGEN_PASSAT_MK8", + "Volkswagen Passat GTE 2015-22": "VOLKSWAGEN_PASSAT_MK8", + "Volkswagen Polo 2018-23": "VOLKSWAGEN_POLO_MK6", + "Volkswagen Polo GTI 2018-23": "VOLKSWAGEN_POLO_MK6", + "Volkswagen T-Cross 2021": "VOLKSWAGEN_TCROSS_MK1", + "Volkswagen T-Roc 2018-23": "VOLKSWAGEN_TROC_MK1", + "Volkswagen Taos 2022-23": "VOLKSWAGEN_TAOS_MK1", + "Volkswagen Teramont 2018-22": "VOLKSWAGEN_ATLAS_MK1", + "Volkswagen Teramont Cross Sport 2021-22": "VOLKSWAGEN_ATLAS_MK1", + "Volkswagen Teramont X 2021-22": "VOLKSWAGEN_ATLAS_MK1", + "Volkswagen Tiguan 2018-24": "VOLKSWAGEN_TIGUAN_MK2", + "Volkswagen Tiguan eHybrid 2021-23": "VOLKSWAGEN_TIGUAN_MK2", + "Volkswagen Touran 2016-23": "VOLKSWAGEN_TOURAN_MK2" } diff --git a/selfdrive/car/tesla/carcontroller.py b/selfdrive/car/tesla/carcontroller.py index 95a248a614..f217c4692d 100644 --- a/selfdrive/car/tesla/carcontroller.py +++ b/selfdrive/car/tesla/carcontroller.py @@ -1,11 +1,12 @@ from openpilot.common.numpy_fast import clip from opendbc.can.packer import CANPacker from openpilot.selfdrive.car import apply_std_steer_angle_limits +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.tesla.teslacan import TeslaCAN from openpilot.selfdrive.car.tesla.values import DBC, CANBUS, CarControllerParams -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.frame = 0 diff --git a/selfdrive/car/tesla/carstate.py b/selfdrive/car/tesla/carstate.py index 2cb4f09d79..645ea46014 100644 --- a/selfdrive/car/tesla/carstate.py +++ b/selfdrive/car/tesla/carstate.py @@ -2,7 +2,7 @@ import copy from collections import deque from cereal import car from openpilot.common.conversions import Conversions as CV -from openpilot.selfdrive.car.tesla.values import DBC, CANBUS, GEAR_MAP, DOORS, BUTTONS +from openpilot.selfdrive.car.tesla.values import CAR, DBC, CANBUS, GEAR_MAP, DOORS, BUTTONS from openpilot.selfdrive.car.interfaces import CarStateBase from opendbc.can.parser import CANParser from opendbc.can.can_define import CANDefine @@ -37,13 +37,15 @@ class CarState(CarStateBase): ret.brakePressed = bool(cp.vl["BrakeMessage"]["driverBrakeStatus"] != 1) # Steering wheel - self.hands_on_level = cp.vl["EPAS_sysStatus"]["EPAS_handsOnLevel"] - self.steer_warning = self.can_define.dv["EPAS_sysStatus"]["EPAS_eacErrorCode"].get(int(cp.vl["EPAS_sysStatus"]["EPAS_eacErrorCode"]), None) - steer_status = self.can_define.dv["EPAS_sysStatus"]["EPAS_eacStatus"].get(int(cp.vl["EPAS_sysStatus"]["EPAS_eacStatus"]), None) + epas_status = cp_cam.vl["EPAS3P_sysStatus"] if self.CP.carFingerprint == CAR.TESLA_MODELS_RAVEN else cp.vl["EPAS_sysStatus"] - ret.steeringAngleDeg = -cp.vl["EPAS_sysStatus"]["EPAS_internalSAS"] + self.hands_on_level = epas_status["EPAS_handsOnLevel"] + self.steer_warning = self.can_define.dv["EPAS_sysStatus"]["EPAS_eacErrorCode"].get(int(epas_status["EPAS_eacErrorCode"]), None) + steer_status = self.can_define.dv["EPAS_sysStatus"]["EPAS_eacStatus"].get(int(epas_status["EPAS_eacStatus"]), None) + + ret.steeringAngleDeg = -epas_status["EPAS_internalSAS"] ret.steeringRateDeg = -cp.vl["STW_ANGLHP_STAT"]["StW_AnglHP_Spd"] # This is from a different angle sensor, and at different rate - ret.steeringTorque = -cp.vl["EPAS_sysStatus"]["EPAS_torsionBarTorque"] + ret.steeringTorque = -epas_status["EPAS_torsionBarTorque"] ret.steeringPressed = (self.hands_on_level > 0) ret.steerFaultPermanent = steer_status == "EAC_FAULT" ret.steerFaultTemporary = (self.steer_warning not in ("EAC_ERROR_IDLE", "EAC_ERROR_HANDS_ON")) @@ -85,7 +87,10 @@ class CarState(CarStateBase): ret.rightBlinker = (cp.vl["GTW_carState"]["BC_indicatorRStatus"] == 1) # Seatbelt - ret.seatbeltUnlatched = (cp.vl["SDM1"]["SDM_bcklDrivStatus"] != 1) + if self.CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: + ret.seatbeltUnlatched = (cp.vl["DriverSeat"]["buckleStatus"] != 1) + else: + ret.seatbeltUnlatched = (cp.vl["SDM1"]["SDM_bcklDrivStatus"] != 1) # TODO: blindspot @@ -111,9 +116,14 @@ class CarState(CarStateBase): ("DI_state", 10), ("STW_ACTN_RQ", 10), ("GTW_carState", 10), - ("SDM1", 10), ("BrakeMessage", 50), ] + + if CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: + messages.append(("DriverSeat", 20)) + else: + messages.append(("SDM1", 10)) + return CANParser(DBC[CP.carFingerprint]['chassis'], messages, CANBUS.chassis) @staticmethod @@ -122,4 +132,8 @@ class CarState(CarStateBase): # sig_address, frequency ("DAS_control", 40), ] + + if CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: + messages.append(("EPAS3P_sysStatus", 100)) + return CANParser(DBC[CP.carFingerprint]['chassis'], messages, CANBUS.autopilot_chassis) diff --git a/selfdrive/car/tesla/fingerprints.py b/selfdrive/car/tesla/fingerprints.py index 772ca59efa..68c50a62ed 100644 --- a/selfdrive/car/tesla/fingerprints.py +++ b/selfdrive/car/tesla/fingerprints.py @@ -1,17 +1,10 @@ -# ruff: noqa: E501 from cereal import car from openpilot.selfdrive.car.tesla.values import CAR Ecu = car.CarParams.Ecu -FINGERPRINTS = { - CAR.AP1_MODELS: [{ - 1: 8, 3: 8, 14: 8, 21: 4, 69: 8, 109: 4, 257: 3, 264: 8, 267: 5, 277: 6, 280: 6, 283: 5, 293: 4, 296: 4, 309: 5, 325: 8, 328: 5, 336: 8, 341: 8, 360: 7, 373: 8, 389: 8, 415: 8, 513: 5, 516: 8, 520: 4, 522: 8, 524: 8, 526: 8, 532: 3, 536: 8, 537: 3, 542: 8, 551: 5, 552: 2, 556: 8, 558: 8, 568: 8, 569: 8, 574: 8, 577: 8, 582: 5, 584: 4, 585: 8, 590: 8, 606: 8, 622: 8, 627: 6, 638: 8, 641: 8, 643: 8, 660: 5, 693: 8, 696: 8, 697: 8, 712: 8, 728: 8, 744: 8, 760: 8, 772: 8, 775: 8, 776: 8, 777: 8, 778: 8, 782: 8, 788: 8, 791: 8, 792: 8, 796: 2, 797: 8, 798: 6, 799: 8, 804: 8, 805: 8, 807: 8, 808: 1, 809: 8, 812: 8, 813: 8, 814: 5, 815: 8, 820: 8, 823: 8, 824: 8, 829: 8, 830: 5, 836: 8, 840: 8, 841: 8, 845: 8, 846: 5, 852: 8, 856: 4, 857: 6, 861: 8, 862: 5, 872: 8, 873: 8, 877: 8, 878: 8, 879: 8, 880: 8, 884: 8, 888: 8, 889: 8, 893: 8, 896: 8, 901: 6, 904: 3, 905: 8, 908: 2, 909: 8, 920: 8, 921: 8, 925: 4, 936: 8, 937: 8, 941: 8, 949: 8, 952: 8, 953: 6, 957: 8, 968: 8, 973: 8, 984: 8, 987: 8, 989: 8, 990: 8, 1000: 8, 1001: 8, 1006: 8, 1016: 8, 1026: 8, 1028: 8, 1029: 8, 1030: 8, 1032: 1, 1033: 1, 1034: 8, 1048: 1, 1064: 8, 1070: 8, 1080: 8, 1160: 4, 1281: 8, 1329: 8, 1332: 8, 1335: 8, 1337: 8, 1368: 8, 1412: 8, 1436: 8, 1465: 8, 1476: 8, 1497: 8, 1524: 8, 1527: 8, 1601: 8, 1605: 8, 1611: 8, 1614: 8, 1617: 8, 1621: 8, 1627: 8, 1630: 8, 1800: 4, 1804: 8, 1812: 8, 1815: 8, 1816: 8, 1828: 8, 1831: 8, 1832: 8, 1840: 8, 1848: 8, 1864: 8, 1880: 8, 1892: 8, 1896: 8, 1912: 8, 1960: 8, 1992: 8, 2008: 3, 2043: 5, 2045: 4 - }], -} - FW_VERSIONS = { - CAR.AP2_MODELS: { + CAR.TESLA_AP2_MODELS: { (Ecu.adas, 0x649, None): [ b'\x01\x00\x8b\x07\x01\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11', ], @@ -25,4 +18,15 @@ FW_VERSIONS = { b'\x10#\x01', ], }, + CAR.TESLA_MODELS_RAVEN: { + (Ecu.electricBrakeBooster, 0x64d, None): [ + b'1037123-00-A', + ], + (Ecu.fwdRadar, 0x671, None): [ + b'\x01\x00\x99\x02\x01\x00\x10\x00\x00AP8.3.03\x00\x10', + ], + (Ecu.eps, 0x730, None): [ + b'SX_0.0.0 (99),SR013.7', + ], + }, } diff --git a/selfdrive/car/tesla/interface.py b/selfdrive/car/tesla/interface.py index e06139729c..e039859263 100755 --- a/selfdrive/car/tesla/interface.py +++ b/selfdrive/car/tesla/interface.py @@ -28,27 +28,20 @@ class CarInterface(CarInterfaceBase): # Check if we have messages on an auxiliary panda, and that 0x2bf (DAS_control) is present on the AP powertrain bus # If so, we assume that it is connected to the longitudinal harness. + flags = (Panda.FLAG_TESLA_RAVEN if candidate == CAR.TESLA_MODELS_RAVEN else 0) if (CANBUS.autopilot_powertrain in fingerprint.keys()) and (0x2bf in fingerprint[CANBUS.autopilot_powertrain].keys()): ret.openpilotLongitudinalControl = True + flags |= Panda.FLAG_TESLA_LONG_CONTROL ret.safetyConfigs = [ - get_safety_config(car.CarParams.SafetyModel.tesla, Panda.FLAG_TESLA_LONG_CONTROL), - get_safety_config(car.CarParams.SafetyModel.tesla, Panda.FLAG_TESLA_LONG_CONTROL | Panda.FLAG_TESLA_POWERTRAIN), + get_safety_config(car.CarParams.SafetyModel.tesla, flags), + get_safety_config(car.CarParams.SafetyModel.tesla, flags | Panda.FLAG_TESLA_POWERTRAIN), ] else: ret.openpilotLongitudinalControl = False - ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.tesla, 0)] + ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.tesla, flags)] ret.steerLimitTimer = 1.0 ret.steerActuatorDelay = 0.25 - - if candidate in (CAR.AP2_MODELS, CAR.AP1_MODELS): - ret.mass = 2100. - ret.wheelbase = 2.959 - ret.centerToFront = ret.wheelbase * 0.5 - ret.steerRatio = 15.0 - else: - raise ValueError(f"Unsupported car: {candidate}") - return ret def _update(self, c): @@ -57,6 +50,3 @@ class CarInterface(CarInterfaceBase): ret.events = self.create_common_events(ret).to_msg() return ret - - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/tesla/radar_interface.py b/selfdrive/car/tesla/radar_interface.py index b3e7c7fcb1..ae5077824b 100755 --- a/selfdrive/car/tesla/radar_interface.py +++ b/selfdrive/car/tesla/radar_interface.py @@ -1,38 +1,33 @@ #!/usr/bin/env python3 from cereal import car from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.tesla.values import DBC, CANBUS +from openpilot.selfdrive.car.tesla.values import CAR, DBC, CANBUS from openpilot.selfdrive.car.interfaces import RadarInterfaceBase -RADAR_MSGS_A = list(range(0x310, 0x36E, 3)) -RADAR_MSGS_B = list(range(0x311, 0x36F, 3)) -NUM_POINTS = len(RADAR_MSGS_A) - -def get_radar_can_parser(CP): - # Status messages - messages = [ - ('TeslaRadarSguInfo', 10), - ] - - # Radar tracks. There are also raw point clouds available, - # we don't use those. - for i in range(NUM_POINTS): - msg_id_a = RADAR_MSGS_A[i] - msg_id_b = RADAR_MSGS_B[i] - messages.extend([ - (msg_id_a, 8), - (msg_id_b, 8), - ]) - - return CANParser(DBC[CP.carFingerprint]['radar'], messages, CANBUS.radar) class RadarInterface(RadarInterfaceBase): def __init__(self, CP): super().__init__(CP) - self.rcp = get_radar_can_parser(CP) + self.CP = CP + + if CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: + messages = [('RadarStatus', 16)] + self.num_points = 40 + self.trigger_msg = 1119 + else: + messages = [('TeslaRadarSguInfo', 10)] + self.num_points = 32 + self.trigger_msg = 878 + + for i in range(self.num_points): + messages.extend([ + (f'RadarPoint{i}_A', 16), + (f'RadarPoint{i}_B', 16), + ]) + + self.rcp = CANParser(DBC[CP.carFingerprint]['radar'], messages, CANBUS.radar) self.updated_messages = set() self.track_id = 0 - self.trigger_msg = RADAR_MSGS_B[-1] def update(self, can_strings): if self.rcp is None: @@ -48,17 +43,24 @@ class RadarInterface(RadarInterfaceBase): # Errors errors = [] - sgu_info = self.rcp.vl['TeslaRadarSguInfo'] if not self.rcp.can_valid: errors.append('canError') - if sgu_info['RADC_HWFail'] or sgu_info['RADC_SGUFail'] or sgu_info['RADC_SensorDirty']: - errors.append('fault') + + if self.CP.carFingerprint == CAR.TESLA_MODELS_RAVEN: + radar_status = self.rcp.vl['RadarStatus'] + if radar_status['sensorBlocked'] or radar_status['shortTermUnavailable'] or radar_status['vehDynamicsError']: + errors.append('fault') + else: + radar_status = self.rcp.vl['TeslaRadarSguInfo'] + if radar_status['RADC_HWFail'] or radar_status['RADC_SGUFail'] or radar_status['RADC_SensorDirty']: + errors.append('fault') + ret.errors = errors # Radar tracks - for i in range(NUM_POINTS): - msg_a = self.rcp.vl[RADAR_MSGS_A[i]] - msg_b = self.rcp.vl[RADAR_MSGS_B[i]] + for i in range(self.num_points): + msg_a = self.rcp.vl[f'RadarPoint{i}_A'] + msg_b = self.rcp.vl[f'RadarPoint{i}_B'] # Make sure msg A and B are together if msg_a['Index'] != msg_b['Index2']: diff --git a/selfdrive/car/tesla/values.py b/selfdrive/car/tesla/values.py index 2a51d15da8..0f9cd00f63 100644 --- a/selfdrive/car/tesla/values.py +++ b/selfdrive/car/tesla/values.py @@ -1,31 +1,30 @@ from collections import namedtuple -from enum import StrEnum from cereal import car -from openpilot.selfdrive.car import AngleRateLimit, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarInfo +from openpilot.selfdrive.car import AngleRateLimit, CarSpecs, PlatformConfig, Platforms, dbc_dict +from openpilot.selfdrive.car.docs_definitions import CarDocs from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu Button = namedtuple('Button', ['event_type', 'can_addr', 'can_msg', 'values']) - -class CAR(StrEnum): - AP1_MODELS = 'TESLA AP1 MODEL S' - AP2_MODELS = 'TESLA AP2 MODEL S' - - -CAR_INFO: dict[str, CarInfo | list[CarInfo]] = { - CAR.AP1_MODELS: CarInfo("Tesla AP1 Model S", "All"), - CAR.AP2_MODELS: CarInfo("Tesla AP2 Model S", "All"), -} - - -DBC = { - CAR.AP2_MODELS: dbc_dict('tesla_powertrain', 'tesla_radar', chassis_dbc='tesla_can'), - CAR.AP1_MODELS: dbc_dict('tesla_powertrain', 'tesla_radar', chassis_dbc='tesla_can'), -} +class CAR(Platforms): + TESLA_AP1_MODELS = PlatformConfig( + [CarDocs("Tesla AP1 Model S", "All")], + CarSpecs(mass=2100., wheelbase=2.959, steerRatio=15.0), + dbc_dict('tesla_powertrain', 'tesla_radar_bosch_generated', chassis_dbc='tesla_can') + ) + TESLA_AP2_MODELS = PlatformConfig( + [CarDocs("Tesla AP2 Model S", "All")], + TESLA_AP1_MODELS.specs, + TESLA_AP1_MODELS.dbc_dict + ) + TESLA_MODELS_RAVEN = PlatformConfig( + [CarDocs("Tesla Model S Raven", "All")], + TESLA_AP1_MODELS.specs, + dbc_dict('tesla_powertrain', 'tesla_radar_continental_generated', chassis_dbc='tesla_can') + ) FW_QUERY_CONFIG = FwQueryConfig( requests=[ @@ -36,6 +35,13 @@ FW_QUERY_CONFIG = FwQueryConfig( rx_offset=0x08, bus=0, ), + Request( + [StdQueries.TESTER_PRESENT_REQUEST, StdQueries.SUPPLIER_SOFTWARE_VERSION_REQUEST], + [StdQueries.TESTER_PRESENT_RESPONSE, StdQueries.SUPPLIER_SOFTWARE_VERSION_RESPONSE], + whitelist_ecus=[Ecu.eps], + rx_offset=0x08, + bus=0, + ), Request( [StdQueries.TESTER_PRESENT_REQUEST, StdQueries.UDS_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, StdQueries.UDS_VERSION_RESPONSE], @@ -46,7 +52,6 @@ FW_QUERY_CONFIG = FwQueryConfig( ] ) - class CANBUS: # Lateral harness chassis = 0 @@ -88,3 +93,6 @@ class CarControllerParams: def __init__(self, CP): pass + + +DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/tests/routes.py b/selfdrive/car/tests/routes.py index 9c14c0d252..3ab4047c77 100755 --- a/selfdrive/car/tests/routes.py +++ b/selfdrive/car/tests/routes.py @@ -10,105 +10,108 @@ from openpilot.selfdrive.car.nissan.values import CAR as NISSAN from openpilot.selfdrive.car.mazda.values import CAR as MAZDA from openpilot.selfdrive.car.subaru.values import CAR as SUBARU from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA +from openpilot.selfdrive.car.values import Platform from openpilot.selfdrive.car.volkswagen.values import CAR as VOLKSWAGEN from openpilot.selfdrive.car.tesla.values import CAR as TESLA from openpilot.selfdrive.car.body.values import CAR as COMMA # TODO: add routes for these cars non_tested_cars = [ - FORD.F_150_MK14, + FORD.FORD_F_150_MK14, GM.CADILLAC_ATS, GM.HOLDEN_ASTRA, - GM.MALIBU, + GM.CHEVROLET_MALIBU, HYUNDAI.GENESIS_G90, - HONDA.ODYSSEY_CHN, - VOLKSWAGEN.CRAFTER_MK2, # need a route from an ACC-equipped Crafter - SUBARU.FORESTER_HYBRID, + HONDA.HONDA_ODYSSEY_CHN, + VOLKSWAGEN.VOLKSWAGEN_CRAFTER_MK2, # need a route from an ACC-equipped Crafter + SUBARU.SUBARU_FORESTER_HYBRID, ] class CarTestRoute(NamedTuple): route: str - car_model: str | None + car_model: Platform | None segment: int | None = None routes = [ - CarTestRoute("efdf9af95e71cd84|2022-05-13--19-03-31", COMMA.BODY), + CarTestRoute("efdf9af95e71cd84|2022-05-13--19-03-31", COMMA.COMMA_BODY), CarTestRoute("0c94aa1e1296d7c6|2021-05-05--19-48-37", CHRYSLER.JEEP_GRAND_CHEROKEE), CarTestRoute("91dfedae61d7bd75|2021-05-22--20-07-52", CHRYSLER.JEEP_GRAND_CHEROKEE_2019), - CarTestRoute("420a8e183f1aed48|2020-03-05--07-15-29", CHRYSLER.PACIFICA_2017_HYBRID), - CarTestRoute("43a685a66291579b|2021-05-27--19-47-29", CHRYSLER.PACIFICA_2018), - CarTestRoute("378472f830ee7395|2021-05-28--07-38-43", CHRYSLER.PACIFICA_2018_HYBRID), - CarTestRoute("8190c7275a24557b|2020-01-29--08-33-58", CHRYSLER.PACIFICA_2019_HYBRID), - CarTestRoute("3d84727705fecd04|2021-05-25--08-38-56", CHRYSLER.PACIFICA_2020), - CarTestRoute("221c253375af4ee9|2022-06-15--18-38-24", CHRYSLER.RAM_1500), - CarTestRoute("8fb5eabf914632ae|2022-08-04--17-28-53", CHRYSLER.RAM_HD, segment=6), + CarTestRoute("420a8e183f1aed48|2020-03-05--07-15-29", CHRYSLER.CHRYSLER_PACIFICA_2017_HYBRID), + CarTestRoute("43a685a66291579b|2021-05-27--19-47-29", CHRYSLER.CHRYSLER_PACIFICA_2018), + CarTestRoute("378472f830ee7395|2021-05-28--07-38-43", CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID), + CarTestRoute("8190c7275a24557b|2020-01-29--08-33-58", CHRYSLER.CHRYSLER_PACIFICA_2019_HYBRID), + CarTestRoute("3d84727705fecd04|2021-05-25--08-38-56", CHRYSLER.CHRYSLER_PACIFICA_2020), + CarTestRoute("221c253375af4ee9|2022-06-15--18-38-24", CHRYSLER.RAM_1500_5TH_GEN), + CarTestRoute("8fb5eabf914632ae|2022-08-04--17-28-53", CHRYSLER.RAM_HD_5TH_GEN, segment=6), CarTestRoute("3379c85aeedc8285|2023-12-07--17-49-39", CHRYSLER.DODGE_DURANGO), - CarTestRoute("54827bf84c38b14f|2023-01-25--14-14-11", FORD.BRONCO_SPORT_MK1), - CarTestRoute("f8eaaccd2a90aef8|2023-05-04--15-10-09", FORD.ESCAPE_MK4), - CarTestRoute("62241b0c7fea4589|2022-09-01--15-32-49", FORD.EXPLORER_MK6), - CarTestRoute("e886087f430e7fe7|2023-06-16--23-06-36", FORD.FOCUS_MK4), - CarTestRoute("bd37e43731e5964b|2023-04-30--10-42-26", FORD.MAVERICK_MK1), - CarTestRoute("112e4d6e0cad05e1|2023-11-14--08-21-43", FORD.F_150_LIGHTNING_MK1), - CarTestRoute("83a4e056c7072678|2023-11-13--16-51-33", FORD.MUSTANG_MACH_E_MK1), + CarTestRoute("54827bf84c38b14f|2023-01-25--14-14-11", FORD.FORD_BRONCO_SPORT_MK1), + CarTestRoute("f8eaaccd2a90aef8|2023-05-04--15-10-09", FORD.FORD_ESCAPE_MK4), + CarTestRoute("62241b0c7fea4589|2022-09-01--15-32-49", FORD.FORD_EXPLORER_MK6), + CarTestRoute("e886087f430e7fe7|2023-06-16--23-06-36", FORD.FORD_FOCUS_MK4), + CarTestRoute("bd37e43731e5964b|2023-04-30--10-42-26", FORD.FORD_MAVERICK_MK1), + CarTestRoute("112e4d6e0cad05e1|2023-11-14--08-21-43", FORD.FORD_F_150_LIGHTNING_MK1), + CarTestRoute("83a4e056c7072678|2023-11-13--16-51-33", FORD.FORD_MUSTANG_MACH_E_MK1), + CarTestRoute("37998aa0fade36ab/00000000--48f927c4f5", FORD.FORD_RANGER_MK2), #TestRoute("f1b4c567731f4a1b|2018-04-30--10-15-35", FORD.FUSION), - CarTestRoute("7cc2a8365b4dd8a9|2018-12-02--12-10-44", GM.ACADIA), + CarTestRoute("7cc2a8365b4dd8a9|2018-12-02--12-10-44", GM.GMC_ACADIA), CarTestRoute("aa20e335f61ba898|2019-02-05--16-59-04", GM.BUICK_REGAL), CarTestRoute("75a6bcb9b8b40373|2023-03-11--22-47-33", GM.BUICK_LACROSSE), - CarTestRoute("e746f59bc96fd789|2024-01-31--22-25-58", GM.EQUINOX), - CarTestRoute("ef8f2185104d862e|2023-02-09--18-37-13", GM.ESCALADE), - CarTestRoute("46460f0da08e621e|2021-10-26--07-21-46", GM.ESCALADE_ESV), - CarTestRoute("168f8b3be57f66ae|2023-09-12--21-44-42", GM.ESCALADE_ESV_2019), - CarTestRoute("c950e28c26b5b168|2018-05-30--22-03-41", GM.VOLT), - CarTestRoute("f08912a233c1584f|2022-08-11--18-02-41", GM.BOLT_EUV, segment=1), - CarTestRoute("555d4087cf86aa91|2022-12-02--12-15-07", GM.BOLT_EUV, segment=14), # Bolt EV - CarTestRoute("38aa7da107d5d252|2022-08-15--16-01-12", GM.SILVERADO), - CarTestRoute("5085c761395d1fe6|2023-04-07--18-20-06", GM.TRAILBLAZER), + CarTestRoute("e746f59bc96fd789|2024-01-31--22-25-58", GM.CHEVROLET_EQUINOX), + CarTestRoute("ef8f2185104d862e|2023-02-09--18-37-13", GM.CADILLAC_ESCALADE), + CarTestRoute("46460f0da08e621e|2021-10-26--07-21-46", GM.CADILLAC_ESCALADE_ESV), + CarTestRoute("168f8b3be57f66ae|2023-09-12--21-44-42", GM.CADILLAC_ESCALADE_ESV_2019), + CarTestRoute("c950e28c26b5b168|2018-05-30--22-03-41", GM.CHEVROLET_VOLT), + CarTestRoute("f08912a233c1584f|2022-08-11--18-02-41", GM.CHEVROLET_BOLT_EUV, segment=1), + CarTestRoute("555d4087cf86aa91|2022-12-02--12-15-07", GM.CHEVROLET_BOLT_EUV, segment=14), # Bolt EV + CarTestRoute("38aa7da107d5d252|2022-08-15--16-01-12", GM.CHEVROLET_SILVERADO), + CarTestRoute("5085c761395d1fe6|2023-04-07--18-20-06", GM.CHEVROLET_TRAILBLAZER), CarTestRoute("0e7a2ba168465df5|2020-10-18--14-14-22", HONDA.ACURA_RDX_3G), - CarTestRoute("a74b011b32b51b56|2020-07-26--17-09-36", HONDA.CIVIC), - CarTestRoute("a859a044a447c2b0|2020-03-03--18-42-45", HONDA.CRV_EU), - CarTestRoute("68aac44ad69f838e|2021-05-18--20-40-52", HONDA.CRV), - CarTestRoute("14fed2e5fa0aa1a5|2021-05-25--14-59-42", HONDA.CRV_HYBRID), - CarTestRoute("52f3e9ae60c0d886|2021-05-23--15-59-43", HONDA.FIT), - CarTestRoute("2c4292a5cd10536c|2021-08-19--21-32-15", HONDA.FREED), - CarTestRoute("03be5f2fd5c508d1|2020-04-19--18-44-15", HONDA.HRV), - CarTestRoute("320098ff6c5e4730|2023-04-13--17-47-46", HONDA.HRV_3G), + CarTestRoute("a74b011b32b51b56|2020-07-26--17-09-36", HONDA.HONDA_CIVIC), + CarTestRoute("a859a044a447c2b0|2020-03-03--18-42-45", HONDA.HONDA_CRV_EU), + CarTestRoute("68aac44ad69f838e|2021-05-18--20-40-52", HONDA.HONDA_CRV), + CarTestRoute("14fed2e5fa0aa1a5|2021-05-25--14-59-42", HONDA.HONDA_CRV_HYBRID), + CarTestRoute("52f3e9ae60c0d886|2021-05-23--15-59-43", HONDA.HONDA_FIT), + CarTestRoute("2c4292a5cd10536c|2021-08-19--21-32-15", HONDA.HONDA_FREED), + CarTestRoute("03be5f2fd5c508d1|2020-04-19--18-44-15", HONDA.HONDA_HRV), + CarTestRoute("320098ff6c5e4730|2023-04-13--17-47-46", HONDA.HONDA_HRV_3G), + CarTestRoute("147613502316e718/00000001--dd141a3140", HONDA.HONDA_HRV_3G), # Brazilian model CarTestRoute("917b074700869333|2021-05-24--20-40-20", HONDA.ACURA_ILX), - CarTestRoute("08a3deb07573f157|2020-03-06--16-11-19", HONDA.ACCORD), # 1.5T - CarTestRoute("1da5847ac2488106|2021-05-24--19-31-50", HONDA.ACCORD), # 2.0T - CarTestRoute("085ac1d942c35910|2021-03-25--20-11-15", HONDA.ACCORD), # 2021 with new style HUD msgs - CarTestRoute("07585b0da3c88459|2021-05-26--18-52-04", HONDA.ACCORDH), - CarTestRoute("f29e2b57a55e7ad5|2021-03-24--20-52-38", HONDA.ACCORDH), # 2021 with new style HUD msgs - CarTestRoute("1ad763dd22ef1a0e|2020-02-29--18-37-03", HONDA.CRV_5G), - CarTestRoute("0a96f86fcfe35964|2020-02-05--07-25-51", HONDA.ODYSSEY), - CarTestRoute("d83f36766f8012a5|2020-02-05--18-42-21", HONDA.CIVIC_BOSCH_DIESEL), - CarTestRoute("f0890d16a07a236b|2021-05-25--17-27-22", HONDA.INSIGHT), - CarTestRoute("07d37d27996096b6|2020-03-04--21-57-27", HONDA.PILOT), - CarTestRoute("684e8f96bd491a0e|2021-11-03--11-08-42", HONDA.PILOT), # Passport - CarTestRoute("0a78dfbacc8504ef|2020-03-04--13-29-55", HONDA.CIVIC_BOSCH), + CarTestRoute("08a3deb07573f157|2020-03-06--16-11-19", HONDA.HONDA_ACCORD), # 1.5T + CarTestRoute("1da5847ac2488106|2021-05-24--19-31-50", HONDA.HONDA_ACCORD), # 2.0T + CarTestRoute("085ac1d942c35910|2021-03-25--20-11-15", HONDA.HONDA_ACCORD), # 2021 with new style HUD msgs + CarTestRoute("07585b0da3c88459|2021-05-26--18-52-04", HONDA.HONDA_ACCORD), # hybrid + CarTestRoute("f29e2b57a55e7ad5|2021-03-24--20-52-38", HONDA.HONDA_ACCORD), # hybrid, 2021 with new style HUD msgs + CarTestRoute("1ad763dd22ef1a0e|2020-02-29--18-37-03", HONDA.HONDA_CRV_5G), + CarTestRoute("0a96f86fcfe35964|2020-02-05--07-25-51", HONDA.HONDA_ODYSSEY), + CarTestRoute("d83f36766f8012a5|2020-02-05--18-42-21", HONDA.HONDA_CIVIC_BOSCH_DIESEL), + CarTestRoute("f0890d16a07a236b|2021-05-25--17-27-22", HONDA.HONDA_INSIGHT), + CarTestRoute("07d37d27996096b6|2020-03-04--21-57-27", HONDA.HONDA_PILOT), + CarTestRoute("684e8f96bd491a0e|2021-11-03--11-08-42", HONDA.HONDA_PILOT), # Passport + CarTestRoute("0a78dfbacc8504ef|2020-03-04--13-29-55", HONDA.HONDA_CIVIC_BOSCH), CarTestRoute("f34a60d68d83b1e5|2020-10-06--14-35-55", HONDA.ACURA_RDX), - CarTestRoute("54fd8451b3974762|2021-04-01--14-50-10", HONDA.RIDGELINE), + CarTestRoute("54fd8451b3974762|2021-04-01--14-50-10", HONDA.HONDA_RIDGELINE), CarTestRoute("2d5808fae0b38ac6|2021-09-01--17-14-11", HONDA.HONDA_E), - CarTestRoute("f44aa96ace22f34a|2021-12-22--06-22-31", HONDA.CIVIC_2022), + CarTestRoute("f44aa96ace22f34a|2021-12-22--06-22-31", HONDA.HONDA_CIVIC_2022), - CarTestRoute("87d7f06ade479c2e|2023-09-11--23-30-11", HYUNDAI.AZERA_6TH_GEN), - CarTestRoute("66189dd8ec7b50e6|2023-09-20--07-02-12", HYUNDAI.AZERA_HEV_6TH_GEN), + CarTestRoute("87d7f06ade479c2e|2023-09-11--23-30-11", HYUNDAI.HYUNDAI_AZERA_6TH_GEN), + CarTestRoute("66189dd8ec7b50e6|2023-09-20--07-02-12", HYUNDAI.HYUNDAI_AZERA_HEV_6TH_GEN), CarTestRoute("6fe86b4e410e4c37|2020-07-22--16-27-13", HYUNDAI.HYUNDAI_GENESIS), CarTestRoute("b5d6dc830ad63071|2022-12-12--21-28-25", HYUNDAI.GENESIS_GV60_EV_1ST_GEN, segment=12), CarTestRoute("70c5bec28ec8e345|2020-08-08--12-22-23", HYUNDAI.GENESIS_G70), CarTestRoute("ca4de5b12321bd98|2022-10-18--21-15-59", HYUNDAI.GENESIS_GV70_1ST_GEN), CarTestRoute("6b301bf83f10aa90|2020-11-22--16-45-07", HYUNDAI.GENESIS_G80), - CarTestRoute("0bbe367c98fa1538|2023-09-16--00-16-49", HYUNDAI.CUSTIN_1ST_GEN), - CarTestRoute("f0709d2bc6ca451f|2022-10-15--08-13-54", HYUNDAI.SANTA_CRUZ_1ST_GEN), - CarTestRoute("4dbd55df87507948|2022-03-01--09-45-38", HYUNDAI.SANTA_FE), - CarTestRoute("bf43d9df2b660eb0|2021-09-23--14-16-37", HYUNDAI.SANTA_FE_2022), - CarTestRoute("37398f32561a23ad|2021-11-18--00-11-35", HYUNDAI.SANTA_FE_HEV_2022), - CarTestRoute("656ac0d830792fcc|2021-12-28--14-45-56", HYUNDAI.SANTA_FE_PHEV_2022, segment=1), + CarTestRoute("0bbe367c98fa1538|2023-09-16--00-16-49", HYUNDAI.HYUNDAI_CUSTIN_1ST_GEN), + CarTestRoute("f0709d2bc6ca451f|2022-10-15--08-13-54", HYUNDAI.HYUNDAI_SANTA_CRUZ_1ST_GEN), + CarTestRoute("4dbd55df87507948|2022-03-01--09-45-38", HYUNDAI.HYUNDAI_SANTA_FE), + CarTestRoute("bf43d9df2b660eb0|2021-09-23--14-16-37", HYUNDAI.HYUNDAI_SANTA_FE_2022), + CarTestRoute("37398f32561a23ad|2021-11-18--00-11-35", HYUNDAI.HYUNDAI_SANTA_FE_HEV_2022), + CarTestRoute("656ac0d830792fcc|2021-12-28--14-45-56", HYUNDAI.HYUNDAI_SANTA_FE_PHEV_2022, segment=1), CarTestRoute("de59124955b921d8|2023-06-24--00-12-50", HYUNDAI.KIA_CARNIVAL_4TH_GEN), CarTestRoute("409c9409979a8abc|2023-07-11--09-06-44", HYUNDAI.KIA_CARNIVAL_4TH_GEN), # Chinese model CarTestRoute("e0e98335f3ebc58f|2021-03-07--16-38-29", HYUNDAI.KIA_CEED), @@ -117,36 +120,36 @@ routes = [ CarTestRoute("f9716670b2481438|2023-08-23--14-49-50", HYUNDAI.KIA_OPTIMA_H), CarTestRoute("6a42c1197b2a8179|2023-09-21--10-23-44", HYUNDAI.KIA_OPTIMA_H_G4_FL), CarTestRoute("c75a59efa0ecd502|2021-03-11--20-52-55", HYUNDAI.KIA_SELTOS), - CarTestRoute("5b7c365c50084530|2020-04-15--16-13-24", HYUNDAI.SONATA), - CarTestRoute("b2a38c712dcf90bd|2020-05-18--18-12-48", HYUNDAI.SONATA_LF), - CarTestRoute("c344fd2492c7a9d2|2023-12-11--09-03-23", HYUNDAI.STARIA_4TH_GEN), - CarTestRoute("fb3fd42f0baaa2f8|2022-03-30--15-25-05", HYUNDAI.TUCSON), - CarTestRoute("db68bbe12250812c|2022-12-05--00-54-12", HYUNDAI.TUCSON_4TH_GEN), # 2023 - CarTestRoute("36e10531feea61a4|2022-07-25--13-37-42", HYUNDAI.TUCSON_4TH_GEN), # hybrid + CarTestRoute("5b7c365c50084530|2020-04-15--16-13-24", HYUNDAI.HYUNDAI_SONATA), + CarTestRoute("b2a38c712dcf90bd|2020-05-18--18-12-48", HYUNDAI.HYUNDAI_SONATA_LF), + CarTestRoute("c344fd2492c7a9d2|2023-12-11--09-03-23", HYUNDAI.HYUNDAI_STARIA_4TH_GEN), + CarTestRoute("fb3fd42f0baaa2f8|2022-03-30--15-25-05", HYUNDAI.HYUNDAI_TUCSON), + CarTestRoute("db68bbe12250812c|2022-12-05--00-54-12", HYUNDAI.HYUNDAI_TUCSON_4TH_GEN), # 2023 + CarTestRoute("36e10531feea61a4|2022-07-25--13-37-42", HYUNDAI.HYUNDAI_TUCSON_4TH_GEN), # hybrid CarTestRoute("5875672fc1d4bf57|2020-07-23--21-33-28", HYUNDAI.KIA_SORENTO), CarTestRoute("1d0d000db3370fd0|2023-01-04--22-28-42", HYUNDAI.KIA_SORENTO_4TH_GEN, segment=5), CarTestRoute("fc19648042eb6896|2023-08-16--11-43-27", HYUNDAI.KIA_SORENTO_HEV_4TH_GEN, segment=14), CarTestRoute("628935d7d3e5f4f7|2022-11-30--01-12-46", HYUNDAI.KIA_SORENTO_HEV_4TH_GEN), # plug-in hybrid - CarTestRoute("9c917ba0d42ffe78|2020-04-17--12-43-19", HYUNDAI.PALISADE), - CarTestRoute("05a8f0197fdac372|2022-10-19--14-14-09", HYUNDAI.IONIQ_5), # HDA2 - CarTestRoute("eb4eae1476647463|2023-08-26--18-07-04", HYUNDAI.IONIQ_6, segment=6), # HDA2 - CarTestRoute("3f29334d6134fcd4|2022-03-30--22-00-50", HYUNDAI.IONIQ_PHEV_2019), - CarTestRoute("fa8db5869167f821|2021-06-10--22-50-10", HYUNDAI.IONIQ_PHEV), - CarTestRoute("e1107f9d04dfb1e2|2023-09-05--22-32-12", HYUNDAI.IONIQ_PHEV), # openpilot longitudinal enabled - CarTestRoute("2c5cf2dd6102e5da|2020-12-17--16-06-44", HYUNDAI.IONIQ_EV_2020), - CarTestRoute("610ebb9faaad6b43|2020-06-13--15-28-36", HYUNDAI.IONIQ_EV_LTD), - CarTestRoute("2c5cf2dd6102e5da|2020-06-26--16-00-08", HYUNDAI.IONIQ), - CarTestRoute("012c95f06918eca4|2023-01-15--11-19-36", HYUNDAI.IONIQ), # openpilot longitudinal enabled - CarTestRoute("ab59fe909f626921|2021-10-18--18-34-28", HYUNDAI.IONIQ_HEV_2022), - CarTestRoute("22d955b2cd499c22|2020-08-10--19-58-21", HYUNDAI.KONA), - CarTestRoute("efc48acf44b1e64d|2021-05-28--21-05-04", HYUNDAI.KONA_EV), - CarTestRoute("f90d3cd06caeb6fa|2023-09-06--17-15-47", HYUNDAI.KONA_EV), # openpilot longitudinal enabled - CarTestRoute("ff973b941a69366f|2022-07-28--22-01-19", HYUNDAI.KONA_EV_2022, segment=11), - CarTestRoute("1618132d68afc876|2023-08-27--09-32-14", HYUNDAI.KONA_EV_2ND_GEN, segment=13), - CarTestRoute("49f3c13141b6bc87|2021-07-28--08-05-13", HYUNDAI.KONA_HEV), + CarTestRoute("9c917ba0d42ffe78|2020-04-17--12-43-19", HYUNDAI.HYUNDAI_PALISADE), + CarTestRoute("05a8f0197fdac372|2022-10-19--14-14-09", HYUNDAI.HYUNDAI_IONIQ_5), # HDA2 + CarTestRoute("eb4eae1476647463|2023-08-26--18-07-04", HYUNDAI.HYUNDAI_IONIQ_6, segment=6), # HDA2 + CarTestRoute("3f29334d6134fcd4|2022-03-30--22-00-50", HYUNDAI.HYUNDAI_IONIQ_PHEV_2019), + CarTestRoute("fa8db5869167f821|2021-06-10--22-50-10", HYUNDAI.HYUNDAI_IONIQ_PHEV), + CarTestRoute("e1107f9d04dfb1e2|2023-09-05--22-32-12", HYUNDAI.HYUNDAI_IONIQ_PHEV), # openpilot longitudinal enabled + CarTestRoute("2c5cf2dd6102e5da|2020-12-17--16-06-44", HYUNDAI.HYUNDAI_IONIQ_EV_2020), + CarTestRoute("610ebb9faaad6b43|2020-06-13--15-28-36", HYUNDAI.HYUNDAI_IONIQ_EV_LTD), + CarTestRoute("2c5cf2dd6102e5da|2020-06-26--16-00-08", HYUNDAI.HYUNDAI_IONIQ), + CarTestRoute("012c95f06918eca4|2023-01-15--11-19-36", HYUNDAI.HYUNDAI_IONIQ), # openpilot longitudinal enabled + CarTestRoute("ab59fe909f626921|2021-10-18--18-34-28", HYUNDAI.HYUNDAI_IONIQ_HEV_2022), + CarTestRoute("22d955b2cd499c22|2020-08-10--19-58-21", HYUNDAI.HYUNDAI_KONA), + CarTestRoute("efc48acf44b1e64d|2021-05-28--21-05-04", HYUNDAI.HYUNDAI_KONA_EV), + CarTestRoute("f90d3cd06caeb6fa|2023-09-06--17-15-47", HYUNDAI.HYUNDAI_KONA_EV), # openpilot longitudinal enabled + CarTestRoute("ff973b941a69366f|2022-07-28--22-01-19", HYUNDAI.HYUNDAI_KONA_EV_2022, segment=11), + CarTestRoute("1618132d68afc876|2023-08-27--09-32-14", HYUNDAI.HYUNDAI_KONA_EV_2ND_GEN, segment=13), + CarTestRoute("49f3c13141b6bc87|2021-07-28--08-05-13", HYUNDAI.HYUNDAI_KONA_HEV), CarTestRoute("5dddcbca6eb66c62|2020-07-26--13-24-19", HYUNDAI.KIA_STINGER), CarTestRoute("5b50b883a4259afb|2022-11-09--15-00-42", HYUNDAI.KIA_STINGER_2022), - CarTestRoute("d624b3d19adce635|2020-08-01--14-59-12", HYUNDAI.VELOSTER), + CarTestRoute("d624b3d19adce635|2020-08-01--14-59-12", HYUNDAI.HYUNDAI_VELOSTER), CarTestRoute("d545129f3ca90f28|2022-10-19--09-22-54", HYUNDAI.KIA_EV6), # HDA2 CarTestRoute("68d6a96e703c00c9|2022-09-10--16-09-39", HYUNDAI.KIA_EV6), # HDA1 CarTestRoute("9b25e8c1484a1b67|2023-04-13--10-41-45", HYUNDAI.KIA_EV6), @@ -163,37 +166,37 @@ routes = [ CarTestRoute("192283cdbb7a58c2|2022-10-15--01-43-18", HYUNDAI.KIA_SPORTAGE_5TH_GEN), CarTestRoute("09559f1fcaed4704|2023-11-16--02-24-57", HYUNDAI.KIA_SPORTAGE_5TH_GEN), # openpilot longitudinal CarTestRoute("b3537035ffe6a7d6|2022-10-17--15-23-49", HYUNDAI.KIA_SPORTAGE_5TH_GEN), # hybrid - CarTestRoute("c5ac319aa9583f83|2021-06-01--18-18-31", HYUNDAI.ELANTRA), - CarTestRoute("734ef96182ddf940|2022-10-02--16-41-44", HYUNDAI.ELANTRA_GT_I30), - CarTestRoute("82e9cdd3f43bf83e|2021-05-15--02-42-51", HYUNDAI.ELANTRA_2021), - CarTestRoute("715ac05b594e9c59|2021-06-20--16-21-07", HYUNDAI.ELANTRA_HEV_2021), - CarTestRoute("7120aa90bbc3add7|2021-08-02--07-12-31", HYUNDAI.SONATA_HYBRID), + CarTestRoute("c5ac319aa9583f83|2021-06-01--18-18-31", HYUNDAI.HYUNDAI_ELANTRA), + CarTestRoute("734ef96182ddf940|2022-10-02--16-41-44", HYUNDAI.HYUNDAI_ELANTRA_GT_I30), + CarTestRoute("82e9cdd3f43bf83e|2021-05-15--02-42-51", HYUNDAI.HYUNDAI_ELANTRA_2021), + CarTestRoute("715ac05b594e9c59|2021-06-20--16-21-07", HYUNDAI.HYUNDAI_ELANTRA_HEV_2021), + CarTestRoute("7120aa90bbc3add7|2021-08-02--07-12-31", HYUNDAI.HYUNDAI_SONATA_HYBRID), CarTestRoute("715ac05b594e9c59|2021-10-27--23-24-56", HYUNDAI.GENESIS_G70_2020), CarTestRoute("6b0d44d22df18134|2023-05-06--10-36-55", HYUNDAI.GENESIS_GV80), - CarTestRoute("00c829b1b7613dea|2021-06-24--09-10-10", TOYOTA.ALPHARD_TSS2), - CarTestRoute("912119ebd02c7a42|2022-03-19--07-24-50", TOYOTA.ALPHARD_TSS2), # hybrid - CarTestRoute("000cf3730200c71c|2021-05-24--10-42-05", TOYOTA.AVALON), - CarTestRoute("0bb588106852abb7|2021-05-26--12-22-01", TOYOTA.AVALON_2019), - CarTestRoute("87bef2930af86592|2021-05-30--09-40-54", TOYOTA.AVALON_2019), # hybrid - CarTestRoute("e9966711cfb04ce3|2022-01-11--07-59-43", TOYOTA.AVALON_TSS2), - CarTestRoute("eca1080a91720a54|2022-03-17--13-32-29", TOYOTA.AVALON_TSS2), # hybrid - CarTestRoute("6cdecc4728d4af37|2020-02-23--15-44-18", TOYOTA.CAMRY), - CarTestRoute("2f37c007683e85ba|2023-09-02--14-39-44", TOYOTA.CAMRY), # openpilot longitudinal, with radar CAN filter - CarTestRoute("54034823d30962f5|2021-05-24--06-37-34", TOYOTA.CAMRY), # hybrid - CarTestRoute("3456ad0cd7281b24|2020-12-13--17-45-56", TOYOTA.CAMRY_TSS2), - CarTestRoute("ffccc77938ddbc44|2021-01-04--16-55-41", TOYOTA.CAMRY_TSS2), # hybrid - CarTestRoute("4e45c89c38e8ec4d|2021-05-02--02-49-28", TOYOTA.COROLLA), - CarTestRoute("5f5afb36036506e4|2019-05-14--02-09-54", TOYOTA.COROLLA_TSS2), - CarTestRoute("5ceff72287a5c86c|2019-10-19--10-59-02", TOYOTA.COROLLA_TSS2), # hybrid - CarTestRoute("d2525c22173da58b|2021-04-25--16-47-04", TOYOTA.PRIUS), - CarTestRoute("b14c5b4742e6fc85|2020-07-28--19-50-11", TOYOTA.RAV4), - CarTestRoute("32a7df20486b0f70|2020-02-06--16-06-50", TOYOTA.RAV4H), - CarTestRoute("cdf2f7de565d40ae|2019-04-25--03-53-41", TOYOTA.RAV4_TSS2), - CarTestRoute("a5c341bb250ca2f0|2022-05-18--16-05-17", TOYOTA.RAV4_TSS2_2022), - CarTestRoute("ad5a3fa719bc2f83|2023-10-17--19-48-42", TOYOTA.RAV4_TSS2_2023), - CarTestRoute("7e34a988419b5307|2019-12-18--19-13-30", TOYOTA.RAV4_TSS2), # hybrid - CarTestRoute("2475fb3eb2ffcc2e|2022-04-29--12-46-23", TOYOTA.RAV4_TSS2_2022), # hybrid + CarTestRoute("00c829b1b7613dea|2021-06-24--09-10-10", TOYOTA.TOYOTA_ALPHARD_TSS2), + CarTestRoute("912119ebd02c7a42|2022-03-19--07-24-50", TOYOTA.TOYOTA_ALPHARD_TSS2), # hybrid + CarTestRoute("000cf3730200c71c|2021-05-24--10-42-05", TOYOTA.TOYOTA_AVALON), + CarTestRoute("0bb588106852abb7|2021-05-26--12-22-01", TOYOTA.TOYOTA_AVALON_2019), + CarTestRoute("87bef2930af86592|2021-05-30--09-40-54", TOYOTA.TOYOTA_AVALON_2019), # hybrid + CarTestRoute("e9966711cfb04ce3|2022-01-11--07-59-43", TOYOTA.TOYOTA_AVALON_TSS2), + CarTestRoute("eca1080a91720a54|2022-03-17--13-32-29", TOYOTA.TOYOTA_AVALON_TSS2), # hybrid + CarTestRoute("6cdecc4728d4af37|2020-02-23--15-44-18", TOYOTA.TOYOTA_CAMRY), + CarTestRoute("2f37c007683e85ba|2023-09-02--14-39-44", TOYOTA.TOYOTA_CAMRY), # openpilot longitudinal, with radar CAN filter + CarTestRoute("54034823d30962f5|2021-05-24--06-37-34", TOYOTA.TOYOTA_CAMRY), # hybrid + CarTestRoute("3456ad0cd7281b24|2020-12-13--17-45-56", TOYOTA.TOYOTA_CAMRY_TSS2), + CarTestRoute("ffccc77938ddbc44|2021-01-04--16-55-41", TOYOTA.TOYOTA_CAMRY_TSS2), # hybrid + CarTestRoute("4e45c89c38e8ec4d|2021-05-02--02-49-28", TOYOTA.TOYOTA_COROLLA), + CarTestRoute("5f5afb36036506e4|2019-05-14--02-09-54", TOYOTA.TOYOTA_COROLLA_TSS2), + CarTestRoute("5ceff72287a5c86c|2019-10-19--10-59-02", TOYOTA.TOYOTA_COROLLA_TSS2), # hybrid + CarTestRoute("d2525c22173da58b|2021-04-25--16-47-04", TOYOTA.TOYOTA_PRIUS), + CarTestRoute("b14c5b4742e6fc85|2020-07-28--19-50-11", TOYOTA.TOYOTA_RAV4), + CarTestRoute("32a7df20486b0f70|2020-02-06--16-06-50", TOYOTA.TOYOTA_RAV4H), + CarTestRoute("cdf2f7de565d40ae|2019-04-25--03-53-41", TOYOTA.TOYOTA_RAV4_TSS2), + CarTestRoute("a5c341bb250ca2f0|2022-05-18--16-05-17", TOYOTA.TOYOTA_RAV4_TSS2_2022), + CarTestRoute("ad5a3fa719bc2f83|2023-10-17--19-48-42", TOYOTA.TOYOTA_RAV4_TSS2_2023), + CarTestRoute("7e34a988419b5307|2019-12-18--19-13-30", TOYOTA.TOYOTA_RAV4_TSS2), # hybrid + CarTestRoute("2475fb3eb2ffcc2e|2022-04-29--12-46-23", TOYOTA.TOYOTA_RAV4_TSS2_2022), # hybrid CarTestRoute("7a31f030957b9c85|2023-04-01--14-12-51", TOYOTA.LEXUS_ES), CarTestRoute("37041c500fd30100|2020-12-30--12-17-24", TOYOTA.LEXUS_ES), # hybrid CarTestRoute("e6a24be49a6cd46e|2019-10-29--10-52-42", TOYOTA.LEXUS_ES_TSS2), @@ -210,88 +213,90 @@ routes = [ CarTestRoute("3fd5305f8b6ca765|2021-04-28--19-26-49", TOYOTA.LEXUS_NX_TSS2), CarTestRoute("09ae96064ed85a14|2022-06-09--12-22-31", TOYOTA.LEXUS_NX_TSS2), # hybrid CarTestRoute("4765fbbf59e3cd88|2024-02-06--17-45-32", TOYOTA.LEXUS_LC_TSS2), - CarTestRoute("0a302ffddbb3e3d3|2020-02-08--16-19-08", TOYOTA.HIGHLANDER_TSS2), - CarTestRoute("437e4d2402abf524|2021-05-25--07-58-50", TOYOTA.HIGHLANDER_TSS2), # hybrid - CarTestRoute("3183cd9b021e89ce|2021-05-25--10-34-44", TOYOTA.HIGHLANDER), - CarTestRoute("80d16a262e33d57f|2021-05-23--20-01-43", TOYOTA.HIGHLANDER), # hybrid - CarTestRoute("eb6acd681135480d|2019-06-20--20-00-00", TOYOTA.SIENNA), + CarTestRoute("0a302ffddbb3e3d3|2020-02-08--16-19-08", TOYOTA.TOYOTA_HIGHLANDER_TSS2), + CarTestRoute("437e4d2402abf524|2021-05-25--07-58-50", TOYOTA.TOYOTA_HIGHLANDER_TSS2), # hybrid + CarTestRoute("3183cd9b021e89ce|2021-05-25--10-34-44", TOYOTA.TOYOTA_HIGHLANDER), + CarTestRoute("80d16a262e33d57f|2021-05-23--20-01-43", TOYOTA.TOYOTA_HIGHLANDER), # hybrid + CarTestRoute("eb6acd681135480d|2019-06-20--20-00-00", TOYOTA.TOYOTA_SIENNA), CarTestRoute("2e07163a1ba9a780|2019-08-25--13-15-13", TOYOTA.LEXUS_IS), CarTestRoute("649bf2997ada6e3a|2023-08-08--18-04-22", TOYOTA.LEXUS_IS_TSS2), - CarTestRoute("0a0de17a1e6a2d15|2020-09-21--21-24-41", TOYOTA.PRIUS_TSS2), - CarTestRoute("9b36accae406390e|2021-03-30--10-41-38", TOYOTA.MIRAI), - CarTestRoute("cd9cff4b0b26c435|2021-05-13--15-12-39", TOYOTA.CHR), - CarTestRoute("57858ede0369a261|2021-05-18--20-34-20", TOYOTA.CHR), # hybrid - CarTestRoute("ea8fbe72b96a185c|2023-02-08--15-11-46", TOYOTA.CHR_TSS2), - CarTestRoute("ea8fbe72b96a185c|2023-02-22--09-20-34", TOYOTA.CHR_TSS2), # openpilot longitudinal, with smartDSU - CarTestRoute("6719965b0e1d1737|2023-02-09--22-44-05", TOYOTA.CHR_TSS2), # hybrid - CarTestRoute("6719965b0e1d1737|2023-08-29--06-40-05", TOYOTA.CHR_TSS2), # hybrid, openpilot longitudinal, radar disabled - CarTestRoute("14623aae37e549f3|2021-10-24--01-20-49", TOYOTA.PRIUS_V), + CarTestRoute("0a0de17a1e6a2d15|2020-09-21--21-24-41", TOYOTA.TOYOTA_PRIUS_TSS2), + CarTestRoute("9b36accae406390e|2021-03-30--10-41-38", TOYOTA.TOYOTA_MIRAI), + CarTestRoute("cd9cff4b0b26c435|2021-05-13--15-12-39", TOYOTA.TOYOTA_CHR), + CarTestRoute("57858ede0369a261|2021-05-18--20-34-20", TOYOTA.TOYOTA_CHR), # hybrid + CarTestRoute("ea8fbe72b96a185c|2023-02-08--15-11-46", TOYOTA.TOYOTA_CHR_TSS2), + CarTestRoute("ea8fbe72b96a185c|2023-02-22--09-20-34", TOYOTA.TOYOTA_CHR_TSS2), # openpilot longitudinal, with smartDSU + CarTestRoute("6719965b0e1d1737|2023-02-09--22-44-05", TOYOTA.TOYOTA_CHR_TSS2), # hybrid + CarTestRoute("6719965b0e1d1737|2023-08-29--06-40-05", TOYOTA.TOYOTA_CHR_TSS2), # hybrid, openpilot longitudinal, radar disabled + CarTestRoute("14623aae37e549f3|2021-10-24--01-20-49", TOYOTA.TOYOTA_PRIUS_V), - CarTestRoute("202c40641158a6e5|2021-09-21--09-43-24", VOLKSWAGEN.ARTEON_MK1), - CarTestRoute("2c68dda277d887ac|2021-05-11--15-22-20", VOLKSWAGEN.ATLAS_MK1), - CarTestRoute("cae14e88932eb364|2021-03-26--14-43-28", VOLKSWAGEN.GOLF_MK7), # Stock ACC - CarTestRoute("3cfdec54aa035f3f|2022-10-13--14-58-58", VOLKSWAGEN.GOLF_MK7), # openpilot longitudinal - CarTestRoute("58a7d3b707987d65|2021-03-25--17-26-37", VOLKSWAGEN.JETTA_MK7), - CarTestRoute("4d134e099430fba2|2021-03-26--00-26-06", VOLKSWAGEN.PASSAT_MK8), - CarTestRoute("3cfdec54aa035f3f|2022-07-19--23-45-10", VOLKSWAGEN.PASSAT_NMS), - CarTestRoute("0cd0b7f7e31a3853|2021-11-03--19-30-22", VOLKSWAGEN.POLO_MK6), - CarTestRoute("064d1816e448f8eb|2022-09-29--15-32-34", VOLKSWAGEN.SHARAN_MK2), - CarTestRoute("7d82b2f3a9115f1f|2021-10-21--15-39-42", VOLKSWAGEN.TAOS_MK1), - CarTestRoute("2744c89a8dda9a51|2021-07-24--21-28-06", VOLKSWAGEN.TCROSS_MK1), - CarTestRoute("2cef8a0b898f331a|2021-03-25--20-13-57", VOLKSWAGEN.TIGUAN_MK2), - CarTestRoute("a589dcc642fdb10a|2021-06-14--20-54-26", VOLKSWAGEN.TOURAN_MK2), - CarTestRoute("a459f4556782eba1|2021-09-19--09-48-00", VOLKSWAGEN.TRANSPORTER_T61), - CarTestRoute("0cd0b7f7e31a3853|2021-11-18--00-38-32", VOLKSWAGEN.TROC_MK1), + CarTestRoute("202c40641158a6e5|2021-09-21--09-43-24", VOLKSWAGEN.VOLKSWAGEN_ARTEON_MK1), + CarTestRoute("2c68dda277d887ac|2021-05-11--15-22-20", VOLKSWAGEN.VOLKSWAGEN_ATLAS_MK1), + CarTestRoute("ffcd23abbbd02219|2024-02-28--14-59-38", VOLKSWAGEN.VOLKSWAGEN_CADDY_MK3), + CarTestRoute("cae14e88932eb364|2021-03-26--14-43-28", VOLKSWAGEN.VOLKSWAGEN_GOLF_MK7), # Stock ACC + CarTestRoute("3cfdec54aa035f3f|2022-10-13--14-58-58", VOLKSWAGEN.VOLKSWAGEN_GOLF_MK7), # openpilot longitudinal + CarTestRoute("58a7d3b707987d65|2021-03-25--17-26-37", VOLKSWAGEN.VOLKSWAGEN_JETTA_MK7), + CarTestRoute("4d134e099430fba2|2021-03-26--00-26-06", VOLKSWAGEN.VOLKSWAGEN_PASSAT_MK8), + CarTestRoute("3cfdec54aa035f3f|2022-07-19--23-45-10", VOLKSWAGEN.VOLKSWAGEN_PASSAT_NMS), + CarTestRoute("0cd0b7f7e31a3853|2021-11-03--19-30-22", VOLKSWAGEN.VOLKSWAGEN_POLO_MK6), + CarTestRoute("064d1816e448f8eb|2022-09-29--15-32-34", VOLKSWAGEN.VOLKSWAGEN_SHARAN_MK2), + CarTestRoute("7d82b2f3a9115f1f|2021-10-21--15-39-42", VOLKSWAGEN.VOLKSWAGEN_TAOS_MK1), + CarTestRoute("2744c89a8dda9a51|2021-07-24--21-28-06", VOLKSWAGEN.VOLKSWAGEN_TCROSS_MK1), + CarTestRoute("2cef8a0b898f331a|2021-03-25--20-13-57", VOLKSWAGEN.VOLKSWAGEN_TIGUAN_MK2), + CarTestRoute("a589dcc642fdb10a|2021-06-14--20-54-26", VOLKSWAGEN.VOLKSWAGEN_TOURAN_MK2), + CarTestRoute("a459f4556782eba1|2021-09-19--09-48-00", VOLKSWAGEN.VOLKSWAGEN_TRANSPORTER_T61), + CarTestRoute("0cd0b7f7e31a3853|2021-11-18--00-38-32", VOLKSWAGEN.VOLKSWAGEN_TROC_MK1), CarTestRoute("07667b885add75fd|2021-01-23--19-48-42", VOLKSWAGEN.AUDI_A3_MK3), CarTestRoute("6c6b466346192818|2021-06-06--14-17-47", VOLKSWAGEN.AUDI_Q2_MK1), CarTestRoute("0cd0b7f7e31a3853|2021-12-03--03-12-05", VOLKSWAGEN.AUDI_Q3_MK2), CarTestRoute("8f205bdd11bcbb65|2021-03-26--01-00-17", VOLKSWAGEN.SEAT_ATECA_MK1), - CarTestRoute("fc6b6c9a3471c846|2021-05-27--13-39-56", VOLKSWAGEN.SEAT_LEON_MK3), + CarTestRoute("fc6b6c9a3471c846|2021-05-27--13-39-56", VOLKSWAGEN.SEAT_ATECA_MK1), # Leon CarTestRoute("0bbe367c98fa1538|2023-03-04--17-46-11", VOLKSWAGEN.SKODA_FABIA_MK4), CarTestRoute("12d6ae3057c04b0d|2021-09-15--00-04-07", VOLKSWAGEN.SKODA_KAMIQ_MK1), CarTestRoute("12d6ae3057c04b0d|2021-09-04--21-21-21", VOLKSWAGEN.SKODA_KAROQ_MK1), CarTestRoute("90434ff5d7c8d603|2021-03-15--12-07-31", VOLKSWAGEN.SKODA_KODIAQ_MK1), CarTestRoute("66e5edc3a16459c5|2021-05-25--19-00-29", VOLKSWAGEN.SKODA_OCTAVIA_MK3), - CarTestRoute("026b6d18fba6417f|2021-03-26--09-17-04", VOLKSWAGEN.SKODA_SCALA_MK1), + CarTestRoute("026b6d18fba6417f|2021-03-26--09-17-04", VOLKSWAGEN.SKODA_KAMIQ_MK1), # Scala CarTestRoute("b2e9858e29db492b|2021-03-26--16-58-42", VOLKSWAGEN.SKODA_SUPERB_MK3), - CarTestRoute("3c8f0c502e119c1c|2020-06-30--12-58-02", SUBARU.ASCENT), - CarTestRoute("c321c6b697c5a5ff|2020-06-23--11-04-33", SUBARU.FORESTER), - CarTestRoute("791340bc01ed993d|2019-03-10--16-28-08", SUBARU.IMPREZA), - CarTestRoute("8bf7e79a3ce64055|2021-05-24--09-36-27", SUBARU.IMPREZA_2020), - CarTestRoute("8de015561e1ea4a0|2023-08-29--17-08-31", SUBARU.IMPREZA), # openpilot longitudinal + CarTestRoute("3c8f0c502e119c1c|2020-06-30--12-58-02", SUBARU.SUBARU_ASCENT), + CarTestRoute("c321c6b697c5a5ff|2020-06-23--11-04-33", SUBARU.SUBARU_FORESTER), + CarTestRoute("791340bc01ed993d|2019-03-10--16-28-08", SUBARU.SUBARU_IMPREZA), + CarTestRoute("8bf7e79a3ce64055|2021-05-24--09-36-27", SUBARU.SUBARU_IMPREZA_2020), + CarTestRoute("8de015561e1ea4a0|2023-08-29--17-08-31", SUBARU.SUBARU_IMPREZA), # openpilot longitudinal # CarTestRoute("c3d1ccb52f5f9d65|2023-07-22--01-23-20", SUBARU.OUTBACK, segment=9), # gen2 longitudinal, eyesight disabled - CarTestRoute("1bbe6bf2d62f58a8|2022-07-14--17-11-43", SUBARU.OUTBACK, segment=10), - CarTestRoute("c56e69bbc74b8fad|2022-08-18--09-43-51", SUBARU.LEGACY, segment=3), - CarTestRoute("f4e3a0c511a076f4|2022-08-04--16-16-48", SUBARU.CROSSTREK_HYBRID, segment=2), - CarTestRoute("7fd1e4f3a33c1673|2022-12-04--15-09-53", SUBARU.FORESTER_2022, segment=4), - CarTestRoute("f3b34c0d2632aa83|2023-07-23--20-43-25", SUBARU.OUTBACK_2023, segment=7), - CarTestRoute("99437cef6d5ff2ee|2023-03-13--21-21-38", SUBARU.ASCENT_2023, segment=7), + CarTestRoute("1bbe6bf2d62f58a8|2022-07-14--17-11-43", SUBARU.SUBARU_OUTBACK, segment=10), + CarTestRoute("c56e69bbc74b8fad|2022-08-18--09-43-51", SUBARU.SUBARU_LEGACY, segment=3), + CarTestRoute("f4e3a0c511a076f4|2022-08-04--16-16-48", SUBARU.SUBARU_CROSSTREK_HYBRID, segment=2), + CarTestRoute("7fd1e4f3a33c1673|2022-12-04--15-09-53", SUBARU.SUBARU_FORESTER_2022, segment=4), + CarTestRoute("f3b34c0d2632aa83|2023-07-23--20-43-25", SUBARU.SUBARU_OUTBACK_2023, segment=7), + CarTestRoute("99437cef6d5ff2ee|2023-03-13--21-21-38", SUBARU.SUBARU_ASCENT_2023, segment=7), # Pre-global, dashcam - CarTestRoute("95441c38ae8c130e|2020-06-08--12-10-17", SUBARU.FORESTER_PREGLOBAL), - CarTestRoute("df5ca7660000fba8|2020-06-16--17-37-19", SUBARU.LEGACY_PREGLOBAL), - CarTestRoute("5ab784f361e19b78|2020-06-08--16-30-41", SUBARU.OUTBACK_PREGLOBAL), - CarTestRoute("e19eb5d5353b1ac1|2020-08-09--14-37-56", SUBARU.OUTBACK_PREGLOBAL_2018), + CarTestRoute("95441c38ae8c130e|2020-06-08--12-10-17", SUBARU.SUBARU_FORESTER_PREGLOBAL), + CarTestRoute("df5ca7660000fba8|2020-06-16--17-37-19", SUBARU.SUBARU_LEGACY_PREGLOBAL), + CarTestRoute("5ab784f361e19b78|2020-06-08--16-30-41", SUBARU.SUBARU_OUTBACK_PREGLOBAL), + CarTestRoute("e19eb5d5353b1ac1|2020-08-09--14-37-56", SUBARU.SUBARU_OUTBACK_PREGLOBAL_2018), - CarTestRoute("fbbfa6af821552b9|2020-03-03--08-09-43", NISSAN.XTRAIL), - CarTestRoute("5b7c365c50084530|2020-03-25--22-10-13", NISSAN.LEAF), - CarTestRoute("22c3dcce2dd627eb|2020-12-30--16-38-48", NISSAN.LEAF_IC), - CarTestRoute("059ab9162e23198e|2020-05-30--09-41-01", NISSAN.ROGUE), - CarTestRoute("b72d3ec617c0a90f|2020-12-11--15-38-17", NISSAN.ALTIMA), + CarTestRoute("fbbfa6af821552b9|2020-03-03--08-09-43", NISSAN.NISSAN_XTRAIL), + CarTestRoute("5b7c365c50084530|2020-03-25--22-10-13", NISSAN.NISSAN_LEAF), + CarTestRoute("22c3dcce2dd627eb|2020-12-30--16-38-48", NISSAN.NISSAN_LEAF_IC), + CarTestRoute("059ab9162e23198e|2020-05-30--09-41-01", NISSAN.NISSAN_ROGUE), + CarTestRoute("b72d3ec617c0a90f|2020-12-11--15-38-17", NISSAN.NISSAN_ALTIMA), - CarTestRoute("32a319f057902bb3|2020-04-27--15-18-58", MAZDA.CX5), - CarTestRoute("10b5a4b380434151|2020-08-26--17-11-45", MAZDA.CX9), - CarTestRoute("74f1038827005090|2020-08-26--20-05-50", MAZDA.MAZDA3), - CarTestRoute("fb53c640f499b73d|2021-06-01--04-17-56", MAZDA.MAZDA6), - CarTestRoute("f6d5b1a9d7a1c92e|2021-07-08--06-56-59", MAZDA.CX9_2021), - CarTestRoute("a4af1602d8e668ac|2022-02-03--12-17-07", MAZDA.CX5_2022), + CarTestRoute("32a319f057902bb3|2020-04-27--15-18-58", MAZDA.MAZDA_CX5), + CarTestRoute("10b5a4b380434151|2020-08-26--17-11-45", MAZDA.MAZDA_CX9), + CarTestRoute("74f1038827005090|2020-08-26--20-05-50", MAZDA.MAZDA_3), + CarTestRoute("fb53c640f499b73d|2021-06-01--04-17-56", MAZDA.MAZDA_6), + CarTestRoute("f6d5b1a9d7a1c92e|2021-07-08--06-56-59", MAZDA.MAZDA_CX9_2021), + CarTestRoute("a4af1602d8e668ac|2022-02-03--12-17-07", MAZDA.MAZDA_CX5_2022), - CarTestRoute("6c14ee12b74823ce|2021-06-30--11-49-02", TESLA.AP1_MODELS), - CarTestRoute("bb50caf5f0945ab1|2021-06-19--17-20-18", TESLA.AP2_MODELS), + CarTestRoute("6c14ee12b74823ce|2021-06-30--11-49-02", TESLA.TESLA_AP1_MODELS), + CarTestRoute("bb50caf5f0945ab1|2021-06-19--17-20-18", TESLA.TESLA_AP2_MODELS), + CarTestRoute("66c1699b7697267d/2024-03-03--13-09-53", TESLA.TESLA_MODELS_RAVEN), # Segments that test specific issues # Controls mismatch due to interceptor threshold CarTestRoute("cfb32f0fb91b173b|2022-04-06--14-54-45", HONDA.CIVIC, segment=21), # Controls mismatch due to standstill threshold - CarTestRoute("bec2dcfde6a64235|2022-04-08--14-21-32", HONDA.CRV_HYBRID, segment=22), + CarTestRoute("bec2dcfde6a64235|2022-04-08--14-21-32", HONDA.HONDA_CRV_HYBRID, segment=22), ] diff --git a/selfdrive/car/tests/test_can_fingerprint.py b/selfdrive/car/tests/test_can_fingerprint.py index 63621b459d..8df7007339 100755 --- a/selfdrive/car/tests/test_can_fingerprint.py +++ b/selfdrive/car/tests/test_can_fingerprint.py @@ -28,7 +28,7 @@ class TestCanFingerprint(unittest.TestCase): def test_timing(self): # just pick any CAN fingerprinting car - car_model = 'CHEVROLET BOLT EUV 2022' + car_model = "CHEVROLET_BOLT_EUV" fingerprint = FINGERPRINTS[car_model][0] cases = [] diff --git a/selfdrive/car/tests/test_car_interfaces.py b/selfdrive/car/tests/test_car_interfaces.py index a454f616cb..ce5b186388 100755 --- a/selfdrive/car/tests/test_car_interfaces.py +++ b/selfdrive/car/tests/test_car_interfaces.py @@ -22,7 +22,7 @@ from openpilot.selfdrive.test.fuzzy_generation import DrawType, FuzzyGenerator ALL_ECUS = list({ecu for ecus in FW_VERSIONS.values() for ecu in ecus.keys()}) -MAX_EXAMPLES = int(os.environ.get('MAX_EXAMPLES', '20')) +MAX_EXAMPLES = int(os.environ.get('MAX_EXAMPLES', '40')) def get_fuzzy_car_interface_args(draw: DrawType) -> dict: @@ -75,7 +75,7 @@ class TestCarInterfaces(unittest.TestCase): self.assertEqual(len(car_params.longitudinalTuning.deadzoneV), len(car_params.longitudinalTuning.deadzoneBP)) # If we're using the interceptor for gasPressed, we should be commanding gas with it - if car_params.enableGasInterceptor: + if car_params.enableGasInterceptorDEPRECATED: self.assertTrue(car_params.openpilotLongitudinalControl) # Lateral sanity checks diff --git a/selfdrive/car/tests/test_docs.py b/selfdrive/car/tests/test_docs.py index 0cafb508f7..143b402d5f 100755 --- a/selfdrive/car/tests/test_docs.py +++ b/selfdrive/car/tests/test_docs.py @@ -5,18 +5,19 @@ import re import unittest from openpilot.common.basedir import BASEDIR -from openpilot.selfdrive.car.car_helpers import interfaces, get_interface_attr -from openpilot.selfdrive.car.docs import CARS_MD_OUT, CARS_MD_TEMPLATE, generate_cars_md, get_all_car_info +from openpilot.selfdrive.car.car_helpers import interfaces +from openpilot.selfdrive.car.docs import CARS_MD_OUT, CARS_MD_TEMPLATE, generate_cars_md, get_all_car_docs from openpilot.selfdrive.car.docs_definitions import Cable, Column, PartType, Star from openpilot.selfdrive.car.honda.values import CAR as HONDA -from openpilot.selfdrive.debug.dump_car_info import dump_car_info -from openpilot.selfdrive.debug.print_docs_diff import print_car_info_diff +from openpilot.selfdrive.car.values import PLATFORMS +from openpilot.selfdrive.debug.dump_car_docs import dump_car_docs +from openpilot.selfdrive.debug.print_docs_diff import print_car_docs_diff class TestCarDocs(unittest.TestCase): @classmethod def setUpClass(cls): - cls.all_cars = get_all_car_info() + cls.all_cars = get_all_car_docs() def test_generator(self): generated_cars_md = generate_cars_md(self.all_cars, CARS_MD_TEMPLATE) @@ -28,24 +29,24 @@ class TestCarDocs(unittest.TestCase): def test_docs_diff(self): dump_path = os.path.join(BASEDIR, "selfdrive", "car", "tests", "cars_dump") - dump_car_info(dump_path) - print_car_info_diff(dump_path) + dump_car_docs(dump_path) + print_car_docs_diff(dump_path) os.remove(dump_path) def test_duplicate_years(self): make_model_years = defaultdict(list) for car in self.all_cars: - with self.subTest(car_info_name=car.name): + with self.subTest(car_docs_name=car.name): make_model = (car.make, car.model) for year in car.year_list: self.assertNotIn(year, make_model_years[make_model], f"{car.name}: Duplicate model year") make_model_years[make_model].append(year) - def test_missing_car_info(self): - all_car_info_platforms = get_interface_attr("CAR_INFO", combine_brands=True).keys() + def test_missing_car_docs(self): + all_car_docs_platforms = [name for name, config in PLATFORMS.items()] for platform in sorted(interfaces.keys()): with self.subTest(platform=platform): - self.assertTrue(platform in all_car_info_platforms, f"Platform: {platform} doesn't exist in CarInfo") + self.assertTrue(platform in all_car_docs_platforms, f"Platform: {platform} doesn't have a CarDocs entry") def test_naming_conventions(self): # Asserts market-standard car naming conventions by brand @@ -68,7 +69,7 @@ class TestCarDocs(unittest.TestCase): for car in self.all_cars: with self.subTest(car=car): # honda sanity check, it's the definition of a no torque star - if car.car_fingerprint in (HONDA.ACCORD, HONDA.CIVIC, HONDA.CRV, HONDA.ODYSSEY, HONDA.PILOT): + if car.car_fingerprint in (HONDA.HONDA_ACCORD, HONDA.HONDA_CIVIC, HONDA.HONDA_CRV, HONDA.HONDA_ODYSSEY, HONDA.HONDA_PILOT): self.assertEqual(car.row[Column.STEERING_TORQUE], Star.EMPTY, f"{car.name} has full torque star") elif car.car_name in ("toyota", "hyundai"): self.assertNotEqual(car.row[Column.STEERING_TORQUE], Star.EMPTY, f"{car.name} has no torque star") diff --git a/selfdrive/car/tests/test_fw_fingerprint.py b/selfdrive/car/tests/test_fw_fingerprint.py index 88c7225f22..ed5edbef31 100755 --- a/selfdrive/car/tests/test_fw_fingerprint.py +++ b/selfdrive/car/tests/test_fw_fingerprint.py @@ -9,7 +9,7 @@ from unittest import mock from cereal import car from openpilot.selfdrive.car.car_helpers import interfaces from openpilot.selfdrive.car.fingerprints import FW_VERSIONS -from openpilot.selfdrive.car.fw_versions import FW_QUERY_CONFIGS, FUZZY_EXCLUDE_ECUS, VERSIONS, build_fw_dict, \ +from openpilot.selfdrive.car.fw_versions import ESSENTIAL_ECUS, FW_QUERY_CONFIGS, FUZZY_EXCLUDE_ECUS, VERSIONS, build_fw_dict, \ match_fw_to_car, get_brand_ecu_matches, get_fw_versions, get_present_ecus from openpilot.selfdrive.car.vin import get_vin @@ -49,7 +49,7 @@ class TestFwFingerprint(unittest.TestCase): fw.append({"ecu": ecu_name, "fwVersion": random.choice(fw_versions), 'brand': brand, "address": addr, "subAddress": 0 if sub_addr is None else sub_addr}) CP.carFw = fw - _, matches = match_fw_to_car(CP.carFw, allow_fuzzy=False) + _, matches = match_fw_to_car(CP.carFw, CP.carVin, allow_fuzzy=False) if not test_non_essential: self.assertFingerprints(matches, car_model) else: @@ -72,8 +72,8 @@ class TestFwFingerprint(unittest.TestCase): fw.append({"ecu": ecu_name, "fwVersion": random.choice(fw_versions), 'brand': brand, "address": addr, "subAddress": 0 if sub_addr is None else sub_addr}) CP.carFw = fw - _, matches = match_fw_to_car(CP.carFw, allow_exact=False, log=False) - brand_matches = config.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), VERSIONS[brand]) + _, matches = match_fw_to_car(CP.carFw, CP.carVin, allow_exact=False, log=False) + brand_matches = config.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), CP.carVin, VERSIONS[brand]) # If both have matches, they must agree if len(matches) == 1 and len(brand_matches) == 1: @@ -94,7 +94,7 @@ class TestFwFingerprint(unittest.TestCase): fw.append({"ecu": ecu_name, "fwVersion": random.choice(ecus[ecu]), 'brand': brand, "address": addr, "subAddress": 0 if sub_addr is None else sub_addr}) CP = car.CarParams.new_message(carFw=fw) - _, matches = match_fw_to_car(CP.carFw, allow_exact=False, log=False) + _, matches = match_fw_to_car(CP.carFw, CP.carVin, allow_exact=False, log=False) # Assert no match if there are not enough unique ECUs unique_ecus = {(f['address'], f['subAddress']) for f in fw} @@ -146,6 +146,14 @@ class TestFwFingerprint(unittest.TestCase): for ecu in ecus.keys(): self.assertNotEqual(ecu[0], Ecu.transmission, f"{car_model}: Blacklisted ecu: (Ecu.{ECU_NAME[ecu[0]]}, {hex(ecu[1])})") + def test_non_essential_ecus(self): + for brand, config in FW_QUERY_CONFIGS.items(): + with self.subTest(brand): + # These ECUs are already not in ESSENTIAL_ECUS which the fingerprint functions give a pass if missing + unnecessary_non_essential_ecus = set(config.non_essential_ecus) - set(ESSENTIAL_ECUS) + self.assertEqual(unnecessary_non_essential_ecus, set(), "Declaring non-essential ECUs non-essential is not required: " + + f"{', '.join([f'Ecu.{ECU_NAME[ecu]}' for ecu in unnecessary_non_essential_ecus])}") + def test_missing_versions_and_configs(self): brand_versions = set(VERSIONS.keys()) brand_configs = set(FW_QUERY_CONFIGS.keys()) @@ -236,8 +244,8 @@ class TestFwFingerprintTiming(unittest.TestCase): def test_startup_timing(self): # Tests worse-case VIN query time and typical present ECU query time - vin_ref_times = {'worst': 1.2, 'best': 0.6} # best assumes we go through all queries to get a match - present_ecu_ref_time = 0.75 + vin_ref_times = {'worst': 1.4, 'best': 0.7} # best assumes we go through all queries to get a match + present_ecu_ref_time = 0.45 def fake_get_ecu_addrs(*_, timeout): self.total_time += timeout @@ -263,25 +271,26 @@ class TestFwFingerprintTiming(unittest.TestCase): print(f'get_vin {name} case, query time={self.total_time / self.N} seconds') def test_fw_query_timing(self): - total_ref_time = {1: 7.8, 2: 8.7} + total_ref_time = {1: 7.2, 2: 7.8} brand_ref_times = { 1: { - 'gm': 0.5, + 'gm': 1.0, 'body': 0.1, 'chrysler': 0.3, 'ford': 1.5, - 'honda': 0.55, - 'hyundai': 1.05, + 'honda': 0.45, + 'hyundai': 0.65, 'mazda': 0.1, 'nissan': 0.8, - 'subaru': 0.45, - 'tesla': 0.2, - 'toyota': 1.6, + 'subaru': 0.65, + 'tesla': 0.3, + 'toyota': 0.7, 'volkswagen': 0.65, }, 2: { 'ford': 1.6, - 'hyundai': 1.85, + 'hyundai': 1.15, + 'tesla': 0.3, } } diff --git a/selfdrive/car/tests/test_lateral_limits.py b/selfdrive/car/tests/test_lateral_limits.py index 083cdd5a5e..e5cfd972bd 100755 --- a/selfdrive/car/tests/test_lateral_limits.py +++ b/selfdrive/car/tests/test_lateral_limits.py @@ -9,7 +9,6 @@ from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car.car_helpers import interfaces from openpilot.selfdrive.car.fingerprints import all_known_cars from openpilot.selfdrive.car.interfaces import get_torque_params -from openpilot.selfdrive.car.subaru.values import CAR as SUBARU CAR_MODELS = all_known_cars() @@ -22,12 +21,6 @@ MAX_LAT_JERK_UP_TOLERANCE = 0.5 # m/s^3 # jerk is measured over half a second JERK_MEAS_T = 0.5 -# TODO: put these cars within limits -ABOVE_LIMITS_CARS = [ - SUBARU.LEGACY, - SUBARU.OUTBACK, -] - car_model_jerks: defaultdict[str, dict[str, float]] = defaultdict(dict) @@ -50,9 +43,6 @@ class TestLateralLimits(unittest.TestCase): if CP.notCar: raise unittest.SkipTest - if CP.carFingerprint in ABOVE_LIMITS_CARS: - raise unittest.SkipTest - CarControllerParams = importlib.import_module(f'selfdrive.car.{CP.carName}.values').CarControllerParams cls.control_params = CarControllerParams(CP) cls.torque_params = get_torque_params(cls.car_model) diff --git a/selfdrive/car/tests/test_models.py b/selfdrive/car/tests/test_models.py index 2b29c14f72..2a0626c590 100755 --- a/selfdrive/car/tests/test_models.py +++ b/selfdrive/car/tests/test_models.py @@ -15,10 +15,11 @@ from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import gen_empty_fingerprint -from openpilot.selfdrive.car.fingerprints import all_known_cars +from openpilot.selfdrive.car.fingerprints import all_known_cars, MIGRATION from openpilot.selfdrive.car.car_helpers import FRAME_FINGERPRINT, interfaces -from openpilot.selfdrive.car.honda.values import CAR as HONDA, HONDA_BOSCH +from openpilot.selfdrive.car.honda.values import CAR as HONDA, HondaFlags from openpilot.selfdrive.car.tests.routes import non_tested_cars, routes, CarTestRoute +from openpilot.selfdrive.car.values import Platform from openpilot.selfdrive.controls.controlsd import Controls from openpilot.selfdrive.test.helpers import read_segment_list from openpilot.system.hardware.hw import DEFAULT_DOWNLOAD_CACHE_ROOT @@ -64,7 +65,7 @@ def get_test_cases() -> list[tuple[str, CarTestRoute | None]]: @pytest.mark.slow @pytest.mark.shared_download_cache class TestCarModelBase(unittest.TestCase): - car_model: str | None = None + platform: Platform | None = None test_route: CarTestRoute | None = None test_route_on_bucket: bool = True # whether the route is on the preserved CI bucket @@ -93,8 +94,9 @@ class TestCarModelBase(unittest.TestCase): car_fw = msg.carParams.carFw if msg.carParams.openpilotLongitudinalControl: experimental_long = True - if cls.car_model is None and not cls.ci: - cls.car_model = msg.carParams.carFingerprint + if cls.platform is None and not cls.test_route_on_bucket: + live_fingerprint = msg.carParams.carFingerprint + cls.platform = MIGRATION.get(live_fingerprint, live_fingerprint) # Log which can frame the panda safety mode left ELM327, for CAN validity checks elif msg.which() == 'pandaStates': @@ -155,15 +157,11 @@ class TestCarModelBase(unittest.TestCase): if cls.__name__ == 'TestCarModel' or cls.__name__.endswith('Base'): raise unittest.SkipTest - if 'FILTER' in os.environ: - if not cls.car_model.startswith(tuple(os.environ.get('FILTER').split(','))): - raise unittest.SkipTest - if cls.test_route is None: - if cls.car_model in non_tested_cars: - print(f"Skipping tests for {cls.car_model}: missing route") + if cls.platform in non_tested_cars: + print(f"Skipping tests for {cls.platform}: missing route") raise unittest.SkipTest - raise Exception(f"missing test route for {cls.car_model}") + raise Exception(f"missing test route for {cls.platform}") car_fw, can_msgs, experimental_long = cls.get_testing_data() @@ -172,10 +170,10 @@ class TestCarModelBase(unittest.TestCase): cls.can_msgs = sorted(can_msgs, key=lambda msg: msg.logMonoTime) - cls.CarInterface, cls.CarController, cls.CarState = interfaces[cls.car_model] - cls.CP = cls.CarInterface.get_params(cls.car_model, cls.fingerprint, car_fw, experimental_long, docs=False) + cls.CarInterface, cls.CarController, cls.CarState = interfaces[cls.platform] + cls.CP = cls.CarInterface.get_params(cls.platform, cls.fingerprint, car_fw, experimental_long, docs=False) assert cls.CP - assert cls.CP.carFingerprint == cls.car_model + assert cls.CP.carFingerprint == cls.platform os.environ["COMMA_CACHE"] = DEFAULT_DOWNLOAD_CACHE_ROOT @@ -370,7 +368,7 @@ class TestCarModelBase(unittest.TestCase): # TODO: remove this exception once this mismatch is resolved brake_pressed = CS.brakePressed if CS.brakePressed and not self.safety.get_brake_pressed_prev(): - if self.CP.carFingerprint in (HONDA.PILOT, HONDA.RIDGELINE) and CS.brake > 0.05: + if self.CP.carFingerprint in (HONDA.HONDA_PILOT, HONDA.HONDA_RIDGELINE) and CS.brake > 0.05: brake_pressed = False self.assertEqual(brake_pressed, self.safety.get_brake_pressed_prev()) @@ -381,7 +379,7 @@ class TestCarModelBase(unittest.TestCase): if self.safety.get_vehicle_moving() != prev_panda_vehicle_moving: self.assertEqual(not CS.standstill, self.safety.get_vehicle_moving()) - if not (self.CP.carName == "honda" and self.CP.carFingerprint not in HONDA_BOSCH): + if not (self.CP.carName == "honda" and not (self.CP.flags & HondaFlags.BOSCH)): if self.safety.get_cruise_engaged_prev() != prev_panda_cruise_engaged: self.assertEqual(CS.cruiseState.enabled, self.safety.get_cruise_engaged_prev()) @@ -433,7 +431,7 @@ class TestCarModelBase(unittest.TestCase): # TODO: remove this exception once this mismatch is resolved brake_pressed = CS.brakePressed if CS.brakePressed and not self.safety.get_brake_pressed_prev(): - if self.CP.carFingerprint in (HONDA.PILOT, HONDA.RIDGELINE) and CS.brake > 0.05: + if self.CP.carFingerprint in (HONDA.HONDA_PILOT, HONDA.HONDA_RIDGELINE) and CS.brake > 0.05: brake_pressed = False checks['brakePressed'] += brake_pressed != self.safety.get_brake_pressed_prev() checks['regenBraking'] += CS.regenBraking != self.safety.get_regen_braking_prev() @@ -442,7 +440,7 @@ class TestCarModelBase(unittest.TestCase): # On most pcmCruise cars, openpilot's state is always tied to the PCM's cruise state. # On Honda Nidec, we always engage on the rising edge of the PCM cruise state, but # openpilot brakes to zero even if the min ACC speed is non-zero (i.e. the PCM disengages). - if self.CP.carName == "honda" and self.CP.carFingerprint not in HONDA_BOSCH: + if self.CP.carName == "honda" and not (self.CP.flags & HondaFlags.BOSCH): # only the rising edges are expected to match if CS.cruiseState.enabled and not CS_prev.cruiseState.enabled: checks['controlsAllowed'] += not self.safety.get_controls_allowed() @@ -478,7 +476,7 @@ class TestCarModelBase(unittest.TestCase): "This is fine to fail for WIP car ports, just let us know and we can upload your routes to the CI bucket.") -@parameterized_class(('car_model', 'test_route'), get_test_cases()) +@parameterized_class(('platform', 'test_route'), get_test_cases()) @pytest.mark.xdist_group_class_property('test_route') class TestCarModel(TestCarModelBase): pass diff --git a/selfdrive/car/tests/test_models_segs.txt b/selfdrive/car/tests/test_models_segs.txt index ca089bbdde..c983fb08e7 100644 --- a/selfdrive/car/tests/test_models_segs.txt +++ b/selfdrive/car/tests/test_models_segs.txt @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cadad21e1230729c70cffb4c46dd0a5dda4eec1a262b1bcd9f1b6b98265c20b5 -size 125104 +oid sha256:0810a361ec5b5f5f9a2ee73b89ffb2df62ef40e8feff7e97ecb62f80fa53f6f5 +size 124950 diff --git a/selfdrive/car/tests/test_platform_configs.py b/selfdrive/car/tests/test_platform_configs.py new file mode 100755 index 0000000000..523c331b9e --- /dev/null +++ b/selfdrive/car/tests/test_platform_configs.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python3 + +import unittest + +from openpilot.selfdrive.car.values import PLATFORMS + + +class TestPlatformConfigs(unittest.TestCase): + def test_configs(self): + + for name, platform in PLATFORMS.items(): + with self.subTest(platform=str(platform)): + self.assertTrue(platform.config._frozen) + + if platform != "MOCK": + self.assertIn("pt", platform.config.dbc_dict) + self.assertTrue(len(platform.config.platform_str) > 0) + + self.assertEqual(name, platform.config.platform_str) + + self.assertIsNotNone(platform.config.specs) + + +if __name__ == "__main__": + unittest.main() diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A030x00x00'.json b/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A030x00x00'.json deleted file mode 100755 index 39f881e4a7..0000000000 --- a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.786729],[0.5672887],[0.28005219],[0.035554193],[0.5677058],[0.56628585],[0.56508285],[0.55352837],[0.54181147],[0.52912265],[0.5155199],[0.035507876],[0.0354848],[0.03545452],[0.03514088],[0.03492326],[0.034622278],[0.034296613]],"model_test_loss":0.019161002710461617,"input_size":18,"current_date_and_time":"2023-08-05_00-23-35","input_mean":[[27.090303],[0.047497954],[0.016577758],[0.0007272725],[0.044373695],[0.045599286],[0.046824276],[0.053295966],[0.05693411],[0.058819015],[0.0594564],[0.0004213227],[0.0004913575],[0.00056855136],[0.0008395286],[0.0009874002],[0.0010656398],[0.0010756186]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.25851473],[2.4962583],[-0.016582556],[-0.08381792],[-0.16407841],[0.7527331],[0.22097391]],"dense_1_W":[[0.23336808,-0.7667592,0.0008973085,0.34888005,0.4696916,-0.8726721,-0.052713018,-0.3410398,0.083063185,-0.21388897,0.14544983,-0.6639639,0.34076384,0.43210688,-0.18405053,0.14303815,0.1860583,-0.29693],[1.5149847,0.7346798,0.0012407255,0.12526828,-0.15258078,0.75175434,0.43043575,0.8569343,0.3044722,0.6560543,-0.6017985,0.586774,-0.2042676,-0.57615256,-0.82250106,-0.3673933,0.39087212,0.28107244],[-0.056961607,0.14175236,-0.14529344,-0.21935074,-0.4685559,-0.38604775,-0.30533233,0.08093428,-0.054244533,0.046247467,0.002660106,-1.0756555,-0.34733522,0.5118129,0.555274,0.9977485,0.5343106,0.76034987],[0.043177918,1.1426508,-0.2574032,-0.80439544,-1.0474149,0.018192194,-0.72060835,-1.5457815,0.4839822,-0.22740847,0.33749956,0.56239605,-0.18597472,-0.7004514,-0.12335018,0.9408467,1.3969381,1.9147022],[0.15510105,-0.51416093,-0.1709066,0.3122005,-0.27975515,-0.18827502,-0.018079426,-0.07361344,-0.17749901,-0.16815776,0.329771,-0.96269935,-0.41497013,-0.11298405,0.90808386,0.5985053,0.6670271,1.0441304],[0.04084261,-0.3579519,5.764384,2.1556206,-3.1756268,-2.5591285,-3.1059926,-2.1751692,1.9893773,5.344765,3.8095784,0.0068162596,-0.05961051,-0.7790495,0.25181335,0.08936475,-0.4691672,-1.5800782],[0.008442975,-0.9664588,1.254223,0.07495671,-0.9211808,-0.31230834,-1.420559,1.5870605,2.9423354,1.2097238,-1.5209136,0.53799206,-0.24978906,-0.4991973,-0.045118414,0.22720768,-0.021786746,-0.028036244]],"activation":"σ"},{"dense_2_W":[[0.08589389,0.5554316,-0.76533294,1.4370406,-0.749679,0.8190772,0.7847909],[-0.36651522,-0.23656718,-0.9679525,0.54530346,-0.44935027,-0.33107117,-0.11653592],[0.1937388,-0.51963365,-0.41821185,-0.56238693,-0.42072704,0.29349342,0.28873855],[0.18568017,-0.6255592,0.3175428,-0.1296441,0.36066276,0.090375744,0.011777949],[0.29389882,0.41541627,0.29456857,-0.06099775,0.8544443,-0.32980224,-0.018656367],[0.46638128,1.1828619,-1.0409766,1.1076639,-0.8162737,-0.1841819,0.35339093],[-3.1295595,-1.7625448,-0.9519052,2.3819635,-1.5629697,1.4751475,1.054407],[-0.26031867,-0.17098531,-0.86596596,-0.2823039,-0.09237936,-0.5557033,0.21093917],[0.17419276,-0.33989495,0.75525665,-0.23243514,0.067577615,-0.11459458,-0.12737218],[-0.5143146,-0.114794,-0.48588708,0.014262976,-0.3147008,-0.3320594,-0.050031766],[0.69564664,-0.20285861,-0.045860726,-0.24353331,-0.077484764,-0.48740336,-0.49667886],[-0.73832846,-0.056390353,-1.1750503,0.9696539,-0.14256468,-0.9768354,0.3639443],[-0.33827624,1.3389958,-0.90204453,1.2786052,-0.37693223,1.0066575,0.7839061]],"activation":"σ","dense_2_b":[[0.004400438],[-0.012242325],[-0.24042149],[-0.2775402],[0.026533086],[0.17362237],[-0.11018203],[-0.26839134],[-0.012196942],[-0.27722296],[0.061678015],[-0.030844057],[-0.1247429]]},{"dense_3_W":[[-0.004011368,0.44971785,-0.29006478,0.44446334,0.15595631,0.18539023,-0.027091525,-0.36382222,-0.47578183,0.3841759,-0.58085823,0.21311298,0.43156254],[-0.114403516,-0.58336,-0.15005592,0.4984802,0.050974183,-0.2988934,0.17598677,-0.38844588,-0.43446323,-0.46759152,0.59965366,-0.22926027,0.46112597],[-0.666863,-0.06357686,-0.37007764,0.7205996,0.7096061,-0.1758518,-0.8103027,-0.44219843,0.7200449,0.5289802,-0.16617142,-0.40598816,0.00529661]],"activation":"identity","dense_3_b":[[-0.09627088],[0.058493696],[0.09405641]]},{"dense_4_W":[[0.8841606,-0.039429788,-0.82832056]],"dense_4_b":[[-0.09594059]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A040x00x00'.json b/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A040x00x00'.json deleted file mode 100755 index 8c389b9507..0000000000 --- a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8066874],[0.6620071],[0.29624054],[0.031885646],[0.67469865],[0.6712079],[0.6675276],[0.6426469],[0.62732595],[0.60797465],[0.5914247],[0.032055974],[0.032022122],[0.031979207],[0.031657174],[0.031374358],[0.031031318],[0.030767966]],"model_test_loss":0.016631487756967545,"input_size":18,"current_date_and_time":"2023-08-05_00-24-05","input_mean":[[27.279354],[0.07628178],[0.004740573],[0.004332477],[0.07348854],[0.07386953],[0.074113265],[0.07658985],[0.07849997],[0.08176357],[0.08127507],[0.004234957],[0.004238124],[0.004233249],[0.004148433],[0.004073079],[0.0040188804],[0.0037603448]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.5227308],[-0.9277926],[0.01344287],[-0.12681559],[1.8620169],[-0.18611176],[-0.46804744]],"dense_1_W":[[1.3088025,0.7938517,-0.07550197,0.12162848,-0.23023312,-0.53417087,0.7298755,-0.35863844,-1.232776,-0.32464856,0.69969106,-0.19938065,0.14594285,0.67643446,-0.7466748,-0.1924248,0.25988856,0.03815833],[-0.00032034,0.09513859,0.14649239,0.84448385,-0.33081084,-0.7636266,-0.43756434,0.15544043,-0.5536561,0.5097238,-0.44260737,-0.99638957,-0.6095418,0.38101298,-0.108550996,0.5993398,-0.28177363,-0.27099723],[0.017245863,-0.8860011,0.06905833,-0.23131342,-0.31428957,-0.5846859,0.11834183,0.10321145,-0.19951913,-0.13262431,0.051923424,-0.18100934,-0.4455598,0.7395236,-0.022803197,0.41319725,0.7613758,1.0495721],[0.01882326,-0.8194868,-0.009853303,0.4151132,0.38719785,-0.25005072,0.4127618,0.054583337,-0.5390043,-0.10014917,0.34088063,-1.117872,-0.08286508,0.46948376,0.35110041,0.38353947,0.25921276,-0.5767032],[1.2597413,-0.06712699,0.07406188,0.005649942,0.32073185,0.41326395,-0.71213233,0.1408067,0.5081324,0.06824581,-0.22174098,0.42761666,-0.5766476,-0.7140219,0.44048855,0.48427463,0.31352678,-0.4882206],[-0.016965292,1.2305305,0.10325935,0.24419214,2.1640618,2.4280353,2.9627275,1.0981169,-1.7519482,-3.7584212,-3.6021638,-0.63591194,-0.52256954,0.8271195,-0.3019169,-0.87059563,0.38380772,0.69980204],[-0.031441774,-1.5607485,-7.438145,1.1177127,1.5216038,0.7637881,0.8477267,-0.835395,-1.5533942,-0.35314834,1.1110218,-1.644007,-1.0006105,-0.3352244,0.20025133,0.83611494,0.31554085,0.33613914]],"activation":"σ"},{"dense_2_W":[[-0.38370743,0.32968736,-0.004957762,-0.9081518,0.15075667,-0.068389416,0.008115187],[-0.3697097,0.47690573,-0.55084234,-0.7900301,0.27233642,0.14098246,-0.3138353],[-1.0909184,-0.5307646,0.27474627,-0.8662306,-0.30040765,0.033314817,-0.3492279],[0.5701307,-0.5303288,0.031248378,0.6385814,0.010645484,-0.016549833,0.46346626],[0.1442632,-0.42781132,0.24439524,0.23937261,-0.81748235,0.064812824,0.4000337],[-0.36214906,0.19428124,0.5956358,0.9273549,-0.14404434,0.21891229,-0.5955698],[0.7355732,-0.09893048,0.07489529,0.38501185,0.9168706,0.050819628,1.2076929],[0.6842598,0.1722268,-0.2845938,0.2455436,0.97617817,0.25799465,1.0193411],[-0.08084107,-0.58205926,0.07038275,-0.30948064,0.07723996,-0.5130746,0.4102158],[0.04777135,-0.3226301,0.02726643,-0.6204659,0.7076705,-0.080048494,-0.05065219],[0.33558354,-0.32304227,0.38823822,-0.8043962,0.65630925,-0.22564156,-0.18366374],[-0.72608715,0.54069227,-0.4357295,0.016691474,0.19214477,-0.21972942,-0.7132383],[-0.2671177,-0.59838676,-0.09683501,-0.67224425,0.39455676,0.14678267,0.29082012]],"activation":"σ","dense_2_b":[[0.042974856],[0.047666013],[0.071242],[-0.067780755],[-0.13547619],[-0.022536043],[-0.1646825],[-0.09613349],[-0.062535584],[0.06297165],[0.19214764],[-0.0261287],[-0.11438154]]},{"dense_3_W":[[0.3077478,0.14613815,0.65330607,-0.18163036,-0.67502165,-0.5579221,-0.202035,0.18795493,0.12072459,-0.10777223,0.4149204,0.61287045,0.58160293],[-0.5099703,-0.19231012,-0.377239,0.59486294,0.59117395,0.51951456,0.15894152,0.528822,-0.40744722,-0.56634617,-0.6320977,-0.22041576,-0.54817945],[0.33777002,-0.54104495,-0.24469995,-0.37649524,-0.5114555,0.42566466,-0.16754289,-0.10115532,0.15072124,0.3869163,0.36524448,-0.001329152,0.4387867]],"activation":"identity","dense_3_b":[[-0.04467462],[0.033724587],[-0.113627024]]},{"dense_4_W":[[0.64887154,-1.1038072,0.022054804]],"dense_4_b":[[-0.033230864]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A070x00x00'.json b/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A070x00x00'.json deleted file mode 100755 index 05288d3d86..0000000000 --- a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A070x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.804848],[0.8000588],[0.3076164],[0.04094818],[0.8080633],[0.80525005],[0.80151165],[0.7824581],[0.7688379],[0.75354946],[0.73837227],[0.040943466],[0.040922932],[0.04089199],[0.04062815],[0.040328],[0.039892863],[0.03927387]],"model_test_loss":0.036003123968839645,"input_size":18,"current_date_and_time":"2023-08-05_00-24-34","input_mean":[[28.423885],[0.007884776],[-0.0031538303],[0.015055777],[0.006704811],[0.0065370076],[0.0068571228],[0.0054512075],[0.004117628],[0.005428144],[0.0066870335],[0.015062948],[0.015041507],[0.015016925],[0.014904091],[0.014769581],[0.014618669],[0.014560436]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16520002],[1.9058155],[0.08453396],[-0.5702096],[-0.022235246],[2.1811569],[0.32843062]],"dense_1_W":[[0.007258376,0.5546316,0.0021156757,-0.11869205,-0.44563162,0.5686885,-0.49791276,0.32130694,0.18480486,0.20529743,-0.2983059,0.9580912,-0.30417892,-0.17480053,-0.5471751,-0.15583673,0.09669533,0.13655974],[1.1045209,0.72982305,-0.0012157066,-0.32325575,0.36619568,0.28777912,0.4200975,0.32855922,1.0964329,0.0125418985,-0.3758639,0.045545604,0.15269232,-0.3104408,0.2671959,-0.42339674,-0.24723499,-0.19590895],[-0.018215153,-0.9239081,-7.2882724,-0.043018136,0.89870304,0.26894778,0.9689756,-0.2952786,-1.5947425,-0.1945536,0.7288008,-1.1317624,-0.5719013,-0.14229906,0.4161876,-0.08783979,0.42565742,0.90669537],[1.5756099,0.74937963,-0.6682266,0.17876424,0.41060305,0.463597,-0.1566954,-0.2545488,0.60787153,0.32818866,-0.6589883,0.27973333,-0.2438422,-0.05319809,-0.15574023,-0.6602739,0.26140356,0.13322982],[0.0029903697,0.8079928,-1.8084258,0.065171555,2.247587,1.658609,1.4290156,-0.038293317,-1.8411868,-2.3568115,-1.5802773,-0.48189434,-0.3668556,0.065492555,-0.07620456,-0.24639589,0.45018005,0.522461],[0.8719188,-0.5783348,-0.004002766,0.28650954,-0.4252121,-0.44623157,0.058663256,-0.56094223,-0.55295444,-0.3040901,0.3919486,-0.46245384,-0.029172314,0.18465641,0.25736162,0.39288744,0.36129612,-0.11474042],[0.04924682,-0.42568168,0.00047019235,0.047753103,-0.6865259,-0.47911242,-0.964993,-0.102179274,-0.02535022,0.20489506,-0.38479173,0.51818967,0.28378603,-0.42722967,-0.48230556,0.024352815,0.07428285,0.62325346]],"activation":"σ"},{"dense_2_W":[[0.90986884,0.47950652,0.25053373,0.19939893,0.022542464,-0.38787457,0.35567287],[-1.0180658,-1.145854,0.6623716,-0.28077835,0.15672879,-0.85848707,-1.4568413],[1.406467,0.28726155,-0.062790155,-0.1506732,-0.9504507,0.3980746,-0.17273381],[1.1017784,-0.79252,-0.19594195,-0.58535796,-0.43267435,-1.4622566,1.099609],[-1.6988904,-1.4887654,1.0556726,0.14193814,0.567861,-0.78099054,-1.1916547],[1.3314943,-0.04540647,0.01911306,0.5834418,0.35737038,-0.3738458,-0.9131301],[-1.4514605,-1.1643327,0.3310674,-0.40083563,-0.2108704,-0.35081738,-1.25731],[1.4591875,0.51000947,0.6822781,-0.026922852,-0.20268947,-0.74282473,-0.7089955],[-1.5790056,-0.81782144,0.12857606,-0.031774927,0.009384996,-0.011062012,-0.47970626],[0.6185028,-0.44301233,0.16603012,-0.12869644,-0.550066,-0.039163988,-0.13839607],[-0.018947372,0.18183467,-0.7923736,0.45726624,-0.7995292,-0.59161717,0.1465947],[1.1080922,-0.83549255,-1.2054135,0.81522685,-0.83383155,-1.7733766,0.60040456],[-1.173769,0.9102019,0.8067946,0.12065304,0.46038142,0.988551,-0.8998902]],"activation":"σ","dense_2_b":[[-0.34571314],[-0.06508791],[-0.16475885],[-0.51652795],[0.09335283],[-0.3354126],[-0.05395547],[-0.31864733],[0.0341759],[-0.28023538],[-0.24353532],[-0.6017034],[0.3884714]]},{"dense_3_W":[[-0.14432088,-0.26102468,-0.16678491,0.27030742,0.5432606,0.36784706,0.31559888,-0.39181647,0.25105116,0.031935308,0.059210572,-0.27962592,-0.23508798],[0.10690615,-0.6226754,0.33630693,0.72590107,-0.7262614,0.36729288,-0.35301742,0.729708,-0.85739464,0.085655235,-0.09123609,0.3166798,-0.6107507],[-0.24342504,0.5378751,-0.33611593,-0.14817247,0.11123475,0.48445055,0.52930707,0.3598816,0.5077164,-0.062455237,-0.2566208,-0.5888578,-0.27487496]],"activation":"identity","dense_3_b":[[0.18145333],[-0.101992324],[0.0892087]]},{"dense_4_W":[[-0.021246718,1.246937,-0.05223701]],"dense_4_b":[[-0.08010172]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A130x00x00'.json b/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A130x00x00'.json deleted file mode 100755 index 0676cba6ca..0000000000 --- a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020 b'39990-TJB-A130x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.23255],[0.72479707],[0.2731752],[0.041931108],[0.7306734],[0.728485],[0.72535795],[0.70364136],[0.6862298],[0.6646152],[0.6451095],[0.041831795],[0.041856535],[0.04186677],[0.041598115],[0.04127907],[0.040753823],[0.040154044]],"model_test_loss":0.02374698594212532,"input_size":18,"current_date_and_time":"2023-08-05_00-25-01","input_mean":[[25.491344],[0.044132378],[0.0061853817],[-0.0029408792],[0.041254394],[0.04185997],[0.04264751],[0.044891346],[0.045578476],[0.048339594],[0.049801964],[-0.002985854],[-0.0029757507],[-0.0029692403],[-0.003035695],[-0.0031368348],[-0.0032066072],[-0.003333973]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.2589055],[-0.6300203],[-0.18905114],[0.035437174],[-0.19216189],[-0.18303323],[0.30025914]],"dense_1_W":[[-0.22914602,0.37103513,-3.0855074,-0.016385019,-0.1979585,0.269418,0.30819643,-0.057719447,-0.6764055,-0.551892,0.44502893,-0.14667127,0.09163551,0.13834381,-0.032953348,-0.1365294,0.108110294,-0.015983328],[0.78569615,-0.10759539,-2.9499667,0.063911594,0.32446858,0.47014278,-0.37796447,0.17923851,0.04087841,-0.1296694,-0.25734457,0.13309121,0.117884666,-0.24419518,0.18338855,-0.34687102,-0.28147766,0.2696666],[-0.08656571,0.008094062,3.595688,-0.26259422,-0.08986283,-0.2759453,-0.21220718,0.46498194,-0.04266637,0.19100346,-0.15709823,-0.12756641,0.08520138,-0.15009129,0.46134138,0.45091918,-0.34697345,-0.04493433],[-0.0057781595,0.89213103,-0.6567681,0.06595929,0.7855131,0.69278926,1.5298123,0.91839993,-2.0061233,-2.435459,-0.6626293,-0.74082696,0.24077982,0.32887235,0.38966477,-0.42399997,-0.13695207,0.89643025],[0.00082410604,0.5266071,0.0135379555,0.69229037,-0.6991144,0.1244281,-0.08241515,0.19330071,0.6835726,-0.17600393,-0.27664047,0.3862313,-0.16833216,0.13843256,-0.8122221,-0.7083284,-0.53014934,0.8007278],[-0.002461339,0.5366552,0.005371866,-0.20480752,-0.02694003,0.43186262,-0.022536932,-0.2710664,-0.20992674,0.055011317,0.10523869,0.7081066,-0.25829124,-0.3393486,-0.033259023,0.11424787,0.25399274,-0.21338066],[-0.83344615,0.4972349,-2.674982,-0.8011467,-0.00091532787,0.15652598,-0.1011277,0.16851202,-0.010218224,-0.3162073,-0.21929123,0.8358039,-0.3675451,0.20605241,-0.044107787,0.02273551,-0.12779047,0.16776903]],"activation":"σ"},{"dense_2_W":[[-0.19773088,-0.07987414,-0.46394402,-0.25385913,-0.51523316,-0.7734022,-0.24892572],[0.7524863,-0.83441466,-0.15295947,-0.52500844,-0.65857184,-1.0245075,-0.12141446],[0.47812417,-0.31713268,-0.4710023,0.8264185,-0.8333809,-0.7837305,-0.21949],[-0.10150827,-0.33362886,-0.570894,-0.6523667,-0.12733579,-1.03887,0.089515604],[0.2693557,0.33961922,0.5830918,-0.16009484,0.88582087,-0.18754318,0.27771476],[-0.32544395,0.44090092,0.28255528,-0.7974365,0.17504413,0.75356585,0.58148295],[-0.31234935,0.13871694,0.8212621,-0.041753158,0.7099144,0.2015646,-0.056245737],[0.2175629,0.09308608,0.80202895,-0.24198753,0.48807403,-0.22803837,0.64155793],[-0.37297815,-0.454524,-0.2041459,-0.21450296,-0.4926007,-0.6716726,-0.30035603],[0.28631696,-0.6844529,-0.3590589,0.0717205,-0.8350303,-0.9547256,0.01994262],[0.09526404,-0.37569124,-0.54859555,-0.25455466,0.08059891,-0.5854736,-0.28227013],[0.49766162,-0.4683451,-0.30763015,1.2545203,-1.0363722,-0.6756313,-0.67825943],[-0.020436687,-0.17459548,-0.8167955,0.5455366,-0.37868357,-0.6452078,-0.50482]],"activation":"σ","dense_2_b":[[0.14226258],[0.20491779],[0.21216024],[-0.09415054],[-0.10954374],[-0.15493721],[-0.081466906],[-0.0703362],[0.024982613],[-0.039309245],[-0.06658772],[0.5169116],[0.23269281]]},{"dense_3_W":[[0.032323103,-0.54836,-0.5319698,-0.29569536,0.23183687,0.6694105,0.038498178,0.63660324,-0.38424796,0.06097146,-0.4531479,-0.43248698,-0.5142001],[0.6478883,0.25922352,0.62727135,0.7343839,-0.5265464,-0.61613655,-0.18139401,0.109259166,0.08149141,0.73708165,0.20760447,-0.15330316,0.5328034],[-0.27989653,-0.7052997,-0.25653857,0.116460204,0.14982809,0.19868049,0.6558363,0.39804822,-0.17899916,0.09420844,0.19702157,-0.65146506,-0.42718345]],"activation":"identity","dense_3_b":[[0.008412994],[-0.026723087],[0.007888077]]},{"dense_4_W":[[0.60362816,-0.77239645,0.9147824]],"dense_4_b":[[0.010696713]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/ACURA RDX 2020.json b/selfdrive/car/torque_data/lat_models/ACURA_RDX_3G.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/ACURA RDX 2020.json rename to selfdrive/car/torque_data/lat_models/ACURA_RDX_3G.json diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566G0HA14A1'.json b/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566G0HA14A1'.json deleted file mode 100755 index 5a9673b63d..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566G0HA14A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.577478],[0.7438756],[0.36118278],[0.032957785],[0.73931956],[0.7406723],[0.74192834],[0.74210787],[0.7407529],[0.73199296],[0.7199361],[0.03313112],[0.03308075],[0.03302625],[0.032850783],[0.032766964],[0.032702252],[0.03262269]],"model_test_loss":0.005140421446412802,"input_size":18,"current_date_and_time":"2023-08-05_01-40-02","input_mean":[[25.733025],[-0.0530399],[-0.0037603835],[-0.010416541],[-0.052312925],[-0.051846784],[-0.05134495],[-0.054431908],[-0.05473598],[-0.057869826],[-0.06307359],[-0.0104753],[-0.010442205],[-0.010416312],[-0.010369451],[-0.010322098],[-0.010290761],[-0.010380604]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.3245497],[-1.4683536],[-1.0290579],[-1.1341333],[-2.1062934],[0.3018172],[-0.23615684]],"dense_1_W":[[-0.7003263,0.49873114,0.0898631,-0.124622256,-0.074973226,0.9586173,-0.38187122,-0.2140207,-0.17437121,-0.08466658,0.18243429,0.332077,0.091170385,-0.31530052,-0.40582517,-0.18025973,0.01580242,0.16465585],[0.65071887,0.098929696,0.081038885,-0.43317255,0.09570322,0.6772797,0.09694697,-0.2210818,-0.36565584,0.14244506,0.1442449,-0.060965866,0.69212425,-0.22231308,-0.38532606,0.025514778,-0.33013564,0.31779227],[-0.45925462,-0.7011064,-0.117601246,-0.29964444,0.5295153,-1.7198939,1.0653187,-0.25740883,-0.017742164,-0.3926751,0.14859986,0.093567744,-0.0036377048,0.6028897,-0.024838587,-0.72965765,0.22210832,0.17412421],[-0.41014504,0.7981556,0.12894426,-0.15330562,-0.46003667,0.80571204,-0.28026396,0.07452426,0.46427798,0.08275176,-0.15462086,-0.22026892,0.2446177,-0.11201427,0.13369443,0.085089125,0.04192831,-0.079959705],[-1.4503621,0.59118265,0.22731866,-0.0001668829,-0.1303347,0.73156023,-0.5737055,0.043029774,0.20244285,-0.0695449,0.08930824,0.064521626,0.068293415,-0.44724983,0.15501118,0.5946885,0.51368195,0.7538089],[0.004021074,-0.6826504,-3.3770466,-0.7409217,1.6001521,0.0391899,-0.124299094,-1.0929167,-1.0039091,0.09728141,1.62364,0.04166459,-0.9421838,-0.19240098,1.0952632,0.8884146,0.37573487,-0.81200004],[-0.018716704,0.2596357,0.085221626,-0.33597907,-0.328589,0.86857575,-0.25697392,-0.06518752,0.058769446,-0.46493977,0.26284,0.32883435,0.3965106,-0.51409185,-0.35840464,0.25830442,0.17984946,-0.09297429]],"activation":"σ"},{"dense_2_W":[[-0.5632885,-0.53817147,0.64087266,-0.6966918,0.19645694,0.20904736,-0.6993455],[-0.16920735,-1.1400033,0.759447,-0.8198524,-0.19880797,0.8225933,-0.57966435],[-1.5840745,0.2576235,-1.4874045,-0.97268665,0.10756933,-1.5350775,0.09277853],[-0.746399,-0.69672894,0.029895214,-0.47871673,-0.044179466,-0.40327352,0.16566314],[-0.038666934,0.08509904,0.038226664,0.19170763,-0.115979545,-0.61926454,-0.34254095],[0.4221073,0.9338458,0.43968564,0.060404833,-0.27444592,0.18882848,0.04802321],[0.11849655,0.6292092,-1.1421567,0.91632056,0.12051813,-0.47201702,0.47282815],[0.65729594,0.95542836,0.29725003,-0.13384224,0.040036652,-0.3340561,0.91600364],[-0.50302577,0.20259018,-0.82741207,-0.78905314,-0.99308705,0.37110266,-0.2015438],[-0.6504161,-0.95296395,1.3312038,-0.82766765,-0.015905075,0.6261558,-0.30300564],[-0.5737891,0.27416453,-0.13240442,-1.0399845,-0.13625641,-1.1091161,-0.10313148],[-0.88772994,-1.1795825,1.4089849,-0.89326316,-0.2216985,1.2031909,-1.0210301],[-0.45486033,-0.6124461,0.7889247,-0.48303822,-0.066258006,0.67935133,-0.68396086]],"activation":"σ","dense_2_b":[[0.1795089],[0.1396347],[0.28086272],[0.088517],[-0.40390638],[0.033958796],[-0.24937943],[-0.11856169],[-0.36012134],[0.3268745],[-0.16133401],[0.5044416],[-0.036166213]]},{"dense_3_W":[[0.21906924,-0.43080992,-0.26896283,-0.5586104,0.46261472,-0.18390699,0.68614185,0.44715905,0.5650668,-0.5596256,0.0845164,-0.1399013,-0.0069408407],[-0.6725418,-0.5217038,-0.41263464,-0.14729826,-0.3349171,0.45824003,0.45669848,0.41630223,-0.1198797,-0.37809664,-0.58279663,-0.39970228,-0.46720004],[-0.0911098,-0.2839844,0.74057204,0.28854206,-0.602245,-0.027574118,-0.23919757,-0.57538325,-0.20772439,0.4040517,-0.1298003,0.9268099,-0.33000454]],"activation":"identity","dense_3_b":[[0.09233651],[0.16433457],[-0.078944445]]},{"dense_4_W":[[0.3148156,0.70836514,-0.25909597]],"dense_4_b":[[0.12378432]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571G0HA16A1'.json b/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571G0HA16A1'.json deleted file mode 100755 index fe26c2fbaa..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571G0HA16A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.444296],[0.925862],[0.3873827],[0.037189186],[0.91709805],[0.9205691],[0.92302024],[0.92303276],[0.92241675],[0.9182511],[0.9138257],[0.0370443],[0.03708567],[0.03713202],[0.037330262],[0.03739135],[0.037358396],[0.037249684]],"model_test_loss":0.005741582717746496,"input_size":18,"current_date_and_time":"2023-08-05_02-04-31","input_mean":[[25.35733],[0.06905999],[0.003920239],[-0.0061412086],[0.06798497],[0.067765675],[0.067846335],[0.07060763],[0.07478977],[0.08159132],[0.08384652],[-0.00630684],[-0.006240933],[-0.0061786305],[-0.005954251],[-0.0058416207],[-0.005766785],[-0.0058315513]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09965041],[-2.8333573],[0.1400968],[0.009966896],[-0.54726493],[0.0015999223],[-3.2500806]],"dense_1_W":[[0.008949206,-0.7134963,-0.039546415,0.32233778,0.046066836,-1.0873427,0.9605672,0.20299414,0.19314864,0.08948046,-0.20269577,-0.3755727,-0.37828064,0.14123754,0.4638058,0.26318562,-0.13823359,-0.23261546],[-1.1191226,1.24295,0.5152675,-0.08874825,0.0025459442,0.80788636,-0.104676746,0.4805844,-0.02262418,-0.03299286,-0.034461044,0.1827796,0.026162459,-0.3095013,0.17938249,0.18499815,-0.08783259,-0.045922197],[0.00032858906,1.4926245,0.046637077,-0.32630235,-0.5585684,0.4034735,0.034369424,0.32580245,0.6714615,0.1760409,-0.24315467,0.4334825,0.4505814,-0.71569765,-0.20759046,0.37798336,0.05509028,-0.05075517],[-0.0020555735,1.4031184,4.5700407,0.20270438,0.024622126,0.36119592,0.061005134,0.40066856,0.019982928,-1.0741708,-0.95529234,0.091578454,0.10358388,-0.14398912,-0.42586878,0.46220022,-0.20536982,0.016865704],[-0.002008851,-0.69844705,0.08216384,0.44206062,-0.69932556,-0.9771249,1.0371966,0.47466856,0.09576244,-0.109484494,-0.39007372,-0.006908211,0.0011474143,0.66040933,1.1697054,0.06390619,0.45119238,0.11735442],[0.008935762,0.91445494,0.028773237,-0.52121264,-0.174554,0.9050357,-1.0716133,0.12847908,0.044074073,-0.09941267,-0.028681703,0.0962431,0.08194988,0.08453359,0.29791412,-0.14331576,0.10533343,-0.020068252],[-1.1533717,-1.6527721,-0.52385485,-0.4202616,0.2607004,-1.0356239,0.27048177,-0.3373225,-0.09205943,0.3441015,-0.11975457,-0.055931754,0.18685083,0.20495965,0.187628,-0.1650148,-0.1626427,0.17851348]],"activation":"σ"},{"dense_2_W":[[-0.16502862,0.6035214,-0.4797608,-0.26366422,0.1172479,0.65635234,-0.32176182],[0.82605934,-0.22745298,-0.5525386,-0.36830527,0.23893076,-0.3919843,0.49190587],[-0.2966492,0.09588704,-0.45871517,-0.11154242,0.35666984,0.039538093,-0.1328796],[0.034723956,-0.46226948,-0.48428744,0.31498548,-0.24748813,-0.13231282,0.09660036],[-0.1478363,-0.19293658,-0.2720306,-0.45817015,-0.37688,-0.50546414,-0.28803188],[0.8061317,-0.35915154,0.11437668,-0.25236553,0.11779728,-0.5324483,0.11850576],[0.022361243,-0.26832423,-0.62965536,0.22057025,0.24124865,-0.34575233,-0.38505265],[0.2575399,0.05998816,0.061493885,0.018274274,-0.5433316,-0.29543966,-0.61841214],[-0.16821893,-0.15542041,0.30067912,0.050528307,0.18159576,0.247534,-0.4873542],[-0.5824741,0.4054871,0.64855784,0.20722958,-0.41800383,0.43538094,-0.7275382],[0.31753623,0.07011032,0.57152003,0.090241544,0.20502838,0.20511343,-0.107010804],[0.44585994,-0.39532375,-0.526214,-0.23581168,0.26709425,-0.246547,0.028189523],[-0.5761572,-0.07350907,0.4795847,-0.2759125,-0.26325545,0.70039105,0.071710885]],"activation":"σ","dense_2_b":[[-0.027677696],[0.045070633],[-0.02658284],[-0.22184646],[-0.017363569],[0.015014292],[-0.24714506],[-0.25203505],[-0.008711522],[-0.065313436],[-0.03065247],[0.060002126],[0.012620704]]},{"dense_3_W":[[0.20473917,-0.651288,-0.23288384,-0.59891415,-0.1475974,-0.23222987,-0.32410318,0.11691736,0.6000578,0.51066893,0.20957007,-0.028224448,-0.19108637],[-0.31180796,-0.4837876,-0.252939,-0.34604937,0.15680352,-0.285469,0.56567293,-0.51167464,-0.016737705,0.21543846,0.13277481,-0.622958,0.62488127],[-0.6404472,0.4868364,0.45634153,-0.29710093,0.09397441,0.103426725,0.52781576,-0.28619406,-0.16805595,-0.5277735,-0.58615893,0.44762912,-0.23755693]],"activation":"identity","dense_3_b":[[-0.00061371934],[0.0008866203],[0.0041582286]]},{"dense_4_W":[[0.2813102,0.8880676,-1.0474501]],"dense_4_b":[[-0.0030482505]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516G00804A1'.json b/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516G00804A1'.json deleted file mode 100755 index 623cfc6fd6..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516G00804A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.647897],[0.77807677],[0.3786303],[0.027181908],[0.76505655],[0.7691365],[0.7753112],[0.75485826],[0.7388133],[0.7235482],[0.7017126],[0.027084801],[0.027107615],[0.02713881],[0.02727208],[0.027347732],[0.027291704],[0.02712333]],"model_test_loss":0.005975625012069941,"input_size":18,"current_date_and_time":"2023-08-05_02-53-24","input_mean":[[22.687336],[0.041830763],[0.0013497239],[0.0025117223],[0.04265397],[0.041225184],[0.040064774],[0.041646685],[0.041738126],[0.039837133],[0.037775867],[0.0025273785],[0.0024943845],[0.0024706146],[0.002355649],[0.0022401763],[0.00213939],[0.0020558846]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.1844455],[-1.1541857],[-0.015318193],[-0.6885228],[0.031907413],[-0.4154868],[-1.2283381]],"dense_1_W":[[0.9976641,0.21748708,0.007614968,0.21005726,-0.24952233,-1.1167002,0.40800944,0.65574366,0.16467258,-0.026125554,-0.32524306,0.22688352,0.1259429,-0.41789296,0.24079186,-0.22830102,0.100322604,0.023678515],[-0.29762468,0.88740426,0.112175226,-0.2225173,-0.3093645,0.6364987,-0.8023527,0.6150709,-0.10853348,-0.07048834,-0.07352686,0.06482338,0.32714766,-0.2653219,0.07407067,-0.046005152,0.16475457,-0.06553305],[0.00032146444,1.5183012,0.071805686,0.15944685,-0.55036193,0.6881477,-0.78218305,0.17549933,0.40891948,0.07851986,-0.28071985,-0.39318854,0.309669,0.0018471086,-0.49772733,-0.035861548,0.156975,-0.014822093],[-0.18374057,-0.45571524,-0.09747847,0.07835499,0.71659774,-0.95522517,0.26217383,-0.50928473,0.20344277,0.040699393,0.03725089,-0.14224511,-0.37767497,0.40781656,0.231836,-0.3131839,0.16274065,-0.08154563],[-0.0026246961,0.9705764,3.6681292,-0.3000036,-0.44400433,0.16176015,-0.41099662,-0.02601824,0.6407803,0.42456567,-1.0577953,0.48476946,0.20323749,-0.25966495,0.19856524,-0.14002256,-0.3655814,0.23497105],[0.010234776,-1.908564,-0.07929717,0.75593996,0.50410277,-1.43933,-0.60249954,-1.4044362,-2.1078866,-1.8422328,-0.08159568,-0.5587607,-0.7469554,0.5997705,-0.32854697,0.038176045,0.069803216,-0.09369286],[0.9902383,-0.13063963,-0.006834419,-0.00481643,0.19603567,1.0950303,-0.60231364,-0.26128826,-0.18049927,-0.24451904,0.4080662,0.18761696,-0.05200454,-0.23603702,-0.033294257,-0.26397884,0.005336438,0.10861761]],"activation":"σ"},{"dense_2_W":[[-0.12819418,-0.04965034,-0.019238193,0.548027,-0.31324998,-0.24846186,-0.71080023],[0.48580822,-0.4452061,-0.3211533,0.52164257,-0.2934621,-0.21353783,-0.5648211],[-0.046689708,-0.15082699,-0.101832494,0.57533866,-0.3347912,0.2058913,-0.032502484],[-0.4508244,0.53148896,0.68331164,-1.0367274,0.18762335,0.049984977,0.4796921],[-0.10827881,0.098909445,0.20143649,0.0621116,-0.09980022,-0.70837736,-0.24850541],[-0.23459274,0.3976682,0.74400216,0.07945248,-0.0918161,-0.36116856,0.36160964],[-0.3334947,-0.7710084,-0.63277185,0.45722532,-0.16698726,0.29963008,-0.40333414],[0.11296678,-0.55500394,-0.5733111,0.19517982,-0.14325383,-0.23166345,-0.026499728],[0.50150007,-0.38261527,-0.6961804,-0.25895122,0.30894667,-0.5299628,0.123440936],[0.7214627,-0.086619996,-0.38500652,0.52342546,-0.49543855,0.60024095,-0.007926223],[-0.12577087,-0.13799962,-0.6489934,-0.43941757,-0.5788901,-0.08122388,-0.21836436],[-1.039173,0.054396313,0.21242972,-0.7820335,0.25794864,-0.04855301,0.87666434],[0.5399379,-0.034065444,-0.23672304,0.35554442,-0.06592034,0.20189549,-0.34307384]],"activation":"σ","dense_2_b":[[-0.13632841],[0.048632354],[-0.15356292],[-0.122767694],[-0.10747351],[0.089311264],[-0.14307816],[-0.14580268],[-0.17635764],[-0.0041631833],[-0.09472099],[-0.12868434],[-0.12293586]]},{"dense_3_W":[[-0.23443374,-0.43379006,0.38643113,0.7170689,-0.31815973,0.7005203,-0.0989276,0.3470744,-0.09264834,-0.51163256,-0.15258677,-0.2910665,0.27302915],[0.28812635,0.20398347,0.22110644,-0.7146041,-0.27986667,-0.2958926,0.4361534,-0.012043313,0.31531844,0.467926,0.4048369,-0.29521784,0.3930137],[0.25268626,0.5656607,0.34994185,0.061901323,0.4205215,-0.66544545,-0.048824873,0.40229976,0.3616486,0.054331604,-0.57134205,-0.731286,0.493206]],"activation":"identity","dense_3_b":[[0.13606566],[-0.14437976],[-0.14025378]]},{"dense_4_W":[[0.3672289,-1.1880862,-0.3997548]],"dense_4_b":[[0.14610623]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144T xf1x891072xf1x82x0521G00807A1'.json b/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144T xf1x891072xf1x82x0521G00807A1'.json deleted file mode 100755 index 7a36f606d2..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN b'xf1x875Q0909144T xf1x891072xf1x82x0521G00807A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.406553],[1.1444793],[0.48023388],[0.04517182],[1.1198108],[1.1292706],[1.1378976],[1.1248115],[1.1107553],[1.0959218],[1.0747414],[0.04489478],[0.04499193],[0.04508163],[0.045316804],[0.045437645],[0.045486297],[0.045448944]],"model_test_loss":0.010464400053024292,"input_size":18,"current_date_and_time":"2023-08-05_03-20-24","input_mean":[[21.85032],[-0.06325212],[0.01593448],[-0.0067214244],[-0.0617676],[-0.062218133],[-0.062741525],[-0.052988674],[-0.046424996],[-0.036852293],[-0.026416903],[-0.006868046],[-0.006833722],[-0.0067935614],[-0.006550063],[-0.006349941],[-0.00603803],[-0.0058110217]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.1758758],[-0.02333589],[-0.9422901],[-1.8183272],[-2.0369716],[-0.0022337937],[1.0386317]],"dense_1_W":[[-0.016577989,0.8713441,5.688127,-0.3929182,-0.04865473,0.6506077,-0.28903118,0.36254203,-0.011359748,-0.80350965,-0.7413686,0.2852788,-0.180391,0.030887136,-0.24853921,-0.10783466,0.50824666,-0.06847572],[-0.0092391325,-0.21448685,0.03441581,0.110536866,-0.0051872088,-0.92594856,0.75064564,0.028740149,0.03222661,0.006082844,-0.101520896,-0.4111015,0.1091794,0.39225927,-0.2532579,-0.039659202,0.11658903,-0.053364333],[-1.3687131,-0.16632304,0.15804188,0.0037932456,-0.12444754,1.1138352,-1.0514365,-0.041139685,-0.25043303,0.26688784,-0.07053993,-0.37225965,0.32112512,-0.027879953,-0.051089693,0.14374797,-0.18620768,0.005694514],[-0.6469966,-1.5555854,-0.20889208,-0.5880108,0.4715537,-1.2139171,0.75022185,-0.16585363,-0.2956166,-0.15876539,0.14122242,0.035947774,-0.33897576,0.19888888,0.6707361,0.18586846,0.10368669,-0.28106293],[-0.657111,1.6010174,0.21602994,0.4263732,-0.06848571,0.5598709,-0.49075437,0.25268188,0.11085831,0.2158561,-0.10458329,0.24656911,-0.39565903,0.37622258,-0.67023623,-0.14563817,-0.02180011,0.20525338],[-0.026721686,-1.4577084,-0.026119402,0.5333309,0.38764423,-0.9197922,0.69576514,-0.31642672,-0.1339865,0.10481822,0.14266707,-0.6337337,0.012707174,0.26578203,0.16265541,0.17228846,-0.1989113,-0.10555704],[1.4377016,0.06603403,0.16708663,-0.15933846,0.11354903,0.99252284,-1.1596392,-0.35168508,-0.15729623,0.031751093,0.12479976,0.37379214,-0.23274498,-0.43550903,0.18850462,0.39560428,-0.2743065,-0.03711172]],"activation":"σ"},{"dense_2_W":[[0.13976535,-0.567236,0.72977924,-0.37755272,0.8387794,-0.6176494,-0.1588559],[-0.46564472,0.4264771,-0.77863467,0.6377271,-0.32651326,1.3463035,-0.59549373],[0.28558275,0.28753272,-0.4952516,0.7528485,-0.7717421,0.5046622,-0.77360827],[-0.96945935,-0.0453178,-0.6731784,0.21861276,0.0004108777,-0.5904792,0.046018012],[-1.2385854,0.6857041,0.36958358,0.8480664,-0.43229854,-0.010444919,-1.322231],[0.036224924,0.3547489,-0.8043728,-0.053537022,0.016718367,0.6929881,-0.30040604],[0.06862226,-0.259559,0.5140289,-0.7720217,-0.041946124,-0.51667583,-0.06930547],[0.9849274,0.889979,0.15711601,-0.24940383,0.5364856,0.5195277,-0.788271],[-0.02180253,-0.22045894,0.29244867,-0.09937624,0.62102586,-0.9813616,0.22756088],[1.0398556,-0.8574942,0.72217983,-1.5679595,0.9945934,-1.205857,0.5450476],[0.5572645,-0.56064814,0.49424344,-0.6622529,0.9019719,-0.7570887,-0.12037264],[-0.0053947666,-0.6394732,0.45090503,-0.25865456,0.5792981,-0.59776926,0.17400868],[-0.01624432,-0.8273978,0.76286685,-0.8753738,0.50364363,-0.188468,0.7102324]],"activation":"σ","dense_2_b":[[-0.094213076],[-0.007611653],[-0.09876658],[-0.20891039],[-0.34281158],[-0.024532793],[-0.36961433],[0.07229608],[-0.094220944],[-0.19420828],[-0.24400096],[-0.022362027],[-0.14466679]]},{"dense_3_W":[[0.35009202,-0.54889274,-0.6271456,0.3699252,-0.7306264,-0.040469803,-0.1333791,-0.34627312,0.48485342,-0.027413882,0.41518027,-0.20679481,0.6512874],[0.52266765,-0.75062644,-0.04478057,0.18780099,-0.42413864,-0.6919877,0.13284668,-0.4328708,0.10996859,0.4937182,0.5085866,0.6378642,0.523424],[-0.18289043,-0.62926316,-0.77449095,-0.5117072,0.27590525,0.27471027,0.27253544,0.13643086,-0.122853294,0.6343227,0.06519875,0.55697745,0.34692377]],"activation":"identity","dense_3_b":[[-0.00441717],[-0.0539032],[0.024021728]]},{"dense_4_W":[[0.27877802,0.706807,0.113575056]],"dense_4_b":[[-0.045484345]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567G6000800'.json b/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567G6000800'.json deleted file mode 100755 index a8aa9f68ea..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567G6000800'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.7607994],[0.9292432],[0.46292055],[0.044395123],[0.9189823],[0.92225415],[0.9265908],[0.9041406],[0.89363676],[0.8758474],[0.8587412],[0.044199012],[0.04426089],[0.044309698],[0.044270102],[0.044164237],[0.043878913],[0.043546345]],"model_test_loss":0.012919353321194649,"input_size":18,"current_date_and_time":"2023-08-05_04-11-04","input_mean":[[23.187113],[0.0015932432],[0.011463172],[-0.037785653],[0.0014130658],[0.002005605],[0.0032030009],[0.008243341],[0.012254494],[0.015819417],[0.020851867],[-0.037866723],[-0.03782731],[-0.037789218],[-0.037560076],[-0.037380483],[-0.037283257],[-0.037284937]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.3650206],[0.3503434],[0.049026404],[0.48147553],[-0.2179137],[-1.1410009],[0.35613173]],"dense_1_W":[[-0.0044370415,-0.088976935,0.09736069,0.13261136,-0.5935368,0.10521503,-0.8068187,-0.09207722,-0.15163152,-0.2225436,-0.56512666,0.64190215,0.6911761,-0.20394018,0.26521412,0.14738402,0.2390292,0.669949],[1.9099827,-0.20041782,0.06653255,0.04290131,1.081289,-0.07771372,0.5794198,0.055194955,0.3341548,0.12740795,0.00016614748,-0.01401175,-0.253479,0.3490117,-0.38425395,0.33906642,0.35481378,-0.3718989],[0.05287488,0.7134841,4.096453,-0.08065371,0.21688524,0.47354707,-0.46061245,0.13619322,0.7494003,-1.0308193,-0.90699166,-0.027265368,-0.0905294,0.0786151,-0.066612154,-0.21861951,0.6264546,-0.2477698],[0.49850515,-0.52765816,-0.02077531,-0.22489151,-0.06462903,-0.47247145,0.5355608,0.028485456,-0.11019967,0.13962062,-0.107459456,0.038771443,-0.23801842,0.5196211,0.15457287,-0.32410073,-0.018090906,0.15865909],[0.046214443,-0.64695966,-0.0069883303,0.25497442,0.20284595,-0.9400158,0.75683576,-0.27035123,-0.1531759,-0.27745956,0.27680025,-0.41793835,0.021180544,-0.06378223,0.15259326,0.23614758,0.19549917,-0.32855147],[-0.4081381,-0.5767889,-0.02048695,0.4837626,0.07757592,-0.59393334,0.50364584,-0.10654109,0.20280221,0.018726189,-0.1135464,-0.4784118,-0.17838266,0.2907484,0.2355112,-0.19352722,-0.16305554,0.076068975],[1.9215813,0.28210905,-0.07538363,0.33930507,-0.7474612,0.30265597,-1.1443635,-0.11762971,-0.41968435,-0.16676956,0.13010335,0.02262152,0.14194168,-0.5343928,-0.14601786,0.24347968,-0.24895756,0.15329723]],"activation":"σ"},{"dense_2_W":[[-0.97410744,0.3293568,-0.51517206,-0.3463321,-1.3647133,-0.86492306,0.36742914],[-0.38897687,0.48228312,0.33890837,0.44431418,1.3277258,0.16005625,-0.45875192],[0.02537137,-1.8192227,-2.2544084,-0.079543754,0.45377818,1.312974,-1.4039407],[0.19882208,-0.9093105,0.20501111,-0.87385803,-0.422892,-1.2277902,0.26516685],[-0.5868707,-0.1976348,-0.052873705,0.8127852,1.433916,0.6659879,-0.36126196],[-0.34342724,-0.59553665,0.40787566,-0.7651616,-0.49521706,-0.50139594,-0.44844094],[0.0324562,-0.030006122,-0.81495327,-0.08844059,-0.73199207,-0.9749751,0.193641],[-0.50183594,-0.53056437,-0.015531296,0.18623666,-0.09462893,-0.7861786,0.3987878],[0.38298038,0.19052242,0.19199069,0.044229858,-1.4711231,-1.2591913,0.59195024],[0.43198085,0.019489845,-0.22293438,0.16365366,0.32915708,0.86797434,-0.5055899],[-0.8588905,0.09965971,-0.15875271,-0.10829414,-0.3715543,-0.28131244,0.4689924],[0.4073162,-0.31107745,0.34453806,-1.0047082,-1.3331152,-0.3225261,-0.28392723],[-0.24590243,-0.5074513,0.45170495,-1.0937929,-0.29165098,-0.9534984,-0.44262615]],"activation":"σ","dense_2_b":[[-0.20421302],[-0.071595274],[-0.49483255],[0.08749108],[-0.27975222],[-0.030872881],[-0.04815583],[0.030535745],[0.12027835],[-0.10508093],[-0.19207817],[0.09736322],[0.057723336]]},{"dense_3_W":[[0.23816557,0.46098536,-0.6313008,0.7918219,-0.5916585,0.48531923,-0.27558136,-0.31984928,0.4619099,0.14357577,0.11340685,0.10802043,0.23884438],[0.3486614,-0.639459,-0.26902324,0.48187697,-0.6724132,0.48073167,0.26574108,0.25904334,0.53890723,-0.5283542,0.16785589,0.6735239,0.8907758],[-0.34013325,0.23225747,-0.83007133,0.5564732,-0.3356769,0.4536341,0.2693847,0.08861304,0.22285238,0.06831062,0.16584419,0.2606426,0.047501706]],"activation":"identity","dense_3_b":[[-0.010792147],[0.008722057],[-0.2345991]]},{"dense_4_W":[[0.14804278,1.4997839,0.04654937]],"dense_4_b":[[0.0038731655]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571G60533A1'.json b/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571G60533A1'.json deleted file mode 100755 index e409b82438..0000000000 --- a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571G60533A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.9746957],[0.74846905],[0.3776189],[0.03050829],[0.73187035],[0.7361276],[0.7414741],[0.73505235],[0.7348843],[0.72738355],[0.71373457],[0.03035072],[0.030408371],[0.030481495],[0.03054445],[0.030590964],[0.030465184],[0.030331135]],"model_test_loss":0.010437331162393093,"input_size":18,"current_date_and_time":"2023-08-05_04-35-32","input_mean":[[21.84806],[0.037775595],[-0.00015706694],[-0.021587897],[0.040338658],[0.039734323],[0.039004818],[0.040646035],[0.039115567],[0.03719198],[0.038230542],[-0.021592842],[-0.021576356],[-0.021578403],[-0.021549474],[-0.021593899],[-0.021818507],[-0.022061665]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0914413],[0.0015551149],[0.22065881],[-0.1891756],[-0.0135917235],[-0.038417384],[-0.022252519]],"dense_1_W":[[0.011237223,0.097167924,0.01444804,0.2124649,1.3246,0.31190768,0.7195392,0.8302937,0.22576901,0.45450732,-0.10925574,0.03514202,0.5961049,0.3985722,0.61802393,0.080905825,0.32926518,-0.25256667],[-0.02162882,2.0190244,5.799918,-0.14539114,-1.9311626,0.66446453,-0.11302035,0.1226316,0.6734189,0.16489778,-1.2370133,0.56925017,-0.12738787,-0.374375,-0.18332094,0.38210422,-0.45544025,0.283806],[-0.005536447,0.6118752,0.005302229,-0.35660002,-1.1228982,1.576737,-0.6586397,-0.06552918,0.1747147,0.03373086,-0.1062423,0.7913594,0.33732173,-0.76828235,-0.055734146,-0.2576106,-0.09492317,0.33747092],[0.011188102,-1.2844069,-0.0012297877,0.07251332,-0.095956035,-1.1642455,-0.28017807,-0.014453496,0.04811712,-0.47494012,-0.488219,-0.11300311,-0.44098395,0.07885455,0.16945864,0.42555395,-0.1273186,-0.15138112],[-0.007230606,-0.44893888,0.0066998103,-0.16217937,0.25698268,-0.87970287,0.6202854,-0.15496038,0.051418323,-0.038406387,-0.06764698,0.17037104,-0.27248234,0.2816981,0.18553548,-0.33725816,0.08385291,0.045085847],[0.00084464176,-0.54823476,-0.0034105896,0.26671872,-0.015223509,-0.9550469,0.6014387,0.025267186,0.13067198,-0.43440172,0.20197645,-0.44261578,-0.16689432,-0.023613267,0.7486101,-0.19077903,-0.2137139,-0.02373193],[-0.030234346,-0.13823445,-2.021196,0.2427088,-0.07732753,-1.0305628,0.04975273,-0.1942112,-0.12176859,1.0165497,1.224236,-0.5657689,0.1795685,-0.1477603,0.30288523,-0.0046483153,0.2759976,-0.32901245]],"activation":"σ"},{"dense_2_W":[[0.083859816,0.933766,1.0253052,-0.7105447,-0.9955442,-0.8595731,-0.21401848],[0.25676674,-0.2483161,-0.51074135,-0.31487563,0.7560016,0.6237004,-0.36207017],[-0.45140705,-0.555112,-0.32009697,0.2014101,-0.14508359,-0.7487613,-0.5627604],[-0.052259363,-0.27644405,-0.56982166,-0.22415726,-0.08912631,-0.3108934,-0.07020982],[-0.30388612,-0.282844,0.6231819,-0.1827591,-0.8701069,-0.1363012,-0.06061468],[0.42716765,0.14838749,-0.77454436,-0.08531688,0.5431199,-0.33343503,0.47535864],[-0.29570216,0.054118063,0.8065188,-0.5626743,-0.58843243,-0.2626986,-0.13115627],[-0.16683827,0.01042097,-0.6624693,-0.16589774,-0.064373836,0.67642355,0.30223835],[-0.3474019,0.1442944,-0.24758828,-0.12841912,0.015519108,-0.8910641,0.26689053],[0.015551913,0.25193524,-0.28172082,-0.35587707,0.7043338,0.18275745,0.33005205],[0.1932851,0.3542477,0.49002793,-0.33909148,0.05432396,-0.86836,0.086581126],[0.35653573,0.041390643,-0.34532556,0.07281016,0.62669814,-0.24314882,0.41167533],[-0.19783325,0.031141564,-0.33750173,0.097428255,-0.43643403,0.22732346,0.46779665]],"activation":"σ","dense_2_b":[[0.3251711],[0.03284726],[-0.2276918],[-0.27249786],[0.07225366],[-0.064165816],[-0.052187826],[-0.040996723],[-0.27600503],[-0.027009819],[-0.094922386],[-0.079575196],[-0.04894184]]},{"dense_3_W":[[0.5707442,0.06543564,-0.41911805,-0.4872908,0.30000013,-0.5824054,0.31254762,0.37488416,-0.03498339,-0.31771377,0.49000293,-0.547452,-0.31576237],[-0.08784592,0.36186367,-0.35686487,-0.21170178,-0.28615108,0.6641257,0.09387274,0.36688283,-0.31936723,-0.52464163,-0.24194345,0.13221104,-0.044297554],[0.6223347,-0.6184397,0.5959415,0.56463706,0.57754964,0.3649079,-0.118873656,-0.58997124,-0.048462644,-0.46443146,0.43778852,0.10792423,0.27066556]],"activation":"identity","dense_3_b":[[-0.033067573],[0.030761039],[-0.045770094]]},{"dense_4_W":[[1.1994555,-0.36797908,0.91548634]],"dense_4_b":[[-0.03687687]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN.json b/selfdrive/car/torque_data/lat_models/AUDI_A3_MK3.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/AUDI A3 3RD GEN.json rename to selfdrive/car/torque_data/lat_models/AUDI_A3_MK3.json diff --git a/selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN.json b/selfdrive/car/torque_data/lat_models/AUDI_Q3_MK2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/AUDI Q3 2ND GEN.json rename to selfdrive/car/torque_data/lat_models/AUDI_Q3_MK2.json diff --git a/selfdrive/car/torque_data/lat_models/BUICK LACROSSE 2017.json b/selfdrive/car/torque_data/lat_models/BUICK_LACROSSE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/BUICK LACROSSE 2017.json rename to selfdrive/car/torque_data/lat_models/BUICK_LACROSSE.json diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EV NO ACC.json b/selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EV NO ACC.json deleted file mode 100755 index 0558edf3a8..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EV NO ACC.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8204904],[1.1288383],[1.3588161],[0.03592331],[1.0998698],[1.1152987],[1.1261423],[1.0726436],[1.0445082],[1.0255826],[0.9991902],[0.035928443],[0.03594955],[0.035947755],[0.035830557],[0.035794962],[0.035545427],[0.03522763]],"model_test_loss":0.013521275483071804,"input_size":18,"current_date_and_time":"2023-08-31_20-20-29","input_mean":[[21.15819],[-0.07168204],[-0.011260089],[-0.009422209],[-0.05070435],[-0.059720647],[-0.06839208],[-0.058936212],[-0.056256358],[-0.04905059],[-0.043772068],[-0.009612985],[-0.0095514655],[-0.009495763],[-0.009358192],[-0.009470251],[-0.009541206],[-0.009760213]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.14674146],[-0.13742483],[-0.22120655],[-4.8659616],[0.37734386],[0.0043874597],[0.0011968147]],"dense_1_W":[[-0.008038606,0.36823353,0.13374972,-0.121557444,0.8109894,0.1619341,-0.27322704,-0.5143952,-0.13323402,-0.28316674,0.41146618,0.069739744,-0.05502182,-0.16582587,-0.03316632,0.15212743,0.63178277,-0.47640973],[0.00472655,5.34618,2.1071396,-0.27966323,-3.491801,-4.7198477,-0.9055106,3.4698536,0.36450383,0.52648926,-0.9086405,0.34823787,0.17502202,0.17913261,0.5389167,-0.95546067,-1.1175836,1.1106054],[-0.0044299415,0.17029423,-0.07841701,-0.13078262,-2.5494642,-1.063504,-0.3024431,1.9482937,3.7423036,1.9179893,-2.4140003,-0.19327636,-0.11139729,0.8710235,0.80850005,-0.5346497,0.122894056,-0.8393351],[-3.4416573,0.2720535,-0.036259558,-0.13027346,0.13627039,-0.30027944,0.2926907,-0.53764284,-0.08440139,-0.01651856,0.15396604,0.15355577,-0.04698026,-0.14798953,0.14998728,-0.3586781,0.75842935,-0.37555856],[-0.29392308,-4.2560554,0.054719303,0.40846434,-2.129364,-3.1015625,-3.853146,-3.1836767,-2.180161,-2.0388255,-2.4251742,0.03920686,-0.38703024,0.41823363,-0.019605622,-0.5604943,0.22793195,0.0057709315],[-0.002196624,5.8481355,-0.09095744,-0.015489594,-2.612487,-1.536748,0.06610644,2.500532,0.4939543,-0.63674825,-0.8083325,-0.26766282,-0.16603528,0.10459684,-0.6615658,-0.78105426,-0.5034555,0.9925575],[-0.013433307,-0.20619735,-0.15958488,-0.25665176,1.9273874,1.1793138,-0.34153762,0.061601996,-0.73064274,0.42999524,0.5411453,0.031738162,-0.11005042,-0.7472006,-0.14436004,0.4244081,-0.2877388,0.18756717]],"activation":"σ"},{"dense_2_W":[[-0.67943275,-0.24000154,-0.13848315,0.30882534,-0.01988677,0.0654716,-0.14717165],[-0.55921,-0.0072287056,-0.21438314,0.13855484,-0.18693337,0.091503285,-0.6234959],[0.29719043,0.34836015,0.31882486,2.2765832,-2.8485565,-0.13084944,0.18394771],[0.09499309,0.20721479,-0.22826056,-0.5555067,0.4858052,-0.297806,-0.7479107],[0.7698728,-0.12123032,-0.32042873,0.64103067,0.29181543,0.35124788,0.3626909],[-0.7722087,-0.0970277,-0.66611034,0.8990095,0.008845325,-0.2853908,0.096749336],[-0.056676403,0.10399554,0.07880596,0.15535226,-0.29964685,0.20662634,0.747629],[-0.45565298,-0.61348987,-0.3170684,0.66529834,0.20692064,0.1784706,-0.52314126],[0.07283485,-0.041357554,-0.5544705,0.029298512,-0.07259363,0.12714466,-0.4060869],[-0.6921391,-0.28740877,0.16838852,0.34705403,0.5441259,-0.56957257,-0.23424709],[0.5224591,0.08929995,-0.3917331,0.77703923,1.2387965,0.4035521,0.038004678],[-0.21601413,-0.27209452,-0.006628554,0.26490286,-0.48555186,-0.14057891,-0.23594409],[0.025565607,-0.1843107,-0.74081415,0.21653186,-0.20180094,-0.1775718,0.2597312]],"activation":"σ","dense_2_b":[[-0.11495718],[0.029644735],[-1.5003729],[0.0062865904],[0.063854754],[0.043472946],[-0.03168991],[-0.05123685],[-0.21858792],[0.11300286],[-0.04152576],[-0.09974841],[-0.10666013]]},{"dense_3_W":[[-0.46642318,0.29889506,0.0647746,0.031128142,-0.5190028,-0.2265485,-0.12124089,0.15220042,0.1487402,0.09831015,0.57098764,-0.353228,0.45436162],[0.24007116,0.43487012,-0.43202627,0.39710402,-0.47436452,0.5207094,-0.44189987,0.55030584,-0.002478384,0.49253044,-0.40208483,0.25778514,0.05400483],[0.40668672,-0.80624264,0.49121335,0.28858688,0.4708336,-1.031162,-0.12058632,-0.4919157,-0.0032738608,-1.1038178,0.59533536,0.42121547,-0.42830208]],"activation":"identity","dense_3_b":[[-0.09258446],[-0.10893599],[0.048807696]]},{"dense_4_W":[[0.013993477,-1.1382563,0.45117924]],"dense_4_b":[[0.10757936]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET EQUINOX NO ACC.json b/selfdrive/car/torque_data/lat_models/CHEVROLET EQUINOX NO ACC.json deleted file mode 100755 index 00a68d269b..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHEVROLET EQUINOX NO ACC.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.534294],[1.5504998],[1.4046903],[0.029573984],[1.5927145],[1.578906],[1.564156],[1.5118331],[1.493684],[1.4678634],[1.4253669],[0.02943281],[0.029483505],[0.029535847],[0.02967169],[0.029826282],[0.03000203],[0.030046586]],"model_test_loss":0.02003631368279457,"input_size":18,"current_date_and_time":"2023-08-31_20-50-28","input_mean":[[20.131113],[0.009686473],[0.06975938],[0.0023475066],[0.0038891183],[0.0060874033],[0.008401226],[0.013517541],[0.01840766],[0.0266773],[0.02453028],[0.0023093733],[0.002328295],[0.0023440488],[0.0024961669],[0.0025724813],[0.0024677413],[0.0023574075]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.0288644],[0.10457083],[-3.9555483],[0.1691402],[-0.012094571],[-0.0782635],[-0.2598278]],"dense_1_W":[[-2.1827135,1.6132607,-0.9255983,0.116717376,-1.8178183,-0.54029983,0.33489665,0.56080383,-0.22747517,-0.5733255,0.5044412,-0.2292483,0.043896638,0.08075467,-0.28934216,0.17338042,0.0033520209,0.10574474],[-0.03214852,1.3043286,1.787647,-0.19292493,-1.496456,-1.6432034,-1.0122085,0.6772478,0.9241051,2.137595,1.1481318,0.7382223,0.24003813,-0.26050806,-0.28489965,-0.055436503,-1.5187881,0.5395662],[-2.130688,-2.4082897,0.8946516,1.182773,1.0356439,1.0627962,0.681919,-1.07377,0.9514841,0.2902732,-0.51102746,-1.0186149,0.06007755,0.55835754,-0.8702267,-0.27547133,1.1577551,-0.79220283],[0.048019372,0.56005365,0.090563335,0.04659274,-0.3400944,0.08129445,0.079794005,1.6712024,0.37665895,0.92944545,-0.818461,1.0755452,0.03035464,-0.7417196,0.46747556,-1.7863483,0.1933551,0.6655417],[0.010540867,-2.1044421,0.123707764,0.19983652,-0.3400125,0.042333197,-0.14189881,-0.15991694,1.1688339,0.89001805,-1.0717757,-0.12767468,-0.23459645,0.55075175,0.08273279,-1.410371,-0.11742753,1.0628744],[-0.0035597957,3.3175247,-0.08206834,-0.41877395,-2.3628318,-0.3887815,0.33513132,1.0517763,1.3315583,-0.45716277,-0.83998686,0.038495045,-0.29630885,-0.5393306,0.004715303,-0.3557685,-0.0024815162,0.5117863],[-0.06787126,-1.0245934,0.846602,0.76652443,-3.6147707,-3.2961829,-3.046585,-2.334436,-2.2018268,-2.0479157,-2.1753612,-0.3235234,0.3021576,0.6696055,-0.5296955,-0.34782553,-0.6869261,0.61321783]],"activation":"σ"},{"dense_2_W":[[0.64928615,0.2816972,-0.8923362,0.39578387,-0.61536825,0.81299543,0.32944572],[-3.469548,-0.088318504,4.506985,1.7126206,-0.54613674,1.1776173,-1.3406864],[-0.16514356,-0.18710926,-0.049463313,-0.74177825,-0.89867437,-0.12767266,-0.41532612],[0.3880128,0.14577644,-0.22068585,0.47859693,-0.3810993,0.21953157,-0.28429258],[0.09226449,-0.31862667,-0.7718878,-0.3926271,0.39786428,0.24407528,0.50177044],[0.67237484,0.12668592,-0.30338138,-0.625696,0.26677904,-0.40067798,-0.32989067],[0.55108297,-0.46753818,-0.2422762,-0.32914385,1.0277789,-0.21390574,-0.51578075],[-0.6387295,0.087801814,0.4115124,0.19489816,-0.50232434,0.88593876,0.04993241],[-0.0012766474,-0.39255276,-0.43439093,0.5811583,0.04147405,0.39352056,-0.2983913],[0.5312808,-0.46965963,-0.2202195,0.022353612,0.9100419,-0.7610306,-0.045171853],[-0.4153422,0.25298238,-0.16235219,0.6847717,-0.24125478,0.12481583,0.17123348],[0.019955412,-0.049374487,-0.028301261,-0.1474805,-0.99081236,0.46832514,0.04314314],[-0.060847353,-0.4487362,0.11238633,-0.2315336,0.61632276,-0.037449174,-0.31603873]],"activation":"σ","dense_2_b":[[-0.0784909],[-0.78942764],[-0.15396598],[-0.0694357],[0.42111325],[0.13395377],[0.13471761],[-0.2390017],[-0.10127865],[0.021352982],[-0.10597191],[-0.0495153],[0.08049109]]},{"dense_3_W":[[-0.5803282,-0.4269681,-0.29210615,-0.35849357,0.6151693,0.4374335,0.33656615,-0.38959798,-0.124871194,0.80708337,-0.2547417,-0.4598867,0.28997138],[-0.024669895,1.1817242,-0.08351745,-0.24313891,-0.31439584,-0.25903952,-0.07882097,0.5553487,-0.3152985,-0.31680647,-0.116309114,0.010063961,0.2913986],[-0.43385702,-0.37067002,0.0936241,0.23112701,0.11643858,-0.15334345,-0.003450505,0.18969658,0.37703827,-0.25617403,0.11559996,-0.19988349,0.1828592]],"activation":"identity","dense_3_b":[[0.098078996],[0.0034752209],[0.008636777]]},{"dense_4_W":[[-0.73048496,0.39407238,-0.07285802]],"dense_4_b":[[-0.09288416]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET SUBURBAN PREMIER 2019.json b/selfdrive/car/torque_data/lat_models/CHEVROLET SUBURBAN PREMIER 2019.json deleted file mode 100755 index 1383fdf7f9..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHEVROLET SUBURBAN PREMIER 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.0000353],[0.91031396],[1.269469],[0.0315604],[0.9563133],[0.95031977],[0.9356424],[0.873496],[0.8912867],[0.8935701],[0.96191794],[0.031832103],[0.031727515],[0.031619374],[0.03170114],[0.03179356],[0.031944003],[0.03203715]],"model_test_loss":0.025683574378490448,"input_size":18,"current_date_and_time":"2023-08-31_22-32-43","input_mean":[[27.019146],[0.2162388],[-0.102987334],[-0.016973253],[0.2426502],[0.23661843],[0.22663806],[0.18541981],[0.17368032],[0.14804864],[0.09238692],[-0.017235657],[-0.017166195],[-0.017074104],[-0.016875083],[-0.016880676],[-0.017125089],[-0.017351476]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.23588695],[-0.5088953],[1.5173167],[0.21325926],[0.7270255],[1.0430372],[-2.1749456]],"dense_1_W":[[-0.00035987928,1.4975938,2.03412,-0.83676016,-5.5800395,-1.7383903,-0.18633558,6.249567,0.15692733,1.1870492,-1.8389847,0.8397649,0.41889027,0.19991927,-0.71028113,-0.42742363,-0.01929488,0.56470984],[0.1451778,-0.42022082,-0.08357744,0.37352008,0.13762045,-0.513736,0.19210075,-0.99654514,0.07671047,0.3092085,-0.09438795,-0.7692168,-0.05790273,-0.019019479,0.68036485,-0.3681197,0.042775016,0.113177255],[0.17934947,0.6802453,0.53991216,1.2953564,0.36064458,-2.232729,-1.3662916,9.39327,3.2034888,0.82174385,-3.8604288,-0.059266165,0.23885792,1.2206435,-0.037034295,-1.0659415,-1.2380418,-0.38709572],[-0.63551307,0.14085051,-0.058989003,-0.096907504,-0.08637354,-0.9568107,-0.203569,0.09172185,-1.7067626,0.23453063,0.40079904,-0.33019188,-0.14800894,0.4674501,-0.058009204,-0.3754687,-0.10436635,0.64636946],[0.33742648,-0.36501276,-0.034292817,-0.51860994,-1.3856511,-1.5455489,-1.0439808,-0.75624853,-1.0810176,-0.5734188,0.55518353,-0.80131483,-0.6185672,-0.28676248,-0.104135,-0.62493587,-0.8962451,-1.5516719],[0.43760708,-1.6991494,-0.03338309,-0.96213526,0.00956474,-1.2663416,-1.9227605,-3.5994406,0.26717234,1.618855,-0.69799376,-0.3365453,0.08994935,0.16855639,-2.0510433,-1.3217996,-1.0182589,-0.993361],[0.38308197,-1.8382412,-0.15014274,0.11305897,1.90282,-0.91276294,-1.8583714,-2.2861354,-1.0779126,-2.9923978,-2.1958616,-0.40794706,-0.3506177,0.21085607,0.39614698,0.46702477,-0.1904523,-0.28659886]],"activation":"σ"},{"dense_2_W":[[-0.13722074,0.17729984,-0.24335465,0.24187207,-0.14201832,-0.07732416,0.13892417],[-0.4686111,0.30702016,-0.15520222,0.2413592,-0.06519562,-0.02441734,0.05019473],[0.79214656,-0.7921441,-0.6606072,0.055532016,-0.11311045,-0.08024592,-0.0085274875],[-0.25042439,0.21615438,0.4954985,0.0046605244,-0.4504836,-0.13616334,-0.39802498],[0.49501747,-0.8520829,-0.74666256,0.59406155,-0.3424727,-0.42375195,-0.056689456],[0.09918636,-0.27861944,-0.06896329,0.07916021,0.39362162,-0.3197992,-0.38495535],[-0.44832206,0.775501,-1.5508496,-1.2964923,0.2656348,0.73607206,0.102380335],[-0.12338452,0.45182562,0.15285002,0.36166486,0.106165096,-0.44855922,0.26180896],[1.468655,-2.9420528,1.1340134,-1.8203074,-1.8435699,1.8503501,-0.6241417],[0.11571435,0.44641992,0.5466342,0.460799,0.34136263,0.118771955,0.03079372],[-0.89526504,0.4808293,-0.020656256,0.23367782,0.24296117,0.14677529,-0.17654741],[0.48179916,-0.9906037,-0.5923862,-0.4594782,-0.35988396,0.8058588,-0.045400906],[0.5093772,0.44455037,0.17609815,-0.81010824,-0.7701845,-0.67883664,-0.105422966]],"activation":"σ","dense_2_b":[[-0.016313186],[-0.23423415],[-0.11555125],[0.031153541],[-0.008395348],[-0.05427732],[0.04926095],[-0.03232725],[1.3587319],[0.039414253],[-0.2525624],[0.069728516],[-0.1901692]]},{"dense_3_W":[[-0.40749985,-0.48021835,0.56590366,0.18960631,0.38889936,-0.016490487,0.2452584,-0.49623072,0.38123888,-0.64162004,-0.4950841,-0.28877184,0.033746734],[-0.42167312,0.4292303,-0.117614456,-0.051768117,0.051334534,0.5342065,0.5592815,-0.093919486,0.65363497,-0.43596736,0.16242468,0.2578982,-0.2107315],[0.3909801,0.0338481,0.17298904,-0.6669294,0.66819596,0.5040033,-0.11421765,0.24396016,0.58365494,-0.4551556,0.13173825,0.29966846,-0.28813577]],"activation":"identity","dense_3_b":[[-0.039529935],[-0.049995966],[-0.054298006]]},{"dense_4_W":[[0.5930795,0.46760607,0.73884505]],"dense_4_b":[[-0.046037514]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EUV 2022.json b/selfdrive/car/torque_data/lat_models/CHEVROLET_BOLT_EUV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHEVROLET BOLT EUV 2022.json rename to selfdrive/car/torque_data/lat_models/CHEVROLET_BOLT_EUV.json diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET SILVERADO 1500 2020.json b/selfdrive/car/torque_data/lat_models/CHEVROLET_SILVERADO.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHEVROLET SILVERADO 1500 2020.json rename to selfdrive/car/torque_data/lat_models/CHEVROLET_SILVERADO.json diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET TRAILBLAZER 2021.json b/selfdrive/car/torque_data/lat_models/CHEVROLET_TRAILBLAZER.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHEVROLET TRAILBLAZER 2021.json rename to selfdrive/car/torque_data/lat_models/CHEVROLET_TRAILBLAZER.json diff --git a/selfdrive/car/torque_data/lat_models/CHEVROLET VOLT PREMIER 2017.json b/selfdrive/car/torque_data/lat_models/CHEVROLET_VOLT.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHEVROLET VOLT PREMIER 2017.json rename to selfdrive/car/torque_data/lat_models/CHEVROLET_VOLT.json diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68288891AE'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68288891AE'.json deleted file mode 100755 index a3d545654f..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68288891AE'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.373018],[0.9030777],[0.5074704],[0.04613504],[0.88142586],[0.8866381],[0.89388347],[0.8932321],[0.8819763],[0.8731947],[0.8590319],[0.045989916],[0.0460441],[0.0460619],[0.045975763],[0.045940377],[0.045967344],[0.045802947]],"model_test_loss":0.015751762315630913,"input_size":18,"current_date_and_time":"2023-08-05_06-59-32","input_mean":[[24.77125],[-0.0032338882],[0.0011955422],[-0.006900902],[-0.0038386101],[-0.0039004202],[-0.0042313747],[-0.0024037024],[-0.00096440193],[0.0012867558],[0.0017196954],[-0.0071007432],[-0.00707776],[-0.00704705],[-0.006997249],[-0.0070410697],[-0.007170475],[-0.0072323773]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.6144774],[-0.611369],[0.06358977],[0.3156127],[0.8767984],[3.4156723],[0.003413344]],"dense_1_W":[[-1.6343578,-1.049992,-0.0069447346,-0.07656319,0.9073908,-0.4678912,0.71257806,0.1714419,-0.26281458,-0.35347363,-0.3895179,0.44868368,0.380276,-0.39410144,-0.2020346,-0.5423825,0.033040486,0.34113047],[0.061624493,-0.82921517,-0.01718619,0.5021635,0.38075656,-0.9557198,1.0850599,-0.040632535,-0.06843774,-0.057645954,0.08296408,-0.80168,-0.18512976,0.29119503,0.110343546,0.41180205,0.12086572,-0.41889068],[-0.010757727,0.5473467,0.011401861,0.6086944,0.049230263,0.99673975,-1.3204706,0.28527504,0.3079167,-0.08217005,-0.11085929,-0.020257747,-0.23550712,0.24950017,-0.5063016,-0.26893258,0.0859618,0.10826616],[0.00026013076,0.23115467,-0.069196984,-0.75177777,0.22679992,1.7333206,0.07338034,0.116831884,0.0074134893,-0.018370198,0.30970082,-0.50682133,-0.19027503,-0.6724099,-0.18199274,0.13397577,0.164965,-0.20918545],[-0.20541261,-0.5444166,-0.021420065,-0.3442164,0.057785954,-0.30310464,0.30055538,-0.1295605,-0.19352978,0.24066639,-0.042200003,-0.36956027,-0.02677732,0.31982243,0.6093545,-0.115526475,0.1776776,-0.22874752],[1.5681508,-0.8700428,-0.003696639,0.28922054,0.5389638,-0.2202644,0.91082454,0.17935306,-0.5075993,-0.52194244,-0.18601756,0.29824322,0.11232214,-0.089093655,-0.6800216,-0.10418546,-0.23698366,0.39502653],[0.0059208865,1.0288696,6.2661505,-0.66229445,-1.1125858,-0.38614404,-0.32643217,0.47949737,1.3503966,0.5618509,-1.4472144,0.6179492,0.65568125,-0.07885619,0.13408393,-0.21204486,-0.24597093,-0.19171685]],"activation":"σ"},{"dense_2_W":[[-0.6874904,1.4170951,-0.12745337,-0.60079765,1.2469791,1.1586337,-0.78649855],[1.2081319,0.90333015,-1.1146795,-0.48159444,-0.3649141,-0.17463505,-0.6678926],[-0.55214715,-0.34822515,0.66485703,0.39923072,-0.12463221,0.08416195,0.28940073],[-0.050559178,-0.5941852,0.69570416,0.4125025,-0.4354757,-0.7011088,-0.16208832],[1.1914842,0.6823764,-1.2257708,-0.15821911,0.2223274,-0.7032655,-0.848314],[1.6538767,1.1209396,-1.2886561,-0.4070121,-0.115177,-0.8090923,-0.81735224],[0.22016695,-0.7717329,-0.11587681,0.21162826,-0.92120653,-0.97903466,0.43579248],[0.56604755,0.37791598,-0.20845827,0.09919322,-0.30082363,-0.038313784,0.5362454],[-0.68821806,-0.49654222,0.9537832,0.65139836,-0.11693425,0.14916053,-0.06942568],[0.046630222,-0.8000676,0.7262631,0.11821005,0.051495228,-0.85939616,0.057547066],[0.53842676,0.48920274,-1.0697515,-0.08906106,-0.111993946,0.0057545984,-0.07658284],[0.6831117,-1.0648286,0.68546003,0.0413394,-0.80540425,-1.5328187,0.56354785],[0.16279308,0.67666584,-0.6573683,-0.31834096,0.037058678,0.16600053,-0.30611348]],"activation":"σ","dense_2_b":[[0.18475154],[-0.5353296],[0.0045686276],[0.0644243],[-0.34292984],[-0.44532895],[-0.15199955],[-0.039516825],[-0.0066641783],[-0.121129245],[-0.30155125],[-0.13434392],[-0.20536488]]},{"dense_3_W":[[0.5609779,0.41182333,0.09668643,-0.11169122,0.65781176,-0.20218727,-0.20579323,-0.39217472,-0.1875857,0.07013257,-0.14129624,-0.8516521,-0.4181056],[0.17330131,0.5577742,-0.41269195,0.3908688,-0.28000897,-0.4038982,-0.7611636,-0.17782487,0.4776658,0.10774335,-0.63901216,0.07952478,0.30694935],[0.6155099,0.32474285,-0.5803224,-0.57116944,0.52884084,0.5404638,-0.44095984,0.5225624,-0.6491606,-0.3627888,0.35069153,-0.8106001,0.3223117]],"activation":"identity","dense_3_b":[[-0.08286718],[-0.068888254],[0.0319719]]},{"dense_4_W":[[-0.13953766,0.008684733,-0.9822762]],"dense_4_b":[[-0.035473026]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68378884AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68378884AA'.json deleted file mode 100755 index c7ee2877a3..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018 b'68378884AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.4114137],[0.8722323],[0.46932527],[0.044081252],[0.86028934],[0.8640826],[0.86798763],[0.8536187],[0.8410519],[0.82815075],[0.810109],[0.044043],[0.04407502],[0.04409199],[0.043937493],[0.043765776],[0.043546446],[0.04328152]],"model_test_loss":0.014643135480582714,"input_size":18,"current_date_and_time":"2023-08-05_07-24-40","input_mean":[[24.419659],[0.074539855],[-0.0017381747],[-0.008417752],[0.07829621],[0.077322125],[0.07638317],[0.07649018],[0.07914126],[0.07727339],[0.07422926],[-0.008268176],[-0.008305934],[-0.00833634],[-0.0085348915],[-0.008592072],[-0.008777455],[-0.008993609]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.6179284],[0.023280667],[-0.08620803],[0.06128514],[0.02275239],[-0.18200094],[1.8732487]],"dense_1_W":[[1.1412842,-0.65644145,-0.021648865,0.20894393,0.11492929,0.024267908,0.52723205,0.019462796,-0.47829676,-0.16443051,0.17201795,0.42243433,-0.36430183,0.22046827,0.32417053,-0.18519317,0.080741584,-0.16006538],[-0.005015809,-1.0202065,-5.871842,0.71349776,1.488136,0.45296022,0.71639055,-0.3002113,-2.253665,-0.42296624,1.242773,-0.7964674,-0.9905283,0.2496325,0.61510533,-0.15485354,0.21373129,0.04878167],[-0.010342299,-0.39523616,0.046641767,-0.24375893,-0.06735964,-1.2132907,0.37299547,0.3911464,-0.25198907,0.3312644,-0.34782395,-0.48724928,0.29790998,0.35056496,-0.0473569,-0.43243703,0.6975423,-0.29797408],[-0.00034046813,0.5919114,0.09751131,-0.5365073,-0.27980977,0.6561016,-1.3969619,0.7704919,0.22894996,0.1283786,-0.47947106,0.7656381,-0.072749116,-0.22385994,-0.35181323,-0.12690988,0.14871003,0.11680299],[-0.013497786,0.45467585,4.8478483e-5,-0.03120461,-0.101532854,1.0691814,-0.8467964,-0.021295521,-0.45961225,0.59129924,-0.089904785,0.008552424,0.18295166,0.22167599,-0.15085436,-0.24900465,-0.119021356,0.22574107],[-0.008662208,-0.63313335,0.018632747,0.3784552,0.43672615,-1.0928847,0.454874,0.19710287,-0.28992844,0.23891906,-0.09657884,-0.4631879,0.07360768,0.18814832,-0.12545085,0.2790517,0.08361877,-0.19971517],[1.1187938,0.60673416,0.01786017,-0.09599037,-0.13338761,0.18924287,-0.71290374,0.25608516,0.055396356,0.32042313,-0.14714265,0.16070165,-0.44769058,-0.3857691,0.32144114,-0.2591744,0.04301578,0.12334804]],"activation":"σ"},{"dense_2_W":[[-0.82576907,-0.44307485,-0.5584657,-0.26069835,0.025256865,-0.22589661,-0.30988473],[0.5059596,0.51916337,0.37335545,-0.78297406,-0.5575328,0.4401032,0.58699924],[0.11900411,0.11446233,0.19891147,-0.46948108,-0.9270995,0.35623828,-0.6453305],[0.19260314,0.21158606,-0.80488014,0.1861143,-0.40799478,0.14247413,-0.47271043],[-0.017787304,0.20611304,0.4156514,-0.61586165,-0.94270116,0.66989255,-0.67521656],[-0.31637055,0.20475076,0.49659994,-0.8381352,0.3070665,0.29303974,0.3692397],[-0.24042161,0.14646454,0.4807689,-0.38160017,-0.11857776,0.52430975,-0.6127423],[-0.65716666,-0.05448026,-0.08932297,0.44863978,0.6453178,-0.8167935,0.32415792],[-0.97310895,-0.9338679,-0.55535233,0.95583254,0.7763494,-1.2186505,-0.56390756],[-0.756582,0.030662287,-0.5920601,0.26177648,0.0058387904,-0.79189116,0.22250274],[-0.32252684,0.052682888,0.22795783,-0.22263758,0.1424579,-0.4165235,0.082806356],[-0.5069151,0.230296,-0.7718149,0.86378086,0.6413413,-0.7768083,0.09442894],[0.7895166,-1.1067913,-0.9261671,1.5575143,0.72259814,-0.71757495,1.2043413]],"activation":"σ","dense_2_b":[[-0.25221804],[0.009360817],[-0.21046683],[-0.30669668],[-0.19557822],[-0.051661972],[-0.010102212],[-0.07111588],[-0.024985338],[-0.20747323],[-0.070582196],[-0.024536485],[0.429603]]},{"dense_3_W":[[-0.05159049,0.4616699,0.31688318,-0.35587642,0.10358843,0.23453818,0.62690145,-0.17403877,-0.34668615,-0.2585309,0.042846948,-0.64290446,-0.66602695],[0.25770965,-0.6448781,-0.1178888,0.02731388,-0.62877536,-0.4874037,-0.16834061,0.3735322,0.6264744,0.23036048,0.57248384,0.0652369,0.033351496],[0.08815916,-0.34792545,-0.33370885,0.6393934,0.23722698,-0.3480035,0.47185498,-0.6307859,-0.080584675,0.27943882,0.40409383,-0.10291437,0.25641736]],"activation":"identity","dense_3_b":[[0.06215998],[-0.043686442],[0.044486612]]},{"dense_4_W":[[-1.0976462,0.4308298,-0.47021297]],"dense_4_b":[[-0.056185924]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68416742AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68416742AA'.json deleted file mode 100755 index 2614d74873..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68416742AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.639734],[0.85540456],[0.51403534],[0.0358391],[0.8370467],[0.8427152],[0.8486273],[0.84191525],[0.8333683],[0.81845397],[0.8031892],[0.03569495],[0.03575506],[0.035804357],[0.035734106],[0.035606634],[0.035394073],[0.035043836]],"model_test_loss":0.01249884907156229,"input_size":18,"current_date_and_time":"2023-08-05_08-42-51","input_mean":[[28.944149],[0.008511811],[0.006614594],[-0.0007803046],[0.008761563],[0.008401991],[0.0077602137],[0.010470908],[0.011851343],[0.013133246],[0.012414774],[-0.00091107877],[-0.00089483795],[-0.000888365],[-0.0009297467],[-0.00096828357],[-0.0011469029],[-0.0011704979]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.42215475],[-0.13067937],[-0.97678196],[0.032708973],[-0.21987508],[-0.13514404],[-0.035059012]],"dense_1_W":[[0.21781056,-0.33137965,-0.021430474,-0.025393143,0.41623712,-0.85452425,0.5125608,-0.028942296,-0.25001037,0.1056078,0.02808124,0.07531937,-0.1905481,0.16195467,0.12945747,0.20600978,-0.26016086,0.06601578],[0.45804447,0.39586294,0.016093273,-0.4889348,0.2889768,0.097107925,-0.4900717,0.08450028,0.12946251,0.029848771,-0.04884375,0.29394668,0.08218726,-0.18262681,0.046750773,0.006920203,0.25929216,-0.123556316],[-0.36142796,-0.4761168,-0.031057041,-0.03201091,0.3264201,-0.28861398,0.03595103,-0.03517199,0.12988408,-0.33035025,0.20245835,-0.050757732,-0.106270775,0.37782818,-0.1009953,-0.13087629,0.26906365,-0.10609762],[0.025104474,0.019358486,-0.024905588,0.21881673,-0.25832435,0.96893126,-0.7209163,0.41793713,-0.13289197,-0.12783904,0.13794017,0.21045911,0.050720435,-0.25170416,-0.62401164,-0.024670731,-0.29609823,0.35617065],[-0.008312407,-0.7407596,-7.084344,0.028729403,0.6807612,-0.014186225,0.67334884,0.29722595,-0.9668716,-0.531245,0.66484416,-1.1115197,-0.64549005,-0.120867796,-0.17233334,0.78614897,0.8250422,0.34976736],[-0.48205698,0.4224278,0.018553648,-0.2134916,0.04153917,0.7245894,-0.93251956,0.013013465,0.24247682,0.04031593,-0.08674914,0.14843619,0.25142464,-0.052657608,-0.067281075,-0.18016832,-0.3367292,0.36795783],[0.0060425145,-0.6726894,0.12755352,0.6079416,-0.19894339,-0.67753744,0.42177054,0.25688335,-0.6894623,-0.2502804,0.32992235,-0.27346176,-0.35465118,0.29624695,-0.12629414,-0.6665767,-0.173872,0.28384444]],"activation":"σ"},{"dense_2_W":[[-0.7923206,-0.009339641,-0.5352346,0.6091468,-0.04876316,0.39490545,-0.034111094],[-1.0249208,0.39700195,-0.58438927,0.16584569,0.17201081,0.5389196,-0.0868657],[-0.6531692,-0.007390197,0.17620674,-0.13442127,-0.58781165,0.47517285,-0.3037654],[0.93093103,-0.8664581,0.60659295,-0.41851223,-0.008249123,-0.3610143,-0.1658192],[0.18383585,-0.9612978,0.108306736,-1.0595605,0.6152441,-0.18968369,0.12764637],[-0.23412292,0.8866577,-0.36853278,0.41754025,-0.6953287,-0.2107403,0.3878631],[1.6182716,-1.1367084,1.2613131,-0.22455032,-1.5450573,-1.1383495,1.2916391],[-0.6907885,0.21876465,-0.37425384,0.28203624,-0.37134746,-0.060869645,-0.36596343],[0.32001236,-0.48894957,0.4011093,-0.63292897,0.14903933,-0.69945556,0.2776244],[0.7659646,-0.14666194,0.77608156,-0.29742083,0.26605186,0.016574113,-0.22834513],[-0.71138144,-0.062448937,0.30001172,-0.01717667,-1.2297869,0.69679105,0.046717945],[-0.7727106,0.2412452,-0.464044,0.80845594,-0.62951875,-0.08542672,0.07366458],[-0.025123067,-0.027039677,0.34798175,-0.7620366,0.43302727,-0.89325774,0.0035131366]],"activation":"σ","dense_2_b":[[-0.099672936],[-0.0876946],[-0.08204721],[-0.025810441],[-0.34068185],[0.060692374],[-0.024438279],[-0.07015547],[-0.039097134],[-0.14396088],[-0.15622896],[-0.005676818],[-0.011064758]]},{"dense_3_W":[[0.39419955,0.5720024,0.54087794,-0.73478484,-0.51288295,0.4327564,-0.5041765,0.3271926,-0.48603916,-0.5796963,0.72407377,0.71574676,-0.6588747],[-0.4544194,0.26937458,0.039873235,-0.34116194,0.16377093,-0.59205776,0.7291578,-0.12695956,0.7046899,0.10085361,0.14058925,-0.6534143,-0.31029704],[0.36182398,0.6130376,-0.03244722,-0.1537163,-0.62813044,0.25602,-0.7971318,0.06725275,-0.21288694,0.23565246,0.45994118,0.029152358,-0.028171498]],"activation":"identity","dense_3_b":[[-0.008158646],[0.024065692],[-0.046528816]]},{"dense_4_W":[[0.623884,-0.1895593,0.47617644]],"dense_4_b":[[-0.010568268]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68460393AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68460393AA'.json deleted file mode 100755 index d19a7be8cb..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68460393AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.4242563],[1.090038],[0.5387467],[0.045696616],[1.0706453],[1.0769838],[1.0826412],[1.0662853],[1.044258],[1.015598],[0.9955335],[0.045430943],[0.04546534],[0.04548917],[0.045445427],[0.045430474],[0.045357496],[0.045145508]],"model_test_loss":0.012552225962281227,"input_size":18,"current_date_and_time":"2023-08-05_09-07-51","input_mean":[[28.232662],[0.0413919],[8.108091e-5],[-0.00953157],[0.038943794],[0.03873717],[0.039187554],[0.038665015],[0.041457415],[0.042767525],[0.03904675],[-0.009741066],[-0.009699849],[-0.009670657],[-0.009643033],[-0.009600081],[-0.00964547],[-0.009827622]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.13912317],[-0.18454184],[-0.12308464],[-0.05414716],[0.22322485],[0.0986465],[0.046013463]],"dense_1_W":[[0.039979875,-0.45747104,0.01409263,0.1038344,-0.39685473,-0.33794326,0.87375444,-0.39493144,-0.022856656,0.16293114,-0.1021352,-0.16609733,-0.13024335,0.3786684,-0.14359765,0.29113892,0.29941785,-0.29400635],[0.052472137,-0.053698886,-5.422898,-0.21991543,0.313983,0.36116323,0.05229922,-0.48481512,-0.699478,-1.117739,-0.30874887,-0.38158453,-0.1338971,-0.44151375,-0.17320636,0.7264404,0.32501188,0.7165989],[-0.010304283,-0.98240876,-0.022742985,0.22672749,0.48251867,-0.9433817,0.9824343,0.13986214,-0.1942156,-0.30411872,0.28717113,-0.571053,0.24414678,0.07596924,0.18768153,0.14563765,-0.18377183,-0.043441784],[0.005285528,1.0535682,-0.017260179,-0.33124572,0.0039716414,0.74013585,-0.39428404,-0.272743,0.07434402,0.27876472,-0.08732285,0.96002966,-0.4802241,-0.25286382,0.28896594,0.02317922,0.14128046,-0.017183177],[0.28194147,0.18924262,-0.002696126,0.21734203,0.0018270598,0.7102033,-0.8090373,0.58956873,0.02791912,0.08000271,-0.14373638,0.92130774,-0.071700506,-0.61309874,-0.88973755,-0.11552046,-0.11336341,0.41735962],[0.31988075,-0.3792179,-0.0064482973,0.41482916,0.30242506,-0.8525714,0.587519,-0.21211164,-0.014709177,-0.25068194,0.2086841,-0.5114691,0.027261272,0.32500595,0.09924409,-0.19256444,0.16786371,-0.11739298],[0.0021515805,0.30027154,5.952735,0.5089647,-1.6394058,-1.0211537,-0.9829749,0.8358446,2.6611304,0.60455,-0.4308957,0.83339345,0.9026655,0.08858586,-0.7351174,-0.9489569,-0.40282488,-0.341631]],"activation":"σ"},{"dense_2_W":[[0.9260268,-0.8087541,0.7243133,-1.0124146,-0.4938717,0.81473345,0.11277119],[0.21146505,0.24969757,-0.018303309,0.021199943,-1.0386741,0.06976922,-0.5488614],[-0.3201507,0.091772825,-0.39746743,0.5359968,0.67508984,0.09967213,0.25258896],[-0.54746306,-0.0038191364,-0.20888582,0.43253246,-0.3283931,0.21827807,0.25115517],[-0.54352003,0.28153777,0.21302846,-0.8480698,-0.58262014,-0.61925584,-0.10825497],[0.3063305,0.2462994,0.23962738,-0.41100392,-0.53911793,0.321222,0.07766791],[0.10468989,-0.021128409,-0.6309457,0.36274424,0.28997198,0.0035589251,0.40533248],[-0.29012105,-0.5573741,0.27605262,0.3979421,-0.06551908,0.22975506,-0.36112309],[-0.64441514,-0.102396026,-0.47194633,-0.14262818,0.6258268,-0.06171014,0.020799521],[0.47843814,0.04975281,0.31482425,0.13627958,-0.5157222,0.59243554,-0.54984564],[0.5728869,0.45515713,-0.12804388,0.15026231,-0.317451,0.033666957,-0.3124569],[0.6588982,-0.52865326,0.89718544,-0.6003115,-0.33325368,0.73482186,-0.22547686],[-0.5273782,-0.087307595,-0.60608846,0.036910504,-0.22960147,-0.7512217,0.302108]],"activation":"σ","dense_2_b":[[-0.13479586],[-0.13513349],[0.0009373699],[-0.042181917],[-0.29355353],[-0.048629034],[-0.046268582],[-0.0064258813],[0.05825038],[-0.13651372],[-0.1501067],[-0.08589544],[0.048994377]]},{"dense_3_W":[[0.3654538,0.115187585,-0.439915,0.5377413,0.007418098,0.27751163,0.044657342,-0.17946307,-0.3654914,0.116421804,0.4164621,0.6509678,-0.427143],[-0.15930192,0.5932584,-0.62384886,-0.061347995,-0.07626731,0.02358485,-0.5655159,-0.30620593,0.20285667,0.5263857,0.33262604,-0.40084362,-0.63168716],[-0.39700428,-0.15882798,0.5767276,0.6016253,-0.090940565,0.20918909,-0.052728947,-0.0024816794,0.44058868,-0.63286716,-0.04175788,-0.5301039,0.33433867]],"activation":"identity","dense_3_b":[[-0.052033406],[-0.022464612],[0.028837651]]},{"dense_4_W":[[-0.79853165,-0.5028229,0.9493444]],"dense_4_b":[[0.032302264]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68524936AB'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68524936AB'.json deleted file mode 100755 index 3038daba51..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020 b'68524936AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[3.987233],[0.8537959],[0.3147956],[0.046582546],[0.84401494],[0.84688294],[0.84943753],[0.8459254],[0.8367666],[0.8265147],[0.81790316],[0.046407577],[0.046432234],[0.046448592],[0.046412252],[0.046326056],[0.046176534],[0.045897327]],"model_test_loss":0.015449066646397114,"input_size":18,"current_date_and_time":"2023-08-05_10-23-38","input_mean":[[25.967857],[0.06622085],[-0.0020416742],[0.015556498],[0.066534],[0.067036055],[0.06743562],[0.06573888],[0.06696677],[0.06556534],[0.06443423],[0.015573572],[0.015597905],[0.015617301],[0.015684133],[0.015687725],[0.01558393],[0.015239334]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0808946],[0.037367117],[-0.038749795],[0.9390711],[-0.32065046],[-1.1784762],[-0.88848305]],"dense_1_W":[[-0.00011032098,0.9780359,-0.0014145505,-0.4366488,-0.013176787,0.33611873,-0.29262367,-0.3578369,0.11645427,0.42088133,-0.2598451,0.6237576,-0.13795596,-0.09887536,-0.12733373,-0.08417586,0.4013575,-0.07988855],[-0.0009259077,-0.062645964,-0.0018059709,-0.12713021,-0.055080768,-0.22723031,-0.026899165,0.200585,-0.42516625,0.22538531,-0.08643315,-0.6855331,0.5384225,0.5383578,-0.28057948,0.35908887,0.18033692,-0.29071817],[0.00023606251,-0.2708152,-3.7008457,-0.18686758,0.7081413,0.5238141,0.29570386,-0.37760863,-0.7263605,-0.6313755,0.52763283,-0.7201515,-0.24693261,-0.0033690718,0.19305243,0.28949165,0.15849951,0.32188925],[-0.0030307523,0.9266019,-0.00071122346,0.2938597,-0.7209375,-0.25652483,-0.833887,-0.41061628,-0.6894746,-0.44843826,-0.023134246,0.7723488,-0.032426476,-0.21999909,1.0757654,0.2777427,0.4482543,0.7690393],[0.005163568,0.3910777,0.0008774753,-0.1327848,0.038467746,0.2735437,-0.44077805,0.32235864,0.39658654,0.20570071,-0.13710664,0.1422694,-0.52818966,-0.07204501,-0.05014466,0.01687801,-0.32406497,-0.30950892],[0.22730923,0.26141903,-0.000953725,-0.37078547,0.3688389,0.28006992,-0.35340187,0.032271273,-0.079801165,0.38975418,-0.13068317,0.51164424,-0.14360848,-0.15369992,0.077170156,-0.22220115,-0.43598184,0.27546084],[0.2213501,-0.15664451,0.00094546424,0.3464266,-0.53368324,-0.1391294,0.38088232,-0.02687833,-0.24897413,0.004964223,-0.012853597,-0.73865753,0.11176492,0.6087426,-0.2588389,0.3292955,0.21136026,-0.15702726]],"activation":"σ"},{"dense_2_W":[[0.8372817,-0.25008437,-0.12787572,0.2646305,0.31623498,0.13657083,-1.0080503],[0.046799798,0.00918828,0.40113875,0.2216699,-0.27304304,-0.38028294,0.39347392],[-0.23938853,-0.34641623,-0.62152797,-0.46418,-0.7241759,-0.5278883,0.25341335],[-0.09937506,0.8862087,-0.24579188,-0.27517456,-0.660784,-0.34946993,-0.0786754],[0.7788807,-0.035170402,-0.38853168,0.22640607,0.14605336,0.8359692,-0.7039278],[-0.16715685,0.30906233,0.4299202,-0.15657364,-0.75562745,-0.5894536,0.67901284],[0.011040685,0.72528595,-0.3475271,0.20744416,0.0671484,-0.801704,-0.032896496],[-0.10695809,0.57284784,0.13369241,0.09459562,-0.75450206,-0.65015566,0.64747673],[0.41928726,-1.2618666,-0.31203488,0.500999,0.60130423,-0.015696425,-0.93787414],[-0.3277222,0.70236963,0.41655436,-0.5232463,-0.6613873,-0.7214429,0.6023961],[0.5236259,-0.8083846,-0.4727932,0.5152158,0.49668074,0.51633376,-0.30741963],[-0.29883748,-0.70302063,-0.06388201,-0.46135828,0.15648502,0.5698643,-0.37563467],[0.8581469,-0.22009362,-0.6310318,0.2918128,-0.03789091,0.3939349,-0.40259096]],"activation":"σ","dense_2_b":[[-0.11143744],[-0.044303834],[-0.28920218],[0.07294065],[-0.20649768],[-0.017393855],[0.033349346],[-0.0056764074],[-0.25138023],[0.08198082],[-0.17676844],[-0.29986814],[-0.16457124]]},{"dense_3_W":[[-0.49123013,-0.094490446,-0.23686716,0.6143184,-0.5806659,-0.10567876,0.564474,0.3225216,-0.16980709,0.15226522,-0.5543669,-0.2539091,-0.2111866],[-0.67487806,0.6078758,0.5300193,0.3342076,-0.46282768,0.7419035,-0.11941694,0.1968823,-0.3510679,0.7736118,-0.1578716,0.12241213,-0.426154],[-0.028797744,-0.23915093,0.5088453,-0.23264304,0.015492338,-0.5100102,-0.40799907,-0.34939715,-0.29578912,-0.24078988,0.72473073,-0.1903113,-0.08354421]],"activation":"identity","dense_3_b":[[0.04028917],[0.022620372],[0.00910732]]},{"dense_4_W":[[-0.95017105,-0.7261867,0.14058225]],"dense_4_b":[[-0.029187044]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AC'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AC'.json deleted file mode 100755 index 479e2cb351..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AC'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6217413],[0.7114013],[0.42171296],[0.030692505],[0.70313025],[0.7054758],[0.7074203],[0.7039908],[0.70165694],[0.6984613],[0.69011045],[0.030523904],[0.030557213],[0.03057646],[0.030458547],[0.030253412],[0.029954236],[0.029606614]],"model_test_loss":0.014747933484613895,"input_size":18,"current_date_and_time":"2023-08-05_11-38-04","input_mean":[[28.228518],[0.08038404],[-0.0051411754],[-0.0056266068],[0.07707682],[0.07840141],[0.07956922],[0.07400305],[0.0744884],[0.072456144],[0.070939764],[-0.005806301],[-0.0057515134],[-0.0057001603],[-0.00563613],[-0.005653806],[-0.0057565314],[-0.0059536397]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20161064],[0.3708137],[-0.2759572],[-1.7354532],[-0.006582411],[-0.1967276],[-1.6732626]],"dense_1_W":[[-0.0022043844,-0.47374737,0.12160097,0.6890159,0.3377973,-1.5650418,0.3390089,-0.20914559,-0.29470372,0.56673414,-0.3568904,-0.3345458,-0.1208839,-0.0800197,0.28805646,-0.16699065,-0.24808967,0.006654419],[0.22055951,0.5663217,0.014226842,-0.33060122,-0.48807305,0.8183591,-0.4619248,-0.16517015,0.22057265,0.120730974,-0.15235895,0.21393985,0.4685399,-0.42490304,-0.18560103,0.05731757,-0.09875112,0.17101038],[-0.18863444,0.46009055,0.0143123325,-0.09180277,-0.15147366,0.57024676,-0.45547467,-0.067543074,-0.022116022,0.31504935,-0.16846871,-0.01573877,0.087595,0.038511798,-0.007259396,-0.22452337,-0.12686455,0.20235924],[2.2950037,-0.15815431,0.0035836962,-0.67872524,0.08919689,-0.5821427,0.21903394,-0.044731744,-0.04884043,0.08973389,-0.054229386,0.02415706,0.070902705,0.26732698,0.2716208,0.2851963,0.22980438,-0.22686587],[0.0044000545,-0.21573843,-0.07105931,0.26565573,0.38492048,-0.6680098,1.1778332,-0.87731117,-0.20947257,-0.06640749,0.37599987,-0.25529432,0.014358948,0.2096504,0.005265327,-0.15837903,-0.03779916,0.04513996],[0.007100553,1.2550566,7.1150217,-0.43107417,-0.036019012,-0.31804258,-1.1444212,0.16977336,0.6080755,-0.29834473,-0.24948287,0.9989788,0.054998364,0.1742214,-1.2599926,0.17053154,0.40663227,0.12926742],[2.3231199,0.16382016,-0.0039322176,0.6659583,0.38590056,0.4255518,-0.53491396,-0.038882855,0.059910268,-0.08183135,0.11287891,-0.23418863,0.033189584,-0.24378267,-0.18320867,-0.231686,-0.18503504,0.1318578]],"activation":"σ"},{"dense_2_W":[[0.29945847,-0.4116662,-0.6404434,0.4817164,0.4524414,-0.32461753,-0.28166708],[-1.3570027,0.5354018,0.13801058,-1.1377261,-1.2545471,0.47778574,-0.6778595],[-0.53093123,0.3986449,0.514258,-0.44630268,-0.34877014,-0.09241833,0.015654555],[-0.33301157,0.015162718,-0.57307935,0.51319146,0.76107,-0.32635444,0.0483822],[0.4356511,-0.56064665,-0.60171497,0.31180757,0.058051504,-0.12626185,-0.16386817],[-0.49370843,1.3684434,0.6723376,0.47739267,-0.3493264,0.4534191,1.194232],[-0.6864368,-0.55467093,-0.28965995,0.21849571,-0.2885239,-0.4037181,-0.2568297],[-0.027406203,0.4347179,0.52915186,-0.7199698,-0.98106146,0.1689552,0.6664304],[0.53957736,-0.43386227,-0.17693467,-1.3255388,-0.7924073,-0.93818575,-0.79954004],[0.4243802,-0.7055154,-0.8640908,0.6045224,0.35185826,0.29153374,-0.043798342],[-0.18059891,-0.5451181,-0.31403798,0.29197556,0.48968676,-0.36734742,-0.6153273],[-0.21743168,0.0968663,-0.7951512,0.22858825,0.056076594,0.352806,-0.43122748],[-0.5219958,0.7666835,0.78582376,0.04805443,-0.69653535,-0.1948839,0.47690478]],"activation":"σ","dense_2_b":[[0.14940926],[-0.26764292],[-0.065943636],[-0.012099177],[0.020878451],[-0.037716556],[-0.27098712],[-0.24203163],[-0.3071356],[-0.19974586],[0.091521814],[-0.030127151],[0.011759832]]},{"dense_3_W":[[0.2272818,-0.7090007,-0.44646376,0.5245258,-0.11126927,0.06856284,-0.55245084,-0.03672042,-0.2831085,-0.26106173,-0.15778822,0.6185201,-0.25463623],[-0.6678536,0.27332652,0.32911164,-0.46993744,-0.57457846,0.51333696,-0.51108074,0.419496,-0.4008391,-0.28695276,-0.4039776,-0.2274611,0.65224385],[-0.4540261,-0.110272445,0.62588185,0.3793935,0.21624547,0.00488706,0.2968329,0.5401233,-0.0827374,-0.28764433,-0.7044611,-0.16364492,0.43638176]],"activation":"identity","dense_3_b":[[0.025508499],[-0.012451561],[-0.038591553]]},{"dense_4_W":[[-0.36511594,0.9680025,0.498792]],"dense_4_b":[[-0.017125914]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AD'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AD'.json deleted file mode 100755 index c10e99ad04..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017 b'68288309AD'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.597233],[0.65757],[0.39041167],[0.03043365],[0.64351803],[0.6471017],[0.6502902],[0.6549102],[0.6508157],[0.6482903],[0.64279133],[0.03026653],[0.03030699],[0.030344505],[0.030493243],[0.030504394],[0.030502517],[0.030399079]],"model_test_loss":0.01550232619047165,"input_size":18,"current_date_and_time":"2023-08-05_12-03-26","input_mean":[[24.96868],[0.017203558],[0.004998304],[-0.016466307],[0.014747153],[0.015813118],[0.016414983],[0.015427833],[0.0135320425],[0.01846833],[0.02000356],[-0.016424928],[-0.016428037],[-0.016443778],[-0.016528388],[-0.01664044],[-0.016721481],[-0.017032597]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.11971746],[-1.0482128],[-1.290418],[1.6633401],[-0.09557239],[-0.15225793],[-1.3385328]],"dense_1_W":[[0.029821552,0.035007924,5.103129,-0.37369263,-0.89283395,-0.5466001,-1.1722021,0.012656213,2.3184931,0.7863226,-0.40544683,0.035955865,-0.05933657,-0.36182928,0.14284906,0.47995996,0.0033706422,-0.05209815],[-0.19044665,0.46416685,-0.0097643575,0.022599934,0.1270844,0.3457657,-0.6301875,0.13222663,0.3651115,-0.04052697,-0.097950056,0.36680222,-0.53108186,0.37180126,-0.26814926,-0.22918452,0.24378005,-0.03704089],[-0.8465522,-0.15320513,-0.2111905,-0.33488435,0.19261867,-0.35840833,0.37324944,0.059546437,-0.20470025,-0.08982175,0.30586445,0.101371676,-0.18726619,0.18133822,0.12725775,-0.01725966,0.3126423,-0.20531909],[0.33607936,0.10578455,-0.012572882,-0.17274776,-0.05706274,0.27834845,-0.03742849,0.37046883,0.18207937,0.15750422,-0.21119557,0.58034253,0.14551485,-0.19281861,-0.6219534,-0.07461531,0.12687907,0.13601732],[-0.0028057445,-0.130438,-0.00028447545,-0.2205653,-0.061741494,-0.76060104,0.43488175,0.2109757,0.20559938,0.036044482,-0.22720902,0.10089816,-0.075031996,0.35783985,-0.16343401,-0.207879,0.11746362,0.11620118],[-0.04128383,-0.4868478,0.11253476,0.52899015,0.35399616,-0.4295484,0.33201,-0.13990371,0.08484948,0.10046226,-0.107716724,-0.22875123,-0.03329333,-0.11531053,-0.070716955,-0.003677542,0.12015404,-0.13361935],[-0.84564525,-0.20329769,0.20679265,-0.17321548,-0.43559217,0.6301703,-0.17066625,0.18654998,0.05553996,0.11210628,-0.30537042,0.45863834,0.17521833,-0.08643193,-0.42064783,-0.15470168,-0.061689895,0.282349]],"activation":"σ"},{"dense_2_W":[[-0.2675255,-1.0888523,0.5519257,0.19295022,0.6083571,0.013318467,0.068802685],[-0.029764846,0.5881194,-0.5320143,0.56432325,-0.7338648,-0.6991274,0.78376025],[-0.24376978,0.97442836,-0.43990833,0.58720297,-1.1058803,-0.24998356,0.5523079],[0.37818435,-0.04477066,-0.6413349,0.7311632,-0.7551129,-0.66932064,0.80996406],[0.42194343,-0.55635,0.24982749,-0.08299721,-0.47013214,-0.32509625,0.34097055],[0.18750918,-0.48607266,0.018563168,-0.4435128,0.025003254,0.37226567,-0.5008819],[-0.690127,-0.061610896,0.52321345,-1.2141404,0.24980456,0.39222413,0.29739323],[0.12713604,0.8961836,-0.0420679,0.3697559,-0.66627675,-0.9004507,0.36056203],[-0.17872968,-0.5655011,0.31398085,-0.0073691937,0.8368489,-0.102135964,-0.098749965],[-0.25579226,-0.1895283,0.65268534,-0.032067355,0.88545084,-0.2616384,-0.73489314],[0.038353052,-0.6248039,-0.17452268,-0.3505884,0.6240491,0.117965795,-0.40689456],[0.11943678,0.85648805,-0.7428271,0.4420883,-0.14259496,0.047728933,0.06425332],[-0.37097242,-0.49184024,0.3623645,0.066325314,0.36482123,0.62196106,-0.6113287]],"activation":"σ","dense_2_b":[[0.015802983],[-0.010237919],[-0.12576309],[-0.016577639],[-0.0723307],[0.007504116],[-0.2507953],[-0.20577176],[0.01650445],[0.004272095],[0.07060706],[-0.113387175],[0.05941394]]},{"dense_3_W":[[-0.102179505,0.7396626,0.40349957,0.35000306,-0.14271958,-0.41911846,-0.75510114,-0.080605164,-0.25986177,0.05678764,-0.36452737,0.42877302,-0.3750224],[-0.2336813,-0.17504057,0.076827765,0.26307496,-0.2195151,-0.025769087,0.016375436,0.34215918,0.22750534,-0.33795378,-0.350775,0.46386904,0.27268404],[0.4288828,-0.7942581,-0.19615512,-0.62076753,-0.11076431,0.41423005,-0.07186949,-0.72240573,0.56579494,0.56211066,0.2636863,-0.4551915,0.2820574]],"activation":"identity","dense_3_b":[[-0.045709725],[-0.0753816],[0.058061324]]},{"dense_4_W":[[0.6145353,0.11919738,-0.88881034]],"dense_4_b":[[-0.05525869]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018 b'68288309AD'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018 b'68288309AD'.json deleted file mode 100755 index 02c740db16..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018 b'68288309AD'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.082215],[0.9560447],[0.410062],[0.042449385],[0.9435806],[0.9485456],[0.9529106],[0.93789405],[0.9226771],[0.9034362],[0.883721],[0.04244234],[0.04244558],[0.042444732],[0.042347185],[0.042244907],[0.04203911],[0.041821305]],"model_test_loss":0.015666939318180084,"input_size":18,"current_date_and_time":"2023-08-05_12-54-12","input_mean":[[25.45074],[0.0068904622],[-0.000671541],[-0.0010801569],[0.0104450565],[0.008953298],[0.0077940514],[0.010752567],[0.011151168],[0.013636157],[0.015005147],[-0.001118472],[-0.0011114934],[-0.0011069404],[-0.0010113739],[-0.0010170324],[-0.001066506],[-0.001190821]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.011303913],[-0.101262875],[0.56544256],[0.19651274],[0.02540219],[1.1908269],[-0.025591249]],"dense_1_W":[[0.03296629,-0.9849526,-0.019233003,0.26284894,0.30721006,-1.0549244,1.2970554,-0.45588621,-0.42953083,0.06103454,0.2431949,-0.9065374,0.36690086,0.2656691,0.35073105,0.49389052,0.051688332,-0.3485854],[-0.03754764,-0.49999028,-0.007074961,0.79917264,-0.36037976,-1.3411741,0.58469564,-0.23178867,-0.068214,-0.08796609,-0.065810174,-0.13842778,-0.5216702,-0.056535564,-0.13458252,-0.2092706,-0.31087565,0.35361972],[0.27463603,-0.381356,-0.012061922,-0.31239793,-0.053919703,-0.6916296,0.3541282,-0.15095334,-0.10328145,-0.0723153,0.042322796,0.11545691,0.21939,-0.17112115,0.07391443,0.072348714,-0.040974505,0.090883106],[0.064744584,0.17418511,-5.185299,0.5444673,0.9003128,0.6023629,1.193266,-0.46961012,-2.531239,-1.2398077,0.90796435,-0.18854257,0.029938832,0.16980654,-0.6187146,-0.35119575,0.58308375,0.098467305],[-0.9406685,-0.2624951,-0.027796533,0.20334917,-0.34153846,-0.1046165,-1.0237727,-0.11846653,-0.1513934,-0.28889307,0.1425305,-0.16230091,0.041497145,0.13115646,-0.4476718,-0.026639748,-0.115308225,0.2959161],[0.26337644,0.9059509,0.0142672965,0.11553737,-0.15986507,0.4649627,-0.57561105,0.28975698,0.2352414,0.12916806,-0.24250211,0.5852871,-0.28024945,-0.32947764,-0.29004428,0.07504865,-0.22164239,0.1658566],[0.8496862,0.06132964,-0.026063204,0.33203503,-0.71281123,0.53899145,-0.5046964,-1.0536666,-0.46766424,-0.0017764475,0.28805846,0.3337219,-0.00876953,-0.1794407,-0.8609011,0.06300348,-0.16952239,0.4276372]],"activation":"σ"},{"dense_2_W":[[0.5989996,0.28228945,0.24243695,0.30473667,0.09565392,0.039883718,-0.012167493],[-0.5965035,-0.5132559,-0.809263,-1.0380533,0.74597716,-0.19448324,-0.51433825],[-0.50900024,-0.6781642,-0.055860262,-0.07686463,0.5264645,0.64901555,0.37830654],[0.45566165,0.4638939,0.18080807,-0.37435606,0.34035242,-0.17389183,0.09466603],[0.25517422,-1.1810887,0.02548111,-2.524108,-0.26499692,2.612718,2.0904224],[-0.07452685,0.45176342,0.5291961,-0.22377542,0.35242108,-0.58295393,-0.43978348],[-0.64365584,-0.28436708,-0.5298343,-0.7013793,0.43208584,-0.31733987,0.3173478],[-0.7023152,-0.3866031,-0.5978307,-0.52242154,0.5038582,0.18732077,0.032031976],[0.4123047,0.50972766,0.4979604,-0.016046334,-0.44517237,-0.36656827,0.027112957],[-0.108008094,0.34119272,0.5035501,-0.27905923,-0.5105666,0.12349028,-0.39550483],[-1.6549016,-0.76342964,-0.9001871,0.484857,0.38083476,0.5935866,1.0620447],[-0.8487929,-0.73791504,-0.902351,-0.034185782,0.5050549,0.61939895,0.6907873],[0.555242,0.61760396,0.53889614,-0.2472908,-0.5995396,-0.14475305,-0.4659583]],"activation":"σ","dense_2_b":[[-0.037849087],[-0.0046516205],[-0.06366198],[0.015965618],[0.48888913],[0.04543125],[-0.052545607],[-0.00619908],[-0.047677517],[-0.02190815],[-0.068623856],[0.03490071],[-0.04638153]]},{"dense_3_W":[[0.59825534,-0.7146144,-0.55275774,0.16583651,-0.29240578,0.5159985,-0.39059043,-0.5139529,0.074755795,0.25480804,-0.6676097,-0.45776275,0.18318963],[0.25388056,-0.35969815,-0.34763938,0.38946125,-0.42040497,0.5035119,-0.014665137,-0.4923147,0.66271615,0.11658979,-0.08055782,-0.3412976,0.6100553],[-0.36014816,-0.29852802,0.31007996,0.45297718,-0.111436516,-0.08528401,0.3125368,-0.56639135,0.013241491,0.4247302,-0.6792052,-1.0650945,0.05410819]],"activation":"identity","dense_3_b":[[0.032773122],[0.016646186],[0.008999612]]},{"dense_4_W":[[-0.85478663,-0.68413824,-0.13936913]],"dense_4_b":[[-0.024688363]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018.json deleted file mode 100755 index b3a029677d..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.08229],[0.9560322],[0.4162128],[0.04234246],[0.944914],[0.9496715],[0.9534703],[0.93756986],[0.9214626],[0.9029512],[0.8827786],[0.042334676],[0.04232983],[0.042330787],[0.04222349],[0.042102575],[0.041963458],[0.041727293]],"model_test_loss":0.015212969854474068,"input_size":18,"current_date_and_time":"2023-08-05_12-28-56","input_mean":[[25.450489],[0.007018491],[0.0017526483],[-0.0012496245],[0.010258301],[0.00915797],[0.008296782],[0.009687563],[0.010408748],[0.012445741],[0.015780684],[-0.0012874664],[-0.0012762811],[-0.0012723668],[-0.0012203716],[-0.0012326657],[-0.001319404],[-0.0014248163]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.0474128],[-2.0153387],[0.3068582],[-0.005494932],[-0.8460963],[0.043121926],[0.34363338]],"dense_1_W":[[0.40921986,0.83686906,0.017928291,-0.14663637,0.03245214,0.9670171,-0.557215,0.053447653,0.19983685,0.14913826,-0.07026286,0.35218892,-0.1331316,-0.24948378,0.23776667,0.024677012,-0.18177196,0.081563935],[-0.4710796,1.0182377,0.025632562,0.25463507,0.15371,0.5884998,-0.50182223,0.27641,0.27793694,0.40336907,-0.31872264,-0.23831047,0.10746539,0.053897705,-0.08914807,0.09828412,-0.39313728,0.18685032],[0.9079908,-0.5044986,0.027937002,-0.09682488,0.6568831,-0.38266635,0.9817865,1.2524801,0.38089994,0.12696266,-0.30947885,-0.50164545,-0.23758912,0.010382648,0.9870671,0.36033058,-0.08208099,-0.4297762],[-0.0020627899,0.96122843,0.0019422979,-0.2890112,-0.19326063,0.67663735,-1.2096393,0.69867593,0.24395284,0.015038193,-0.2639015,0.23797843,-0.19254467,0.17160857,-0.3693636,-0.3780116,-0.1757647,0.36420926],[-0.035085507,0.022627689,-5.207178,0.662441,1.6342354,1.2160088,1.2780991,-1.1770558,-2.9736173,-1.1000638,0.7337506,-0.5362961,-0.29924804,0.33022583,-0.7002066,0.04807395,0.3741729,0.31349945],[-0.002872556,-0.54440963,-0.0055537154,0.1456208,-0.30050763,-1.4995376,0.9476729,-0.74908423,-0.28116608,0.15615615,-0.03335187,-0.0051539144,0.13452101,-0.20905544,0.25087494,-0.45868522,-0.40181822,0.4119573],[1.0714998,-0.38579407,-0.024760136,0.06929095,-0.7495878,-0.25940558,-0.19196063,-0.39601323,-0.32055146,-0.10028662,0.06978139,0.50141144,0.43209225,-0.3733558,-0.8468494,-0.051437717,-0.19248068,0.45854166]],"activation":"σ"},{"dense_2_W":[[1.0826005,-0.20854715,0.12272468,0.45186186,-0.33309188,-0.11777644,0.57938504],[-0.5927767,-0.28290668,0.62141377,-0.6324294,-0.03813597,0.25737914,-0.082683794],[0.16264565,-0.50887585,-0.4667856,0.048738178,-0.5574825,0.1486967,-0.059898414],[-0.73018765,-0.33298212,0.464258,-0.22951585,-0.19468288,0.58376384,-0.10449995],[-0.3376829,-0.015965454,-0.5374289,-0.1125972,0.20699061,0.46242332,-0.39699847],[-0.7966657,1.1282952,-1.2893173,0.0007569245,-3.1860337,-0.18262017,-0.9651093],[-0.3432437,0.15395725,0.49788675,-0.6686831,-0.3084999,0.4104962,-0.19762419],[-0.6902327,-0.03177878,-0.3615717,-0.1965282,0.21896532,0.31481862,-0.39253464],[0.06330853,0.59432584,-0.7664653,1.0718739,-0.22649164,-0.9899889,0.19520594],[0.60814977,0.26673782,-0.8529133,1.0040137,0.14190473,-1.0532364,0.009188715],[-0.6209684,-0.01673939,-0.322892,-0.14584474,0.1624394,0.21571153,-0.7087542],[-0.5637814,-0.47300205,-0.21020818,-0.21443935,0.19412827,0.17739315,-0.7089613],[0.77079105,0.29888508,-0.3602861,0.5112615,-0.24378149,-0.1931251,-0.20249362]],"activation":"σ","dense_2_b":[[-0.03581929],[-0.046200734],[-0.1481214],[-0.077726975],[-0.17219913],[0.35100186],[-0.07100971],[-0.14290616],[-0.059892148],[-0.38624978],[-0.13309816],[-0.087655105],[-0.046923585]]},{"dense_3_W":[[-0.57040024,0.40345442,0.19436547,0.42902845,0.120898366,-0.63833594,0.39891332,-0.13518181,-0.37702882,0.18261324,0.54879117,0.5178564,-0.069270305],[0.16411436,0.5797063,-0.04110642,0.032352872,0.10857908,0.12132189,0.4528278,0.5046357,-0.54672295,-0.514517,0.102962494,0.39607972,-0.62058264],[-0.04601366,0.16334765,-0.16627654,0.103514455,0.6421524,-1.1889938,0.9212643,0.16994889,-0.85712564,-1.0109627,0.3073874,0.13189326,-0.2665801]],"activation":"identity","dense_3_b":[[-0.081992626],[-0.0802459],[0.057288777]]},{"dense_4_W":[[-1.0061765,-0.9223554,-0.31279898]],"dense_4_b":[[0.07849179]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68416741AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68416741AA'.json deleted file mode 100755 index 2cfe8d0c26..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68416741AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[3.540884],[0.72527695],[0.45695683],[0.034991868],[0.709294],[0.71476114],[0.72185975],[0.7211512],[0.7235535],[0.7168181],[0.7078516],[0.034848806],[0.03490882],[0.034961533],[0.03501503],[0.03508182],[0.035303213],[0.035285834]],"model_test_loss":0.008240409195423126,"input_size":18,"current_date_and_time":"2023-08-05_13-46-44","input_mean":[[25.921837],[0.0125832055],[-0.01164115],[0.0026885534],[0.014492291],[0.0139633],[0.013493571],[0.008726519],[0.008531813],[0.009844244],[0.0044681607],[0.0026176367],[0.0026374457],[0.0026502886],[0.0027010296],[0.00267962],[0.0024883181],[0.0022550253]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.13672608],[-0.041571867],[1.2636456],[-0.065467335],[0.011800385],[-0.46202916],[-1.372556]],"dense_1_W":[[0.007422458,0.6754113,7.4073644,0.11848473,-2.1631336,-0.912065,-0.8724629,-0.2556371,3.0907576,1.412602,-0.8293619,0.79462373,0.14016043,0.24535954,-0.30560818,-0.57401854,-0.60158664,0.14450504],[-0.0018305334,0.09137483,0.0048553096,-0.18322048,-0.17445193,1.1315465,-0.99553066,0.20692046,-0.1573373,0.10723841,0.034833677,0.013222382,0.04913359,-0.063011676,0.080315255,0.007860034,-0.06869685,-0.10426123],[0.41642052,-0.43292236,-0.00016212527,-0.28172606,0.22388797,-0.5387432,0.5000487,-0.0662662,-0.19251756,-0.24930976,0.21399923,0.21182868,0.23792529,0.36422804,-0.12048849,-0.10356604,-0.18955365,0.20988986],[0.007196369,-0.40141714,0.004146293,0.24328095,0.08316568,-0.7725523,0.24712877,0.31170592,-0.2618485,0.3492374,-0.23321508,-0.5998228,0.054245714,0.05656959,0.42039597,0.29605547,-0.16332126,-0.25805196],[-0.0066868253,0.24793896,-0.9155987,-0.22574951,0.2279949,-0.75932324,0.5498709,-0.50319123,-0.25042525,-0.16740315,0.9464338,-0.6654067,-0.46457547,-0.62106884,0.38022646,0.66043746,0.57050747,-0.051786408],[-0.013603165,-0.7850666,0.22816952,-0.94007343,0.6314619,-1.1180922,0.9316161,0.71419287,1.565776,0.82271457,-0.6743947,-0.03324018,-0.22406328,0.11753971,-0.86198115,-0.7191324,-1.2573929,-1.3663477],[-0.39971876,-0.90275395,-0.002747763,0.3259772,0.053136084,-0.1129504,0.67844796,-0.12035228,-0.111051224,-0.23912819,0.22313052,0.015122417,-0.042040545,0.31138957,-0.21768394,-0.19387904,0.17800824,-0.058540124]],"activation":"σ"},{"dense_2_W":[[-0.2712744,-0.27548417,-0.24589045,-0.94929534,0.056101516,0.37687665,-0.34930152],[0.12890357,0.107452646,0.05273279,-0.2842241,-0.26417354,-0.36303985,-0.88106096],[0.10812536,0.8229097,-0.48439428,-0.6146967,0.30271894,-0.47587743,-0.72306526],[-0.2970765,-0.9954584,0.8347318,0.28984168,0.22221072,-0.08318426,0.5174111],[0.022121632,-0.9320088,-0.13187025,0.84971243,0.11638838,-0.18265942,0.6944859],[-0.81018156,-1.4140185,0.0050559104,0.8047088,0.112945594,0.11903153,1.4750458],[-0.10029377,0.79245657,-0.129312,-0.96144485,-0.14801987,-0.19154973,-0.27617636],[-0.42813414,-1.1076767,0.41040602,0.6022723,0.2166483,0.101234265,0.25476956],[-0.2616646,0.06810875,-0.2897757,-0.34468642,0.19396816,-0.23995267,0.042478308],[0.064412996,0.088728696,-0.83973736,0.046822183,-0.044361882,-0.2079744,-0.5540397],[-0.9322635,-0.08910884,2.045478,0.7023676,0.27462402,-0.3360689,-0.5251471],[-0.82763696,0.09217775,-0.5712728,-0.1493765,0.17474991,-0.029826907,-0.55813324],[-0.30443445,-0.47327244,-0.5111389,-0.45714694,0.37277365,0.38366705,0.1959204]],"activation":"σ","dense_2_b":[[0.08118501],[0.07975673],[0.11642572],[-0.2567934],[-0.4266919],[-0.5458668],[0.18571955],[-0.08934562],[-0.29633301],[0.13670655],[0.07141965],[-0.30583197],[-0.0840992]]},{"dense_3_W":[[-0.5074871,-0.28185704,0.4593259,0.47745362,-0.44245535,0.07299903,-0.67817503,0.13860504,0.30813742,0.42423633,-0.060915153,-0.56996584,-0.0628069],[-0.63610864,-0.52725506,-0.59844047,0.43560866,0.6619392,0.40266907,-0.7854964,0.7018912,-0.12779734,-0.56247413,0.6380423,0.3426679,0.12550351],[-0.22990963,-0.22485729,0.11532963,0.1304727,0.34375438,0.09126867,-0.44410926,0.5529583,-0.08919587,-0.62609166,-0.042024292,-0.44053796,-0.45395342]],"activation":"identity","dense_3_b":[[-0.029381804],[-0.053650945],[-0.030720724]]},{"dense_4_W":[[-0.4063532,-1.1326009,-0.48396984]],"dense_4_b":[[0.045191046]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68460392AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68460392AA'.json deleted file mode 100755 index 6db2a51340..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68460392AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.110466],[1.1166294],[0.4333575],[0.04491246],[1.101045],[1.106509],[1.1112565],[1.0918282],[1.0688635],[1.0413644],[1.0151801],[0.044668887],[0.044713814],[0.04475609],[0.044801924],[0.04479171],[0.044668294],[0.04430072]],"model_test_loss":0.020542951300740242,"input_size":18,"current_date_and_time":"2023-08-05_14-14-04","input_mean":[[28.738178],[0.04136104],[-0.0026099419],[-0.0051334198],[0.044128302],[0.043093566],[0.041869074],[0.042427693],[0.046236813],[0.04548593],[0.042877004],[-0.005089196],[-0.005111265],[-0.0051377458],[-0.005226521],[-0.005262634],[-0.00543846],[-0.0057465434]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.037278734],[-0.079774134],[-0.8162887],[-0.31243566],[-0.22615224],[-0.8256233],[1.4499795]],"dense_1_W":[[-0.005449315,0.35854638,-0.0047398233,-0.1440494,-0.512616,0.7778192,-0.398415,0.0010072874,-0.5800812,-0.10013973,0.26047555,0.16202927,-0.008031342,-0.13875856,-0.22610746,-0.6603844,-0.10960839,0.40812218],[-0.051943477,-0.26004118,4.607082,-0.12921393,-1.9564761,-0.83791864,-1.289598,0.3517151,3.87916,1.1050774,-0.77605593,0.896561,0.58562213,-0.5287581,0.122337416,-0.44951877,-0.40622,-0.16376685],[-0.16226001,0.83511513,0.009577342,-0.011364819,0.009493924,0.34977683,-0.5710836,0.20358273,-0.047720235,0.21904317,-0.13963147,0.61891454,0.1469637,-0.6860567,-0.14435394,0.13068855,-0.094664365,0.1009682],[-0.0026090448,-0.75837827,0.00792941,-0.042877182,0.24020967,-0.6194338,0.44166493,0.017847896,-0.3192753,-0.4271276,0.41098025,-0.60054016,0.18626004,0.17326199,0.068281084,0.23828898,0.28316006,-0.3320513],[0.027624318,-0.76117027,0.0054043583,0.33760962,0.116977885,-0.9307711,1.0756055,-0.2172874,-0.21198179,0.080145285,0.04210036,-0.51823384,-0.11447423,0.13206464,0.51927197,0.14165966,-0.1777355,-0.111683],[-0.12876868,-0.7229542,-0.0074477443,0.16747089,0.050191335,-0.50053203,0.59926206,-0.26795742,0.048716802,0.004515228,-0.00087909383,-0.8720959,0.3561962,0.41411182,0.0037264847,-0.26657674,0.36355504,-0.20191583],[1.5456613,0.3672433,2.1607227,0.15501712,-1.0307076,-0.12250712,-0.5461449,-0.012928717,-0.08450569,-0.32112712,-0.7111483,0.63424677,-0.07049318,-0.2134942,0.5441593,0.11881617,0.13171925,0.11188784]],"activation":"σ"},{"dense_2_W":[[0.4314676,0.43680868,-0.33696127,-0.17014731,-0.05842231,-0.7266061,-0.5114572],[0.15322033,0.046555553,-0.43650016,0.8490571,0.8243241,0.27194533,0.093695216],[0.61560154,-0.12009854,0.3021778,-0.2980031,-0.6986972,-0.52874625,0.2868508],[-0.20433629,0.17755696,-0.016080111,0.48249146,-0.24425584,0.93740374,0.18655425],[-0.00067611254,-0.5348082,-0.04893072,0.16420071,0.84226584,0.48445752,-0.53488594],[0.5304203,-0.052413676,0.84903955,-0.7850803,-0.39337084,-0.48024574,0.22300348],[-0.40384635,-0.2198121,-0.9246295,0.21698718,0.013713661,0.33346254,-0.16243497],[-0.21693845,-0.5599039,0.16844617,0.33478138,-0.2944021,0.2285425,-0.45965782],[0.65655226,0.5756963,0.40696257,-0.87685615,-0.025619268,-0.60703444,0.34351036],[0.4858341,0.5645004,0.280065,-0.61226463,-0.070656925,-0.8439244,-0.4341403],[-0.5802423,-0.2585727,-0.5184978,0.41481337,0.55786633,0.19180918,0.27964547],[-0.1608777,-0.050595388,-0.75230426,0.0011275461,0.055260886,-0.035873853,0.49184152],[-0.052665144,-0.035036366,0.5804482,-0.8756545,-0.8726204,-0.6846766,0.07926964]],"activation":"σ","dense_2_b":[[-0.19394487],[-0.10838762],[-0.07325213],[-0.033972114],[-0.0065951333],[-0.2264441],[-0.26640517],[-0.066091046],[-0.1312786],[0.049138386],[-0.10959771],[-0.018617028],[0.049152326]]},{"dense_3_W":[[0.5829933,0.53154945,-0.6436874,0.26961514,0.2114049,0.48927963,-0.077363156,-0.117650375,-0.07863482,-0.42213118,-0.025127105,0.1802662,-0.78018814],[0.1384695,-0.57305473,0.30702972,-0.31226707,-0.617097,0.32141355,-0.5152638,-0.5388638,0.6503955,0.7239906,-0.5044503,-0.32009524,0.49322724],[-0.43255872,-0.18591267,-0.57748216,0.21049492,0.18677677,-0.35376894,-0.43073297,-0.34409273,-0.587622,-0.17651634,0.07379629,0.51700467,-0.6392041]],"activation":"identity","dense_3_b":[[0.030356286],[-0.044458546],[0.07339491]]},{"dense_4_W":[[-0.28381646,0.84335744,-0.5880341]],"dense_4_b":[[-0.055418875]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AA'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AA'.json deleted file mode 100755 index b944ebfeaf..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.7788153],[0.86318105],[0.45887572],[0.03240975],[0.84916407],[0.85424227],[0.8574619],[0.8389892],[0.81995696],[0.7941099],[0.7717739],[0.032342657],[0.03233888],[0.032331638],[0.03231616],[0.03229451],[0.032231897],[0.032137062]],"model_test_loss":0.026132144033908844,"input_size":18,"current_date_and_time":"2023-08-05_14-38-55","input_mean":[[28.931513],[0.014174745],[-0.00050709123],[-0.013757554],[0.015852991],[0.01568708],[0.0151331145],[0.015902033],[0.014520537],[0.010255078],[0.009157378],[-0.013667275],[-0.013699755],[-0.01373048],[-0.013899637],[-0.014020047],[-0.014123588],[-0.014132852]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0011439975],[0.08114154],[-0.047111176],[-0.00014506892],[-0.058797296],[0.008746821],[-0.112746514]],"dense_1_W":[[0.0036827116,-0.85230404,0.9694389,-0.6527038,0.10460156,0.8590413,0.14416954,0.9132283,0.17232226,0.01029374,-0.95463884,0.84203064,-0.34578338,0.032106902,-0.14620203,0.13692686,0.3113949,-0.13478504],[-7.447542e-5,0.9491887,-0.04109987,0.040202092,0.2734764,1.0008796,-0.82018507,-0.34369794,-0.270975,0.00058271387,0.25813425,-0.29383036,0.18492047,-0.31528273,0.09403308,0.24762149,0.21983506,-0.28232306],[0.0005957179,-1.5132132,-0.064817086,0.1532922,0.5894306,-0.46862274,0.68522537,0.05819377,0.22867863,0.007096001,0.020394647,-0.46124545,0.3289496,-0.03179155,0.22535956,-0.1858501,0.12605724,-0.11331306],[0.0037144264,0.17526588,0.8997809,0.13560319,0.7582112,0.3016461,1.6678429,-1.3722198,-1.1396137,-0.3491821,0.39440334,-0.2175496,-0.17992109,0.026779918,-0.19932391,0.65749645,0.42792454,-0.59700435],[-0.004916627,-0.86949986,-3.1472104,-0.046245735,0.58949816,0.13029447,0.49943313,0.119921446,-1.1917382,-1.7929658,-0.74677783,-0.51036227,0.06405667,0.093736,0.075880684,0.12603562,0.5108349,0.052058537],[0.0023457597,-0.664783,4.946816,0.81403846,-2.2644951,-2.0607138,-1.7517816,0.28588998,3.9568594,2.7328053,-0.2896687,0.79322964,0.75960326,-0.25073573,-0.5724614,-0.71555763,-1.2048925,0.40946966],[-0.0023486963,-0.7795025,0.021107612,-0.08805968,-0.32326528,-0.68839264,0.9240335,0.4994968,-0.023836527,0.175137,-0.34672633,-0.34674078,0.32279867,0.05844317,-0.023075575,0.37232506,-0.09687563,-0.12452232]],"activation":"σ"},{"dense_2_W":[[-0.37854546,0.34903055,-0.4462544,0.11327805,-0.24875195,0.35234123,-0.5626592],[0.42957336,0.53799313,-0.06286047,-0.31929597,0.14332363,0.52426404,-0.65911615],[-0.15604308,0.447812,-0.58008,0.051283363,-0.40378952,0.24825498,-0.20840329],[-0.3440618,-0.9011778,1.4646084,0.38501295,-0.4189048,-0.5722096,0.6253895],[-0.36881042,0.15492533,-0.12835744,-0.13917302,-0.41941592,-0.064528316,-0.024679296],[-0.3952051,-0.19353123,0.42472473,0.25226733,0.36719245,0.15404089,0.17196153],[0.046834674,0.48506153,-0.014719895,-0.01911938,-0.5700787,0.12933014,0.3826227],[0.5885063,0.33175373,-0.5520266,0.16487138,0.027746325,0.20234767,-0.6893546],[-0.24454424,-0.71767586,-0.108539544,0.74538267,-0.101703376,0.06964665,-0.1827993],[-0.8758459,-0.6128819,1.5650461,0.45312274,-0.5894857,-0.4010452,0.24010707],[-0.3640231,-0.295227,0.009693909,0.32785308,-0.42453107,0.5494616,-0.3201437],[0.6608706,-0.08454871,-0.5333993,-0.6653004,-0.021712486,0.63731277,-0.43692258],[-0.34482664,-1.5146594,1.5212393,0.5039458,-0.98475206,0.15418348,1.4046031]],"activation":"σ","dense_2_b":[[-0.012626887],[-0.060023643],[0.050328624],[-0.15241708],[0.002586862],[-0.0811935],[-0.032516863],[-0.047326654],[-0.04986636],[-0.058775026],[-0.035809994],[0.05208208],[-0.15562724]]},{"dense_3_W":[[0.6006235,-0.2893421,-0.28629094,0.28537595,0.56650835,-0.51059633,0.07124142,0.10285289,-0.06570319,0.27793735,-0.042230252,0.327788,-0.6483426],[0.23293988,-0.25339293,0.4200759,-0.49375746,0.0040358165,-0.6081097,-0.108511046,0.4325967,-0.2370615,-0.4646658,0.5137965,0.62279403,0.19901751],[0.46578276,-0.67444813,-0.6492283,0.40810102,0.13862292,0.4688345,-0.19089985,-0.38935006,0.5318019,0.25233418,0.2683579,-0.5857107,0.32623842]],"activation":"identity","dense_3_b":[[0.028790487],[0.028534047],[-0.03063328]]},{"dense_4_W":[[0.7596348,0.72767824,-1.0551875]],"dense_4_b":[[0.031701148]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AB'.json b/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AB'.json deleted file mode 100755 index 7e10555ddb..0000000000 --- a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019 b'68525339AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.7539926],[0.93529695],[0.4818552],[0.038544405],[0.9241015],[0.9277656],[0.93047893],[0.92769974],[0.9196844],[0.90819216],[0.8909238],[0.038282566],[0.03835162],[0.03842366],[0.03860774],[0.038648367],[0.038378567],[0.037988614]],"model_test_loss":0.01552480086684227,"input_size":18,"current_date_and_time":"2023-08-05_15-05-03","input_mean":[[28.271704],[-0.018472683],[0.008247399],[-0.011640539],[-0.016549714],[-0.016534679],[-0.015966991],[-0.012970649],[-0.013244884],[-0.021792166],[-0.030313933],[-0.0117374305],[-0.011689001],[-0.011635759],[-0.011480733],[-0.011386347],[-0.011478815],[-0.011520906]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16247147],[-1.9445274],[0.015820462],[0.1109649],[0.18606652],[0.14743169],[-0.25301546]],"dense_1_W":[[0.033168066,-0.87919986,-6.0003424,-0.11847333,0.23891214,-0.017026797,0.21457405,0.06397584,-1.1299858,0.119912185,1.2341022,-0.718399,-0.26759303,-0.5534113,1.0412015,0.43450904,0.20104626,-0.084277354],[0.6811516,-0.121241845,-0.015429761,-0.15817125,0.8674318,0.3464547,0.028172173,0.14950341,0.32529193,-0.21055248,0.17845789,0.92391425,-0.07065611,-0.065732196,-0.22456542,-0.7568571,-0.347454,-0.64657813],[0.060744118,-0.73202413,-0.012868376,0.4323286,0.18275686,-0.9485156,0.8238945,-0.10487157,-0.10203484,0.05330652,0.008031068,-0.023272691,-0.24555291,-0.039335933,0.06328203,0.17615116,-0.27155656,0.016184507],[-0.022168336,-0.4993914,4.419826,0.3107063,-2.6004608,-1.7346139,-1.8055027,-0.15056731,3.5626802,3.1007571,0.50810057,0.7390148,0.39296082,-0.6219894,-0.9289591,0.29771698,-0.002542225,-0.38791353],[0.07870597,0.8395529,0.013242184,-0.37794262,-0.2873907,0.75163865,-0.4381639,-0.17677695,0.047819123,0.007587919,0.010396626,0.38303232,0.201019,-0.5262356,0.27791938,-0.081237584,-0.17390475,0.19786458],[0.25589576,0.27254564,0.0028974493,0.337075,-0.32846543,0.07265917,-1.2584563,-0.101628564,0.20059124,-0.32358432,0.050918363,-0.031572163,0.28416264,-0.78280866,0.062558874,-0.11689831,0.5253208,0.8678441],[0.16486502,-0.6348946,-0.0078088874,0.20368655,-0.37894782,-0.3180483,0.77805275,-0.105039515,-0.10222425,-0.17470093,0.12180855,-0.6105949,-0.108344056,0.27209398,0.18639357,0.055669807,0.4774451,0.18108374]],"activation":"σ"},{"dense_2_W":[[-0.5479722,0.51978314,-0.3325378,0.7052226,0.82599765,0.20821774,-0.5566406],[-0.47786564,-0.5044051,1.2295787,0.34785864,-0.5027773,-0.53672224,0.4329206],[0.3557253,0.010534457,0.42732254,-0.4092949,-0.46742332,-0.6942757,0.48867208],[-0.70371103,-0.37598246,-0.64199096,0.5582689,0.3377767,-0.16154085,-0.6031509],[0.28246686,-0.18254404,-1.0761517,-0.44560048,1.0163425,0.6645717,-0.7254034],[0.038954254,-0.6713239,-1.047652,0.3876244,0.296178,-0.048443664,-0.5365625],[0.15319476,0.32095867,0.7348781,-0.05432626,0.10117875,-0.50145245,0.5931825],[0.23199868,-0.5129736,-0.18174349,-0.5271858,-0.4329709,-0.0027121021,-0.46761963],[0.1928321,0.30944964,-0.6179093,0.20904343,0.51145256,0.19034328,-0.9151516],[-0.14230113,0.5926942,-0.46564186,-0.1299676,0.29295698,-0.15119109,-0.7302749],[-0.27700615,-0.49345413,0.12770167,0.36850908,-0.8730177,0.26205686,0.66320413],[-0.47383484,-0.05481399,0.00739117,-0.33691958,-0.48928645,-0.14246316,-0.07991372],[-0.24223731,0.29117322,-0.2750107,0.42836645,0.5076202,0.4529231,-0.034581553]],"activation":"σ","dense_2_b":[[-0.011054851],[0.11898975],[0.016430143],[-0.121288925],[0.033908624],[-0.1270793],[0.024081398],[-0.03873727],[-0.03128879],[0.0043782927],[-0.054906446],[-0.03501189],[-0.075150594]]},{"dense_3_W":[[-0.5973777,0.6543564,0.6513368,-0.6236035,-0.6703424,-0.5459989,0.5743272,0.303027,-0.17172754,-0.5232033,0.20740275,0.17208031,-0.37048194],[0.17000821,0.15035313,0.15856911,0.34882855,0.46245342,0.4996729,-0.02127124,-0.097889625,-0.309891,-0.5858313,-0.07663794,0.36841103,-0.12395392],[-0.1960993,0.25925174,0.46165013,0.112479284,-0.15205826,0.03679703,0.6391964,0.15686889,-0.34719947,0.024827098,0.5550302,-0.29560098,-0.13534045]],"activation":"identity","dense_3_b":[[0.06578365],[-0.039697763],[0.035733122]]},{"dense_4_W":[[-1.3297648,-0.00095071405,-0.35285485]],"dense_4_b":[[-0.06175809]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017.json b/selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2017_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2017.json rename to selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2017_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018.json b/selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2018_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2018.json rename to selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2018_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2019_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA HYBRID 2019.json rename to selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2019_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020.json b/selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2020.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/CHRYSLER PACIFICA 2020.json rename to selfdrive/car/torque_data/lat_models/CHRYSLER_PACIFICA_2020.json diff --git a/selfdrive/car/torque_data/lat_models/GENESIS (DH).json b/selfdrive/car/torque_data/lat_models/GENESIS (DH).json deleted file mode 100755 index e80fc2aa96..0000000000 --- a/selfdrive/car/torque_data/lat_models/GENESIS (DH).json +++ /dev/null @@ -1 +0,0 @@ -{"test_dict":{"[0.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.2699708,"[0.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.44897613,"[0.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.27972165,"[40.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.6288122,"[40.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.009419857,"[40.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.29464614,"[20.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.8718414,"[40.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.16241446,"[20.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.23373634,"[40.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.5460306,"[40.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.18178429,"[40.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.2661167,"[0.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.25971827,"[0.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.8656753,"[0.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.65435606,"[0.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.16348448,"[20.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.23745517,"[40.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.55276626,"[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.005459955,"[40.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.57930475,"[20.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.6679626,"[20.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.6516425,"[0.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.48749548,"[40.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.16435784,"[0.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.6784933,"[0.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.6372965,"[0.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.19476463,"[20.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.66950613,"[40.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.5756492,"[40.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.26849964,"[40.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.35364658,"[40.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.8425623,"[0.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.29070386,"[0.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.84755886,"[40.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.70718986,"[40.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.025362803,"[0.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.14202757,"[20.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.46855992,"[40.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.2911558,"[0.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.6686591,"[0.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.29949942,"[40.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.46808085,"[40.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.019595843,"[20.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.68658686,"[40.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.5766193,"[20.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.7178196,"[0.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.0318396,"[20.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.29348856,"[0.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.6638601,"[20.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.6627258,"[0.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.07437267,"[20.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.6055348,"[20.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.23798963,"[40.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.17592952,"[20.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.01030465,"[0.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.7545617,"[20.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.18164062,"[40.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.16152,"[20.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.8436983,"[0.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.9237289,"[20.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.19309354,"[20.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.19966654,"[20.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.48542765,"[40.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.1542686,"[20.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.011308879,"[20.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.95253545,"[20.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.92795116,"[0.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.1619431,"[20.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.21448861,"[20.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.30357608,"[20.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.17162016,"[0.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.9254877,"[20.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.61486626,"[0.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.2479979,"[40.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.72604245,"[0.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.6708805,"[40.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.35719714,"[20.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.0061618295,"[0.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.8119934,"[40.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.4702388,"[40.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.830137},"input_std":[[8.253246],[1.2265166],[0.8396968],[0.03495619],[1.1769793],[1.1944457],[1.2117249],[1.2462167],[1.2448307],[1.2171412],[1.172086],[0.035094533],[0.035049263],[0.034998577],[0.034752842],[0.034525692],[0.034230117],[0.03413073]],"model_test_loss":0.003963234834372997,"input_size":18,"current_date_and_time":"2023-07-16_12-10-58","input_mean":[[24.465681],[0.14132848],[0.343076],[0.019675385],[0.10810958],[0.11891723],[0.12978078],[0.16952017],[0.17916267],[0.17290013],[0.1463772],[0.019302443],[0.019420939],[0.019535815],[0.01998929],[0.020338312],[0.020922989],[0.02162974]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"test_dict_zero_bias":{"[0.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.23143637,"[0.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.4652263,"[0.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.35620037,"[40.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.72915876,"[40.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.033811964,"[40.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.2459415,"[20.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.93224394,"[40.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.19291008,"[20.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.20748353,"[40.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.5995451,"[40.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.11259879,"[40.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.31002465,"[0.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.34267417,"[0.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.84346217,"[0.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.67134356,"[0.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.2411822,"[20.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.2577998,"[40.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.5963392,"[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.030760199,"[40.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.61936307,"[20.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.7194478,"[20.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.6834684,"[0.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.4523713,"[40.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.23015223,"[0.0,-4.0,0.0,0.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.6842142,"[0.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.62436,"[0.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.16453701,"[20.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.71494484,"[40.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.62495947,"[40.0,-4.0,4.0,0.0,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.20527135,"[40.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.37316445,"[40.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.95322937,"[0.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.24505597,"[0.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.8992404,"[40.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.7107156,"[40.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.023601279,"[0.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.12803368,"[20.0,0.0,-4.0,0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.4761059,"[40.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.34226668,"[0.0,4.0,0.0,0.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.66734576,"[0.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.2568946,"[40.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.5198489,"[40.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.039260928,"[20.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.6992957,"[40.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.57003254,"[20.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.7749707,"[0.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.06198548,"[20.0,4.0,-4.0,-0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.3452634,"[0.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.6636515,"[20.0,4.0,0.0,-0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.6915985,"[0.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.027520018,"[20.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.6457659,"[20.0,4.0,-4.0,0.0,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.27366233,"[40.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.20291242,"[20.0,0.0,4.0,0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.03861127,"[0.0,4.0,4.0,0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.8053802,"[20.0,4.0,-4.0,0.2,5.2,4.8,4.4,2.8,1.6,0.0,-2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.23112899,"[40.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.13886195,"[20.0,-4.0,-4.0,0.0,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.8606299,"[0.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.97973317,"[20.0,0.0,0.0,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.16530247,"[20.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.2352428,"[20.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.510034,"[40.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.15056436,"[20.0,0.0,-4.0,-0.2,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.02322955,"[20.0,4.0,4.0,-0.2,2.8,3.2,3.6,5.2,6.4,8.0,10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":1.0131809,"[20.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.93524235,"[0.0,0.0,0.0,0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.20059028,"[20.0,0.0,-4.0,0.0,1.2,0.8,0.4,-1.2,-2.4,-4.0,-6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.2240225,"[20.0,-4.0,4.0,0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.2621489,"[20.0,-4.0,4.0,-0.2,-5.2,-4.8,-4.4,-2.8,-1.6,0.0,2.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.13601273,"[0.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.90459216,"[20.0,-4.0,0.0,-0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.6621921,"[0.0,0.0,4.0,0.0,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.2747507,"[40.0,4.0,4.0,0.0,2.8,3.2,3.6,5.2,6.4,8.0,10.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":0.83059245,"[0.0,-4.0,0.0,0.2,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,-4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.6849924,"[40.0,0.0,4.0,-0.2,-1.2,-0.8,-0.4,1.2,2.4,4.0,6.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":0.43381947,"[20.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]":-0.043959964,"[0.0,-4.0,-4.0,-0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2,-0.2]":-0.7887305,"[40.0,4.0,0.0,0.2,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":0.5149402,"[40.0,-4.0,-4.0,0.2,-2.8,-3.2,-3.6,-5.2,-6.4,-8.0,-10.0,0.2,0.2,0.2,0.2,0.2,0.2,0.2]":-0.8446559},"layers":[{"dense_1_b":[[-0.06827587],[-0.028500285],[-0.25173208],[-0.07750105],[-0.2940142],[0.6922563],[0.8121905],[0.7862803],[0.045949236],[-0.752093],[0.0956208],[-0.07192505]],"dense_1_W":[[0.9860141,0.06856981,0.16649614,0.34863472,-0.4680053,-0.5291158,0.22607322,-0.44315264,0.38767982,0.095361136,-0.04150002,-0.23525304,-0.02514362,0.030176405,-0.124883376,0.21063851,0.24710408,-0.0042801024],[0.7650095,0.40897316,0.15986899,-0.41831535,0.20153247,0.535765,0.31352526,-0.11838379,0.07478691,0.30549064,-0.25162768,-0.5103203,-0.74696344,-0.36560678,0.2748608,0.26366073,0.6311933,0.713333],[-0.13126527,-0.39487827,-0.13285579,-0.5997767,-0.07298161,-0.73874617,0.102481976,-0.4895145,0.20335777,-0.06410841,0.16459773,-0.49094355,0.15613374,0.11448425,0.020741098,0.16492575,0.4202937,0.23035619],[0.21678914,0.28709143,0.31667808,0.38460296,0.2784755,-0.118180774,0.23113173,0.31613338,-0.14956291,-0.21667449,-0.32722402,-0.27772832,-0.49006936,0.2742082,0.011245524,-0.43906662,0.3694417,0.1636142],[-0.49277544,-0.32197058,-0.020395037,-0.17285073,-1.8189527,-1.3681763,-0.9464799,2.308432,2.1192882,0.9617323,-0.55478024,0.17136998,0.28032053,-0.1915387,-0.2276642,0.34017745,-0.0736793,-0.046107627],[0.9547897,-0.1796725,0.08065475,0.2715653,0.6025838,0.07301243,0.63076055,-1.0844946,0.0689092,-0.19870193,-0.028648961,0.3244974,0.11944415,0.042525414,-0.11440154,-0.070732705,-0.13264629,-0.3839806],[0.4166084,-0.22970842,0.03894506,0.27970275,-1.6061078,-0.7616155,-1.0644445,2.3107653,1.3266898,0.7445326,-0.42004168,0.32592276,-0.5272901,-0.058386777,-0.011751664,-0.24185024,0.2550218,0.037888173],[1.227693,-0.08679133,-0.058664244,-0.32752186,-0.33977526,-0.44716588,0.1074168,1.2112535,0.38789093,-0.5875413,-0.13212678,-0.48916072,-0.5090327,0.048765358,0.009949782,-0.036129378,0.4284392,0.5424678],[0.05534743,-0.0070937686,0.012779384,-0.020212462,-0.810695,-0.7458955,-0.06678266,0.24761188,0.7959795,0.18153493,-0.77803063,-0.3331065,-0.41612664,-0.10347939,0.4260129,-0.12432382,0.19131409,0.5900885],[-1.3917207,-0.10825836,0.25955147,0.117827095,0.1907617,0.056196008,-0.44743136,0.46662346,-0.07211038,-0.27684382,0.048279505,-0.67529994,-0.1008146,-0.26535323,-0.21489926,0.33245432,0.37282628,0.8048224],[0.9139895,0.18345529,-0.11113925,-0.024819624,-0.0057961256,0.42582917,0.20965768,0.09122352,-0.04145471,-0.08591005,0.033041902,0.102651305,0.28468904,-0.14300235,-0.1514348,0.27464387,-0.3937016,-0.21395943],[0.14075463,-0.36453637,0.022140993,-0.24156585,-0.22243826,0.5132401,0.317588,-1.4172845,0.07024156,0.36280203,0.19390614,0.31465214,-0.43508086,-0.014590371,0.38123438,0.31295216,0.064947814,-0.3264055]],"activation":"σ"},{"dense_2_W":[[0.2944305,-0.1596823,-0.53525865,0.49642923,0.23475026,0.23187475,0.71439105,0.65725046,-0.721471,0.39266056,0.37784654,-0.27128077],[0.081694655,0.13397129,0.15713829,-0.09578413,-0.5178259,-0.08045092,-0.54402024,-0.33381253,-0.22557487,-0.44034663,-0.5231108,-0.014040657],[-0.53353846,-0.49547645,-0.5018153,-0.3451814,-0.4162906,-0.11419333,0.14722995,-0.4278855,-0.30550334,-0.57627094,-0.48164564,-0.6556868],[-0.3350859,-0.53481793,0.17310745,0.041560747,-0.17386791,-0.36399472,-0.6959931,-0.07396456,0.06297616,0.041960794,-0.44298738,0.47928327],[0.37257755,0.056011233,0.121093154,0.13028839,0.112854324,-0.15124673,0.18506464,-0.25879407,0.010806852,-0.38031578,-0.30364817,0.40391642],[-0.7007721,-0.05058494,-0.37102678,0.0057000583,0.36505723,-0.0139328055,0.33886233,0.13501829,-0.7866263,-0.08625708,0.06882772,-0.7447073],[0.24382925,-0.7427297,-0.087578066,0.27406982,0.55775076,-0.9633511,0.8514653,0.5075772,-0.8725846,0.26276717,-0.49534693,-0.85888404],[0.2656534,0.19259208,0.40583682,0.31773284,0.034196496,-0.16609356,0.15637825,-0.6308068,0.47307655,0.19246396,-0.28782868,-0.031524025],[-0.33996844,0.35855332,-0.8875853,0.34016752,0.1107245,-0.4759234,0.05391628,-0.3273293,-0.60782087,0.21380496,-0.42787686,-0.67130834],[0.28692353,-0.27509448,0.04464982,-0.3738229,-0.16551112,0.030297015,-0.48875,-0.19420627,0.017036378,-0.16820177,0.10364311,-0.35664937],[0.10276442,0.07036441,-0.09596506,-0.26394823,-0.21366283,-0.145804,-0.33585423,-0.6869976,-0.15877219,-0.13249736,-0.7068687,0.04853754],[-0.063890144,-0.34752303,0.036439255,0.007083208,-0.12175009,-0.21223761,-0.3370601,-0.6512872,0.024522861,-0.12854238,-0.12914781,0.24186853],[0.26432735,-0.32675922,-0.7650313,-0.027757708,0.35079917,-0.76993525,0.14455345,0.25884274,-0.22133446,0.37703148,0.23170869,-1.0444877],[0.32937536,-0.13382863,0.48463398,-0.047336943,-0.27687612,0.23009335,-0.32501528,0.15273342,0.12341018,-0.33050254,-0.5033011,0.36793295],[0.019172277,-0.46311465,-0.47122756,0.3662296,-0.05598463,-0.45946774,0.11587991,0.16402873,0.065510325,-0.06082724,-0.52629966,-0.15041721],[0.13054866,-0.29858604,-0.38646755,-0.26892266,-0.3903054,0.10999007,-0.6066756,-0.27233317,-0.09195491,-0.39942724,-0.7569417,0.04020184]],"activation":"σ","dense_2_b":[[-0.024400406],[-0.012108642],[-0.2738606],[-0.06441908],[-0.035198342],[-0.17128238],[-0.2096501],[-0.047762156],[-0.16214791],[-0.025786025],[-0.21445137],[-0.25522697],[-0.14236587],[-0.06891089],[-0.11348295],[-0.27611488]]},{"dense_3_W":[[-0.045766644,0.39230958,0.35891584,-0.4291976,-0.04042154,-0.30131957,0.2852373,0.22184609,-0.26795706,-0.3909815,-0.0844706,0.004657081,-0.12571083,0.081972,0.22855265,0.14256158],[-0.0930191,0.18007645,-0.19445603,0.17205104,0.24538551,-0.04826821,-0.21634555,0.19088717,0.026500426,-0.15073289,0.2712199,-0.035126556,-0.12222757,0.20960063,-0.38159323,-0.14284025],[-0.441732,-0.15396653,0.03677415,0.3120023,0.011853378,-0.29715177,0.3207848,0.345577,0.13360831,-0.058848828,0.4174631,0.05521104,-0.1556204,0.2805419,-0.34175965,-0.33693245],[-0.4516799,-0.23317254,0.23108752,0.21102518,-0.030421874,-0.1663392,0.29930797,0.10362555,-0.08888556,0.30611843,-0.10012278,-0.13986777,0.23634678,-0.3123206,0.20500444,-0.192751],[-0.004745441,-0.43816042,-0.034584858,0.19766587,0.3116471,-0.03267742,-0.20999157,-0.20225246,-0.067765154,0.2848538,-0.16701016,-0.059503432,0.3308554,0.22440504,-0.3225443,0.05546478],[0.05413141,-0.3679634,-0.08688536,-0.07090988,-0.29120877,0.1316063,0.44080707,-0.16184773,0.20294042,0.20072685,-0.12445014,0.3804063,0.20178777,-0.13255891,-0.30791807,0.10261593],[0.38054186,-0.036883593,0.111167036,-0.15566286,-0.23951554,-0.059736684,0.5326792,-0.41414064,0.3691683,-0.09329605,0.22044435,-0.21697398,0.2869305,-0.39302784,-0.13643056,-0.27738827],[-0.14465772,-0.4031915,-0.17516668,0.13024601,-0.37880698,0.40701059,0.2547356,0.094646186,0.19080016,-0.40483093,-0.2865975,0.23534034,0.31190503,0.24550194,0.39888,-0.27389622],[0.36007127,-0.093776844,0.11617923,-0.02295303,-0.08457082,0.09956218,-0.013975839,-0.46377388,0.2146814,0.2755668,-0.09221034,0.035337944,0.20806664,0.042331383,0.2022907,-0.19461066],[0.39033055,-0.52232456,-0.25495735,-0.5319784,-0.31744576,0.6584618,0.81467754,0.12727821,0.33764753,-0.0022844106,-0.543308,-0.39109668,0.36655223,-0.5292826,0.4390524,-0.44351915],[-0.14593528,-0.040282447,-0.30888835,0.19295529,0.07064081,-0.39783165,0.039676864,-0.06879557,-0.39840496,0.19014457,0.04776782,0.38430482,-0.2741348,0.08051817,-0.14613572,-0.100173116],[0.17331427,-0.24296136,0.33474293,0.19222625,0.29851925,-0.30138525,-0.019168438,-0.2754576,-0.122989416,-0.0025447265,0.33477452,0.28567022,-0.3947916,-0.037584867,-0.15590495,0.3125137],[0.4101434,-0.3299672,0.28667036,-0.08923333,-0.16061012,0.0777971,0.38074505,-0.103880584,-0.117819495,-0.24564442,-0.4328198,-0.18800925,0.23287506,-0.29935506,-0.09091186,0.10900072],[-0.026216649,0.34356278,0.16383435,-0.20038186,-0.15712044,-0.15588541,-0.077189654,0.20966166,-0.1291972,0.14222729,-0.3434131,0.007533742,-0.06533606,0.09545395,-0.19654328,0.24315165],[0.43069547,0.045578357,-0.25710672,-0.111668326,-0.017155485,0.10505446,0.34679157,0.28005412,0.031709734,-0.30453283,-0.12727985,-0.057555404,0.06327874,-0.33901685,0.034049414,0.108673126],[0.016011784,0.0637642,-0.38568556,0.18072137,-0.3611924,0.30670312,0.05511325,-0.075690806,-0.39434642,0.079114,-0.19587561,0.1014485,0.40695387,0.0076808794,-0.15043128,0.121672675]],"activation":"identity","dense_3_b":[[0.01894022],[-0.0973606],[-0.005777353],[0.020744076],[-0.046186622],[0.00427233],[0.004350739],[-0.018349739],[-0.14396259],[-0.02958251],[0.038920324],[-0.017607786],[0.0048550465],[0.02556554],[-0.030977953],[0.034558125]]},{"dense_4_W":[[-0.006525211,-0.010181395,-0.1280271,-0.17862214,0.0013907425,0.17761578,0.55933243,0.20846461,0.03992837,0.16985804,-0.12210165,-0.014709531,0.4256174,-0.040674876,0.20955296,0.010441904]],"dense_4_b":[[-0.0021002437]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/GENESIS G70 2018 b'xf1x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106'.json b/selfdrive/car/torque_data/lat_models/GENESIS G70 2018 b'xf1x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106'.json deleted file mode 100755 index 8904b3bb61..0000000000 --- a/selfdrive/car/torque_data/lat_models/GENESIS G70 2018 b'xf1x00IK MDPS R 1.00 1.06 57700-G9420 4I4VL106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.67504],[0.83055073],[0.4504677],[0.031510424],[0.8270034],[0.8270758],[0.8283119],[0.82153946],[0.82032317],[0.8195808],[0.8197018],[0.03126837],[0.03131486],[0.031380102],[0.03158359],[0.03163829],[0.03178264],[0.031831454]],"model_test_loss":0.001804972067475319,"input_size":18,"current_date_and_time":"2023-08-05_16-18-44","input_mean":[[25.399244],[0.061304945],[-0.0003437192],[-0.017434629],[0.06381776],[0.06372736],[0.063848905],[0.063940406],[0.065443896],[0.06275638],[0.06494871],[-0.017370405],[-0.017361412],[-0.017346727],[-0.017236443],[-0.017156692],[-0.017259058],[-0.017420387]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0690558],[-0.77586544],[-0.22050455],[-0.00765285],[-0.19674423],[-0.8347951],[-0.09352683]],"dense_1_W":[[0.020506917,-0.15335819,-0.0008360731,0.6498087,0.17344612,1.1971287,-0.2960149,-0.4612594,0.17628047,-0.22166184,0.34056312,0.75876623,-0.24494657,-0.78779393,-0.5285824,-0.06854418,0.110915035,0.108071424],[-0.5525338,-0.18559927,-0.8664502,-0.19414489,0.32285878,0.104777955,0.32996055,-0.5476456,0.2609833,-0.6216712,0.30093062,-0.44722554,0.10542638,0.3017626,0.10288904,0.38855773,0.19561474,-0.3270897],[-0.14589511,0.20689815,-0.0024478706,0.35753623,0.29983085,0.30490085,0.19881076,-0.5439725,-0.055093203,0.23563561,0.10342807,0.18627505,0.009484609,-0.5248601,-0.15741313,0.25914413,-0.06266835,-0.051203806],[0.011763201,-0.32582518,1.6164731,0.1839908,-1.0310354,-0.51407796,1.5570961,-0.35941225,-0.24897343,-0.20450619,1.1247143,0.07288912,-0.09742617,-0.011884875,-0.3086428,0.21652025,0.033836115,-0.14367257],[-0.00040854778,1.1504747,0.00023197546,-0.15424743,0.40093625,-0.89857256,0.12767099,-0.9129619,-0.77709115,0.5045758,0.12572749,0.08928875,-0.0022053611,0.0144833615,-0.18096298,0.17682968,0.198336,0.16687107],[-0.62956375,0.0370336,0.90060794,0.16559666,-0.26498243,-0.0035898676,-0.3527606,0.6536402,-0.15629528,0.18882553,-0.04355473,-0.0017563448,0.060951266,-0.07628207,-0.10434113,-0.33889666,0.12719911,0.032956228],[0.00914529,0.18054785,2.2880237,0.2819539,-0.25446033,-0.76159877,-1.333457,-0.0044576577,0.7970225,1.3939439,-0.08412827,-0.21678115,0.40472636,0.022984171,-0.405091,0.08374549,-0.27028057,0.09941351]],"activation":"σ"},{"dense_2_W":[[0.7266154,0.32628095,0.51000977,-0.4783954,0.086360686,-0.22168429,-0.2880397],[0.598752,-0.3016096,0.5087822,-0.5399995,-0.5202169,0.058336493,0.047094647],[-0.28886208,0.44084644,0.1333289,0.47497818,-0.28537926,0.033592604,0.07091276],[-0.21188565,0.3598567,-0.25231984,-0.32756943,0.39144737,0.048175387,-0.13305938],[0.03274561,-0.55677044,-0.11253939,-0.013972536,-0.06857901,0.28146827,-0.55059713],[0.5122463,0.43594432,0.17488275,-0.720984,-0.17414498,0.51594955,-0.16287713],[0.14888862,0.06988386,-0.29811302,0.23327418,-0.44284585,-0.313677,0.414895],[-0.7221291,-0.33080924,0.34764898,-0.15981244,0.09235077,0.24312954,-0.6309208],[0.31931618,-0.16977033,0.4973229,0.31941646,-0.33441898,-0.25843173,-0.33283034],[0.081630506,0.19055562,-0.32433864,0.38465676,-0.35722488,-0.5474165,-0.25410983],[-0.5063781,0.4390191,0.057292584,0.41282323,0.40151483,-0.69037515,-0.13255808],[-0.89217335,0.3417005,0.13010992,0.39993486,0.0745399,-0.006703715,-0.55569714],[0.46920383,0.00090861076,-0.34466454,-0.62741935,-0.54203355,0.26534078,0.31966165]],"activation":"σ","dense_2_b":[[-0.0036245622],[-0.013149616],[-0.11431158],[-0.068017736],[-0.21495658],[-0.016385378],[0.016726723],[-0.063780464],[-0.0170552],[-0.06312584],[-0.066713385],[-0.08563329],[-0.023486812]]},{"dense_3_W":[[0.05525152,0.3041412,-0.26633847,-0.4607755,-0.50169283,-0.13767284,0.525694,0.027187727,-0.54194945,0.00530328,-0.29629645,0.06593012,-0.13549523],[0.20180804,0.22567257,0.099739715,-0.5508954,0.5213892,0.6428468,0.41780272,-0.44941857,0.57049906,-0.5196749,-0.44776997,-0.3975976,0.3711528],[-0.104158744,-0.27345514,-0.4545859,0.40854144,-0.49072927,-0.49170205,-0.3166091,0.23397347,0.61358595,-0.037754327,-0.2841472,-0.10350736,0.2719038]],"activation":"identity","dense_3_b":[[0.052092277],[0.035965864],[0.066190146]]},{"dense_4_W":[[0.8467955,1.0950449,0.25318098]],"dense_4_b":[[0.043908965]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/GENESIS G80 2017.json b/selfdrive/car/torque_data/lat_models/GENESIS G80 2017.json deleted file mode 100755 index 84e07c5900..0000000000 --- a/selfdrive/car/torque_data/lat_models/GENESIS G80 2017.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.38813],[1.0174526],[0.39554036],[0.046162203],[1.0090938],[1.0111505],[1.0117267],[1.0022837],[0.9907708],[0.9691922],[0.93781143],[0.045898493],[0.0458996],[0.045888968],[0.04573459],[0.045532204],[0.045233488],[0.044901755]],"model_test_loss":0.012157289311289787,"input_size":18,"current_date_and_time":"2023-08-05_16-43-40","input_mean":[[25.00623],[0.054802105],[0.011563125],[-0.012088739],[0.050388798],[0.05198936],[0.05343812],[0.056934483],[0.05857226],[0.05653321],[0.05339159],[-0.012127758],[-0.012105216],[-0.012089895],[-0.012095662],[-0.012160323],[-0.012418678],[-0.012670423]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.23510607],[0.017906608],[-0.09428025],[2.0587661],[2.4378984],[-0.2166746],[0.17629944]],"dense_1_W":[[-0.008606778,0.34109786,0.6875069,0.0028993126,0.8000613,0.546632,-0.9264688,0.03937569,0.13737564,-0.2733249,-0.96302414,0.339788,0.60886014,0.26368546,-0.23521979,-0.1668846,0.3196768,-0.15900844],[-0.0011819584,0.729729,2.0695696,0.20169054,-1.0443937,-0.5805483,-1.2778925,-1.3182445,0.7515108,1.8376803,0.88894564,0.9433448,0.60453916,-0.5198952,-0.27219102,-0.18214135,-0.32308298,-0.5258672],[-0.0007019058,-0.45617288,-0.058651116,-0.1715701,-0.1380315,-0.021959623,0.026901057,0.082620144,0.1911437,0.00152804,-0.042670403,-0.3032745,0.45580253,0.032131206,-0.2713613,0.3809063,-0.021339726,-0.046729088],[0.9848692,-2.0930884,0.05227474,0.14134067,-0.5008443,-0.51911664,-0.10874144,-0.11555108,0.059225876,-0.20209119,-0.5084024,0.119557716,-0.17086504,0.5155482,-0.2892066,-0.723269,0.19560312,0.18627037],[0.9442295,1.9961289,-0.05074522,-0.043404724,0.6943,0.59966326,-0.045782663,0.08436519,-0.1630318,0.05319531,0.67571694,-0.3004089,-0.12995596,-0.41098842,0.36848706,0.87160724,0.39175102,-0.7181419],[-0.0074142898,-0.04797374,0.64808965,0.55981237,0.49558824,0.63315,1.5447174,-0.5666181,-1.9028187,-1.1591543,0.67295575,-0.3617059,-0.2785844,0.52386093,0.78436995,0.022645274,0.30185598,-0.6463948],[-0.002286195,0.25007936,-0.027766582,-0.2213954,0.28290057,0.71661454,0.073331274,-0.017547475,-0.64222115,-0.2412949,0.5705157,0.31924602,-0.050814595,-0.45005983,-0.31452417,0.30082983,-0.56895506,0.3093173]],"activation":"σ"},{"dense_2_W":[[0.49283543,1.4813224,-1.1632105,1.1330808,1.6111002,-0.79484963,0.521326],[-0.45535,-0.27000293,0.20228699,-0.021973267,-0.20624182,-0.20179789,-0.0924967],[-0.6126425,0.12641166,0.12921864,0.18841244,0.22053215,-0.0732061,-0.6845349],[-0.44073936,-0.26221433,0.71035826,0.8264845,0.27127275,0.1522136,-0.40632126],[1.1533407,0.74939775,-0.74686474,-0.15980572,1.3828646,-0.47532186,-0.49893177],[-0.010718742,-0.49425468,0.57077384,0.52116805,-0.1557675,-0.2101485,0.1713434],[0.123579755,-0.003964546,0.37106356,0.31162402,-0.1109699,-0.013212317,-0.050931312],[0.46784705,0.20873305,-0.51459223,-0.12245424,-0.35924026,-0.6009022,0.7039142],[0.6885935,0.4780248,-0.95869493,-1.1940409,-0.37541804,-1.0116334,0.3657836],[-0.084950574,0.20079572,-0.6036541,-0.5749908,-0.4149406,-0.06347254,0.3201109],[0.6054816,-0.26072496,-0.6472537,-0.10404058,0.28988326,-0.7315275,0.71709865],[-0.46448785,0.027026115,0.68479264,-0.25374988,-0.82326454,0.63361776,-0.95420885],[0.4081272,0.4028123,-0.54246926,0.45891264,0.535415,-1.0074925,0.021217577]],"activation":"σ","dense_2_b":[[-0.31526598],[-0.04387461],[-0.012186167],[0.16261126],[-0.48067328],[0.021213803],[-0.06306296],[-0.18538073],[-0.3133758],[-0.33385947],[-0.30100945],[-0.1241097],[-0.03466007]]},{"dense_3_W":[[0.21734363,0.043079853,0.18524005,-0.2568567,0.15158817,-0.36534816,-0.34965506,-0.36512575,-0.06888381,-0.31225628,-0.10772074,-0.67586124,-0.20552121],[-0.5188872,-0.5363552,0.6651099,0.42919686,0.35317427,0.5209541,0.4917763,-0.62617296,0.0038265921,0.033600807,-0.36337307,0.619507,-0.45799708],[-0.20623821,0.2606718,0.049107946,0.78371567,-0.46874192,-0.036460795,-0.09059373,-0.622457,-0.82094365,-0.10458149,-0.10322752,0.7906474,-0.24749829]],"activation":"identity","dense_3_b":[[0.030028654],[0.035442725],[0.060197428]]},{"dense_4_W":[[0.047837973,-0.35243145,-1.0255531]],"dense_4_b":[[-0.05134228]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN b'xf1x00JW1 MDPS R 1.00 1.03 57700-CU100 1C02'.json b/selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN b'xf1x00JW1 MDPS R 1.00 1.03 57700-CU100 1C02'.json deleted file mode 100755 index 1a2b1b864e..0000000000 --- a/selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN b'xf1x00JW1 MDPS R 1.00 1.03 57700-CU100 1C02'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8666883],[1.3245112],[0.52562356],[0.052998435],[1.3207145],[1.3219501],[1.322223],[1.3074695],[1.2883352],[1.257932],[1.2234186],[0.0526958],[0.05277707],[0.052846666],[0.052899044],[0.052800883],[0.05247098],[0.05198219]],"model_test_loss":0.004962869919836521,"input_size":18,"current_date_and_time":"2023-08-05_17-34-41","input_mean":[[25.097816],[0.03033095],[0.009557012],[0.0017949705],[0.025300408],[0.02690665],[0.028368048],[0.032760378],[0.03126874],[0.0306388],[0.028780613],[0.0017470417],[0.001759046],[0.0017673858],[0.0017764169],[0.0017657065],[0.001777597],[0.0017051382]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.4459309],[-0.031835943],[-0.6412851],[1.5992996],[-1.8778602],[0.067136765],[-0.1248056]],"dense_1_W":[[0.23177835,0.5813533,-0.03405331,-0.5137932,0.4210262,0.27980956,-0.82241374,-0.19962446,0.11077991,-0.093077675,0.1452694,0.8414958,0.57338977,0.19254212,-0.737942,0.19993012,-0.20208997,-0.3420811],[-0.000672615,0.59404653,0.035378806,-0.02149494,-0.18110669,0.2673035,-0.31291944,0.18944205,0.16411953,-0.004739658,-0.18394397,0.08154405,-0.19406919,-0.35596544,-0.19057219,-0.75509447,0.12070875,0.52753425],[0.29864538,-0.47656062,0.03612531,-0.026517967,0.042197336,-0.7134168,0.7022738,0.3648459,-0.26705045,-0.120554686,0.0457595,-0.77211475,-0.1677129,-0.06930536,0.10366717,0.58520234,-0.1898025,0.50099725],[0.39080697,-0.61320007,-0.17329827,0.5142849,0.093346365,-0.8120696,0.27996528,0.053159885,-0.1457705,-0.18952872,0.0007353743,-0.23638912,-0.07647951,0.3922934,-0.42914188,-0.37108567,0.20613119,0.062412854],[-0.39423087,-0.40943775,-0.18895875,0.17182297,-0.6007384,-0.11699258,0.3204309,-0.2494266,-0.16516677,-0.13115573,-0.014376576,0.05930437,0.23952278,0.056292366,-0.34672272,-0.29824072,-0.15019956,0.32797214],[0.10670553,0.5959076,0.009395143,-0.41772658,0.22091666,0.25926113,-0.105012566,-0.24128042,-0.23561135,-0.16422139,0.39602,-0.030733602,0.1917602,-0.1896667,0.5195841,0.19198169,-0.09055647,-0.114016406],[0.004652841,-1.0700105,-4.301339,0.18097587,0.88896906,0.100279324,0.78191584,-0.1407951,-0.6152163,-0.36759338,0.3781233,-0.2559152,-0.22632733,0.0830458,0.30006638,0.070950896,-0.10994307,-0.077234626]],"activation":"σ"},{"dense_2_W":[[-0.59839344,-0.36497867,-0.02586302,-0.31546462,0.67249775,0.17433609,0.033796396],[0.7766115,0.40153167,-0.7150285,-0.80042535,-0.720546,0.31380758,0.4402431],[0.0970656,0.51849407,-0.65787846,-0.28156418,-0.7972932,0.52290595,0.16948703],[-0.16617168,-0.28093967,0.43271568,0.5635128,-0.15296243,0.05517985,0.5591824],[-0.07375612,0.9804654,-0.45864907,-0.011922217,-0.76456034,0.71113896,-0.17698406],[0.08965309,-0.3817331,0.56427354,0.22461765,0.36535984,-0.41643435,0.02309694],[-0.3194701,-0.9402775,0.035420515,1.0038631,-0.04493413,0.46595728,0.61562926],[0.3133922,0.54886144,0.20508583,-1.9232413,0.29925007,-0.15759094,-0.964843],[-0.07229484,-0.40885624,0.36455467,0.22989284,0.29330707,-0.23192556,-0.25334215],[-0.66204053,-0.6006576,0.46530548,0.8226111,-0.50858915,0.65410966,0.8907581],[0.062297866,-0.5300527,-0.24341863,-0.26440525,-1.0893056,0.6854048,-1.044881],[-0.3985859,-0.46718082,-0.12280806,0.5118322,0.58033365,-0.4268356,0.27308896],[0.66325355,1.5489223,-0.2619856,0.8496741,-1.5036632,0.18988253,-1.092742]],"activation":"σ","dense_2_b":[[-0.067070246],[-0.0031838221],[0.026247503],[0.016272478],[-0.05702159],[-0.06190444],[0.047330927],[-0.14584902],[-0.043730203],[0.10126568],[-0.23609862],[-0.107597634],[0.5373265]]},{"dense_3_W":[[-0.16748182,-0.4861085,-0.4175482,0.17064394,0.1626839,0.6020392,0.69299996,-0.7983646,-0.3389632,-0.22732152,0.15245983,0.19130903,-0.7817714],[0.16310972,-0.6437373,-0.5314633,0.23254934,-0.1725596,-0.4100144,0.43598408,-0.77505416,0.14245929,0.27584276,0.6299163,0.51607686,-0.5231239],[0.4058488,-0.5608606,-0.7491334,0.3631101,-0.32120687,0.37973177,-0.12449112,-0.1279431,0.57055753,0.59800303,-0.3972419,0.73630637,-0.36663607]],"activation":"identity","dense_3_b":[[0.12561505],[0.06481958],[0.04212058]]},{"dense_4_W":[[-0.47166833,-0.46609542,-0.5415291]],"dense_4_b":[[-0.052935593]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/GENESIS G70 2018.json b/selfdrive/car/torque_data/lat_models/GENESIS_G70.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/GENESIS G70 2018.json rename to selfdrive/car/torque_data/lat_models/GENESIS_G70.json diff --git a/selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN.json b/selfdrive/car/torque_data/lat_models/GENESIS_GV60_EV_1ST_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/GENESIS GV60 ELECTRIC 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/GENESIS_GV60_EV_1ST_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/GENESIS GV70 1ST GEN.json b/selfdrive/car/torque_data/lat_models/GENESIS_GV70_1ST_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/GENESIS GV70 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/GENESIS_GV70_1ST_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/GMC ACADIA DENALI 2018.json b/selfdrive/car/torque_data/lat_models/GMC_ACADIA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/GMC ACADIA DENALI 2018.json rename to selfdrive/car/torque_data/lat_models/GMC_ACADIA.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA,A150x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA,A150x00x00'.json deleted file mode 100755 index 35fd803df5..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA,A150x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.97151],[0.74501616],[0.33569595],[0.028122501],[0.7403551],[0.73829293],[0.7401743],[0.7252648],[0.7144178],[0.7009765],[0.6888075],[0.028033128],[0.028054733],[0.028070904],[0.027984012],[0.027977224],[0.027935864],[0.027860973]],"model_test_loss":0.007779959123581648,"input_size":18,"current_date_and_time":"2023-08-05_18-55-32","input_mean":[[24.977537],[0.008342045],[0.002733684],[-0.0039678486],[0.0046404926],[0.00584171],[0.006370007],[0.008761067],[0.010619238],[0.012941762],[0.014379741],[-0.0040723],[-0.0040712818],[-0.004070556],[-0.004221088],[-0.004329774],[-0.0044895913],[-0.0046329168]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.06255275],[-0.10187155],[0.7811029],[0.5233844],[-1.1382071],[-0.1777123],[-1.2519176]],"dense_1_W":[[0.11130547,-4.7213726,-0.47437814,0.11127721,-0.18916543,-1.6377331,0.9418644,-1.1306248,-2.1403713,-1.7070324,-0.64424783,-0.33537778,-0.09433337,-0.21594714,-0.18122146,0.16977471,0.10330264,0.19049811],[-0.0004276181,0.6357742,0.05217043,-0.20857349,-0.80013305,1.4368694,0.5090257,-1.1573409,-0.36113778,-0.1694356,0.4889256,0.09562526,0.070235886,-0.3155261,0.23921712,0.034688536,-0.078639016,-0.010847355],[0.7599186,2.121532,0.72905946,-0.14806178,0.5078854,-1.3953625,0.24837576,-0.44519806,-0.4571781,-0.11445646,-0.1446055,0.013272849,-0.096724935,0.31767842,0.0024148482,-0.38241157,0.518821,-0.24625751],[0.6820916,-1.5524395,-0.7604904,-0.09014856,0.14045534,-0.09164528,-0.043247532,0.71089435,0.00785311,0.5674591,-0.06433367,-0.0075882818,0.078265265,-0.1252983,0.23067287,-0.24010041,0.17806269,-0.0014166064],[-0.5627969,1.037751,-0.86133707,-0.49025095,-0.46149084,-0.9962395,0.5214078,-0.56174046,-0.39522848,0.08022861,0.518166,-0.3117448,0.23640868,0.2056402,0.45708388,-0.06492579,-0.064152785,0.03409542],[0.13577399,0.5898029,-0.45204794,-0.57214713,-1.5238308,-0.8625397,-1.3790354,-3.5523987,-1.6210394,-1.4617451,-0.67999744,-0.4513496,-0.03868263,0.0944409,0.544846,-0.21822882,0.50802565,-0.085099295],[-0.68000346,-0.7993309,0.8909783,0.27740914,0.51246107,1.4516846,-1.2700812,0.45289844,0.44953805,0.022532407,-0.5839419,0.20553645,0.1257213,0.067001835,-0.839108,-0.08893746,0.19246873,0.060739163]],"activation":"σ"},{"dense_2_W":[[0.085230306,-0.29360268,0.51161885,0.23618865,0.6497735,-0.26098794,-1.0364774],[-0.22014649,-0.24637136,-0.42513672,0.5623381,-0.12819354,0.14416225,-0.39033532],[0.7196067,-0.34021074,-0.5724672,-0.37321565,0.49308595,-0.9088214,-0.8430574],[0.19003648,-0.14491072,-0.39664307,0.27051845,0.005819935,0.22110407,-0.15665153],[-0.34837252,-0.96703774,-0.14450067,-0.3116821,0.3658192,0.21894221,-0.35829273],[0.11697895,-1.0484563,0.5595325,-0.5593309,0.18357657,-1.3186389,-0.31535873],[-0.3179443,0.6616187,-0.046228375,0.5932086,-0.54266274,0.59215814,0.18800579],[0.13047467,0.6949298,-0.24352126,0.11897494,0.0057367617,0.66297096,-0.010114408],[1.5367961,-1.7399038,-0.69597286,-1.7319793,1.36763,-0.45350328,-0.15131596],[-0.32002783,-0.03297229,-0.607617,-0.49017462,0.34876344,-0.28122258,0.258027],[0.36292878,-0.3491634,1.0256252,0.7740448,0.7382758,0.10291141,-0.99806124],[0.6031384,-1.1245648,0.40815106,0.7438041,0.6337614,0.10372877,-0.10575027],[-0.57705086,0.21220624,0.038151897,-0.33815548,0.2740102,0.01581186,0.541243]],"activation":"σ","dense_2_b":[[0.012299448],[-0.04102267],[-0.034108546],[-0.27925974],[-0.0057511167],[-0.22451408],[0.009193072],[0.0060836924],[-0.31634617],[-0.062315367],[0.12637672],[0.0059941616],[-0.06976539]]},{"dense_3_W":[[-0.20017228,-0.14052714,0.03923989,-0.60445774,-0.04527449,-0.12592994,-0.66201633,-0.54722226,0.1441803,-0.37791568,0.04386546,0.50280595,-0.020515436],[0.35166073,-0.20586215,0.5838703,0.58067,0.55858165,0.3304557,-0.64685065,0.090058595,0.35607472,-0.38356113,0.3500607,-0.088301666,-0.022835555],[0.54761213,0.07857258,-0.34005758,-0.28216037,0.5361241,0.3974213,-0.26704797,-0.3374281,0.6506741,0.3128651,0.540587,0.5345023,-0.60392904]],"activation":"identity","dense_3_b":[[-0.029276293],[-0.044624712],[-0.05815794]]},{"dense_4_W":[[-0.9044067,-1.1482185,-0.6116598]],"dense_4_b":[[0.036644172]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A140x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A140x00x00'.json deleted file mode 100755 index ab8badd20d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A140x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.992972],[0.761277],[0.33648303],[0.042408932],[0.76959854],[0.76725096],[0.7643645],[0.74037844],[0.7259183],[0.7094538],[0.6951536],[0.04228616],[0.042296555],[0.042313654],[0.042262528],[0.042218875],[0.04204096],[0.041743096]],"model_test_loss":0.02265222929418087,"input_size":18,"current_date_and_time":"2023-08-05_19-20-20","input_mean":[[24.21027],[-0.02817834],[0.013860759],[-0.0006401126],[-0.0324325],[-0.03152595],[-0.030524159],[-0.02442753],[-0.018565625],[-0.009745938],[-0.003067271],[-0.0006674106],[-0.0006681617],[-0.0006630953],[-0.0007476516],[-0.0006563686],[-0.0006758302],[-0.0007831018]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[3.7685766],[2.8427706],[-3.8559403],[-0.14407404],[-0.054108057],[-2.4449306],[-3.0141466]],"dense_1_W":[[1.8801908,1.4156594,-1.0323609,0.79236954,-0.80337536,0.58097416,-2.2510185,-0.1828844,0.15489013,0.27806175,0.015761895,0.25713542,-0.2735746,-0.14071672,-0.46098727,-0.13111337,-0.45133302,0.4580773],[1.8035195,1.6041955,0.8874118,-0.80396426,0.22453892,1.6733601,-2.4467292,-0.14284624,0.12720221,-0.07064604,-0.26454973,-0.114142805,0.27872777,-0.03267202,0.5485695,0.4108842,-0.18058304,-0.14545393],[-1.8154907,2.1600099,0.97071725,-0.58187705,0.003728732,2.3155384,-3.23783,-0.1090358,-0.13879994,0.10283042,-0.3239596,-0.13651542,0.10076348,0.14383954,0.36411935,0.49005857,-0.4234995,0.0010333508],[-0.013895141,-0.54229933,0.02395054,0.39421257,-0.9302867,3.529645,-1.1669548,-0.33310902,0.19925158,0.15934487,0.121357955,-0.34288648,0.6551107,-0.052651346,-1.2509402,-0.32869434,0.3425414,0.025959644],[0.038595013,1.9379244,3.9255502,-1.687313,0.69473827,1.657322,-2.1877844,1.0006453,-0.80904555,-1.0939405,-0.70684177,0.2738023,-0.4664105,-0.3705315,2.6731036,0.44496182,-0.3791093,-0.48865584],[-0.115257055,9.220496,-3.8134823,-4.2458467,9.2529545,9.778793,8.01551,7.5823874,4.997883,4.0989575,1.6614507,0.40712392,0.81142205,1.4502381,0.9823255,0.6349457,0.30227003,-0.36331397],[0.76528615,1.8912066,0.4003822,0.42052475,1.0807861,1.2272604,-0.09050154,0.26065364,0.34981024,0.48282778,-0.016957628,-0.016907506,0.46985832,-0.25855386,-1.092362,-0.57151246,-0.62681884,0.43833002]],"activation":"σ"},{"dense_2_W":[[-0.50458944,0.3265226,1.3503221,1.1455716,-0.24126105,0.30343592,-0.24365348],[-0.6311094,-0.504272,0.38552013,-1.1871966,-0.15529175,-0.5199216,-0.23288444],[-0.85456246,-1.0671792,-0.5235838,-0.058778144,-0.83717144,-0.25111958,0.6668136],[-0.18605676,-0.37535578,0.26066002,0.40830556,-0.26472908,-0.5714715,-0.4442903],[0.23003292,-1.1301463,-2.4274843,-0.6968535,-0.33779627,0.40726957,-0.7347456],[1.0467806,0.18329021,0.09319784,1.1631411,-0.15507531,0.493985,0.5579849],[-0.08045475,-0.05917078,-0.4645429,-0.6068606,-0.0685764,-0.17900154,-0.62299603],[-0.42154956,0.20449437,-0.698377,-1.0489599,-0.028300853,0.43246627,0.25651544],[-0.19329518,-0.8510341,1.2749082,1.3596451,0.8580042,0.60158896,-0.30835444],[1.9168442,2.0033686,-1.2564323,-0.30960408,1.3287855,2.8171167,0.6671751],[-1.4893216,-1.6534694,0.564758,0.19810775,-1.1537246,-2.037296,0.047834612],[-0.201097,-0.20977359,0.9980199,0.017591937,0.5220423,-0.32709578,-0.040991563],[-0.76144993,-0.66945726,-1.386429,-0.21879196,0.1684756,-0.07748325,-0.59191686]],"activation":"σ","dense_2_b":[[-0.7321166],[0.11477704],[0.19248009],[-0.20476317],[-0.01635628],[-0.306795],[0.14476658],[0.30890986],[-2.4419878],[-0.5385942],[0.10476772],[-0.5766014],[0.20005944]]},{"dense_3_W":[[-0.0791274,-0.7011603,-0.44377816,0.48128963,-0.21547104,0.16660322,-0.2547173,-0.44273084,0.101601996,-0.053882852,0.19060013,-0.3184192,-0.04856416],[0.54122835,-0.97574085,-0.4281066,0.53716606,-0.91660917,0.52668923,-0.25096038,-1.0447183,0.5229288,0.3251163,-0.78397036,0.10469802,-0.14347981],[0.17414881,-0.19212788,-0.57071036,-0.3887359,-0.38976607,0.53497523,-0.30920812,-0.97329575,0.73605007,0.53398937,-0.44441673,0.50344443,-0.57531935]],"activation":"identity","dense_3_b":[[-0.070742786],[-0.16557649],[-0.13552403]]},{"dense_4_W":[[0.26535642,0.6260712,1.0967736]],"dense_4_b":[[-0.12048781]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A150x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A150x00x00'.json deleted file mode 100755 index 63d3b65564..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A150x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.9692955],[1.0462041],[0.34472412],[0.04641226],[1.0452274],[1.0453075],[1.0450946],[1.024636],[1.0050676],[0.97589207],[0.9462255],[0.046267003],[0.046294868],[0.046317346],[0.04618255],[0.045980483],[0.04564968],[0.045252338]],"model_test_loss":0.03223121911287308,"input_size":18,"current_date_and_time":"2023-08-05_19-47-05","input_mean":[[26.72697],[0.015196333],[0.008158946],[-0.0072922846],[0.016061665],[0.01694688],[0.017287692],[0.020473402],[0.024061868],[0.02608422],[0.026487894],[-0.0072585293],[-0.0072514866],[-0.0072510433],[-0.007187894],[-0.0071194707],[-0.007084319],[-0.007147751]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.0053709066],[-0.069100745],[-0.24173476],[0.018720765],[-2.658498],[0.08992927],[2.6063461]],"dense_1_W":[[-0.7797147,-0.24583623,-0.88254195,0.0173836,-0.50750786,0.37038887,-0.8329198,-0.342489,0.24630426,0.21707475,-0.047959063,0.47431317,-0.025067769,-0.41275406,-0.17909347,-0.19092616,0.17230788,0.10136766],[-0.0012605502,-0.5430936,1.951147e-5,-0.18644217,0.56073266,-1.5806167,0.08031272,0.4637494,0.53803164,0.043792747,-0.41318613,-0.3511995,0.12757961,0.05843077,0.29561853,0.32287258,0.29052848,-0.35279953],[-0.015627703,1.0913446,5.4548607,0.0019527893,0.9042406,1.312217,-0.92229325,0.8994472,0.37474668,-0.73789614,-2.0389037,0.49409056,0.22369379,-0.06340535,-0.74901664,-0.085118875,0.23661421,0.09581273],[-0.022811597,0.30691484,0.77790153,-0.02884179,0.04066356,1.4911604,-1.467617,0.43204272,0.48140588,0.09566626,-0.42150202,0.3869267,-0.04126597,-0.44423687,-0.16106682,0.30693826,0.23328182,-0.23946704],[-1.2928423,0.067281894,-0.6787146,0.3759086,0.24533954,-0.6795638,0.03710647,-0.2054399,-0.6824192,-0.3679239,0.65891474,-0.48138765,0.090168886,0.6424454,-0.5723904,-0.41047156,0.18585621,0.14156008],[0.68296534,-0.64913756,-0.82184064,0.2655869,-0.41704178,0.9174468,-1.6555954,0.287859,0.48787528,0.13453256,-0.17992531,0.38143292,-0.23726897,-0.35850066,-0.29180393,0.050075218,0.19315714,-0.028771134],[1.3216897,-0.29175788,-0.6859045,0.14724936,0.10884442,-0.5644274,0.24575797,-0.0428606,-0.6327769,-0.36707297,0.61235654,-0.16210133,-0.01487571,0.30677927,-0.28883606,-0.2559978,0.18417324,0.053345177]],"activation":"σ"},{"dense_2_W":[[-0.103882276,0.31470892,-1.8375779,-0.534572,1.2007096,-1.7940954,-0.37573653],[-0.63279027,0.9299332,-0.111214824,-0.7431275,0.8024956,-0.55281454,0.28450286],[-0.43225008,0.60088736,-0.26085025,-0.39814708,-0.08506316,0.01633656,0.33291754],[0.039310254,0.47769195,-0.5393823,-1.6670729,1.3035929,-1.0608637,0.5870348],[-0.1174263,-0.97375834,-0.027412066,0.6608341,-0.37277678,-0.4925518,0.28332362],[0.13831323,-1.0317672,4.1466556e-6,0.27205467,-0.22654021,0.6352973,-0.3061979],[0.68478835,-1.1200122,0.49105233,0.0025720224,0.11970721,-0.31467515,-1.128045],[0.11189791,0.6215034,-0.6437067,-0.7515869,0.058660362,-0.32508639,-0.108250536],[-0.5286013,-0.16399997,0.6210019,0.64366394,0.22958006,0.18419576,-0.4012846],[-0.70348305,1.2658945,0.02501988,-0.935665,0.26696518,-0.5101827,0.6538908],[-0.21789736,0.6723394,-0.08539437,-0.8460047,-0.17483915,-0.37412062,0.7993581],[-0.8686919,-0.66447544,-0.6087589,0.24117005,-0.79812706,-0.9840042,1.0074927],[0.6557862,-1.2507699,-0.37768507,1.1560878,-0.24072878,0.6311272,-0.6242684]],"activation":"σ","dense_2_b":[[-0.19177495],[-0.112480655],[-0.089774124],[-0.34718063],[-0.112820394],[0.057589203],[-0.093300395],[-0.1753979],[0.019089865],[-0.034315366],[-0.085869856],[-0.38535318],[0.14190724]]},{"dense_3_W":[[0.5097348,0.67754096,0.52962065,0.04817331,-0.6922436,-0.36220315,-0.4028201,-0.46196294,-0.2545076,0.557987,0.46720836,-0.22117886,-0.4909693],[-0.46042284,-0.23727898,-0.3391561,0.04250506,0.65917873,0.33226073,0.61423135,-0.32596922,0.18013869,-0.7446482,-0.4805382,0.3051152,0.55622435],[0.6239629,0.6955541,-0.18727995,0.826164,0.35150817,-0.6036857,-0.46225572,0.246462,-0.12272623,0.59749544,0.039747227,-0.07667652,-0.95489794]],"activation":"identity","dense_3_b":[[-0.0060902396],[0.04111355],[-0.06983808]]},{"dense_4_W":[[-0.19373165,0.73869556,-0.8776082]],"dense_4_b":[[0.047680747]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A160x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A160x00x00'.json deleted file mode 100755 index cb334ad936..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A160x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.49194],[1.0090374],[0.32741097],[0.04503255],[1.0046614],[1.0036002],[1.0027647],[0.9775086],[0.9545954],[0.92410934],[0.8945295],[0.04490622],[0.04489754],[0.044878017],[0.044477623],[0.044133097],[0.043632846],[0.043093666]],"model_test_loss":0.033570460975170135,"input_size":18,"current_date_and_time":"2023-08-05_20-15-32","input_mean":[[26.035246],[0.045233466],[0.010294131],[-0.0072865174],[0.044775],[0.04602094],[0.047530252],[0.051602263],[0.055537395],[0.058699816],[0.059884205],[-0.007372401],[-0.007366469],[-0.0073642046],[-0.0073072882],[-0.0073471284],[-0.007360663],[-0.007469154]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09299513],[0.99559826],[2.2766173],[-3.9771109],[0.12520352],[2.4193058],[2.7656164]],"dense_1_W":[[0.008882242,-0.5422807,-0.0002336353,0.01617526,0.8583874,-2.4942827,1.4216851,0.1248724,-0.13589047,-0.066334665,0.02762919,-0.4940848,-0.12450009,0.18496531,0.49923882,0.27323833,0.054380663,-0.27277908],[-0.15047085,11.108585,8.433331,3.1956594,1.8067094,3.30043,2.734295,3.0606732,3.369255,1.1053773,0.6848547,-1.8516142,-1.1967942,-1.1085081,1.346842,2.6222417,-1.195061,-1.624805],[1.3133404,-0.12083638,0.0007961169,-0.23202601,0.6129334,-1.6041852,0.99454767,0.15254462,0.20371678,0.24268706,-0.3928021,0.049325507,-0.054227505,0.55261385,0.059264336,-0.5856581,-0.03817136,0.28743318],[-1.9012314,1.385867,-2.025853,-1.0055757,-0.64875823,-1.7402864,-0.42040223,-1.4739327,-0.64548254,-0.48058653,0.87804145,-0.050029688,0.5145021,1.2076339,-0.2322068,-0.68835676,0.28086215,0.25951275],[-0.038164284,-0.08451804,3.1345243,0.2487556,1.0404258,1.7846637,-1.8702495,1.0127681,1.2862203,-0.032533776,-1.9886582,0.072810635,0.18250643,-0.6539082,-0.2870161,0.005425706,0.010262065,0.17513292],[1.34946,0.29742,0.00049295614,-0.22644196,-0.42795974,0.8740508,-0.4660372,-0.6542262,0.14851026,-0.060079012,0.21750873,0.15181087,0.2850322,-0.53175086,0.41612315,-0.11555391,-0.049993888,0.019541081],[1.7984701,0.3795027,-1.8703946,0.18217215,-0.52728933,-1.2252984,-0.2807449,-0.83578867,-0.8151141,-0.3777622,0.8302332,-0.33189002,-0.012024458,0.4554754,-0.05377574,0.08181595,0.11449017,-0.13549945]],"activation":"σ"},{"dense_2_W":[[0.30057818,-0.5125399,0.08678791,0.5703662,-0.16577314,-0.51497936,-0.59201944],[-1.3349988,0.17055506,-0.40969828,0.1002354,-0.40812024,0.7593544,-0.021026442],[-1.3476006,-0.307753,-0.39836642,0.32035866,0.34645033,0.6541528,-0.11978619],[1.0706519,-0.11172953,0.13594998,-0.31495008,-0.17336859,-0.90303296,0.30903512],[0.11788255,-2.1570463,-1.473401,2.0036843,-0.18897057,-2.3958793,-0.489127],[-0.21737087,0.70327544,-2.0328362,-0.14981914,0.34608698,-0.9596065,-1.543088],[0.7181709,-0.18646976,0.84519434,-0.08900306,-0.12886512,-0.6509856,-0.035224058],[-1.3900654,-0.39416093,0.0057178154,-0.22539444,0.1284596,0.5915423,0.25858587],[0.40323433,-1.4929813,2.3567243,-0.35257843,-0.23848845,1.4922398,2.6448793],[-0.3958001,-0.25138742,0.13818374,0.0016877509,-0.07190418,-0.27509594,0.43224633],[-1.0602188,-0.05900237,-0.8719072,0.28974754,0.6910853,-0.03215386,-0.3785859],[0.6947681,-0.27714795,0.06559979,0.9486355,-1.0534314,-1.2011576,-0.5980476],[-0.08220092,-0.34411815,-1.0552499,-0.42018646,-0.3000449,0.052615464,-0.306543]],"activation":"σ","dense_2_b":[[-0.4391624],[0.23300678],[0.056632668],[-0.34913296],[-0.46800882],[-0.24273382],[-0.2016009],[0.15158728],[0.24031189],[-0.49144945],[0.21675928],[-0.42321655],[-0.055365965]]},{"dense_3_W":[[0.25063983,-0.8822437,-0.051102765,0.49928358,1.177921,-1.1238751,0.28403863,-0.6484505,0.8230714,-0.17540641,-0.6073617,0.35004044,0.10672483],[0.3259577,0.17100744,-0.71396255,-0.010511353,0.86950207,-0.7843216,0.55835444,-0.5223806,0.10780978,0.22867572,-0.6069358,0.73018676,-0.6146279],[-0.26045316,0.07879293,-0.5699643,-0.46051645,-0.0956609,0.3587972,0.029547071,-0.5279882,0.38736728,0.37889102,0.40453973,0.2636936,0.11244217]],"activation":"identity","dense_3_b":[[-0.107788354],[-0.055486],[-0.051283088]]},{"dense_4_W":[[-1.1602503,-0.75891525,-0.0110743595]],"dense_4_b":[[0.06482917]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A340x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A340x00x00'.json deleted file mode 100755 index 7def5a2d03..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018 b'39990-TVA-A340x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.285257],[0.90969217],[0.3262842],[0.04224495],[0.90321463],[0.9048089],[0.90605587],[0.8943948],[0.880907],[0.86333126],[0.8418114],[0.04201932],[0.042064562],[0.042102545],[0.042084828],[0.041905332],[0.041611735],[0.041251395]],"model_test_loss":0.016588984057307243,"input_size":18,"current_date_and_time":"2023-08-05_20-42-14","input_mean":[[26.176859],[0.00011118907],[-0.004803623],[-0.0135722],[0.001126639],[0.00071867846],[0.00035347088],[-0.0023926632],[-0.0049975757],[-0.004179076],[-0.0032093525],[-0.01355709],[-0.013565135],[-0.013578342],[-0.01361649],[-0.013766948],[-0.013810823],[-0.01394108]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.5828786],[-0.42487454],[-0.5860775],[-0.3924228],[-4.156905],[-0.060464315],[1.6714457]],"dense_1_W":[[-1.2391292,-0.7255202,-0.7149997,0.16955006,0.43161064,-1.5196625,1.2468553,-0.071515016,-0.041017335,0.027320042,0.08827585,-0.62211466,0.2565574,0.14729472,0.09935687,-0.08157328,-0.15545787,0.21235037],[0.54294,-0.9017544,-0.0015285303,-0.2486782,-0.37458047,1.867659,0.01736451,-0.52015305,0.17510238,0.05885162,0.15736608,0.7702755,0.0045363996,-0.46379182,-0.20661989,-0.33729848,0.1395115,0.17314467],[0.6333146,-0.64309436,-0.0016357203,-0.30024365,0.29567558,-1.1414801,0.6359127,0.46182653,-0.16813087,0.29373816,-0.25674814,0.16211522,0.2612078,-0.11247607,-0.17053197,0.25727552,0.15015963,-0.07780689],[0.08204409,-5.296336,-0.19631286,-0.30446285,-0.9166598,-1.578382,-0.9072005,-1.8740348,0.8618472,-2.1606903,-2.506682,-0.087750815,0.7405412,-0.10877983,-0.024537828,-0.5145231,-0.0984921,0.3776963],[-1.5639482,0.6270082,0.92740273,0.1320447,-0.30681872,0.91045624,-0.56207407,-0.07224428,0.57218313,-0.25058916,-0.15184608,0.48521915,-0.37326074,-0.096426256,-0.2717795,0.17715892,0.36343423,-0.44790557],[-0.019131253,0.82311773,1.8916593,0.21888073,-0.06414682,1.3677776,-1.2980947,0.51103127,-0.04186381,0.18803987,-1.2860446,0.67675817,0.24575692,-0.7166477,-0.42896202,-0.12064442,0.21754202,0.05445969],[1.5609717,0.27270493,0.9630874,0.08518879,1.0404123,-0.8161039,0.7068876,-0.20095998,-0.16304882,-0.29293203,0.28063586,-0.076921694,0.19091095,0.4278214,-0.5607254,-0.02762551,-0.001111984,-0.07030928]],"activation":"σ"},{"dense_2_W":[[0.2804132,-0.13895643,-0.23771775,0.47444814,-0.51085377,0.21878356,0.58479327],[-0.08321861,0.14579421,0.2814126,0.52304,-0.293537,-0.47646093,0.5845127],[0.26914057,-0.34944284,0.74141604,0.1236916,-0.09920406,-0.060909335,-0.06005805],[-1.4356169,-0.5180524,-0.72453684,-2.6035,1.435797,0.60814214,-2.9555132],[0.64786196,-0.09151601,0.47274497,-0.39977676,0.17197065,0.18651703,-0.16694967],[-0.80667734,0.9907132,-0.91753274,-0.005180825,0.22297877,0.24063785,0.1417271],[0.20353276,0.099244505,-0.029554786,0.5615652,-0.33194682,-0.45568216,0.16432087],[-1.2388202,0.42652553,-0.1761103,0.36473453,-0.060970604,0.45147756,-0.7594475],[0.012322099,-0.51204675,0.38572678,0.2549631,-0.4418449,-0.29435337,-0.19872236],[0.077596396,-0.70494324,0.2179608,-0.23151939,-0.16577247,0.16438329,-0.37517852],[0.20178632,-0.62199104,0.48660368,-0.2870354,-0.6407446,0.41582656,-0.29254413],[-1.0518187,1.1063659,-0.7544956,0.10702813,0.74395657,0.15702203,-0.1864767],[-0.63775724,0.34627312,-0.8619933,0.04293425,0.6597697,0.645077,-0.7322161]],"activation":"σ","dense_2_b":[[-0.001978294],[-0.009128096],[-0.017481709],[-0.4458992],[-0.015151555],[0.05412811],[-0.004844698],[-0.04905217],[0.017835202],[-0.26468143],[0.030852908],[-0.028026102],[-0.08113619]]},{"dense_3_W":[[-0.10027717,-0.504976,-0.472057,-0.09842345,-0.41717574,-0.31354278,0.41566893,0.29177436,0.5562917,0.4179752,-0.17883797,0.6059956,0.37823814],[0.060615566,0.5161335,0.050068315,0.41364664,-0.19892827,0.60002375,-0.19573946,0.4755645,-0.5418251,0.06393862,0.15766098,0.7054907,-0.1107634],[-0.44845265,-0.60228455,-0.46412948,0.21494012,0.00026316356,0.37754428,-0.21720393,0.6286488,-0.5957711,-0.18741381,-0.5058221,0.7328814,0.5197948]],"activation":"identity","dense_3_b":[[-0.029418001],[-0.060718555],[-0.032819174]]},{"dense_4_W":[[0.072936475,0.9442555,1.3265595]],"dense_4_b":[[-0.036884606]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A150x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A150x00x00'.json deleted file mode 100755 index 041149b412..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A150x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3568473],[0.6368644],[0.3621445],[0.028429369],[0.62337],[0.62633],[0.63082033],[0.62320864],[0.6176417],[0.609843],[0.602721],[0.028280454],[0.028343052],[0.02838899],[0.028202886],[0.028042728],[0.027971348],[0.027896484]],"model_test_loss":0.02074519358575344,"input_size":18,"current_date_and_time":"2023-08-05_21-36-06","input_mean":[[26.268566],[0.014088257],[-0.00889927],[0.0067222156],[0.017173024],[0.01741099],[0.016948618],[0.01863091],[0.019397574],[0.02196835],[0.023213096],[0.00668622],[0.0066892426],[0.0066930084],[0.0068618897],[0.0069062025],[0.006895933],[0.0069377027]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.1995587],[-0.47429535],[0.19334412],[-0.21672982],[-0.27716032],[5.8877892],[-6.008035]],"dense_1_W":[[0.0005194978,-0.65315354,-0.057737853,-0.39396256,0.30802312,-0.3239047,-0.3970071,0.88091785,0.6602338,-0.077789664,-0.5863329,-0.12479964,-0.2263099,-0.25829545,0.61697304,-0.15929471,0.24446645,0.021373697],[0.5315006,-0.45457247,-1.5373756,-0.22400512,-0.48288196,-0.21536522,0.08653377,-0.15771005,0.08480614,-0.34505862,0.6252429,0.2198124,-0.3875561,0.6826408,-0.26497376,-0.31600574,0.32690576,0.039243232],[-0.011016559,-0.22290792,0.047274135,0.31294435,0.36215684,-1.1929703,0.9624354,0.27155292,-0.23349008,0.23899989,0.012858517,-0.025381617,0.097487696,0.21736427,-0.060409587,-0.03895033,-0.039632954,-0.16827586],[0.007530679,0.6272331,-5.9082806e-5,-0.50064355,0.1890715,-1.4997022,0.2494477,0.34411368,-0.11911669,-0.1729306,-0.111411996,-0.31751806,0.31902125,0.4071708,0.19330676,0.046474922,-0.055167746,0.06530873],[0.06477413,-0.4143308,-1.1347487,0.49881503,0.3372273,-1.0338107,1.5387237,-1.2813011,-0.96986556,-0.06861591,1.1139094,-0.5686622,-0.1382266,0.59405875,-0.5119853,0.44440156,-0.27856424,0.061716564],[2.6618116,-2.6944232,-1.6849242,0.2943839,-1.2206858,-1.6760917,3.2621088,-1.346089,0.12785757,0.65797406,0.23447312,-0.2641723,-0.09202524,1.2026188,-0.35406348,-0.22568066,-0.22311862,0.33460006],[-2.524092,-1.1037054,-1.5745661,0.34811226,-1.0722256,-1.469448,1.1310738,-0.79519266,0.23566909,0.520147,0.04779183,0.06821212,-0.044598527,0.48379797,-0.09668029,-0.31965488,-0.022990584,0.22089563]],"activation":"σ"},{"dense_2_W":[[0.1452953,0.44373477,-0.37055212,-1.237667,-0.33072272,0.5906958,-0.72541124],[0.6050153,0.18081863,0.3219009,0.53810394,-0.27058914,0.5653902,0.39473966],[0.0072378046,0.33330625,-0.50146735,0.26918072,0.094004184,-1.0713059,-1.8176602],[-0.7740321,0.14885269,-0.049412318,-0.6021773,-0.15935902,-0.29204068,-0.23126967],[0.75276387,0.49135745,0.13820073,0.2738786,0.5364459,-0.13695998,0.109765306],[-0.495929,-0.5069509,-0.6110922,0.14872241,-0.74613875,-0.9538579,-0.4567764],[-1.0281471,0.62180805,-0.96085227,-1.6853067,0.018576303,-0.8588159,0.68361557],[0.42588946,-0.26907757,0.23912542,-0.06811771,-0.74220026,-0.27280283,-1.2218596],[-1.1149594,0.066279486,-0.9029124,-0.71226245,-0.06838502,-0.7946668,0.5717353],[0.45661336,-0.17646663,0.58106536,0.08798294,0.60043395,-0.07761284,0.7525004],[0.30987135,0.21097131,-0.16904172,-0.14777327,-0.11339709,-0.52481216,-0.03865954],[-0.060135614,0.019844456,-0.67346084,-0.35991776,-0.121882424,-0.61238956,-0.2918601],[-0.02398618,0.007916715,-0.40608528,-1.0254555,-0.35098127,0.23078367,-0.19067071]],"activation":"σ","dense_2_b":[[0.23936874],[-0.3634644],[-0.44582018],[0.06315371],[-0.2324115],[0.027791763],[0.3565209],[0.23263572],[0.25501364],[-0.33273873],[-0.29837456],[-0.15084697],[0.25726482]]},{"dense_3_W":[[0.046232812,-0.440931,-0.15037328,0.43493935,-0.51912284,0.045042932,0.88925415,0.14369765,0.78630996,-0.7177186,-0.17527293,0.22752169,0.6153992],[-0.54912806,0.433324,-0.35273063,-0.044021495,0.6402973,-0.35384876,-0.6985052,-0.6068913,-0.81778973,0.5319122,-0.07269251,0.13063483,-0.69683],[0.5169438,-0.35359862,-0.10132895,0.11897226,-0.085469395,-0.16861942,-0.08650058,0.37113622,0.70226514,-0.23939428,-0.13833824,0.02503397,0.38701722]],"activation":"identity","dense_3_b":[[0.04381452],[-0.016084831],[-0.0028816245]]},{"dense_4_W":[[0.72029024,-1.1095761,0.230978]],"dense_4_b":[[0.024953682]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A160x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A160x00x00'.json deleted file mode 100755 index 0583af9d50..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A160x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.052148],[0.99393505],[0.34106338],[0.043077335],[0.9844239],[0.98582995],[0.9884839],[0.9738173],[0.9590651],[0.93786967],[0.91432065],[0.042897582],[0.042924967],[0.0429479],[0.042887576],[0.042719226],[0.042463634],[0.042128034]],"model_test_loss":0.02400932088494301,"input_size":18,"current_date_and_time":"2023-08-05_22-02-42","input_mean":[[26.74306],[0.04475667],[0.0005680814],[0.005798226],[0.042986136],[0.042365443],[0.042118706],[0.042853605],[0.043510012],[0.047170512],[0.0480464],[0.005632593],[0.00564793],[0.0056592273],[0.0056284214],[0.0056102416],[0.00559482],[0.0054539493]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.14669883],[2.0542202],[3.5631552],[-2.4476655],[-1.6368238],[-0.08192704],[-0.12643908]],"dense_1_W":[[-0.002688858,0.903495,-0.0039008197,0.536614,-1.0010473,2.6391416,-1.4351965,-0.39022684,0.040289626,0.0038532107,0.1117465,-0.15723981,0.1849457,-0.3804201,-0.23395342,-0.027777348,-0.09085117,0.051439773],[1.4187059,-0.71839726,-1.4857477,-0.35429287,-0.29257032,-2.1014547,0.87460905,-0.5020713,-0.10428327,-0.08505193,1.1532818,0.29176822,0.12277781,0.4743827,0.03149446,0.2719759,-0.03777604,0.085584775],[1.8566557,-0.24062611,-0.0011948039,-0.101594344,0.04939513,0.19952813,-0.5482559,0.44138482,0.08667071,0.23756696,-0.270445,0.122838944,0.38297632,-0.2767516,-0.02534552,-0.11921599,-0.26003793,0.28193194],[-0.0047300863,-6.341346,0.008009274,4.7131796,-6.4125834,-6.832203,-4.170335,-4.4403443,-2.5265903,-2.792916,-0.96007043,-1.32485,-1.5275828,-2.0901973,0.05010127,0.5274726,-2.8127787,2.2884195],[-1.0541825,-1.1389667,-1.393989,0.049987935,-0.75335485,-1.2349916,0.44251662,0.024381286,0.071242295,0.017732512,0.83954465,0.23342346,0.104376666,0.39074865,-0.07692479,0.06292374,-0.20384182,0.2776107],[0.004347823,-2.0705073,-5.136332,1.5171243,-0.83530605,-0.83658594,0.6289342,-0.030435214,-0.09875959,1.0472045,0.6507859,-0.7110026,-0.61495453,-0.09955488,0.4563318,-0.39846316,-0.25004956,0.01138379],[0.028734487,-2.2628179,0.006837875,-0.67525387,-0.19999692,2.3506331,-0.6480495,0.32595164,0.22536819,0.17169411,-0.05625255,0.47865602,0.5283645,-0.26655892,-0.1795276,-0.25767052,0.1652347,0.17300352]],"activation":"σ"},{"dense_2_W":[[-1.7424338,-0.51204246,0.36681414,-0.43318233,0.26413685,-0.24067368,-0.4046541],[1.6531072,-0.47434783,0.02790722,-0.27149042,0.1917067,0.12952308,0.33537757],[1.2889733,-1.1361824,-0.624928,0.42658234,-0.23174223,0.11642459,0.93661875],[0.030492313,-1.5744985,0.3470011,-0.67208254,-0.35061973,-0.7376617,-0.118316226],[0.8261336,-0.8387976,-1.5988837,-0.8216873,-1.0717056,-0.3048729,0.8943968],[-2.0692046,0.5661956,-0.6376975,0.22744314,0.0028517665,0.22136337,-0.797771],[-0.2306479,-1.9774442,-3.616496,-4.481281,1.9556458,-0.058455996,1.4602649],[-1.3596288,-0.67229724,-2.6969142,0.41598597,1.6690115,1.0873245,-1.388754],[1.200881,-1.2607982,-2.0214107,-0.56441516,-0.6533298,-1.6340346,1.1757377],[-1.5519762,0.5947591,1.1866498,0.121581264,0.16602829,0.52355,-0.65718275],[1.1053609,0.028224928,0.8389564,-0.036384143,-0.54692584,-0.015354119,0.9502837],[-1.2469714,-0.28302318,-0.9857567,-0.46757036,0.2623652,0.31925344,-0.7774453],[1.5188146,0.4473179,1.9020143,-0.43271357,-0.99845284,-0.8403063,1.144983]],"activation":"σ","dense_2_b":[[0.071747996],[-0.24544376],[-0.40959486],[-0.14752373],[-0.56056744],[-0.035408586],[-0.76051474],[-0.42436004],[-0.28535128],[0.28020537],[-0.13632238],[-0.005974313],[0.43866658]]},{"dense_3_W":[[-0.6859634,-0.23211952,0.55380285,-0.090849504,-0.20580705,-0.28912854,-0.020036949,0.46019077,0.004479716,0.4496421,-0.14756668,0.32039902,-0.050126474],[-0.7476754,-0.19232515,0.4732885,-0.7891429,0.37273914,0.03617925,1.9029447,-1.6632549,0.3088266,-0.24991319,-0.35748976,0.24193496,0.3710967],[0.40051168,-0.4676041,-0.25612128,0.11686202,-0.45049718,0.7905412,-1.0448263,1.1216654,-0.95308435,0.618275,-0.58974785,0.43219963,-0.43541226]],"activation":"identity","dense_3_b":[[-0.07793948],[-0.0012238226],[0.19977793]]},{"dense_4_W":[[-0.0024938032,0.3952009,-1.017814]],"dense_4_b":[[-0.16230789]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A340x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A340x00x00'.json deleted file mode 100755 index 9b40cd1e3d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018 b'39990-TVA-A340x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.621885],[1.0284406],[0.37194255],[0.046268534],[1.0293045],[1.0279852],[1.0266788],[0.99801177],[0.9776714],[0.9462372],[0.91703874],[0.04612887],[0.046153124],[0.046166956],[0.045992836],[0.04568058],[0.045171134],[0.04459945]],"model_test_loss":0.03329197317361832,"input_size":18,"current_date_and_time":"2023-08-05_22-29-17","input_mean":[[23.719963],[0.018466847],[0.009788129],[-0.01490712],[0.015184435],[0.015390393],[0.016122056],[0.019774657],[0.02080643],[0.020894347],[0.021406556],[-0.014832959],[-0.014840206],[-0.014854504],[-0.01494558],[-0.014958628],[-0.015116547],[-0.015349785]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[4.073725],[0.06636997],[0.45188215],[4.3373733],[0.61344504],[-0.05576782],[-0.029394656]],"dense_1_W":[[1.899682,-1.0220546,1.6209704,1.1128091,0.11807787,2.1193304,-0.84074396,0.9205597,0.6422064,-0.16473949,-0.2929423,0.015562142,-0.5113624,-0.5597578,-0.2079032,0.14909668,0.0016590576,-0.078255],[0.00257754,0.7842404,0.008843346,0.151356,-0.10317699,1.593811,-0.6585409,-0.792097,-0.18440624,0.21284863,0.18914178,0.038071778,0.59510386,-0.53487957,-0.26356593,-0.1510972,-0.23310432,0.2344722],[1.4983231,-0.18011008,-0.33435732,0.29978395,-0.644463,0.8832816,-0.6403558,-0.09016495,0.5140635,0.03930244,-0.2350084,0.14089371,0.071680106,-0.43234694,-0.25356972,-0.052213926,0.2982631,-0.12704615],[2.136221,0.94127697,-2.0502431,-1.0999187,-0.5389837,-1.0795466,0.15500735,-1.1946503,-0.7447494,-0.08565692,0.62933886,-0.3306759,0.72309256,0.5842993,0.4425341,-0.24024099,0.040228825,0.0051129814],[1.6822681,0.30469584,0.36311707,0.054079443,0.47980347,-0.75729567,0.9435193,-0.6902986,0.12720026,-0.32843223,0.32795638,-0.44525057,-0.07920844,0.27367336,0.5342503,-0.061932556,-0.1713259,-0.036089286],[-0.011671145,0.5296286,3.192862,-0.2014884,0.2564892,1.1807487,-1.3911327,1.1489043,0.83134156,-0.14983152,-1.5866762,0.5376133,0.41090357,-0.8031455,0.02215685,-0.24331515,0.30741853,0.0040395837],[0.015617138,-0.15004326,-0.1066052,0.05774972,0.84747916,-1.7410339,0.65046513,0.34189066,-0.1092925,0.13014615,-0.12986074,0.012468467,-0.46450385,0.55993074,-0.24884948,0.071061395,0.025357306,-0.017320933]],"activation":"σ"},{"dense_2_W":[[-0.30674583,0.06968486,-0.65429723,0.019582884,0.42960247,0.08177306,-0.7079286],[-0.4900685,-0.04209327,-0.5845738,-0.5474764,-0.44426113,-1.0495229,-0.31141305],[0.25227436,0.8856029,0.30998233,-0.6853428,0.13426903,-0.08633423,-0.7613986],[-0.61833984,-1.1719488,0.24792127,-0.19045483,0.45563322,0.42715865,0.69238126],[-0.27654642,0.30347988,0.21834162,0.23924747,0.15591425,-0.3061046,-0.93160504],[-0.2864238,1.0342413,0.3272169,-0.90983087,0.24268456,0.5175742,-0.8516676],[-0.05429682,0.61511075,0.27329326,-0.5729799,0.007327092,0.29609978,-0.8520901],[-1.074,-0.47218233,-0.90919787,0.18335287,-0.48629844,-0.7468036,-0.007822784],[0.58963263,-0.08803438,0.15459517,0.20894565,0.22934368,-0.25880885,0.24365251],[-3.1923928,-0.9013152,-1.5476278,0.92910975,2.0374515,-1.3871164,3.1174033],[-0.25149995,-1.1271017,0.45119533,-0.55721474,0.37220192,0.25739494,0.6835184],[0.24823236,-0.08169282,-0.8473349,1.7971821,1.7446034,-0.27146766,0.53165376],[0.13963719,0.48935938,0.39636797,0.09254681,-0.31144914,-0.44353837,-0.8852852]],"activation":"σ","dense_2_b":[[-0.11470798],[-0.23226368],[0.05471394],[-0.38724783],[-0.14420551],[-0.0023474924],[-0.08733412],[-0.23541285],[0.04872051],[0.6622674],[-0.29157898],[-0.08680658],[-0.08127291]]},{"dense_3_W":[[-0.5358264,-0.03906741,-0.3538137,0.05883006,-0.13302572,0.20354034,-0.41887388,0.3213541,0.6214788,1.0040325,-0.053876217,-0.32266176,-0.5326619],[-0.45899904,0.40331557,0.5624095,0.29449025,0.32427883,0.6714431,-0.09542968,0.43741795,-0.6450682,-0.22411184,-0.58734274,-0.05180798,0.32618254],[0.47514984,-0.60623705,-0.043168258,-0.61707187,0.05064353,0.51197284,0.24825503,-0.36806884,0.365072,-0.021128317,0.21732265,-0.58820313,0.2991621]],"activation":"identity","dense_3_b":[[0.06643589],[-0.06561],[-0.06563976]]},{"dense_4_W":[[-0.97301435,1.0852075,0.9260317]],"dense_4_b":[[-0.06335182]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018.json deleted file mode 100755 index 9076cc416e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ACCORD HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.381411],[1.0896009],[0.36953825],[0.047667623],[1.0861374],[1.0860499],[1.0858915],[1.059937],[1.0386494],[1.0071863],[0.9757613],[0.04749054],[0.047521003],[0.0475409],[0.047391217],[0.047076195],[0.04665814],[0.046108272]],"model_test_loss":0.034288953989744186,"input_size":18,"current_date_and_time":"2023-08-05_21-11-37","input_mean":[[25.474146],[0.03260382],[0.0059239552],[-0.003850426],[0.03166146],[0.031421233],[0.031903807],[0.03409185],[0.035556797],[0.036786668],[0.03876473],[-0.0039243186],[-0.0039191637],[-0.00391803],[-0.0038912839],[-0.0038927502],[-0.0039427923],[-0.0040721553]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[4.576026],[0.014205613],[0.023928426],[2.2423766],[5.1118927],[0.009245147],[-0.09884353]],"dense_1_W":[[2.4283671,-2.5114954,1.7636794,-1.1276282,-0.29702592,2.3460658,0.2110311,1.8921894,1.6966429,0.5912078,-1.7593364,0.1788557,0.30617765,-0.06459494,0.68998104,-0.04987163,0.25082457,-0.20820954],[-0.06577886,-1.3371822,-3.9895184,0.49147522,-0.6437115,-1.0457126,1.5372813,-1.0199159,-0.90439004,1.17174,1.0530282,-0.68119884,0.18246703,0.1336504,0.1513831,-0.24112555,-0.038728017,-0.0071232794],[0.0033733498,0.7199784,0.0044814195,-0.20844589,0.021990225,1.5578223,-0.86644346,-0.26690495,-0.3389482,0.19740379,0.1897156,0.42373288,0.11811549,-0.42115727,-0.18958901,-0.43254307,0.3219206,-0.043830786],[1.1540352,0.3651104,-1.2646542,0.12534688,-1.3592131,0.22650717,-1.2461386,0.33907446,0.30825207,0.041745562,-0.04699643,0.31513706,-0.53145754,-0.13887237,0.339121,0.03572653,-0.09926298,-0.031500425],[2.4470172,1.1391506,-1.6994115,0.6633088,-0.24181224,-1.3209784,-0.38846213,-1.2859731,-0.6845487,-0.27900544,1.0526913,-0.490945,-0.31496993,0.42710644,0.018268349,-0.34324366,0.14006558,-0.0737592],[0.048280872,-0.036711592,0.12419936,0.09806018,0.073621884,2.3262064,-0.7835345,-0.45401052,0.17831485,-0.057094287,-0.038377315,0.23754936,-0.03390427,-0.3424702,-0.39207128,0.3649582,-0.36824515,0.22671352],[-0.044838708,0.36282212,-0.12990756,0.5413003,-2.0524702,1.6110876,-0.7925812,-0.55331826,-0.12824701,0.14961694,0.17928742,0.3061131,-0.040306978,-0.5500592,0.22041802,-0.30549437,-0.029204259,0.083384514]],"activation":"σ"},{"dense_2_W":[[-0.27619088,-0.30106953,0.8406808,-0.3034487,-0.8182391,0.12433698,0.20802778],[-0.4154569,0.19215287,-0.5395798,-1.0011816,-0.3622965,-0.053402603,-0.61655515],[-0.9554062,0.9567613,-0.43412912,-0.8109775,0.11694456,-0.73263913,-0.9729235],[0.21786267,-0.43021828,0.32044673,0.17683136,-0.7033162,1.1777877,0.46853],[-1.4941593,0.53598636,-0.34361255,-0.8429453,-0.17071423,0.41571486,-0.76921165],[-0.94654614,0.7506226,0.57346565,-0.65036005,0.049414758,1.046369,0.621918],[-0.54215634,0.72266793,0.45845777,0.16018274,0.18923126,0.6181075,0.9243036],[1.2958286,-0.67843175,1.2844336,-0.98265636,-1.9873784,1.3621792,1.0309747],[-2.4644299,1.0382956,0.7543066,-2.2521183,0.15328787,0.34243378,-0.6569763],[-0.71319073,0.64474607,0.020551767,-0.35136765,0.58472896,-1.4593328,-0.6378294],[0.3122531,0.11463693,-0.34882697,0.10761847,0.24621284,-0.8933121,-0.8421242],[0.26174104,0.20181425,0.6962465,0.12650499,-0.685376,0.65012974,-0.25467616],[0.6355601,-0.26024923,-0.6393189,0.25180802,0.62417173,-1.4139053,-0.9215187]],"activation":"σ","dense_2_b":[[-0.053085864],[-0.03349851],[0.33215925],[-0.13303766],[-0.07017026],[-0.11995311],[-0.18605317],[0.10708742],[0.5208379],[0.11261442],[0.09599934],[-0.22087996],[0.25543278]]},{"dense_3_W":[[-0.5387559,0.5180723,0.18928285,-0.017278178,-0.1654849,0.2684458,0.0049315374,-0.70783985,0.79352444,0.13864544,0.43856966,-0.26839373,0.76968014],[-0.34399128,0.6650704,0.4771153,-0.555316,0.5630293,-0.60538894,-0.22792831,-0.3027566,0.20719895,0.5640226,0.6806705,-0.09628916,0.2438542],[0.004954449,-0.27236447,0.5799102,-0.50637424,0.124922864,-0.16860567,0.1477868,-0.27912074,-0.11646297,0.59069705,-0.5256959,0.2693647,-0.42514357]],"activation":"identity","dense_3_b":[[0.03715595],[0.044411514],[0.045904953]]},{"dense_4_W":[[-0.7679762,-1.1008085,0.064006686]],"dense_4_b":[[-0.03675505]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA,C120x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA,C120x00x00'.json deleted file mode 100755 index fcc323b691..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA,C120x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5199685],[1.0041546],[0.38786623],[0.036677998],[0.9962397],[0.9980732],[0.9996651],[0.99639624],[0.9926015],[0.98370975],[0.97062755],[0.03642298],[0.036467228],[0.0365202],[0.03664619],[0.03662207],[0.03652128],[0.036423597]],"model_test_loss":0.01514572836458683,"input_size":18,"current_date_and_time":"2023-08-05_23-47-27","input_mean":[[24.48734],[0.0031791632],[-0.0077214316],[-0.012247895],[0.006253456],[0.0050531863],[0.0044050324],[0.0013900376],[0.0022928454],[0.0046939156],[0.0059022754],[-0.012277604],[-0.012273932],[-0.012272934],[-0.012301066],[-0.012308702],[-0.012408637],[-0.012596107]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.603401],[-0.16526419],[-1.8255664],[-1.6662012],[0.93965286],[0.79468465],[-0.15217474]],"dense_1_W":[[0.8369962,-0.030552765,0.5335952,0.43184772,0.23580156,1.2673365,-1.1400558,0.318804,-0.187539,-0.14375025,0.12492712,0.13123405,0.26685792,-0.9589225,-0.06946809,0.3054905,0.048283525,-0.14636886],[0.0075710495,0.34496903,3.662821,-0.1975815,-1.0349215,1.1001909,-0.22282363,0.5475843,0.55354905,-0.0045275143,-1.056081,0.844821,0.39349076,-0.296638,-0.6005872,-0.4671467,-0.6291099,0.90066314],[-0.9008946,-0.24484369,0.57615465,-0.15220997,0.2609631,1.0398844,-0.4644058,0.016499873,-0.018956503,-0.17380044,0.14669017,0.10224152,0.07262521,-0.36812365,0.23994175,0.08805341,0.32293737,-0.29662415],[-0.7426475,0.32210937,0.50062597,0.035566118,-0.29872537,1.0625906,-0.50212467,-0.24334303,-0.21319605,0.0060904995,0.06582723,0.41223416,0.33519742,-0.7705234,-0.060677625,-0.087017514,0.059937757,0.08177721],[1.350326,-0.9069702,-0.8710248,-0.032668646,-0.22678213,0.8018885,-1.0114281,0.4558404,-0.04972723,0.14267842,0.011223235,0.11178159,-0.08149843,-0.11696354,0.25129175,-0.022107668,-0.3123493,0.18239275],[1.4265958,0.7363564,0.9003141,0.5874882,0.36590812,-0.58121115,0.8468888,-0.6961116,0.19182444,-0.04914105,-0.041381188,-0.053005338,-0.37206975,0.0049440977,-0.06299007,-0.22749563,0.3903245,-0.22555515],[-0.0026155524,-1.6855055,-0.023907602,-0.020194484,0.9718681,-0.72989947,-0.072883844,0.6755627,-0.40358946,-0.36142477,0.24014348,-0.06568305,-0.18836774,0.24938382,0.26712775,0.26481214,-0.32187027,0.17701942]],"activation":"σ"},{"dense_2_W":[[0.055921525,0.79568124,0.622393,0.6891148,-0.41505626,-1.0494971,-1.1746889],[0.9990047,0.79401237,0.458197,0.044893876,0.7398994,0.1380711,-0.5833474],[0.49300948,0.40176773,0.69490945,0.017886199,-0.43334186,-0.42760152,-0.81184334],[-0.88839275,-0.39359003,-0.3923254,0.34303936,-0.4980547,0.3823284,0.31585476],[-1.0028759,-0.80133754,-0.038923886,-0.24988107,-0.6692906,-0.59269744,0.10528791],[0.95424086,0.5241753,0.69329005,-0.043293044,0.12808672,-0.54708153,-1.6431684],[-0.42091933,0.30759153,-0.8659509,-0.50176823,-0.4401355,-0.1235168,0.37031946],[0.9405245,-0.26903427,0.54586095,0.6150369,0.38332707,-0.45095354,-1.0229797],[-0.16152474,0.29404435,-0.4458113,-0.37584528,-0.45882532,0.44415447,0.28708586],[0.1605365,-0.54369676,-0.6820084,0.26447654,0.044480074,-0.1798705,0.29587266],[-0.88492364,0.28911477,-0.75960296,-0.038635474,-0.20156361,0.48187855,0.37745267],[-0.15852904,0.26374456,-0.1987117,0.15489428,-0.13169791,-0.14686994,0.23826097],[-0.27699766,-0.46768573,0.0784821,-0.71520346,-0.43777713,0.3317684,0.44976833]],"activation":"σ","dense_2_b":[[-0.4873253],[-0.31497946],[-0.33876145],[0.057083856],[0.15119348],[-0.19719751],[0.06655213],[-0.18075633],[0.0077841002],[0.047988962],[-0.013275895],[0.01678699],[0.054340936]]},{"dense_3_W":[[0.039507,-0.65482193,0.24057858,0.49380097,0.095387414,-0.71386194,0.54591215,-0.5667636,-0.471354,0.27266452,0.42956528,0.5700684,-0.14070532],[0.70610636,-0.21885805,-0.20008874,-0.03001694,-0.6918378,-0.18722558,-0.28595456,-0.13420972,-0.3792731,0.26539686,-0.73036075,0.41510108,0.3419122],[-0.47617888,-0.49639332,-0.47731593,0.37749213,0.8312911,-0.6428844,0.16035818,-0.5646238,0.49566412,0.44224903,-0.18195282,0.13512439,0.69913447]],"activation":"identity","dense_3_b":[[0.06694408],[-0.04941525],[0.065208524]]},{"dense_4_W":[[-0.57436824,0.5449645,-1.0910698]],"dense_4_b":[[-0.06264942]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C020x00x00'.json deleted file mode 100755 index 19d4e59be2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.576799],[0.91867346],[0.36527267],[0.042645145],[0.91787136],[0.91783434],[0.916926],[0.8943326],[0.87538767],[0.8462922],[0.8175801],[0.042509034],[0.0425443],[0.04257122],[0.04245028],[0.042234104],[0.041799206],[0.041292917]],"model_test_loss":0.02719402126967907,"input_size":18,"current_date_and_time":"2023-08-06_00-12-47","input_mean":[[25.356604],[-0.040762104],[0.015186845],[-0.010929545],[-0.03763134],[-0.036849402],[-0.03564124],[-0.030817972],[-0.029279217],[-0.026289875],[-0.024418497],[-0.010802534],[-0.010760807],[-0.010724829],[-0.010715251],[-0.010753985],[-0.010909137],[-0.011096374]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.7099435],[-4.4820223],[-3.7053332],[-0.15313303],[1.0490966],[0.08996243],[-0.3402487]],"dense_1_W":[[0.45726943,0.2803945,0.4495259,0.49884623,0.39872238,-0.36475766,0.26503468,-0.10885596,0.12820537,-0.06644224,-0.022389729,-0.3476893,-0.23661518,0.20323817,-0.1134223,-0.30204472,0.100813694,-0.06834288],[-2.3185985,1.2631202,-1.458182,0.048201833,0.24334751,-1.6046109,-0.30837595,-0.76168555,-1.0279249,-0.4423357,0.7814656,0.023939118,-0.3526689,0.34330973,-0.30489683,0.11396334,0.4730625,-0.1433239],[-1.9229746,-0.23190774,1.2471163,-0.34702885,0.12792219,0.39012522,0.5828723,0.19460873,0.9788912,-0.005666579,-0.41922984,0.19924892,-0.028308399,0.009771974,0.30980968,-0.25503463,-0.05167787,-0.03963391],[-0.00017526199,1.2134194,0.08365528,0.931635,-0.8134952,1.2126458,-0.3847136,-0.85404164,-0.029047096,0.057293534,0.099689804,-0.14430292,0.07266458,-0.035892077,-0.8494992,-0.16429287,-0.16963851,0.28444648],[0.66932124,-0.38224223,-0.48026696,-0.4556043,-0.16880098,0.11090016,-0.20848279,-0.0031408698,0.01483041,-0.057521474,0.0781242,0.3797575,0.15699562,-0.16381691,0.083613425,0.029958013,0.25532284,-0.049085815],[0.09758302,-1.5125183,0.51068544,-0.8873621,-0.039125204,1.2438344,-0.35688224,1.0463076,0.44335338,0.043060914,-0.3624858,0.18927102,-0.06789407,-0.11586316,0.5108622,0.23109579,-0.022569554,-0.22217596],[-0.022621945,-0.38620147,-5.9938316,0.57457525,-0.034727138,-0.31493336,-0.0024856962,-1.0160756,-0.4097327,0.31027526,1.5442436,-0.1086705,-0.06946156,-0.20705701,-0.29661253,0.24825081,-0.28626466,0.086528964]],"activation":"σ"},{"dense_2_W":[[0.053173117,-0.9156596,1.0074764,0.07819087,0.06604967,0.9604824,-0.46700448],[0.67615795,-0.6646975,0.40410203,1.1270711,0.51432085,0.36799482,-0.58051807],[-0.3406286,0.633063,-0.10993261,-1.4732538,-0.96888214,-0.10222697,0.36921522],[-0.22857061,0.048582908,0.106903225,0.39300185,-0.15854754,-0.00396511,0.5772822],[0.61022013,0.28100282,0.32486463,-1.4011261,-0.6755233,-0.6537198,-0.099644266],[-0.58349746,0.18500583,0.1230866,1.2761316,-0.29147163,0.23169333,0.03729417],[-0.9677123,0.12448332,1.4926296,0.14635411,-1.0473512,-0.392972,-1.2231176],[0.3896849,0.07481266,0.14770286,-0.88864774,-0.39602855,-0.64242584,-0.51282495],[-0.46045932,-0.6738887,0.017901536,0.6665944,-0.36764455,0.83067524,0.18793342],[0.057541758,0.5166745,0.49835142,-1.8220221,-1.4198332,0.05825049,0.30070993],[-0.021827364,1.1368597,-0.37343314,-1.2435678,-1.3651601,-0.8234563,0.6481897],[0.59054244,-1.6380736,-0.5568102,-0.24568368,0.028800676,-1.0597489,-0.9525837],[1.2516085,-0.38927004,-1.0174257,-0.60735077,0.85879636,-0.1796094,1.3270812]],"activation":"σ","dense_2_b":[[-0.12381021],[0.014428079],[-0.07002476],[-0.23227106],[0.076019384],[-0.18954094],[-0.39796123],[-0.023646781],[-0.20775545],[-0.18200971],[0.09294506],[0.04337285],[0.461896]]},{"dense_3_W":[[-0.26331434,0.46046373,-0.52959347,0.2898921,-0.5544527,0.12640098,0.053101886,-0.055325672,0.27165207,0.23696445,-0.9369918,-0.51779336,0.47617438],[-0.343167,-0.48102528,0.5826724,0.04648191,0.778018,-0.79673433,-0.6825545,0.36792636,-0.3386519,0.6587451,0.59682995,0.4857488,0.6149705],[0.7029585,-0.25926727,-0.274154,0.64148325,-0.07228898,0.21374674,0.65440977,-0.63847566,-0.2272515,0.42236963,0.25460508,-0.70692426,-0.6473448]],"activation":"identity","dense_3_b":[[0.016272327],[-0.07080089],[0.05776005]]},{"dense_4_W":[[0.27981392,-1.6592484,0.18638746]],"dense_4_b":[[0.06507368]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C120x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C120x00x00'.json deleted file mode 100755 index 8d0a5fe248..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TBA-C120x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.5490465],[0.91654193],[0.30993494],[0.04199027],[0.9220449],[0.91940266],[0.91617274],[0.88627845],[0.86233324],[0.8315542],[0.8018313],[0.041735847],[0.041725885],[0.041704368],[0.041467432],[0.04125315],[0.04087492],[0.040402256]],"model_test_loss":0.03576897457242012,"input_size":18,"current_date_and_time":"2023-08-06_00-38-31","input_mean":[[25.217424],[0.025067292],[-0.005204237],[-0.007812521],[0.026058447],[0.02579975],[0.025364147],[0.022783877],[0.022563396],[0.023355754],[0.023063915],[-0.007938141],[-0.007910316],[-0.00788824],[-0.007943815],[-0.00795849],[-0.008054328],[-0.008234501]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.56764346],[-0.2503772],[-3.2322495],[-1.2317773],[0.867053],[4.308423],[-0.07558963]],"dense_1_W":[[0.61443913,1.1731157,0.009846442,-1.1333587,-1.0492755,0.835613,-0.68129694,0.3589496,0.5659384,0.08182793,-0.46320507,1.2664362,0.3659727,0.043432895,-0.78966564,-0.2789253,-0.13537817,0.58561194],[-0.05032384,2.7911828,-3.7081556,-0.22916593,-0.360789,-0.8509512,0.3955322,-2.2810001,-1.5297779,-0.37920654,1.2837292,-1.0756621,0.05912324,0.79691005,0.09919885,0.5648314,0.12931578,-0.2828693],[-1.3801426,0.8747989,2.6738997,0.97103757,0.64060503,1.3203064,0.78513944,0.21045975,0.27105168,0.008706952,0.47002545,0.17457546,-0.019201785,0.022376636,-0.8146881,-0.56253856,-0.40608642,0.1788786],[-0.969806,0.27810913,-0.019731548,0.20302768,-0.9765407,1.7610842,-0.3367136,-1.2561709,-1.1086024,-0.23725067,0.82246333,0.4905772,-0.39064184,-0.62869024,0.1729788,0.09018552,0.26754,-0.16145436],[0.77530533,-0.44069135,-0.016620232,0.91353315,0.7982677,0.18398845,-0.06542974,-0.99103695,-1.0689898,-0.41018635,1.0071982,-1.0062531,-0.37093124,-0.11219994,0.9221856,0.06667381,0.102350205,-0.44873643],[1.837604,0.17821689,2.7829952,0.15930298,-0.18984689,1.3086654,1.0448655,1.2770351,0.9262832,0.571854,-0.44966817,0.9585924,0.4791195,-0.7341206,-1.1710364,-0.137599,-0.054511473,0.0011886378],[-0.13465121,0.42229307,0.01184741,1.9792279,-1.3213581,2.0345612,-0.38451922,-0.08214897,-0.052292295,-0.003056054,0.016048811,0.14917925,-0.21642695,-1.6820744,-0.51334184,0.4513876,-0.0945018,-0.17454582]],"activation":"σ"},{"dense_2_W":[[0.462196,-0.695528,0.16549478,0.2736693,-0.56030834,0.19088152,0.89675313],[-1.4432595,0.9668788,-0.052712087,0.48390535,-1.6715928,-1.1171504,-0.93195546],[-0.7672027,0.73007417,-0.41485545,-0.41052285,0.17164469,0.41768378,-0.6074929],[0.42105144,-0.07561751,-0.071338296,0.5440764,-0.23689774,0.29708165,0.5137933],[-0.9067054,0.2790484,-0.27540752,-0.10838713,0.2654337,0.43244293,-0.84643334],[1.1417533,-1.143838,-0.8191056,-0.42449018,1.7451103,1.1444204,1.5084718],[-0.3675419,0.17639667,-0.024025898,-0.2504475,-1.080494,-0.48680314,-0.49096605],[-0.3961711,-1.3744208,0.4152261,-1.47457,1.1814389,1.061417,-0.9474496],[-1.0131743,-3.5613608,2.3236957,2.097592,-2.561644,-1.4451259,1.6597106],[-0.49788824,-0.18982293,0.17864513,-0.37159964,-1.355421,-0.842698,-0.01138827],[0.5584375,-0.6589816,-0.14198032,0.27809986,-0.29245555,0.2221168,0.70997316],[-0.18313819,-0.16005597,0.18829824,-0.80455697,-0.7474139,-0.46905053,-0.532434],[-0.8919243,-0.26659176,0.03377461,-0.0041140113,-0.96533835,-0.18453701,-0.29215154]],"activation":"σ","dense_2_b":[[-0.72258896],[-0.015371009],[0.37933466],[-0.29024404],[0.16602242],[-0.036112666],[0.019811722],[0.13048169],[-1.32474],[-0.21386966],[-0.14519048],[-0.037656378],[-0.10292112]]},{"dense_3_W":[[0.085076064,0.3378735,0.17556626,0.20053186,-0.4336372,0.27722207,0.04970122,-0.20942238,0.20168552,-0.27926138,-0.1960737,0.020075899,-0.6230306],[-0.27460775,1.1687195,0.616611,-0.21896681,0.06441218,-0.4682532,0.5580457,0.36150676,-0.68175566,0.2615018,-0.27429396,0.32094082,0.47348568],[0.07691053,-0.9330427,-0.46400392,0.28614432,-0.67953914,0.32567665,0.023056043,-0.5036641,0.92684317,-0.21211706,0.6364576,-0.33836454,0.13877176]],"activation":"identity","dense_3_b":[[-0.035371166],[-0.039440315],[0.032718766]]},{"dense_4_W":[[0.043920163,-1.2300794,0.6862739]],"dense_4_b":[[0.038186513]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A020x00x00'.json deleted file mode 100755 index 8488bf11f6..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.428436],[0.8747422],[0.348336],[0.032838576],[0.8674841],[0.8698202],[0.872086],[0.8741188],[0.8746484],[0.8732703],[0.87034994],[0.03268689],[0.032726675],[0.032762397],[0.032804232],[0.032797463],[0.032751366],[0.032637663]],"model_test_loss":0.012720033526420593,"input_size":18,"current_date_and_time":"2023-08-06_01-03-18","input_mean":[[23.87719],[-0.09830344],[0.00987912],[-0.024293454],[-0.10104403],[-0.101183325],[-0.100655936],[-0.09613443],[-0.09292035],[-0.09032173],[-0.08915678],[-0.024517087],[-0.024474092],[-0.024432585],[-0.024249792],[-0.0241554],[-0.0241027],[-0.02419038]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.24818847],[-0.3569515],[-3.8611186],[0.052523665],[-0.061705776],[3.9736814],[-0.51413184]],"dense_1_W":[[-0.023707427,-1.1511034,-3.6214488,-0.88728464,0.7192584,-1.1216406,0.45078358,0.019147111,-0.16734436,0.21107747,1.2753613,-0.18621182,0.0021676207,0.64575016,0.555723,0.22198512,-0.105586044,-0.15878774],[-1.5766635,0.11333443,0.51480776,-0.36963126,0.10475719,-0.49697906,0.68160355,0.2969201,0.19487274,-0.030125976,-0.25609782,-0.630222,0.006213502,0.21161628,0.58924896,0.6157995,0.23309676,-0.61899596],[-1.8898737,0.33577567,-0.97434026,-0.037966143,-0.48877138,-1.5976278,1.1424898,0.56372863,-0.60689634,0.071804985,-0.0496236,-0.34190592,-0.014153756,0.52909875,-0.24744025,0.29303122,-0.23210055,0.05141031],[-0.024221305,0.44990522,-0.028304478,-0.0656701,0.17381778,-1.9562191,0.8350715,0.35282776,0.17968453,-0.019806169,-0.24479271,-0.81009316,-0.3293401,0.4533207,1.2084676,0.015344962,-0.15701972,-0.30990687],[0.011324843,-0.59531343,0.5854086,0.089412585,-0.9452245,1.9720498,0.19747502,0.20461471,1.2405642,0.14468583,-1.165413,0.27390787,-0.3910681,-0.16858988,0.39210764,-0.16402015,-0.12277656,0.07982532],[1.9530678,-0.08342983,-0.9890411,-0.32505137,-0.856526,-0.8791079,0.93317574,0.6200249,-0.06489498,-0.14845468,-0.1365828,-0.39299142,0.10178991,0.26328257,0.49346048,0.0047012162,0.015337047,-0.15793596],[0.0994865,0.37539056,-0.098761536,-0.13319957,0.8647312,-2.085531,0.26294917,0.35073626,0.08432079,0.027274208,-0.13727656,-0.21488512,0.3379102,0.3641513,-0.21915336,-0.2852004,-0.12663482,0.27321863]],"activation":"σ"},{"dense_2_W":[[-0.16425237,0.3091328,0.29525888,0.11240746,-0.74184674,0.43020418,0.70645195],[0.49677476,-0.43110228,0.21888019,0.20753606,-0.7800873,0.7741635,0.03567749],[-0.6097133,0.45192087,-0.781976,-0.23472853,0.57883346,0.05555812,0.20443378],[-0.46759868,0.36920962,-0.31299806,-0.34370378,-0.09269494,-0.4917414,-0.37711906],[0.23382114,0.43119097,0.12654792,-0.4602898,0.13595147,-0.6564136,0.19074993],[0.0017450978,0.44209385,0.52378607,0.5839574,-0.0767268,-0.28383034,0.26752976],[-0.4171056,0.3210464,0.27096882,-0.5315671,-0.12448658,-0.13850246,-0.24946442],[-0.15794876,0.45271224,-0.35790992,-0.13619353,0.45923787,-0.6412923,-0.6191985],[0.016369851,0.27200398,0.6724704,0.7589611,-0.1148256,-0.3482276,0.040378712],[-0.50706065,0.34294152,0.054178692,-0.34360346,-0.14778374,-0.58891815,-0.4531453],[0.3940274,-0.6713925,0.051861253,-0.898765,0.31961933,-0.59337765,0.05139436],[-0.11673336,-0.5929527,-0.15008944,-0.2537059,-0.0013014909,0.31044847,-0.12393371],[-0.19167545,-0.28842226,-0.11017555,-0.3114551,-0.035935447,0.29415083,-0.56570745]],"activation":"σ","dense_2_b":[[-0.13478862],[-0.23486298],[0.13705392],[0.15494871],[-0.020777982],[-0.13753998],[0.016483061],[0.121896364],[-0.123885065],[0.09847333],[0.03438525],[-0.03845259],[0.011853518]]},{"dense_3_W":[[-0.54575056,-0.47849953,0.5990695,0.42073256,0.5419929,0.043547045,0.54512763,0.3283325,-0.2048869,-0.31806502,0.5119246,0.4535623,-0.05827584],[-0.3388336,-0.28757206,-0.29846734,0.38009873,-0.24882287,-0.4701529,0.0076963897,0.17254484,-0.60017455,0.7332266,0.44687817,-0.0715153,0.6319616],[-0.032579347,0.5607797,-0.5665692,-0.39868695,-0.007274041,0.3449716,-0.072209254,-0.49229744,0.6039037,0.024303837,-0.4079465,0.11291028,0.18834813]],"activation":"identity","dense_3_b":[[0.03005079],[0.041132923],[-0.03719341]]},{"dense_4_W":[[0.74240994,1.0283083,-0.91570294]],"dense_4_b":[[0.038777113]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A120x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A120x00x00'.json deleted file mode 100755 index 06eea5a5c7..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG,A120x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.237355],[0.87519014],[0.44057557],[0.03548801],[0.87787986],[0.8774264],[0.8760763],[0.8587142],[0.8437336],[0.82851934],[0.8162014],[0.035328448],[0.035375077],[0.035424557],[0.03544107],[0.035294056],[0.03506294],[0.034851927]],"model_test_loss":0.022225305438041687,"input_size":18,"current_date_and_time":"2023-08-06_01-29-22","input_mean":[[22.534292],[0.058919504],[-0.0069944696],[-0.006594112],[0.057512816],[0.057811707],[0.057591096],[0.056336958],[0.057281986],[0.051038712],[0.04328098],[-0.006509515],[-0.006505374],[-0.0065190606],[-0.006622567],[-0.006714965],[-0.0068818894],[-0.0070974007]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.5739499],[3.878269],[0.45385617],[-0.20725146],[-0.079795115],[-4.091677],[0.36011276]],"dense_1_W":[[-0.22821122,-2.8194423,1.6595688,-0.4830238,2.3802936,1.9161788,-0.6213912,0.7039542,-0.6125425,-0.4726092,-0.23838855,0.67865574,-0.09634735,-0.7351034,0.53436965,0.28926876,-0.1594619,-0.037523255],[2.5516446,-1.2378905,0.00072916696,0.6147921,1.4464301,-0.31585398,-0.30207664,1.2950996,-0.16590804,-0.7658588,0.15745218,0.18785125,-0.21452165,-0.55619836,0.059614744,-0.24405465,0.18975312,-0.036489666],[0.00046311753,5.2895155,-0.0064032064,2.3568318,-3.7788632,-0.6730425,0.94534135,1.7328202,1.210308,1.5939676,2.7725132,-0.5959545,-0.2708361,-0.4567112,-0.26398024,-0.2822813,-0.13274622,0.08366669],[0.00060495536,-1.8627077,0.0016775115,0.011831294,2.4184442,-2.741676,0.9209026,0.2837613,-0.23187289,-0.9453196,0.7903965,-0.18015528,-0.081913516,0.082411945,0.48140436,0.35204688,0.08898967,-0.32223535],[-0.04008556,-1.1614711,-5.304956,-0.06615373,0.4991292,-0.93462783,1.6848874,-0.72819597,-1.0155044,0.67655045,0.24754661,0.25713775,0.25633144,0.46113673,-0.5089996,-1.4017544,0.52801764,0.53018683],[-2.6250875,-0.8428706,-0.0068993093,0.6359419,1.5150832,-0.8593881,-0.123320185,1.1137877,0.16923575,-1.062661,0.20523195,0.13212685,-0.509759,-0.021390263,-0.16270931,-0.41007507,0.4482517,-0.11212839],[0.121950485,-3.06296,1.6239958,-0.33307838,2.5052757,3.2169566,-1.3293189,-0.22467609,-0.37574983,-0.5922604,0.09215065,0.62051153,0.5787191,-0.8557021,-0.56089085,0.5316071,-0.062818,0.082696125]],"activation":"σ"},{"dense_2_W":[[-0.35287166,0.5735374,-0.33316278,1.2891138,-0.3599736,0.12537672,-0.66336924],[-1.423288,0.8357749,-1.3781912,-1.1710855,0.51321846,-1.5293682,-0.21053772],[-0.32105762,0.28671432,-0.5801889,0.35754833,-0.7569594,0.03212915,-0.5317869],[0.091680296,-0.7365891,-0.07562274,-0.25502372,-0.3725359,-0.041279055,0.18312061],[1.1346624,1.4142879,1.076152,0.8530887,-0.36640313,-1.5642645,0.8622971],[0.25187486,-0.8454855,0.24975924,-0.6653769,0.17570826,-0.1467031,0.52752095],[-0.52542835,1.0067426,-0.3432608,0.6156269,0.4721524,0.13591726,-0.41583073],[-1.4627284,-0.97950006,-1.8288456,0.23860978,1.5214525,2.4171803,-1.1142124],[0.762936,0.5988445,0.6786874,-0.67899644,-0.82305706,-1.1394529,0.61851394],[0.28733522,-0.8497635,-0.41946363,-0.0458478,-0.43066698,-0.29245007,-0.5107658],[-0.44353834,0.6743515,-0.37099394,0.461348,0.5619282,-0.27031732,0.15943629],[-0.30596974,-1.1035383,-0.51829547,0.14438403,0.09970497,-0.40294972,0.31800285],[1.0255032,-2.2046218,0.77438307,-0.21968207,-1.4422927,0.9943756,0.4114353]],"activation":"σ","dense_2_b":[[-0.18944573],[0.12252371],[-0.30214006],[-0.10644982],[0.2681959],[-0.09597638],[-0.06898104],[-0.60539126],[0.21081245],[-0.2496423],[-0.07610517],[-0.13910647],[-0.78967816]]},{"dense_3_W":[[0.22095068,-0.51939535,-0.36592597,-0.48365295,-0.41380858,-0.56315166,0.6327542,0.22628462,-0.16801901,-0.24263306,0.40058422,0.13298513,0.28335148],[0.113773875,0.5613844,0.37089002,0.57024395,0.4068071,-0.06056436,-0.65681094,-0.31930733,0.39740247,0.6750699,0.4575854,0.20065524,0.2139887],[0.7378495,-0.4070432,0.5941009,0.4365137,-0.33317804,0.1605702,0.64352435,0.26713678,-0.26348892,0.22799617,0.41001305,-0.50239944,-0.97245806]],"activation":"identity","dense_3_b":[[-0.03496299],[-0.0028519286],[-0.052557867]]},{"dense_4_W":[[-1.090145,0.25029793,-0.99950933]],"dense_4_b":[[0.038892392]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A020x00x00'.json deleted file mode 100755 index 38c0af829e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.9397926],[0.58847904],[0.2768134],[0.03328077],[0.5956492],[0.59220606],[0.5897729],[0.5776224],[0.56892926],[0.56445587],[0.56639653],[0.033096638],[0.033156663],[0.033203375],[0.03332432],[0.033254243],[0.033312503],[0.033484638]],"model_test_loss":0.028057441115379333,"input_size":18,"current_date_and_time":"2023-08-06_01-53-50","input_mean":[[21.049675],[0.18402193],[-0.003428923],[-0.007548354],[0.18359452],[0.1835885],[0.18393785],[0.18181257],[0.17725796],[0.17158064],[0.164546],[-0.0077345166],[-0.007683261],[-0.007645073],[-0.0075830934],[-0.0077846153],[-0.008191],[-0.008583602]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.8156507],[-2.4066193],[0.028636524],[-0.31134236],[-0.28471118],[0.08179851],[1.679371]],"dense_1_W":[[1.844903,0.027804963,0.5669119,-0.778688,0.8034288,-0.78931105,1.2116214,0.19344883,-0.6704197,0.016172517,0.20178398,-0.3408561,-0.25060442,0.1655656,0.71878904,0.5432098,0.24100736,-0.5256183],[-2.200448,0.405909,0.6434607,0.26235482,-0.18575469,1.2817595,-0.7119806,0.38927037,0.39060992,-0.49538943,0.016932135,-0.14391725,-0.0885561,-0.6673529,0.36674196,0.29924622,-0.29776922,0.022200285],[0.0029789726,0.6943829,-0.00041380787,-1.1453172,-0.50027996,0.85155296,-0.13035522,-0.7368721,0.06147018,0.18088032,0.012485195,0.4306581,0.5157353,0.28600702,-0.6693201,-0.008134162,0.35026318,0.11398255],[0.1142896,0.00468294,-2.5078979,1.377898,-0.73678875,-1.4563999,0.8267823,0.16948342,-0.14088418,-0.5553062,-0.21878052,-1.5041614,-1.117198,-0.30893826,0.59749913,0.702367,0.1315873,-0.670245],[0.0009085219,1.0001184,4.3506665,-2.042315,-0.15742837,1.0259328,-0.17750828,0.54632634,-0.46832186,-0.42449352,-1.556151,0.57148683,0.68085456,0.1495435,-0.39299193,0.8861771,0.7166561,-0.54555255],[0.100348786,0.014175879,-0.012427769,-0.5041687,-0.5826174,0.5256853,-0.52756214,0.07132036,0.34683812,0.07438995,-0.26059008,-0.13695654,-0.67984086,0.38298985,0.9229481,0.80970156,-0.29075277,-0.43736833],[2.0044293,-0.20208758,0.54538536,1.1377499,0.3106265,1.0160546,-0.32974172,-0.089798145,0.2855685,-0.03635302,-0.041824948,-0.18219398,-0.25772902,-1.0644519,0.43982273,-0.08722686,-0.2421627,0.051588144]],"activation":"σ"},{"dense_2_W":[[0.30571613,-0.18013296,0.5926545,0.14476953,0.16642626,-0.11212167,0.3821252],[0.94783115,2.5033114,-3.1206958,-0.15871608,-1.994079,-1.3640877,-1.5263621],[0.47148222,0.104184546,-0.37317687,-0.8472351,0.08160871,-0.6943246,-0.40566835],[-0.64335907,0.78053916,-0.20363255,-0.016910687,0.40413967,-0.23705012,-0.060175724],[-0.31357315,0.1102892,0.34789997,0.24466582,0.2282046,0.27680242,0.41566148],[-0.2819869,-0.49597213,-0.29658175,0.20754631,-0.1396202,-0.3569357,-0.3499282],[0.016052477,0.72212625,0.5342962,-0.58273345,-0.40965185,0.0081045525,0.16813238],[1.3594749,-1.0821377,-0.9876373,0.14710972,-0.7891241,0.990827,0.35404012],[0.10145038,0.27034414,0.099734664,-0.21233094,0.46582258,0.14897184,0.31720132],[-0.6530252,-0.9807932,0.80537784,-0.11495904,-0.7238929,-0.2512353,-0.7177895],[0.4390709,-0.23511182,-0.49958336,-0.14200853,0.25195497,0.6376854,-0.29144466],[0.24465889,-0.7938168,0.060746156,0.095193386,0.07138605,0.036473136,-0.7767482],[-0.36048752,0.43844214,-1.3429878,-0.18445532,0.037344575,0.018166453,-1.3115227]],"activation":"σ","dense_2_b":[[-0.08002864],[-0.27753568],[-0.33821508],[-0.06898969],[-0.07934998],[-0.022124004],[-0.014806774],[0.5396857],[0.04967859],[-0.20298636],[-0.017854981],[-0.3076046],[-0.053490125]]},{"dense_3_W":[[-0.4066065,0.97251016,0.033346247,-0.10809236,0.085812196,0.42724374,-0.22504164,0.30916232,-0.58347124,0.72406,0.47510427,0.4123366,0.73240745],[0.2478319,0.008268835,0.5303551,0.5601437,0.47338668,-0.5492546,0.47054175,0.45232275,-0.37064263,0.22936313,-0.08599906,-0.2583833,0.33278263],[0.12888186,-0.061529376,0.41770902,-0.6266616,-0.5737836,0.13413434,-0.46319184,0.70543456,0.042693373,-0.25845766,0.24550076,-0.44863605,0.488171]],"activation":"identity","dense_3_b":[[-0.039126486],[0.006651634],[-0.018630983]]},{"dense_4_W":[[-1.4650652,0.3291624,-0.77633846]],"dense_4_b":[[0.022054376]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A120x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A120x00x00'.json deleted file mode 100755 index 7e478a115c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-A120x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.382928],[0.831745],[0.30223858],[0.03895733],[0.84030503],[0.837596],[0.8347243],[0.81036496],[0.7911638],[0.7661664],[0.741643],[0.0389547],[0.038950026],[0.03893477],[0.03872475],[0.038503967],[0.038221505],[0.03784756]],"model_test_loss":0.04651949554681778,"input_size":18,"current_date_and_time":"2023-08-06_02-19-12","input_mean":[[25.801882],[0.013322295],[0.00012067948],[-0.014118517],[0.012097556],[0.012325566],[0.012585732],[0.012787061],[0.012398119],[0.011666994],[0.01200301],[-0.014120493],[-0.014129876],[-0.014137334],[-0.01423779],[-0.014323668],[-0.014383154],[-0.014402781]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.68441534],[-0.13293418],[-2.3703692],[1.0513278],[-0.049006693],[0.4361167],[-1.6526378]],"dense_1_W":[[-0.3009049,-1.3486567,-4.1750894,0.1664098,1.4217969,0.1054205,0.59044117,-1.1253078,-0.6447645,-0.2502474,0.96328413,-0.28410953,-0.31804475,-0.1947907,0.38729358,0.4187392,0.4089219,-0.61806595],[0.010645178,-1.0883038,-2.5133154,-0.25236014,0.5784265,-0.51083916,0.4832404,-0.4849606,-1.0525901,-0.13375925,1.4631903,-0.4047331,0.0050009037,0.6095067,-0.09834975,0.2519382,-0.038879942,-0.069640845],[-0.8899254,-1.0230187,-1.439176,1.1679554,1.0210379,-1.1627477,0.8465841,-0.39189994,-0.7394402,-0.02806761,0.5266214,-0.40435284,-0.35882106,0.068795145,-0.2524109,-0.17227925,-0.18992348,0.12400747],[1.1131828,-0.5260197,-1.7403282,-0.33493716,-0.5395197,0.6774204,-0.8929776,0.60346586,-0.0066875615,0.0138423955,-0.11350326,0.6344896,0.1835288,-0.34619817,-0.4588385,-0.015822446,0.22261441,0.07688962],[8.6207525e-5,-0.70675,-0.0007860533,0.20384522,0.1318535,-1.014616,-0.009205295,0.9519155,0.46291843,0.028296059,-0.4624722,-0.6242399,0.016376816,0.6099459,-0.1398835,0.015813632,0.13008049,-0.14142884],[1.0258418,0.436164,1.851793,0.42419407,0.42999953,-0.19701813,0.41379267,-0.11730983,-0.3859213,-0.2814823,0.33615586,-0.5434531,-0.08128047,0.37816283,0.19217548,-0.36968186,0.09063848,-0.046774127],[-0.7571031,0.4970347,1.3990597,0.11719525,-0.56139064,0.7697264,-0.3542842,0.37262577,0.3073247,0.16176817,-0.36358887,0.43785885,-0.3470084,-0.07056978,-0.31751567,0.34110883,-0.28786156,0.15170412]],"activation":"σ"},{"dense_2_W":[[-0.30184454,0.3802063,0.4967091,-0.35028198,0.51986647,0.4000042,-0.21709704],[0.09750685,0.06357492,-0.7158158,0.2812576,-0.2995527,-0.7086002,-0.5355136],[0.08785149,0.3272583,0.47600603,-0.8402297,0.52597255,-0.45987862,-0.76386476],[0.08306526,-0.16242865,-0.6435881,0.53329647,-0.6757787,-0.37396497,0.7116671],[-0.22419164,-0.022920314,-0.04075283,0.8179769,-1.016423,0.34336585,0.5386958],[-0.15732218,0.33430022,0.11486374,-0.78740937,0.99910235,0.39482287,-0.5267216],[-0.77424455,-0.14682956,-0.55741477,-0.38432997,-0.28245547,-0.4974875,0.24210082],[-0.96440476,-0.7743205,0.13630813,-0.74980104,-0.007871434,-0.38619104,-0.035752743],[0.0011592604,0.10274233,-0.8914161,0.9206268,-0.62343633,-0.23734997,0.6717641],[-1.9650924,-0.90385705,0.55099785,-0.39466116,0.12528175,-1.7182279,0.89252603],[0.012258381,0.19495833,-0.08824382,-0.22507101,-0.15942216,-0.2785897,-0.22172463],[-0.1748081,0.17200747,0.4328849,-0.24547942,0.43270597,0.3054646,0.18000092],[-0.2559985,0.36312464,0.11709605,0.09233141,0.9310238,-0.029632417,-0.25157112]],"activation":"σ","dense_2_b":[[-0.1474299],[-0.3277726],[-0.21582118],[0.036078904],[-0.05503096],[-0.005676639],[-0.055123266],[-0.17541403],[0.0015975577],[-0.104181305],[-0.20293538],[-0.10939717],[-0.07661626]]},{"dense_3_W":[[-0.21298198,0.110187896,-0.60958046,0.45805818,0.54682696,-0.7046855,0.6269348,0.21081105,0.42615926,0.8367855,-0.1845897,0.06679362,-0.09966726],[0.15750672,0.1327235,-0.2181211,-0.36494306,-0.52508456,0.68815714,-0.5968023,0.026029408,-0.29523292,-0.05900207,0.06698885,0.25658783,0.51479304],[0.09501332,0.0035566674,-0.19596317,0.68399763,0.2697313,-0.61212915,0.09689588,0.17770325,-0.19476512,0.5935955,0.3390856,-0.20666745,-0.5220273]],"activation":"identity","dense_3_b":[[-0.030582575],[0.022597056],[-0.022908542]]},{"dense_4_W":[[1.1999085,-0.6172392,0.81952834]],"dense_4_b":[[-0.02394666]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-J510x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-J510x00x00'.json deleted file mode 100755 index d33eb1eac2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGG-J510x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9383917],[0.8355506],[0.3390312],[0.03119497],[0.82312363],[0.82553184],[0.828844],[0.81786305],[0.8089189],[0.7983574],[0.78663474],[0.031027893],[0.031051435],[0.031081835],[0.031122375],[0.031173797],[0.031170428],[0.031091694]],"model_test_loss":0.012541690841317177,"input_size":18,"current_date_and_time":"2023-08-06_02-44-08","input_mean":[[29.07186],[-0.06912211],[0.013657895],[-0.002133514],[-0.072693],[-0.072877966],[-0.072644964],[-0.06586901],[-0.06460334],[-0.0633031],[-0.06268608],[-0.0021806108],[-0.0022094164],[-0.0022406473],[-0.0022201212],[-0.0022082466],[-0.0021234895],[-0.0020255505]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.026404249],[0.13105589],[0.16516872],[-0.06090279],[-0.14405267],[-2.502384],[2.218792]],"dense_1_W":[[-0.0021143458,0.4845371,-1.1704693,0.95396703,-0.45841944,-0.29033682,0.53932166,-0.37416738,-0.41057795,-0.23133592,0.54513544,0.26240727,-0.17659351,0.054697156,-1.1045226,-0.40194085,0.27317593,0.23824252],[-1.7758781,0.48786885,-0.00477917,-0.22493805,-0.515321,1.3253579,-0.6839125,-0.6387143,-0.17747526,-0.1419738,0.30965427,0.1709874,0.23986466,0.087099396,-0.62111133,-0.1853607,0.43471354,-0.028164243],[-1.7272408,0.3076149,0.00765919,-0.3540082,0.38353494,-1.060162,-0.1053273,0.6142481,0.07908985,0.1091809,-0.28727072,0.12411787,-0.030564038,-0.13592651,0.42188758,0.2681106,-0.008810187,-0.16449693],[-0.044815022,-0.29972354,-0.71397084,0.24435022,-0.6555711,0.1949695,-0.53771883,0.91733986,0.5420983,-0.06943186,-0.35568416,-0.44354844,0.33030087,-0.29652244,-0.008032364,0.36644423,0.20427188,-0.3417492],[-0.003277743,0.84705424,0.019459587,0.33182937,-0.32682094,1.042309,-0.6059422,-0.4592401,-0.14659667,-0.02649014,0.19585942,-0.29718736,0.60278606,0.13007255,-0.9305752,-0.15275106,-0.0688484,0.28789634],[-0.8902708,0.15024209,1.0265517,-0.25550342,-0.17248401,1.1255769,-0.5883171,0.15187076,0.15472615,-0.036912397,-0.12170663,0.2438034,-0.19690259,-0.06634575,0.02245947,0.3350466,0.1365908,-0.21177408],[0.8790335,0.08951593,1.0052422,-0.36786625,0.26908866,0.5844786,-0.5167404,0.17875771,0.15087639,0.004691414,-0.13105698,-0.304317,-0.16428755,0.42695817,0.6963123,-0.10174697,-0.08647683,-0.09663916]],"activation":"σ"},{"dense_2_W":[[-0.5507626,0.7375308,-0.49619263,0.64276683,0.31423688,-0.047046438,0.14320022],[0.06431445,-0.91829306,0.61997795,-0.87665886,-1.1699272,-0.266563,0.2754743],[-0.23304823,-0.80016303,-0.62006134,-0.050004035,-0.19096582,-0.0061811367,-0.35022056],[-0.6022076,0.24352926,0.3797693,-0.4641736,0.58151716,0.086308055,-0.024125725],[0.42020667,-0.43386108,0.78020096,-0.07576871,-0.96067387,-0.7232814,-0.35634282],[-0.5178249,-0.06836039,-0.37178206,-0.50464267,-0.0235822,0.026802443,0.30778465],[0.6183374,-0.23700354,0.6740862,-0.8557632,-0.63150823,-0.45882928,-0.59726715],[-0.015967928,0.26693594,0.08684808,-0.3305254,-0.21529642,-0.9623077,-0.7667298],[-0.40488502,0.08908774,0.11001882,-0.48002744,-0.38036668,-0.5579617,-0.8118769],[-0.6996953,-0.08383944,0.14571202,-0.2791817,0.19681555,0.61584616,0.5265486],[0.33932468,0.4615041,-0.46465427,0.030247016,0.33767444,0.4764484,0.49228984],[0.739168,-0.5647498,0.87683797,-0.41238332,-0.6725376,-0.31792146,-0.80818856],[-0.29039443,-0.15418902,0.16983575,0.404602,0.8631,-0.08719541,0.4968237]],"activation":"σ","dense_2_b":[[-0.03965108],[0.28927684],[-0.18241821],[-0.108551204],[0.6023028],[-0.031586934],[0.09187851],[-0.025837803],[-0.2092672],[-0.095620565],[-0.14529799],[0.21532695],[-0.038257282]]},{"dense_3_W":[[0.69658524,0.13405359,-0.5135836,0.039699517,0.4089305,0.015523863,-0.37848678,-0.5778005,-0.39460537,-0.08848027,-0.47406712,-0.5140029,0.4353925],[0.36546764,-0.85153615,-0.26655787,0.3066136,-0.7395783,-0.21865855,-0.5632104,0.11118248,0.04402694,-0.31351718,0.64110416,-0.21988907,0.48327655],[-0.48011708,-0.64806235,0.50163656,0.42039683,-0.5115424,0.22310808,-0.30667087,-0.23503205,0.08582519,0.6786953,0.5058911,0.013384847,-0.13791536]],"activation":"identity","dense_3_b":[[0.017121604],[0.016458558],[0.014057028]]},{"dense_4_W":[[0.9904114,0.8519098,1.0665607]],"dense_4_b":[[0.015847046]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGL-E130x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGL-E130x00x00'.json deleted file mode 100755 index 782a71a292..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019 b'39990-TGL-E130x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.29796],[0.6869096],[0.3043955],[0.053746838],[0.69718754],[0.6945284],[0.6902723],[0.6647322],[0.648803],[0.6250414],[0.6004392],[0.05371038],[0.053712133],[0.053708736],[0.053587437],[0.053468417],[0.053344723],[0.05339542]],"model_test_loss":0.059682220220565796,"input_size":18,"current_date_and_time":"2023-08-06_03-09-39","input_mean":[[20.848803],[0.09077284],[0.0004920535],[-0.013807639],[0.08834558],[0.0896692],[0.090346344],[0.09061075],[0.08792884],[0.085393175],[0.07933361],[-0.013748395],[-0.013738229],[-0.013735628],[-0.01376535],[-0.013799873],[-0.0139192855],[-0.013997918]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.12927625],[0.039042104],[0.06305568],[0.5509221],[-1.2879711],[6.2787247],[-6.190384]],"dense_1_W":[[0.0027083303,-0.10112696,0.00021239324,-0.25530028,0.19750968,-1.0146434,0.19078395,0.17337662,-0.13830121,-0.34922576,0.18369395,-0.41599622,0.31424782,0.36015517,-0.025049085,-0.16560718,0.32461762,-0.14546283],[0.0011184415,0.34731707,0.000591945,0.020096293,-0.40281445,0.9857871,-0.54341626,-0.2996433,-0.0023747282,-0.11858881,0.16937213,0.40306735,-0.17791511,0.015529411,-0.32821342,-0.2275615,0.12587199,-0.13679199],[-0.01001298,-0.43627232,3.8718,-0.020895703,1.6419108,1.1942697,-1.3671072,0.8677243,0.6161768,0.25344366,-2.1509552,0.3635223,0.14490978,-0.93930185,0.51710093,0.37570456,-0.20570871,-0.06064528],[8.5005406e-5,1.5534368,0.0050369557,0.76705796,0.096726,-1.0784471,0.21296425,0.047997892,-0.504228,0.21246566,0.077220924,-0.5910409,-0.39798212,0.40880397,0.21635057,0.2121605,-0.57481694,-1.6995429],[0.0016134434,0.048475664,0.25585577,0.23253338,-0.4305987,0.23644239,-1.0944809,-0.41095805,-0.1506762,-0.39978436,-0.4151889,0.9040056,0.29542196,0.5904203,0.2782569,0.23929867,0.42858773,1.7019073],[4.025802,2.5585697,-2.4830704,-1.6901246,-0.3633653,-0.89175445,-0.29274487,-1.4318734,-2.3919513,-0.24146257,1.3682926,0.39687443,0.4862581,0.75898904,0.14836557,-0.61106664,-0.041406788,0.43938866],[-3.6613293,3.431119,-2.267677,1.7728403,-0.28788745,-1.4352858,-0.6164974,-1.5066901,-1.9746417,-0.3478911,1.202695,-0.8438115,0.29883432,0.07818771,-0.89911157,-0.89166856,-0.061227016,0.44411016]],"activation":"σ"},{"dense_2_W":[[0.24542594,-2.2395196,-0.14947067,0.041994963,-0.2406378,0.5588424,-0.41520935],[-0.8674741,1.2369518,0.48354208,-0.019096198,0.03493316,0.061816297,-0.6701676],[-0.34608337,0.24626403,-0.51114035,-0.7236035,-1.0586612,-0.8953887,1.0207646],[-0.6603612,1.3253964,0.6621064,-0.3136026,0.07262768,-0.73918,-0.087288626],[0.77753216,-1.2590296,-0.6827706,0.5964797,-0.081819944,0.025609335,0.23794611],[-0.027843717,1.0459992,0.16385391,-0.42424512,-0.60500985,-0.20268683,0.20546572],[-0.43445817,1.1618135,-0.25778547,0.38488075,0.3197356,-0.3485739,-0.6816144],[-0.7163731,0.474339,-0.11365654,0.0881506,0.23063587,0.097380914,0.07446911],[-0.9666889,0.9888771,-0.19698231,0.023333492,0.20297973,-0.0487526,-0.10499752],[-0.02302885,-2.0536203,-0.17813562,0.27943268,-0.45622507,0.46923488,1.5073433],[0.11166716,0.5468084,-0.059901386,0.17259055,-0.3219094,-0.50135636,0.19411519],[-0.51580197,0.98296887,0.12504756,-0.04137333,-0.5060232,0.20122856,0.0911331],[-0.39491713,1.1337756,0.17506048,-0.4171312,-0.10811109,-0.689537,-0.4207489]],"activation":"σ","dense_2_b":[[0.15749712],[-0.32822123],[-0.16269855],[-0.23587422],[0.1348652],[-0.16819751],[-0.13819136],[-0.1933703],[-0.16497153],[0.26468632],[-0.1549707],[-0.18713947],[-0.11378069]]},{"dense_3_W":[[0.36997053,-0.2313704,-0.4401421,0.026918795,0.8393843,-0.58421713,-0.44875944,-0.10873468,0.16037284,0.7108794,-0.46192494,0.07450364,-0.07943991],[-0.69230264,0.2847919,-0.2528415,0.40409324,-0.8334492,-0.019472836,0.005906335,0.3058701,0.62732667,-0.43410972,0.1603031,0.39690167,0.3522643],[-0.1730077,0.37127316,0.6238479,0.14937235,-0.54297125,0.56943595,0.46046963,-0.21287519,-0.046794858,-0.6515185,-0.625884,0.6049786,0.33925623]],"activation":"identity","dense_3_b":[[0.09230293],[-0.10100416],[-0.14628187]]},{"dense_4_W":[[-0.96249396,1.0031632,0.1955458]],"dense_4_b":[[-0.09062254]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA,A030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA,A030x00x00'.json deleted file mode 100755 index d3a1bb6bc2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA,A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.828868],[1.3588611],[0.41877922],[0.042109862],[1.341616],[1.3486344],[1.3538228],[1.3478316],[1.328037],[1.2895682],[1.2430215],[0.04203343],[0.042057183],[0.042080052],[0.04202502],[0.0419028],[0.041697],[0.04135808]],"model_test_loss":0.01706458441913128,"input_size":18,"current_date_and_time":"2023-08-06_04-07-16","input_mean":[[23.807858],[0.03894964],[-0.009764001],[-0.011655796],[0.041675754],[0.04040426],[0.038979076],[0.034793235],[0.032237094],[0.03182612],[0.0351043],[-0.011650053],[-0.011667487],[-0.011685415],[-0.011778335],[-0.011861333],[-0.012015583],[-0.012147856]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.5615673],[0.7718801],[-3.7769625],[0.4954386],[-1.2168337],[0.3834438],[-1.4409952]],"dense_1_W":[[1.6587557,-0.03201305,-0.4806989,0.36387846,-0.48278156,-0.3905921,-0.0388727,-0.14381675,-0.24559438,-0.24794875,0.020391222,-0.36554426,-0.045786988,0.37558827,-0.5150567,0.011279025,0.37533346,-0.15497313],[1.856302,0.3850902,0.3822126,0.35716665,-0.5155237,0.07582075,0.8278192,0.35297492,-0.5057421,-0.09577705,0.27150053,0.065463945,0.034616094,0.029208321,-0.22792868,0.005505799,-0.15835825,0.12173401],[-1.966878,0.09221255,-0.5907079,0.43561482,-0.8552626,-0.6498669,0.31348014,-0.25722724,-0.3638425,-0.01811314,-0.1542113,-0.05421908,0.22119746,-0.052404914,-0.6179151,-0.010884692,-0.09178448,0.26305836],[-0.14198878,-0.7116039,-0.08581363,-0.13187033,0.4916839,-0.7834652,0.32754624,0.055074025,0.17711979,-0.013773762,-0.08651409,-0.12673153,-0.14753248,0.2293844,0.40847418,-0.14559479,-0.11703128,0.04356386],[-1.872429,-0.15238704,0.40203246,-0.02868895,0.14101167,-0.40041912,1.2534008,-0.09318469,-0.03764272,-0.087983645,0.26885307,-0.67364323,0.31495255,0.37216207,0.24445911,0.17665292,0.012208228,-0.2388997],[0.11508778,0.6316238,3.0819817,-0.16016749,-0.2190627,-0.06308648,-0.9233147,0.6661318,1.2984458,0.091404624,-1.5613545,0.18205322,-0.15544152,0.17819074,-0.051608723,0.10189869,0.014511001,-0.011415061],[0.18752714,-0.78931046,-0.10892214,0.19746861,0.58102345,-0.6981444,0.18360513,0.14009249,-0.062272664,-0.18457152,0.10788008,-0.5033553,-0.35309345,0.4638519,0.12721097,0.21150345,0.28216785,-0.38438264]],"activation":"σ"},{"dense_2_W":[[-0.41296047,0.009994055,-0.56219316,-0.5554611,-0.26297602,0.18101925,-0.16817299],[-0.37041304,-0.7107613,-0.7427994,0.114892006,-0.34880233,-0.22947483,-0.6385373],[-0.49729323,-0.07977957,0.66374093,-0.017636025,0.4205715,-0.9580843,0.43858218],[0.38907713,-0.76856196,-0.4815348,-0.21716839,-0.3260819,-0.5470339,-0.92810947],[-0.31227747,0.2155603,-0.36565685,-0.55944705,0.021143533,-0.49740636,-1.0799714],[-1.6338145,-0.4843085,0.12082096,-0.9157364,-0.15951772,1.3216581,0.5687549],[0.058031183,0.1682733,0.74648166,0.3186676,-0.21778281,-0.7438653,0.29449734],[-0.24235114,-0.33672345,-0.046596766,0.9317643,0.45289803,0.5095793,1.5327915],[1.3766825,0.38467634,-0.38601008,0.906059,-0.043449163,-1.0596842,0.4888961],[-0.19836484,0.14401913,0.7339981,-0.35825434,-0.07396672,-0.8178357,0.06628493],[-0.7688364,-0.24399456,0.09368414,-0.77106285,-0.61470944,0.2647412,-0.3470581],[-0.37717023,0.5652293,-0.7643337,-0.8346215,-0.42952943,-0.7881854,-0.66797024],[-0.17988431,0.41044593,1.0204062,0.23822533,-0.5833684,-0.18772323,0.49101728]],"activation":"σ","dense_2_b":[[0.08490299],[0.019760115],[-0.34167358],[-0.048392903],[0.03218207],[-0.070515014],[-0.24773756],[-0.22226538],[0.0024391487],[-0.28946945],[0.11847323],[0.16301791],[-0.264623]]},{"dense_3_W":[[-0.6551264,0.20192637,0.17543362,-0.37154144,-0.4004771,-0.19728865,0.23193756,0.45298353,0.5133015,0.15628278,-0.747469,-0.79281825,-0.11067879],[-0.1810723,-0.41811052,0.42333624,-0.39242148,-0.33600914,-0.8151715,-0.07931125,0.42133102,0.40676335,-0.2168068,-0.7562931,-0.3301234,0.52793944],[0.21940233,-0.54502714,0.58356434,-0.5688791,-0.43637988,-0.79480255,0.5184784,-0.16852017,0.013635831,0.11912652,-0.33910868,-0.32096627,0.2924903]],"activation":"identity","dense_3_b":[[0.012673786],[0.01128344],[0.022662073]]},{"dense_4_W":[[-0.85258716,-0.6859794,-0.7441323]],"dense_4_b":[[-0.010446228]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA-A030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA-A030x00x00'.json deleted file mode 100755 index ef1e50fb4b..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBA-A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.321424],[1.0282952],[0.3231149],[0.050224524],[1.0217996],[1.0223825],[1.0230912],[1.0082365],[0.9936996],[0.9721316],[0.94674724],[0.050032564],[0.050057508],[0.050079145],[0.04995292],[0.049778342],[0.049467754],[0.04904953]],"model_test_loss":0.04801265150308609,"input_size":18,"current_date_and_time":"2023-08-06_04-34-24","input_mean":[[24.640993],[0.0068147755],[-0.00017586962],[-0.007561566],[0.0058099264],[0.005813637],[0.0063611735],[0.005459741],[0.0055605527],[0.004139945],[0.0030338452],[-0.007694561],[-0.007676937],[-0.007659136],[-0.007666928],[-0.00773279],[-0.007866388],[-0.007996489]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.7891235],[-1.3479378],[3.686604],[-0.041683935],[0.44453996],[0.89426214],[-0.07687369]],"dense_1_W":[[-2.6697454,-0.03765943,1.0202249,-0.52507985,-0.13629472,0.6595523,-0.13299626,-0.048831288,-0.13964303,-0.62626183,0.16865243,0.25943044,-0.5501048,-1.1343125,0.94113344,0.9836929,-0.003212936,-0.70527804],[-0.41116533,1.0958958,0.012986355,-0.32682467,-2.421896,2.745534,0.9753023,0.13926715,0.91335714,0.52315897,-0.7597256,2.3798738,-0.07218695,-1.5000907,-1.3250524,-0.9156551,0.118389815,0.88640165],[2.4582686,-0.72908694,0.94068986,-0.34913862,-0.041044798,1.2958984,-0.024698433,-0.24287732,-0.42381126,-0.74013126,0.52158904,0.19182011,-0.514857,-1.3592434,0.94803435,1.2861104,-0.039313756,-0.8227899],[0.033646453,-3.5824103,-6.09218,0.43962353,1.8247055,-1.3911265,1.4840937,-0.15692972,-0.5501356,-0.7384373,2.226222,-1.9952009,-0.8098372,2.1930652,-0.10924932,1.0031217,-0.57847834,0.072315976],[0.10464661,-3.4566085,-0.04553826,-3.0969014,-1.1141416,-1.5840448,-2.459453,-1.2589267,-1.7775773,0.013487749,0.36193714,0.9506872,0.2682508,0.8656542,-0.36186987,-0.22262314,-0.09480439,0.49781433],[0.23307775,1.1548069,-0.005890356,-0.36526188,-1.7491344,1.6553907,0.7824479,0.28973,1.0826069,0.27719763,-0.7125912,1.6590072,0.50719297,-1.3509704,-1.0290717,-1.1256452,0.31335434,0.72853845],[-0.047236566,-3.5460665,-3.2294989,-0.019556083,0.1316267,-2.8824382,0.1793949,-0.37179092,-1.2276187,0.8579884,2.932915,-0.8372722,0.085465014,1.8520348,0.1647215,-0.5610902,-0.38116512,0.21042979]],"activation":"σ"},{"dense_2_W":[[0.35697874,0.13488762,0.17423156,0.051741544,-0.4516404,0.37111923,-0.3326717],[-0.020012485,0.20876743,-0.470396,-0.48033553,0.032553833,-0.055029735,-0.5415699],[0.53745645,0.11958758,-0.59997284,-0.3589176,-0.1754238,-0.013715318,-0.19413082],[-1.2985301,-0.89441663,3.2249649,-1.9904556,-3.8377733,4.1878753,0.033228528],[0.30518278,-0.14937647,0.55065024,0.44417018,-0.07627243,0.16218498,-0.53365713],[-0.26422963,-0.05829067,-0.22699557,-0.35607624,-0.5975787,0.2094802,0.34373868],[0.42617777,1.194375,0.6779001,-0.27449745,0.8595841,0.21543206,-0.30614635],[0.56020504,0.1932858,0.28161722,0.5497468,-0.44715992,-1.0248823,0.45490965],[1.1460264,0.17489141,0.008437298,0.5179868,1.538886,-0.15028878,0.65506715],[0.19077669,-0.359682,-0.07988683,0.13030027,-0.07886453,-0.09370026,-0.39061382],[1.2301579,0.48008695,1.26726,-0.61532944,-1.0548761,0.45611963,-1.2783793],[-1.6239753,-1.8029108,1.2390069,1.7501497,2.0948563,-0.19781892,0.31619692],[-0.13156338,0.56530046,0.7108869,-0.15966755,0.09949921,0.847682,-0.5426604]],"activation":"σ","dense_2_b":[[-0.2809068],[0.071166106],[0.09345343],[1.8773439],[0.18102801],[0.0072933524],[0.044778902],[0.17261441],[-0.022777654],[0.12632732],[-0.19065998],[0.2023951],[-0.08659856]]},{"dense_3_W":[[-0.44438112,-0.027584514,-0.0035520266,-0.29944763,0.38794,0.4122213,-0.48664984,-0.16656086,0.25323913,0.23457485,0.40909493,0.062813886,-0.46914828],[-0.33397192,0.19350144,-0.6312562,0.4614687,0.3287365,-0.6280831,-0.16421531,-0.1758853,0.10033424,0.08385237,0.19110605,0.21503538,-0.5893766],[0.41958082,-0.17782119,-0.13674387,0.51600313,-0.31165692,-0.15396564,0.23499595,-0.47514582,0.51199234,-0.48403975,0.541148,-0.8224857,0.2995478]],"activation":"identity","dense_3_b":[[0.065908685],[-0.027226413],[-0.075099945]]},{"dense_4_W":[[0.023863196,0.109854415,1.0994612]],"dense_4_b":[[-0.07588644]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBG-A030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBG-A030x00x00'.json deleted file mode 100755 index c40b267684..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TBG-A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.345774],[0.6516757],[0.2946899],[0.036000013],[0.6570742],[0.65476614],[0.65189326],[0.6298937],[0.61620677],[0.5998042],[0.585703],[0.035867088],[0.035853058],[0.03583253],[0.035650827],[0.035447672],[0.03509526],[0.034743294]],"model_test_loss":0.04811468347907066,"input_size":18,"current_date_and_time":"2023-08-06_04-58-52","input_mean":[[23.215597],[-0.0051006116],[-0.0055196565],[-0.01567796],[-0.005811626],[-0.006771491],[-0.0076306327],[-0.0097848335],[-0.012780408],[-0.015299056],[-0.014718147],[-0.0158138],[-0.01582171],[-0.015839318],[-0.01598839],[-0.016109424],[-0.016302101],[-0.016615149]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.5351528],[-0.08217364],[0.7499818],[-0.9374063],[-2.8954298],[0.5392535],[-3.6015053]],"dense_1_W":[[-0.3087897,0.36021253,0.001141582,-0.5416911,-0.37556788,1.0140606,-0.10794389,0.041419383,0.09076369,0.22191924,-0.13948734,0.77267516,-0.42759845,0.05381029,0.18476713,-0.004047777,-0.30918673,0.26700374],[0.0053725103,2.3370762,2.1885164,-0.6068641,-1.8911628,-0.1114463,-1.1982107,1.506414,1.4532031,-1.4538794,-0.44084385,0.23688209,0.25542602,-0.57141525,-0.3206077,0.6730285,-0.21775477,0.139656],[1.3912241,0.5980732,0.007555601,-0.3157546,1.0649415,-1.0759517,0.38208148,0.39749306,0.4723742,0.079457946,-0.22618146,-0.52275753,0.36008105,0.15328345,0.31112024,0.47836456,-0.34323418,-0.06713888],[-0.5376176,-0.8203641,-0.0054783067,0.18999593,0.8493549,-1.6256207,0.5286132,0.17178455,-0.12867084,-0.57045287,0.380642,-0.21426243,0.012443455,0.08020425,0.04434846,-0.2713304,0.26582962,-0.11160915],[-1.6407828,1.6409405,2.1913364,0.022263499,0.09162234,0.83557415,-0.5309621,0.024207013,-0.07581847,-0.014490255,-0.81525505,-0.0492574,0.24616976,0.15028022,-0.59524703,-0.0825454,0.4095187,-0.094127044],[1.3961402,-0.08105169,-0.008954976,-0.07117163,-0.8383657,0.87360406,-0.6657976,-0.87985647,-0.5403045,0.18084845,0.17272979,0.52761483,-0.10129359,0.052255798,-0.6804288,-0.19871165,0.32997298,0.08579106],[-2.1104581,-0.24356179,-2.845604,0.654625,-0.96994275,-1.8767366,0.09136246,-0.1956461,0.53588957,1.3931365,-0.2444548,-0.15516165,0.21176384,0.14917651,-0.5694106,-0.70854956,0.0043206294,0.400021]],"activation":"σ"},{"dense_2_W":[[1.0278689,0.4348165,-0.7295973,-0.17747834,-0.10278106,0.8901122,0.17545664],[0.13757691,-0.1752453,0.14579734,-1.0508666,-0.22797246,0.38786298,0.19690785],[1.1957673,0.0039350316,-0.40309194,-0.2067109,-0.49688277,0.046528805,0.34363425],[0.9798856,0.49028137,-0.85653776,-1.1984895,-0.36523688,0.46900073,-0.32531098],[-1.2176576,-0.14628303,1.6475934,1.303342,-1.3007184,1.0287305,1.0352072],[-1.4576483,0.32830203,0.16497982,0.9603124,0.10295537,-0.26579857,0.044457998],[-1.0095707,-0.47438616,-0.8685609,1.2697761,-1.1946431,-1.4605931,1.2599539],[0.81197304,-0.09208761,0.40551397,-0.056155458,-0.58765817,-0.23485978,-0.2638987],[-1.5602592,0.087970994,0.52796125,0.39796272,0.12936676,-0.81510574,0.2554148],[-0.37163022,-1.1731296,-0.14651866,0.54896307,-0.6345117,-0.76398563,-0.594298],[0.55459255,-0.11434374,-0.7491592,-1.2193239,0.03146761,-0.27160767,0.13656238],[-0.41351238,-1.394458,0.32861343,-0.5550233,-0.06432965,-0.26546374,-1.3905721],[-0.07234112,0.12938619,-0.5258625,0.20187783,-0.11095027,-0.5983514,0.17259556]],"activation":"σ","dense_2_b":[[0.07223941],[-0.18307218],[-0.011371265],[-0.030353792],[0.399116],[-0.2056006],[-0.18057384],[-0.034727614],[-0.1045567],[-0.02377866],[-0.08901428],[-0.19908707],[-0.12886626]]},{"dense_3_W":[[0.6559019,0.16872415,0.47964025,0.6487196,-0.8777068,-0.23541385,-0.89913565,0.15309054,-0.58269215,-0.7279551,0.29873818,-0.32794726,0.08947766],[0.26739633,-0.18432048,0.59314704,-0.2931499,-0.4403377,-0.13366148,-0.7476601,0.040935304,0.4834687,-0.46328762,0.38387424,0.24528371,-0.11175901],[0.35347906,-0.0840438,0.3375809,0.18057397,-0.5231106,-0.3020804,0.014876371,0.24072316,-0.3709018,0.04671709,0.20817442,-0.017570972,-0.4402727]],"activation":"identity","dense_3_b":[[0.10084228],[0.0669727],[0.031454615]]},{"dense_4_W":[[1.4559509,0.20071371,0.08563809]],"dense_4_b":[[0.09271952]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEA-T020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEA-T020x00x00'.json deleted file mode 100755 index 691c3d8257..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEA-T020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.3856297],[0.59803385],[0.26888487],[0.03426154],[0.6021013],[0.60129803],[0.600173],[0.58730155],[0.5795345],[0.56942075],[0.56083477],[0.034230746],[0.034222513],[0.0342368],[0.034183532],[0.034086205],[0.03391226],[0.03362311]],"model_test_loss":0.04541628807783127,"input_size":18,"current_date_and_time":"2023-08-06_05-23-15","input_mean":[[19.52228],[0.079693735],[-0.0040563247],[-0.016650539],[0.080978006],[0.08070611],[0.080451526],[0.07918187],[0.07886801],[0.077705875],[0.07789241],[-0.016722582],[-0.016714904],[-0.01669564],[-0.0163877],[-0.016280727],[-0.016055403],[-0.015882453]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.08104281],[3.8909714],[0.057941712],[3.2389338],[-0.10055978],[-4.1230493],[0.006579657]],"dense_1_W":[[0.0019672236,1.7124008,5.2847867,0.31392902,0.54002285,1.149604,-0.40869483,-1.4113252,0.25494707,-0.3660509,-0.9714891,0.9837418,0.9273289,-0.36905542,-0.59060776,-1.2861198,-0.14369972,0.1715609],[2.0075417,-1.0534788,-2.5004108,0.10716736,0.4385972,-0.6827907,0.45479578,-1.0585693,-1.0196034,0.4777303,0.98654383,0.1564951,-0.558304,0.5957592,-0.12573951,-0.28325465,0.012213282,0.11858977],[0.093256205,-0.27820048,-1.1696479,-0.46487743,-0.5531493,0.66647863,-1.3765898,0.36791116,0.12435645,0.5120396,-0.24957871,0.12178344,0.8057537,-0.54323083,0.07556655,-0.0014235709,-0.056690272,0.15405625],[-0.024608504,0.010786505,-0.037946787,-0.32397965,-0.4846185,1.032738,-0.6093787,-1.2915424,-0.03675826,-0.21950667,0.44720176,-0.44202822,-0.5876285,-0.5605793,-1.8322814,-1.6573476,-1.3555098,-0.7895331],[-5.2810225e-5,-1.4757657,-0.0046121287,0.4629083,1.1526763,-1.8665615,0.6062522,0.7366192,0.40736353,-0.106786564,-0.2220295,-0.98978,-0.2532476,0.9250863,0.1220093,0.0031458773,-0.19573754,-0.063445985],[-1.8668225,-1.0928262,-2.4432688,0.76242334,1.1889721,-0.9581941,0.0032050284,-0.8823583,-1.2202708,0.3004889,1.2086878,-0.53652066,-0.28588182,1.1637923,-1.0296966,-0.27406633,-0.034686062,0.2627352],[-0.09106887,-0.31075913,1.17905,-0.74274266,-0.20221533,1.2496672,-0.28414592,0.021432078,1.0067991,-0.25608063,-0.43758723,0.52320695,0.09239755,-0.6291368,0.6016738,0.16577406,0.10509334,-0.21720383]],"activation":"σ"},{"dense_2_W":[[-0.085414894,-0.20918435,0.17373109,0.10737947,-0.82685804,0.20342289,0.212457],[-0.20115225,0.29464254,-0.44532576,-0.014358113,0.691581,-0.33132514,-0.13227542],[-0.09087903,0.5010818,0.5607322,0.03217964,-0.5053537,-0.39688778,0.47023636],[-0.30364254,0.49323803,0.055883832,0.05977077,-0.7746708,-0.17011528,-0.2880824],[0.18880495,-0.5190757,0.31874385,0.29983982,-0.3985195,0.035492044,-0.44292748],[-0.9273464,-0.13842295,-0.036056563,-1.1684054,0.9577527,0.66510856,-0.027885118],[0.099401176,-0.5396238,-0.6235069,-1.3781581,0.79803157,0.43778622,-0.40184033],[-0.9619544,2.0476668,-0.8396164,-0.12754412,1.6685368,0.44752124,-1.353382],[-0.5558298,0.5099584,0.110654734,-0.37428614,0.7436413,0.6881325,-0.9043214],[-0.06558644,0.24584974,0.6592815,-0.19850211,-0.9235771,0.078365356,0.45574242],[-0.57793844,-0.91109204,0.60808426,0.3936904,-1.3562016,0.5863055,0.008310561],[-0.8589996,-0.53710437,-1.2663639,0.18269065,2.293696,1.254948,-0.7799597],[0.6527474,-0.3124623,-0.34758097,0.27498147,0.002866847,-0.77761084,0.6969836]],"activation":"σ","dense_2_b":[[-0.0076770815],[-0.0019400008],[0.023349117],[-0.008292667],[-0.011734453],[-0.4216689],[-0.20562689],[-0.08058182],[-0.12332897],[-0.007057092],[-0.27095175],[-0.28152117],[-0.0048717586]]},{"dense_3_W":[[-0.54598933,0.30111024,-0.31070733,-0.30095556,-0.28257152,-0.30806056,0.61478865,0.639757,0.48092464,-0.31418368,-0.6392647,0.82360584,-0.12001248],[-0.4009894,0.28335997,0.059711292,-0.19983076,0.3395215,-0.6511789,0.46926227,0.012918541,-0.4768196,0.34748575,-0.33296925,0.40980956,0.29510143],[-0.32422495,-0.28320903,0.22919968,-0.18012339,0.25318158,0.44350082,-0.51897806,0.51467586,0.14846486,-0.5721817,-0.20305538,0.67044383,0.2138928]],"activation":"identity","dense_3_b":[[-0.043942094],[0.03467515],[-0.047385007]]},{"dense_4_W":[[-1.329141,0.5136682,-0.26201633]],"dense_4_b":[[0.043247793]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEG,A010x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEG,A010x00x00'.json deleted file mode 100755 index 1d04ec1f69..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016 b'39990-TEG,A010x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.414752],[0.809778],[0.32968998],[0.038563218],[0.81399393],[0.8130152],[0.8116411],[0.8044098],[0.7990659],[0.7908311],[0.7781809],[0.03845621],[0.038476728],[0.038496315],[0.038509805],[0.038388517],[0.03807538],[0.037689537]],"model_test_loss":0.007678080350160599,"input_size":18,"current_date_and_time":"2023-08-06_05-48-54","input_mean":[[21.623014],[-0.06315314],[0.028330239],[-0.0069412887],[-0.07000519],[-0.06754908],[-0.06473992],[-0.055388335],[-0.04912587],[-0.041271344],[-0.032815684],[-0.006859833],[-0.0068624676],[-0.006869615],[-0.0069527323],[-0.0069756005],[-0.0070287744],[-0.0070639635]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.7605686],[3.5044053],[2.0832198],[-0.25828874],[0.3039091],[-0.089539275],[0.118453376]],"dense_1_W":[[-1.7583797,0.589543,-1.0319984,0.110393494,-0.21674192,-1.7155991,0.8325825,-0.16004571,-0.913345,-0.0812225,0.67669153,-0.80105156,0.25075755,0.916074,-0.095394626,-0.020104544,-0.005883078,-0.080861904],[1.8151304,0.19393112,-1.090924,0.33811733,0.05085238,-1.1737207,0.32235587,-0.44897,-0.5966143,-0.14382847,0.75931793,-0.14169198,-0.35926667,0.5962395,-0.093506224,0.16791871,-0.18208155,-0.02677418],[1.5013692,0.84768164,0.9670481,-0.18950337,0.05811444,0.036552854,0.6984422,0.047381528,-0.19678752,-0.6145364,0.11384745,-0.26299715,0.15431781,0.42217052,-0.61956424,0.076191664,0.17176628,-0.015458679],[0.010009106,-0.08474945,-0.11727848,-0.5954893,0.21653149,-0.83162314,-0.12228016,-0.006441115,-0.48080042,0.007156214,0.22622024,-0.6214733,0.30532193,0.7250713,-0.22122426,-0.3155122,0.31625217,0.4177061],[-0.0022816912,0.36319026,2.6736248,-0.23002017,-0.6987022,-0.0061110156,-0.36389568,0.5511679,0.08328913,0.5146548,-0.5392843,0.7437445,-0.046624888,-0.21139482,-0.35767952,-0.3415711,0.3786916,0.07167081],[0.0050385734,-0.43462712,-0.05308,0.025633823,0.29115447,-1.6235275,0.13262115,0.3036328,0.48786274,0.30519634,-0.50269544,-0.89282864,0.34320372,0.69487166,0.34770367,0.17281933,0.122459196,-0.2835277],[-0.16018158,-2.6079166,0.051285002,-0.8959181,-2.6147542,-2.7455857,-3.0082538,-2.166046,-1.4802098,-0.9145916,0.4948057,-3.1999378,-1.971094,-1.618746,-0.6039725,0.5491652,1.9303606,5.316056]],"activation":"σ"},{"dense_2_W":[[-0.8494065,-0.94668996,-0.25524712,-0.49821833,0.10248175,0.16570607,0.08037025],[0.407395,1.2177871,0.6595171,0.51689386,-0.5024803,-0.112236835,0.55882525],[0.38773674,-0.94255173,-0.21581627,0.40207997,-0.7363527,0.35848704,0.21115805],[0.6955828,-0.40022588,0.18614924,-0.1998243,-0.5945706,0.63007945,0.121129975],[0.6693154,-0.42887792,-0.43107304,-0.12879528,0.096946076,0.4243904,-0.1448268],[-0.45311376,-0.06397047,-0.475693,-0.18040454,0.19093697,-0.36706218,-0.008771336],[-0.84971607,-0.5401956,0.28763822,-0.50512564,-0.279698,-0.8399409,0.5433065],[-1.0076836,-0.49472776,0.20072678,-0.19309734,-0.29518792,-0.08193111,0.2831805],[-1.0347741,0.15746295,0.09370998,-0.25177705,-0.017589109,-0.40057716,0.45802802],[-0.32091177,0.17798328,-0.49051303,-0.12601621,0.10984774,-0.7267025,0.09803074],[0.39275715,0.24044967,-0.058441114,-0.15604238,-0.051029686,-0.18873541,0.061358593],[-0.1873293,-1.9225551,-0.067686126,-0.5021896,-0.051216066,0.24865563,-1.235181],[1.4839585,-1.365924,-1.2432988,-0.8610499,-0.119583905,-0.20667724,-2.5413523]],"activation":"σ","dense_2_b":[[-0.090611175],[0.13049172],[-0.2995885],[-0.18042783],[-0.18258452],[0.03439863],[0.038779728],[-0.0974849],[0.2627597],[-0.09157007],[0.0042730095],[-0.022836503],[0.07373033]]},{"dense_3_W":[[-0.09544235,0.07383687,0.57643867,0.51306605,0.5831484,-0.39026436,0.4894308,-0.30050197,-0.3482933,0.16585375,-0.013200446,-0.538111,0.012991255],[-0.23729068,0.22367261,-0.22196151,0.670639,0.15204789,-0.5559103,-0.42776123,0.12732859,0.0007805089,-0.40029454,-0.12749611,0.1569053,-0.42127144],[-0.5697941,0.6104953,0.22483532,0.38580984,0.058564458,-0.20807105,-0.41168946,-0.49617398,-0.67103213,-0.032330584,0.30103138,-0.6870759,-0.7820781]],"activation":"identity","dense_3_b":[[0.0017381236],[0.0156807],[0.015327422]]},{"dense_4_W":[[-0.36441112,-0.7462365,-1.0239874]],"dense_4_b":[[-0.012290128]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T39-A130x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T39-A130x00x00'.json deleted file mode 100755 index f6b6dc3973..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T39-A130x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9030814],[1.0453333],[0.3170026],[0.04460543],[1.0398759],[1.0416826],[1.0431112],[1.0299109],[1.0157675],[0.99077934],[0.96246296],[0.044478334],[0.044504065],[0.04452782],[0.044476468],[0.044363912],[0.04419919],[0.043906868]],"model_test_loss":0.028506241738796234,"input_size":18,"current_date_and_time":"2023-08-06_07-28-34","input_mean":[[25.499252],[0.028501904],[-0.0028704705],[-0.006133777],[0.028923629],[0.028642828],[0.028525524],[0.027212968],[0.02708821],[0.025971029],[0.025491338],[-0.0061524976],[-0.0061464473],[-0.0061450717],[-0.006191866],[-0.006216849],[-0.006269715],[-0.0064120986]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.1612873],[1.1304555],[-0.045539603],[0.18508305],[-0.056664106],[2.359981],[-0.003104607]],"dense_1_W":[[-1.0261196,1.6714283,-4.9839725,-0.25472918,-0.5927435,-2.1332676,0.41972587,-1.4847857,-0.5297093,-0.5873834,0.4926704,0.35519528,0.5963999,0.29114577,-0.44986778,0.24840392,-0.19448282,0.29746208],[1.5984797,1.2807095,-2.855458,-0.28417665,-0.6741327,0.14131893,-0.8411344,-0.48792252,0.20918193,-0.12904613,-0.06057345,0.27155536,0.5005968,0.12182206,-0.4972699,-0.26681903,-0.13244413,0.41992095],[-0.01631524,-0.11127795,0.62778777,0.14360946,-0.19943185,1.6136284,-0.74262536,0.17609622,0.47054547,-0.66130835,-0.34703505,0.30890283,-0.011658758,-0.9054101,-0.07164689,0.6967732,-0.07093875,-0.29011974],[0.24211173,-0.12465638,-2.2150717,0.5197125,0.5969984,-0.9115877,1.2352886,-0.61733866,-0.70987016,-0.34082124,0.6792926,-0.14224347,-0.39383444,0.29159838,-0.6175597,0.5266842,0.09999084,-0.22068383],[0.0020527053,-0.124916494,-0.0072491574,-0.32790923,0.6288478,-1.2486193,-0.077829614,0.290347,0.27691,-0.38082907,0.04554726,-0.42446274,-0.11070265,0.38662457,0.4693785,0.28157672,0.053745594,-0.1984251],[2.0714083,-0.45528322,2.190492,-0.2294528,0.80421203,-0.24660808,0.631071,-0.50690234,-0.35972506,-0.05297636,0.38328585,-0.41214883,0.13557836,0.58240587,-0.12109465,-0.19043957,0.1687669,-0.041427426],[-0.007373681,-0.24503441,-0.766152,0.19888358,-1.297256,0.97417396,-0.7913301,0.32273322,0.63816434,0.11862124,0.2828841,0.32503918,0.26446965,-0.75070786,0.17617404,-0.102831915,0.12236231,0.072185144]],"activation":"σ"},{"dense_2_W":[[0.84075487,-0.9698966,-1.1863552,0.39111534,0.61300087,-1.074546,-0.6429345],[-0.16599394,-0.34588924,-0.34965044,-0.070526905,-0.5569146,-0.33049506,-0.07336439],[0.5915367,-0.5171752,-0.13241306,-0.46928012,0.92575246,-0.72971493,-0.722351],[1.5593696,1.5437826,-0.8387062,1.0409446,0.35062063,1.3033848,-0.048639357],[-0.030403387,0.44161096,0.46425432,-0.1915973,-0.7348229,-0.3039007,0.29630142],[0.5050197,0.5076173,0.4501814,-0.48338422,-1.1334643,-0.32370403,-0.065987155],[-0.53219205,0.38907552,-0.56034696,-0.21546341,0.62926334,-0.26963118,-0.11765221],[-0.13998857,-0.41180918,-0.68951356,0.5040533,0.43773162,-0.37432873,-0.3054661],[0.060598448,-0.052345384,-0.05926513,-0.79581696,-0.536353,-0.58540416,-0.5439933],[-0.1929987,-0.074298754,0.2989631,0.09550092,-0.7899365,-0.4491801,0.20246264],[0.1728909,-1.0256978,-0.30253175,0.36276552,-0.5255227,-0.3984827,-0.042940307],[-0.37483662,-0.5567497,0.24257487,-0.9368595,-0.71663094,-0.7617147,0.5222287],[0.3595344,0.31717294,0.641732,-0.1949688,-1.1738145,0.16135724,0.059228286]],"activation":"σ","dense_2_b":[[-0.2908681],[-0.11676679],[-0.20927037],[-0.022777379],[-0.056520674],[-0.1025079],[-0.010873501],[-0.08840967],[-0.20289198],[-0.08710838],[-0.3852181],[-0.09839834],[-0.18181786]]},{"dense_3_W":[[-0.45135853,-0.43684617,0.16072902,-0.3907492,0.5050306,0.5548873,-0.0016576584,0.30690256,0.43964118,0.4280059,-0.029079122,0.6312158,-0.16514885],[0.8751171,-0.41735888,0.5142745,0.41110802,-0.5030071,-0.30468556,0.5376879,0.45157358,0.087431885,-0.2522119,0.017974667,-0.5217977,-0.5559542],[0.10950831,0.45705712,-0.2692873,-0.15272701,0.5711136,-0.009069097,-0.36759618,-0.6967481,-0.29732275,-0.16078,0.037027664,0.5842399,0.46625558]],"activation":"identity","dense_3_b":[[-0.048144232],[0.038749587],[-0.04579552]]},{"dense_4_W":[[1.0830055,-1.3294458,0.5527587]],"dense_4_b":[[-0.04092441]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T43-J020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T43-J020x00x00'.json deleted file mode 100755 index a96719aa6f..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022 b'39990-T43-J020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9427967],[0.87432146],[0.3449518],[0.041372716],[0.88073754],[0.8794919],[0.8774352],[0.85170704],[0.8311592],[0.80134684],[0.7728664],[0.041213993],[0.041262195],[0.041307535],[0.04130587],[0.041196827],[0.04102109],[0.040738378]],"model_test_loss":0.032795943319797516,"input_size":18,"current_date_and_time":"2023-08-06_07-53-24","input_mean":[[23.424137],[-0.12035412],[0.0040231682],[-0.0048080194],[-0.118285224],[-0.11840886],[-0.118516885],[-0.116480246],[-0.11301401],[-0.107189395],[-0.09997545],[-0.0046797423],[-0.0047175437],[-0.0047546746],[-0.004927507],[-0.005063428],[-0.005227956],[-0.005348952]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.9417369],[-0.24273592],[1.4223384],[1.0486506],[1.447565],[-0.6927629],[1.0804037]],"dense_1_W":[[-0.4058283,-0.81563294,0.00033183617,-0.27639547,3.1342106,-1.7313385,-0.228073,0.9913803,-2.3060467,-0.96959984,0.75029725,-0.22633775,-0.21490769,0.52506644,0.95701593,-0.8487675,-0.19613568,0.23440045],[0.034500286,1.0905547,7.9065676,0.10637991,0.026667506,0.49172896,-0.59656775,0.9809094,0.0049328264,-0.4872245,-1.1707573,1.2050977,-0.18107356,-0.5157706,-0.38871238,-0.47595924,-0.17320715,0.5229742],[0.5588498,-0.6570481,0.0021321403,-0.2896172,1.1236126,-0.575634,0.56214845,-0.016197847,-1.0184777,-0.7082013,0.07940224,0.23188433,0.004668281,-0.2397409,0.34752426,-0.22746754,0.22416848,-0.100688644],[1.541966,0.42912173,-7.156812e-5,-0.5115884,-0.25799006,1.4016091,-0.72769475,-0.40935022,-0.5667163,-0.3968267,0.61420083,0.06877578,0.041468274,0.2682816,0.1332453,-0.3914694,-0.0010588124,0.10998447],[0.19860983,0.18228313,1.4962244,-0.24713515,0.309561,1.1720607,-0.4798918,0.60050476,0.5141609,0.010664739,-1.9016608,0.06223622,0.4967279,-0.18392076,-0.484281,-0.18898958,0.4617198,-0.01832523],[-0.051042855,0.36178812,1.3606699,-0.20764841,0.10236579,1.031499,-0.72788227,0.9447528,0.38027644,0.2683604,-1.9967669,0.91526955,-0.15156461,-0.5247163,-0.6771034,-0.011823598,0.7620024,-0.19407678],[1.524111,-0.18364623,-7.7449076e-5,-0.026552787,0.15087162,-1.7394279,0.66268677,0.75670546,0.7576604,0.20102891,-0.6852404,-0.28242418,0.23329456,0.32087836,-0.26189858,0.14684094,0.30590108,-0.1579458]],"activation":"σ"},{"dense_2_W":[[0.21370113,-0.5469511,0.38994473,-0.87885034,0.22193275,-0.2623318,0.9725592],[-0.39974675,-0.2669233,-0.7280023,0.0744481,0.31313443,0.68184376,-0.8690639],[-1.1618038,1.040867,0.07579963,1.2550652,0.9444778,0.6170199,1.5694822],[-0.55496246,-0.6109581,0.047377832,-0.6034833,-0.563908,-0.29172823,-0.1873672],[-0.47154403,-0.15439837,-0.33464748,-0.32102966,-0.43370283,-0.30466565,-0.50861603],[0.94471455,0.15859249,-0.49109864,-0.82194316,-0.28949282,-0.26072252,0.6200601],[-0.17757672,0.42580798,0.5348059,-0.86694545,-0.5312405,-0.20982458,1.0570047],[-0.9717297,0.6032017,-1.4936788,-1.3035914,-0.5127796,1.341816,-1.5745448],[-0.21112834,-0.380845,-0.2000692,-0.14918523,0.37498268,0.49246258,-0.07759563],[0.5571681,-0.37033182,-0.45625687,-1.1621255,0.45340016,-0.14524722,0.8753156],[-1.644583,1.9391878,0.6463959,1.3763337,0.7492759,-0.33528683,1.2163771],[0.20058957,-0.5563082,0.08262119,-0.48758602,0.08011511,0.15911381,0.589174],[1.0828615,0.3445846,0.008124553,-1.3508773,-0.7360904,-0.6484338,-0.007040125]],"activation":"σ","dense_2_b":[[-0.09792841],[-0.12135925],[0.28469688],[-0.3146848],[-0.030983448],[-0.22707085],[-0.07664623],[-0.28448796],[-0.03253531],[-0.19589026],[0.38351893],[-0.13162117],[-0.24342652]]},{"dense_3_W":[[0.6724217,-0.3455274,0.048990987,-0.08371895,-0.28143087,-0.019941397,0.6274694,-0.5836906,-0.40752873,0.17574412,-0.40815762,0.5177674,0.6628741],[0.71871656,-0.67533195,-0.5226403,0.0062096105,-0.03194264,0.2772788,0.45594773,-0.80367815,0.25479558,0.28959462,-0.7620481,-0.055599444,0.32025474],[0.49274486,0.089585,-0.58489066,-0.15075734,0.35932115,0.16879536,0.18689315,-0.38381797,0.37573037,0.19162786,0.30417326,0.35219628,0.20757556]],"activation":"identity","dense_3_b":[[-0.029657809],[-0.0076349713],[-0.10236976]]},{"dense_4_W":[[-1.0305482,-0.9352994,-0.15167141]],"dense_4_b":[[0.019799424]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA,A040x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA,A040x00x00'.json deleted file mode 100755 index c6e920b660..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA,A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.540721],[0.97576207],[0.3313625],[0.037843365],[0.9687592],[0.97072476],[0.97218126],[0.97131544],[0.9684263],[0.9628179],[0.9533884],[0.037710436],[0.03772708],[0.037749223],[0.03774041],[0.03766764],[0.037492532],[0.037175607]],"model_test_loss":0.008188891224563122,"input_size":18,"current_date_and_time":"2023-08-06_09-11-21","input_mean":[[25.743162],[-0.03419077],[1.694457e-5],[-0.0058412226],[-0.032445744],[-0.031978246],[-0.032078236],[-0.03277639],[-0.033087995],[-0.03541121],[-0.03758282],[-0.0058416994],[-0.005846817],[-0.005852368],[-0.0059208623],[-0.005982407],[-0.0061672865],[-0.0062656854]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.00080405985],[0.7854822],[-0.12339557],[4.3081584],[-0.7866419],[-4.1709423],[-0.8409999]],"dense_1_W":[[-0.011464089,-0.21720867,1.7038208,-0.8018396,-0.31464818,0.6335713,-0.37999704,0.64242667,0.94747055,-0.08193086,-1.2666425,0.025586708,0.432876,-0.09704421,0.07735149,0.66563797,-0.055053703,-0.16396695],[-0.92180765,0.47178316,0.037608773,0.25415114,-0.49117133,0.68139184,0.12054695,-0.040742125,-0.32435754,-0.20692724,0.31272388,0.33671296,0.19074297,-0.5344022,-0.32216358,-0.16691925,0.12728797,0.038775913],[-0.103043444,-0.30544865,-0.25746647,-0.17237106,0.052905187,0.4400764,-0.67536193,-0.06703455,0.24000691,0.061700933,-0.38188213,0.31053326,-0.18271814,-0.37914285,0.009493447,0.29651824,0.05323582,-0.039326254],[1.0605786,-0.060056392,-0.5810357,0.22576235,-0.13578887,0.011457395,0.030639524,-0.40217978,-0.83826524,-0.6082418,0.15762202,-0.23657623,-0.46672913,-0.047515202,0.35081884,0.13669041,0.22352155,-0.080405615],[1.6374902,1.1410245,0.59359837,-0.27866,-0.13386817,0.13762549,-0.16988072,0.41271707,0.14994158,0.27289742,-0.16715708,0.40429235,0.005580401,-0.69167936,-1.1274492,-0.71839035,-0.8099919,-1.0824188],[-1.0478101,0.0044337907,-0.5723063,0.11623494,-0.034284834,-0.650081,0.5400228,-0.29708397,-1.1310123,-0.20287414,-0.046815645,-0.61760116,-0.08759878,0.072666995,0.19055136,0.5814996,-0.16782755,0.014659258],[0.86524445,0.49477735,0.035929088,-0.13251677,-0.36860162,0.9281964,-0.471796,-0.18288918,-0.0002611768,0.058924783,0.05732142,0.45911258,0.06966288,0.0044731353,-0.40496862,-0.22457011,-0.16845165,0.31822684]],"activation":"σ"},{"dense_2_W":[[-0.15426435,-0.046661343,-0.43946412,0.624533,-0.09205635,-0.47168306,-0.8016902],[-0.53101015,-0.3685878,-0.5863992,0.4510693,-0.16216898,0.9400012,-0.21748114],[0.22712189,0.16995162,-0.29991642,-0.7336719,0.3751938,-0.53952307,0.26768756],[0.27349526,-0.6804414,0.07234837,0.6874648,0.106653705,0.12508605,-0.65603495],[0.07313242,-0.97843266,-0.5148208,-0.14121139,0.07274063,0.79724526,-0.4383511],[-1.1264609,-1.1770498,0.52797097,-0.36545604,0.5212269,1.5757213,-0.085593045],[-0.097091556,0.369785,0.14884436,-0.67693,0.5140766,-0.8676453,-0.016739987],[0.085827775,-0.100521185,-0.6224066,-0.30192837,0.35849503,0.041973434,0.35816756],[-0.42120174,-0.3240992,-0.4097286,0.18434778,-0.20248985,1.2600665,-0.68534833],[0.124515295,0.049313035,0.2003641,-1.1119213,-0.04333023,-0.38769117,0.48661488],[0.48089156,-0.05526323,0.25297868,-0.92118233,-0.34588912,-0.34006065,0.5504206],[0.50554097,0.048244223,-0.13434097,-0.4654796,-0.175737,-0.5890811,0.5968848],[0.2714133,-0.76585513,-0.4710219,0.72425234,-0.08094333,0.45696303,-0.24324968]],"activation":"σ","dense_2_b":[[-0.30605197],[-0.0722725],[-0.061257467],[-0.0143502485],[-0.055046625],[-0.11999873],[0.0056539187],[-0.047943417],[-0.031266216],[-0.028862225],[-0.044943057],[-0.006668254],[0.009506268]]},{"dense_3_W":[[-0.18731649,-0.08790928,0.05439343,0.08261642,-0.18359958,-0.42045295,-0.49756563,0.55669594,0.42419568,-0.36434284,0.29313055,0.55965924,-0.20341128],[0.17575984,0.11026421,0.10531715,0.39341643,0.4011678,0.34916008,-0.45358273,-0.12599039,0.6143738,-0.71328527,-0.583732,-0.4881176,0.5818727],[-0.1525316,0.094295666,-0.708604,0.46496,0.4017641,-0.020599859,-0.03952808,-0.17086326,0.27307847,0.0376419,-0.5269954,-0.020001007,0.52539593]],"activation":"identity","dense_3_b":[[0.0076207337],[-0.07809654],[-0.07344336]]},{"dense_4_W":[[0.03995432,-0.7892518,-0.67607296]],"dense_4_b":[[0.07132181]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A040x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A040x00x00'.json deleted file mode 100755 index b14894015b..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.041878],[1.0629945],[0.33361882],[0.04470225],[1.0674024],[1.0653876],[1.0623872],[1.0305605],[1.0037603],[0.9659078],[0.9315669],[0.044532184],[0.044523124],[0.044505402],[0.04425743],[0.04400374],[0.043602895],[0.043178014]],"model_test_loss":0.050424300134181976,"input_size":18,"current_date_and_time":"2023-08-06_09-38-42","input_mean":[[25.06497],[0.074133344],[-0.003671015],[-0.0061551738],[0.07510349],[0.07509486],[0.074765146],[0.07192954],[0.06950652],[0.06514102],[0.06143682],[-0.0061509674],[-0.006146431],[-0.006140578],[-0.0061463905],[-0.006205736],[-0.006276082],[-0.0062960368]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.045673113],[0.7692602],[3.6866767],[-3.3985317],[1.3993363],[0.0016273671],[0.036870282]],"dense_1_W":[[-0.052982505,0.06573528,0.5580607,-0.032680344,0.20608537,0.6934426,-1.0580161,0.66156256,0.06940833,0.55721414,-0.5868014,0.7408258,0.25445056,-1.0855104,-0.049797036,-0.38484633,0.13387734,0.20955376],[0.82260245,-0.01934001,-0.8111281,-0.418187,-0.78638,0.022366054,-0.8557658,0.23719062,0.43918282,0.55011797,-0.5533236,0.73082197,0.39111775,-0.66629314,0.08269158,0.29669186,-0.49751994,0.30054808],[2.0007224,-0.31018302,-1.8883644,-0.46103692,-0.182084,-1.1692013,0.18340528,-0.45994648,-0.63908005,-0.38715318,0.80325556,0.21984062,0.25636217,0.26680768,-0.064179085,0.06973789,0.029908044,-0.051753674],[-1.7532426,-0.44865423,-1.6179291,-0.5686573,0.20539987,-1.3053204,0.3192343,-0.39442357,-0.7004488,-0.24894904,0.73180014,0.023328634,0.32073107,0.6846023,-0.30778062,-0.08105825,0.2476391,-0.07462059],[1.0470898,0.13631506,0.9359457,0.7269999,0.48282263,-0.5516526,0.9416267,0.5219997,-0.12951173,-0.4016694,0.07761096,-0.9994486,0.00889868,0.37176034,0.17872189,-0.6502687,0.14589402,0.009702152],[-0.0022762392,0.54675275,-0.00070867874,0.030965228,-0.4284072,1.4484926,0.120421134,-0.8816781,-0.12615833,-0.3113866,0.5081008,0.26918358,0.42232123,-0.35750753,-0.4280094,-0.102303475,-0.05531494,0.061394636],[-0.0032405164,-1.2942008,-5.5235214,-0.3269165,0.6261494,-0.23602912,0.20249991,-0.63172483,-0.9731877,-0.5860727,2.2520695,-1.5046892,-0.71375567,0.421119,1.3741344,0.75040346,-0.39606163,0.1400608]],"activation":"σ"},{"dense_2_W":[[0.8646755,0.6376676,-0.26202708,-0.85868895,-0.07354249,0.69815946,-0.30686975],[-0.79679435,-0.32395786,0.058006734,0.82902014,1.1024014,-1.2736039,-0.13299379],[0.009736041,-0.35343233,-0.33363932,-0.5966722,0.2299318,-1.2228652,0.09423904],[-0.62453824,-0.16437167,0.10942579,-0.060125638,0.45838273,-0.27015314,-0.092518486],[-0.63952684,-0.032483563,0.028590042,0.8343624,-0.30501577,-0.4676638,0.4329707],[0.79951334,-0.10701151,-0.478834,0.11537501,-0.4790387,0.29373074,-0.45883498],[-0.38821566,-0.29865965,0.2401885,0.10201916,0.42648098,-0.95061827,-0.565707],[-0.33430934,-0.2328123,-0.4937564,-0.82547146,-0.38432762,0.33364365,-0.056874156],[-0.1879909,0.3929959,-0.035755124,0.042920403,0.099859655,0.34126663,-0.06774957],[-0.51760626,-0.7163332,0.46123,0.80046433,0.774819,-1.2809892,-0.071995825],[-0.2212481,-0.03539259,0.15500164,0.21800677,0.43387356,-0.9091443,-0.23553239],[0.0588365,-0.41657263,0.07661814,-0.45269957,-0.31246582,0.02730263,-0.52968377],[0.13910463,0.18369111,-0.8858626,0.21748419,0.09809011,0.5938796,-0.64197445]],"activation":"σ","dense_2_b":[[0.008012182],[-0.23325977],[-0.2646487],[-0.097698614],[-0.12920478],[-0.017523877],[-0.22028513],[-0.23008367],[-0.05471147],[-0.037543405],[-0.12661214],[-0.33879024],[-0.008564516]]},{"dense_3_W":[[-0.551337,0.31575167,-0.024517886,0.18234162,0.46279272,-0.56980455,-0.39026403,-0.40458184,0.12136029,0.77060765,0.5890807,-0.3826594,-0.66982037],[-0.5236327,0.1744381,0.2181645,0.23067036,0.3604599,-0.076701306,0.59198534,0.33430535,-0.3067706,0.40997064,-0.025134366,0.43618867,-0.18496975],[0.05840421,-0.04895308,0.13395454,0.1376814,0.007172281,-0.2367984,0.11277437,-0.39632714,0.30861083,-0.18120328,0.32123065,-0.3300665,-0.18326597]],"activation":"identity","dense_3_b":[[-0.044578213],[-0.053736046],[-0.039986763]]},{"dense_4_W":[[-1.1892661,-1.1514404,-0.23770276]],"dense_4_b":[[0.04846745]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A110x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A110x00x00'.json deleted file mode 100755 index cd654f158c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A110x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.1835976],[0.50364196],[0.2896164],[0.03164149],[0.50323784],[0.5006565],[0.4974164],[0.47733185],[0.4672212],[0.4542667],[0.44199622],[0.03166166],[0.031591646],[0.03152813],[0.031085894],[0.030772492],[0.03049355],[0.030188115]],"model_test_loss":0.019862331449985504,"input_size":18,"current_date_and_time":"2023-08-06_10-03-07","input_mean":[[28.85244],[0.04425216],[-0.0041957223],[0.00189616],[0.043761343],[0.044177886],[0.044471547],[0.042200115],[0.042693224],[0.04143423],[0.039585713],[0.0020322406],[0.0019822456],[0.0019134535],[0.0018024064],[0.0017335061],[0.0015339962],[0.0013252598]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0658591],[0.1936436],[0.4518953],[-0.11609417],[-0.1570751],[0.048095826],[-0.046569347]],"dense_1_W":[[-0.004707457,0.4473956,0.13764602,-0.22395788,0.24242325,0.63776755,-0.08127542,-0.42399785,0.29475614,0.2582357,0.109188624,0.09910998,0.37004673,-0.2302277,-0.70400834,-0.546052,0.023547564,0.4741781],[0.0381955,0.18421915,0.04350661,0.21583354,0.5884542,-0.2158797,0.07718011,-0.5616537,0.9083394,0.28627363,-0.1894099,-0.2100446,0.2202206,-0.1370028,-1.1312602,-0.47487968,0.24832286,0.4408434],[0.7762898,1.0442834,0.11404148,-0.34878308,-0.69273955,0.19884741,-0.1626407,0.13349383,-0.10278405,0.23388162,-0.089451395,0.46177745,0.37723348,0.121763706,-0.13678956,0.17649323,-0.07549353,-0.3959775],[-0.783192,1.122855,0.11342515,-0.24931048,-0.2821019,-0.35657248,0.02068258,-0.05386639,0.06588212,0.02498524,0.044847738,0.4069754,0.47117302,-0.19849198,0.20845832,-0.0699782,0.33122358,-0.6795351],[0.00011326268,1.4474508,-0.098368526,1.2762718,0.11316425,-1.4516851,0.64065456,-0.46301305,-0.8283665,0.27508196,0.18671927,-0.077629045,-0.18879989,-0.3955652,-0.48879743,-0.4056032,0.56802994,-0.11471572],[-0.0065793786,-2.1783507,-4.4956875,0.762094,0.012346029,-0.15102327,0.2524295,-0.28421104,-0.21410158,0.61175346,1.7392899,-0.90156704,-0.70463955,-0.2968591,0.38830018,0.14128718,0.2747739,0.35311458],[0.02353997,0.5450724,-0.0693562,-1.2107227,0.037023995,-0.7917878,-0.85124665,-0.15312323,1.1409906,-0.098705195,-0.6119329,0.6510644,0.5715456,0.6724691,0.14829972,-0.040057376,-0.23069982,0.20904635]],"activation":"σ"},{"dense_2_W":[[-0.36790708,-0.18296367,0.087080166,-0.39760453,0.3830243,0.62241393,0.6919145],[-0.7202243,-0.5884722,-0.15091783,0.2659929,0.25983915,0.5449759,-0.28087506],[-0.21222237,-0.06622563,-1.3436327,0.88072056,-0.46033114,-0.9914056,-1.2281073],[-0.46628833,-0.6112388,-0.7006136,0.045268953,-0.23548295,0.7181559,0.20354599],[1.2175599,0.12018807,1.7073644,1.8852,-2.6759875,-0.3933904,-1.1572093],[1.3216994,0.41956323,0.8226303,0.4240975,-1.5096661,0.27466688,-0.9298248],[0.58509827,0.1648558,-0.6233443,-0.4295914,-0.07741821,-0.24388136,-0.73506886],[-0.04536918,-0.118758574,-0.3014637,0.047318716,0.64757127,0.14709125,0.39016318],[-0.6148649,-0.044658426,0.047632687,0.16062225,0.12757532,-0.034659315,0.21982273],[1.2609576,0.5800496,1.1579013,1.0035592,-1.7974799,0.22080913,-1.1055709],[0.13451947,0.16517463,-0.29923442,-0.058697946,-0.5875903,-0.06878949,-0.14853679],[0.89515847,-0.05425017,-0.032778192,1.0362097,-0.7897799,-0.25606072,-1.7008675],[-0.9417327,-0.41135532,-0.17152491,0.24920806,0.12018676,-0.27114066,0.35788602]],"activation":"σ","dense_2_b":[[0.035452064],[-0.061806444],[-0.30320156],[-0.12731765],[-0.6156671],[-0.28060502],[-0.23378925],[-0.117936365],[-0.048415676],[-0.6017655],[-0.06631394],[-0.66439056],[-0.23023686]]},{"dense_3_W":[[-0.11672003,0.29795578,-0.12456141,0.5381993,-0.53840685,-0.40247312,0.20989291,0.49159276,-0.22878003,-0.042824574,-0.33531192,0.28073245,0.41946027],[-0.32805252,0.475642,0.3573824,-0.49994805,-0.39569223,-0.047109567,0.37351373,-0.48844007,-0.24302717,-0.09685829,0.50959045,-0.5235462,-0.4820086],[-0.39068025,-0.54056823,-0.01175546,-0.18405816,0.17738347,-0.23445752,0.3221799,0.3147654,-0.12418336,0.099429056,0.4175861,0.476971,0.4542602]],"activation":"identity","dense_3_b":[[0.0010864699],[0.0154576665],[-0.007836798]]},{"dense_4_W":[[-0.5562848,0.1392212,0.80414385]],"dense_4_b":[[0.013946899]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A220x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A220x00x00'.json deleted file mode 100755 index a87088b951..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017 b'39990-TLA-A220x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9001546],[0.8910148],[0.3274157],[0.040540826],[0.8834622],[0.88589716],[0.8873834],[0.8764539],[0.8639384],[0.8453592],[0.82689476],[0.040332053],[0.040367138],[0.040403977],[0.040435143],[0.040342487],[0.04024493],[0.04013887]],"model_test_loss":0.020078090950846672,"input_size":18,"current_date_and_time":"2023-08-06_10-28-39","input_mean":[[25.522003],[0.08582278],[0.008883545],[-0.0002037975],[0.08510361],[0.08551095],[0.0860396],[0.08883015],[0.08862984],[0.0864298],[0.085077845],[-0.0002148503],[-0.00018821703],[-0.00016339964],[-6.241602e-5],[-6.687763e-5],[-0.00015304367],[-0.00029702246]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.915253],[2.939623],[-2.4185839],[-0.39643773],[-2.1530814],[0.4893658],[-0.13724159]],"dense_1_W":[[0.9216667,0.97025573,1.421669,-0.1396882,0.010332967,0.18803304,-0.9332185,0.2703217,0.00060562004,-0.12600191,-0.46021286,-0.2240383,0.20271374,-0.51589763,0.6207215,0.44742525,-0.39367884,-0.09291592],[1.6715853,0.7785398,0.005850832,-1.0173491,0.4553079,0.8458037,0.15688483,0.2634571,0.17708033,0.5423796,-0.055217728,0.9168812,-0.05433235,-0.024376664,-0.11111259,0.07965978,-0.23499657,0.3001446],[-0.7692335,0.45367107,1.3062898,0.12114362,-0.17871203,1.0367825,-1.3598495,0.32659042,0.01519312,0.08482268,-0.53881526,0.24113093,-0.12762344,-0.99958193,0.72357845,0.28504324,-0.07869418,-0.2410385],[-0.074967586,-0.8932838,-4.0057364,0.23615836,0.00941108,-0.7341468,0.49867523,-0.9044516,0.017188888,0.23537557,1.3382684,-0.77924585,-0.360125,1.0818274,0.53180915,-0.3764401,0.011514799,-0.08477046],[-1.5886045,1.2000962,0.004453795,-1.3671204,0.4819133,0.9824152,-0.5023873,0.28243682,0.40704778,0.07260184,0.1365017,0.86467725,0.03233452,-0.00952661,0.41033107,0.08297209,-0.46377563,0.34948194],[0.0075910687,2.266687,-0.0016384237,-3.0903444,-0.12066506,1.5151056,-0.63468546,0.5725647,0.6257293,0.4341759,0.15218543,0.8532952,0.8546602,0.40895426,0.53916293,1.0854417,-0.201866,-0.102309674],[-0.0011239403,-0.4433194,0.00013618177,0.07685914,0.44627297,-1.6901579,1.0461199,0.4270096,-0.19944872,-0.11602348,-0.023843208,-0.30021128,-0.7937927,0.82419336,0.41979665,0.24550915,0.12163588,-0.3639143]],"activation":"σ"},{"dense_2_W":[[0.08416271,-0.5661969,-0.094601616,-0.3356624,-0.43013197,0.29852423,-0.8936265],[-0.5426509,-0.31218562,0.1849797,0.92220074,-0.5298976,-0.28005078,0.958257],[-2.0036426,-2.5069656,-0.067196965,0.6672491,2.1173136,-1.5086235,1.268983],[0.8646879,0.21513842,0.4661601,-0.37882644,0.43791708,-0.2726415,-1.1590294],[-0.1635753,0.0068531507,-0.23812433,-0.30881009,0.19607985,-0.5296054,1.3078867],[0.65519524,-0.06720645,0.5960915,-0.5721334,-0.028427409,0.57693595,1.4606386],[-0.8911282,-0.3865244,-0.21443066,0.3449886,0.2604962,-0.21623199,1.1859549],[-0.031681005,-0.001625172,-0.53140074,0.5074547,0.17773396,0.117535636,0.6632053],[-0.0011490636,-0.36523163,0.0739205,-0.64264727,-0.18925111,0.30340505,-0.96839094],[-1.436539,-1.8282489,0.36490238,0.29383078,1.4719483,-1.199148,0.6856162],[-0.19116129,-0.55093837,0.68717355,0.5201886,0.015916765,0.39059064,-1.8648827],[-0.5506419,0.028565405,-0.78308797,-0.22101557,0.26896167,0.5421017,0.4748071],[-0.94420785,-2.5275416,2.1711938,-1.8177447,3.1286716,1.4996614,-2.2908063]],"activation":"σ","dense_2_b":[[-0.00038391305],[-0.11835421],[-0.47617963],[-0.19209594],[-0.3635465],[-0.25211266],[-0.3669457],[-0.18456477],[-0.10934913],[-0.38656622],[0.10978525],[-0.44773534],[-1.3670834]]},{"dense_3_W":[[0.047170885,0.4870071,0.71617556,0.12684053,0.6240494,-0.06735785,0.43605405,0.48105004,0.24143027,0.47041366,-0.81402504,-0.6457708,-0.80621207],[0.6236853,-0.39605463,-1.0041298,0.6159786,0.21967448,-0.37449515,-0.12439844,-0.47799566,0.8507706,-0.0146902865,0.67411196,-0.43745592,0.7313358],[-0.07477755,0.34393924,-0.19138569,0.24039291,0.40378293,0.16958828,0.10585917,-0.04923932,-0.29897973,0.25619817,-0.65909696,0.15387979,-0.470382]],"activation":"identity","dense_3_b":[[-0.12447261],[0.07334185],[-0.15171815]]},{"dense_4_W":[[-0.44094202,0.9386458,-0.12973748]],"dense_4_b":[[0.09239494]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPA-G030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPA-G030x00x00'.json deleted file mode 100755 index b394c71309..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPA-G030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.034213],[0.75561374],[0.4482074],[0.029542489],[0.7461425],[0.7492127],[0.7519972],[0.75616795],[0.7586054],[0.76215684],[0.7658316],[0.029329019],[0.029394325],[0.029459374],[0.029631147],[0.029686036],[0.02966829],[0.029647704]],"model_test_loss":0.013146449811756611,"input_size":18,"current_date_and_time":"2023-08-06_11-45-32","input_mean":[[22.384304],[-0.09092718],[0.0023652136],[-0.01865998],[-0.0913438],[-0.0915985],[-0.0908737],[-0.090024576],[-0.087187625],[-0.08577747],[-0.08269682],[-0.01866263],[-0.018653778],[-0.01863699],[-0.018579295],[-0.018651243],[-0.018765053],[-0.018734809]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.047012586],[0.92324436],[1.1744541],[0.22243287],[-0.3944335],[-0.34763417],[1.5356755]],"dense_1_W":[[-0.00047711062,0.4344246,-0.003556974,-0.05324533,-0.104414105,1.1889359,-0.56735265,-0.37708575,-0.06931248,0.64209265,-0.22444351,0.38017142,0.09980623,-0.07572917,-0.9272979,-0.089443296,0.0127646355,0.3978492],[1.076277,0.7404641,0.068134926,0.1926029,-0.35190815,1.1527709,-0.7064761,-0.8153627,-0.5065293,0.47775775,0.02251806,0.14456208,-0.043609474,-0.26085764,0.00093237846,0.36519462,0.028837174,-0.4271338],[1.263567,0.35015926,-0.14665723,0.43871006,-0.10830087,0.7354503,-0.9999807,-0.022604555,0.034673784,-0.35979328,0.35240602,-0.18725228,-0.24774587,-0.41631046,0.20720515,-0.0032023392,0.047886286,0.17100596],[-0.00094677473,0.19828819,-1.8369352,0.30248693,-0.54879934,-1.1427166,1.008834,0.21161656,-0.41065678,0.8713622,-0.10214338,-0.40863365,-0.24902351,0.20304148,-0.12075667,0.458101,0.2590354,-0.43551084],[0.6667485,0.91926587,-0.22846676,0.33097208,0.73958164,-1.4895654,1.0193743,-0.5367387,-1.5389364,-0.11664559,0.9663045,-0.51155037,-0.23083033,0.06350666,0.1535683,-0.0091331415,0.19499558,0.03682613],[-0.04119794,0.9239906,2.6969457,-0.25119433,-0.041676786,1.493704,-0.05057316,0.7667589,0.37086174,0.17998935,-0.830209,0.039195158,0.3242035,-0.39648166,-0.05009495,0.03618407,-0.030978123,0.1289426],[1.3126956,-0.55459666,-0.08771991,-0.20699926,-0.049515888,-1.0882213,1.0564349,0.6318207,0.0051460112,0.37931073,-0.39057365,-0.09507244,0.09743938,0.3942499,-0.33766025,-0.32643616,-0.18655044,0.65716547]],"activation":"σ"},{"dense_2_W":[[-0.42937973,-0.1671434,-0.43484113,0.6091573,-0.40485424,-0.54429215,-0.23403765],[0.44798595,0.19865125,-0.28430828,-0.4019087,-0.35975724,-0.1540725,-0.5593976],[0.38287392,0.458221,0.15593868,-0.14855632,0.14968492,0.031657934,-0.36288145],[-1.0350971,-0.5071168,-0.6141563,-0.088436134,0.52254784,-0.8051361,0.45060462],[0.45581025,-0.32779318,-0.7036135,-0.8545516,0.12893179,0.24949677,-1.2301726],[-0.037454057,1.2664734,1.068089,1.4344928,0.36088267,-1.0365765,1.7306651],[-0.122854166,0.12376001,0.48009405,0.109703854,-0.56688136,-0.14703372,-0.024793213],[-1.0537682,-0.46469265,-0.12660673,0.6073404,-0.2877888,0.15866885,-0.14931393],[0.17649716,-3.0929239,-2.3515308,2.8477354,1.1622903,-0.68750924,-0.45515713],[-0.73418194,-1.0775651,-0.7719372,0.16897969,0.3085781,-0.16281687,1.0447707],[0.46595046,-0.3949184,0.18229371,-0.12530676,-0.26597655,-0.0012733624,-0.114680044],[-0.124461986,0.5196014,-0.34539875,0.10735016,-0.06331189,0.4852887,-0.5834995],[0.39723673,-0.09609674,-0.1471512,-0.51641434,-0.2519636,-0.34744382,-0.43439695]],"activation":"σ","dense_2_b":[[-0.11312245],[0.027094306],[0.017765665],[0.044731423],[-0.18022782],[0.09928121],[-0.09837057],[-0.1548419],[-1.0962769],[-0.053587534],[-0.0071940883],[-0.014310544],[-0.03562835]]},{"dense_3_W":[[0.18594098,-0.6818517,-0.12188004,0.65018547,-0.37953106,0.40454167,0.16297354,0.59620595,0.025523338,0.44727668,0.1114748,-0.48999,-0.062479552],[0.29692125,-0.21146217,-0.5138796,0.6005236,-0.7997973,0.20368089,-0.22437662,-0.2668092,0.8479786,0.28527832,-0.6137382,0.43294674,-0.24874023],[-0.27988523,0.5345244,0.52841073,0.26012418,0.5051741,-0.47729176,0.04220592,-0.024942419,-0.9326824,-0.69562954,-0.09658818,0.2498976,-0.07045708]],"activation":"identity","dense_3_b":[[-0.060025424],[-0.049905777],[0.058896556]]},{"dense_4_W":[[-0.78769284,-0.9394558,0.4579486]],"dense_4_b":[[0.05315631]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPG-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPG-A020x00x00'.json deleted file mode 100755 index 19fe18efd7..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019 b'39990-TPG-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.299596],[0.7368779],[0.3343281],[0.038595177],[0.74043566],[0.73867756],[0.7369786],[0.7199797],[0.7073316],[0.692301],[0.6776942],[0.038740512],[0.038692366],[0.038640175],[0.038314454],[0.038039386],[0.037639543],[0.03721186]],"model_test_loss":0.0196799598634243,"input_size":18,"current_date_and_time":"2023-08-06_12-10-34","input_mean":[[25.72662],[0.05758428],[0.0074817957],[0.00042151322],[0.054403115],[0.054942675],[0.055003498],[0.05778212],[0.058146343],[0.055029176],[0.052427325],[0.00031705483],[0.00029397535],[0.00027291433],[0.00026472707],[0.00016882192],[-7.878055e-5],[-0.00038947008]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.24635658],[-2.3609567],[0.8278294],[1.8481108],[-0.0009179342],[-5.722017],[-0.38498595]],"dense_1_W":[[-0.3599328,-0.22590983,-1.5835724,-0.45297816,-0.39821658,-0.84838223,1.0513067,-0.6676435,-0.3157859,0.36385095,0.60838795,-0.36815816,0.40623605,1.0187281,-0.8164682,0.725533,-0.109838545,-0.119914874],[-1.4658633,0.8083861,1.0365679,0.96016145,0.032342948,0.61396354,-0.7277645,0.117941886,0.31804556,0.06370998,-0.3070831,0.049492776,-0.5002591,-0.41411608,0.03904327,-0.024719765,0.01514654,-0.15549083],[1.6183398,1.3368306,-0.1774287,0.22880824,0.05070626,-0.26586214,0.6101463,0.20884643,0.13692065,0.27627236,-0.06529142,-0.047958486,0.45105627,0.6535041,-0.70374006,0.008929227,-0.6404756,-0.76474065],[2.0271378,-0.26031396,-1.3868793,1.0859234,-0.20835875,0.2494928,-0.80513215,-0.44871587,-0.146529,0.26627505,0.12287333,0.31685492,-0.6343925,-1.0001003,0.31669822,0.13197689,-0.18177116,0.01344866],[-0.004777084,0.52823824,-0.004140687,1.4137487,0.4144139,-1.1794671,-0.8262742,0.68985987,0.17687458,0.017687704,-0.3234715,-0.41124478,-0.74011046,-0.7056069,0.7699347,-0.18429211,0.079565994,-0.069221176],[-2.434899,1.0662471,-1.7045196,0.9491714,-0.4924587,-1.0995914,-0.13104963,-0.5397869,-0.56282854,-0.28371578,0.5355493,0.1188877,-0.3160381,-0.19142266,-0.8446787,0.21822764,-0.13194595,0.25231192],[-0.63578004,0.10998647,-1.5226461,0.2984399,-0.49102226,0.18339495,-0.71859634,-0.36171985,0.19367056,0.30713537,0.3568834,0.034046147,-0.028167615,-0.20357361,-0.037238467,0.22969781,0.55273587,-0.56385]],"activation":"σ"},{"dense_2_W":[[-1.1939403,0.627583,-0.29303935,0.31645858,-0.28299263,-0.20175016,0.27266392],[-0.35470998,0.5116036,-0.21302372,-0.2682391,-0.6379024,0.19036521,0.16326782],[-1.0515031,0.0016675633,-0.328475,0.5562253,-0.21258254,-0.58660126,0.28343913],[0.30803204,-1.06867,-0.17983183,-0.25306872,1.4627538,0.0038065887,-0.014348506],[0.6233269,-1.2878839,-0.005203554,-0.70451117,1.1213775,0.103565186,0.059290078],[-0.22157122,1.0198585,0.11228626,0.16640806,-1.4210382,-0.23331583,0.19227381],[-0.51894325,0.7483681,0.3329935,0.4065807,-1.060425,-0.07506867,0.37457123],[-0.10200199,-0.080105394,0.19919048,-0.5509593,0.11211719,-0.5586402,-1.0667413],[-1.0931015,-0.064168,-0.80489373,-0.41687313,-0.41320696,-0.33071667,0.742609],[-0.039056696,-0.54934025,0.22863005,-1.4414634,0.55120647,-0.38611275,-0.7619764],[1.028561,-0.8452004,0.035485722,-0.2982418,0.9679217,0.684532,-1.0359311],[0.372593,-1.0716276,-0.57134145,-1.3408467,1.7297199,1.9872373,-0.7560159],[1.0906591,-1.6118517,0.19121306,-0.9672179,0.58213896,0.7299898,0.15404381]],"activation":"σ","dense_2_b":[[-0.090343356],[-0.08339459],[-0.0072327256],[-0.13952537],[-0.3003466],[-0.035847075],[-0.20601946],[-0.23709813],[-0.14278656],[-0.34552336],[0.06587117],[-0.3463747],[-0.2306921]]},{"dense_3_W":[[-0.2524472,-0.27034226,0.6634469,-0.746348,0.25183922,0.6880417,0.85341954,-0.31553096,-0.12491534,0.45396265,-0.4605119,-0.58887863,0.27989408],[0.2640799,0.35472974,0.70435447,-0.70013833,0.13855529,0.36433235,0.056772206,-0.40470412,0.18910164,-0.14314908,-0.7391794,-0.8970169,-0.25722122],[0.53352684,0.34132504,-0.5049692,0.14928706,-0.51827705,0.7143463,0.5245271,0.32858804,0.5338223,-0.07519559,0.05255393,0.14157031,-0.27464214]],"activation":"identity","dense_3_b":[[0.073314704],[-0.005890205],[-0.042565797]]},{"dense_4_W":[[0.18600833,0.98189795,0.93567103]],"dense_4_b":[[-0.032305032]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA HRV 2019 b'39990-THX-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA HRV 2019 b'39990-THX-A020x00x00'.json deleted file mode 100755 index 5b0e745ae2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA HRV 2019 b'39990-THX-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.196055],[0.87593496],[0.33765027],[0.04197189],[0.886328],[0.8834333],[0.87928975],[0.85071605],[0.8310174],[0.8089368],[0.7878991],[0.041903123],[0.041929454],[0.04194031],[0.04174096],[0.041557845],[0.041190308],[0.040708046]],"model_test_loss":0.01768307387828827,"input_size":18,"current_date_and_time":"2023-08-06_14-17-31","input_mean":[[27.28112],[0.05775289],[0.0292109],[0.0014245252],[0.04902593],[0.05110525],[0.053358402],[0.06730357],[0.07672258],[0.086834796],[0.09349608],[0.0012768332],[0.001302666],[0.0013326345],[0.0014557338],[0.0014853236],[0.0014835508],[0.001441598]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.4649247],[0.16453019],[-0.28886992],[-0.3648863],[-0.42144147],[1.2591343],[0.26168013]],"dense_1_W":[[0.65970325,0.3643967,-0.0078023723,-0.3371772,0.44859505,0.13993022,-0.59133023,0.06776411,0.40852416,0.2055092,-0.22950652,1.1044699,-0.061070323,0.018156692,-0.92917067,-0.29989886,-0.24349432,-0.2445954],[0.0043564676,0.14943714,1.5694466,0.54570717,0.23205929,0.23940374,-0.8834056,0.29886281,0.13640915,-0.07918449,0.06823687,0.4230718,-0.20778643,-0.80100656,0.067888916,0.013294644,-0.17124765,0.11134056],[-0.004692583,0.8932629,-3.326059,-0.13999403,0.71647453,0.7221725,-0.42850545,-0.27863225,-0.17863697,-0.19051133,-1.0301774,0.54785955,0.09839519,-0.52338004,-0.028131597,0.10106243,-0.26319197,0.2228086],[-0.13291039,-0.4817582,0.0022403449,-1.604327,-0.1416615,0.6045698,0.6883181,-0.09455803,-0.119714886,-0.031930104,0.16707899,1.219931,-0.027221087,0.2683029,-0.017352045,0.0354093,0.08798443,-0.011031896],[-0.0001811604,-0.55647755,-4.251647,0.10555062,1.2620865,0.87399095,1.7948182,0.5045302,-2.1733336,-1.323175,-0.20426413,-0.8539617,-0.42787957,0.87268126,0.50717103,0.21002649,-0.043627627,-0.31594208],[-0.7002713,0.0439368,-0.007873659,-0.15335229,-0.08326318,0.8655352,-0.4760854,-0.06738273,0.33060014,0.61478436,-0.43724525,0.8940125,0.14382815,-0.5073753,-0.16832146,-0.39969006,-0.77300745,-0.07796513],[0.18735953,0.5023311,-0.00044152042,0.6289259,-0.7044324,0.8138658,0.3475159,-0.48989236,0.070642374,-0.012694965,0.0680297,0.7051084,-0.33375153,-0.81817293,0.061156776,-0.22678623,0.075785585,-0.11933581]],"activation":"σ"},{"dense_2_W":[[0.44918334,-0.44261467,-0.37257126,0.06871936,-0.76875246,-0.02301384,-0.45431],[-0.028300185,0.74804,0.16640806,0.42070544,-0.45251933,-0.21348317,0.6122552],[-0.75886244,-0.4412132,-0.88113075,-0.5994053,0.81894237,0.0319869,0.07787325],[0.016850863,-0.46549502,-0.84523696,-0.4440643,-0.08756868,0.010443555,-0.11621737],[-0.11881556,0.04645116,0.035857048,0.5879231,0.10456129,0.2670699,0.30576423],[0.18244462,-0.18358052,0.63081473,0.678613,-0.065976664,0.5200684,0.0114103705],[0.17458354,-0.758713,-1.1933472,-1.2458708,2.0880768,-0.35880476,0.043243304],[0.6276925,0.3325886,0.42858002,-0.19699302,0.26399422,-0.5362572,-0.32001755],[0.019581828,-0.7625633,-0.43383184,-0.56120574,0.28209898,0.18763974,-0.48512912],[-0.72589034,-0.39149624,-0.69566345,0.25285095,0.9949407,-0.6764689,-0.86815906],[-0.229745,-0.04891058,-0.23069735,0.05986481,0.24995661,0.65987855,0.42597428],[0.21872666,-0.2117571,0.25106636,0.69597656,-0.34293714,0.08462207,0.626666],[-0.28573155,-0.4643647,-0.40302104,-0.41738722,0.75807416,0.047476795,-0.82152224]],"activation":"σ","dense_2_b":[[-0.040295057],[-0.038580682],[0.41026086],[0.13927889],[-0.051729757],[-0.19358195],[1.3526292],[-0.060473673],[0.15599808],[0.31490785],[-0.026681194],[-0.103706256],[0.075545505]]},{"dense_3_W":[[-0.19065312,-0.68438256,-0.1597246,0.23868644,0.2844928,0.24808933,-0.33611223,-0.09016653,0.7001218,0.3639498,0.2646331,-0.4721014,0.4990256],[-0.31301543,-0.42533165,-0.35976458,-0.23861757,0.4356561,0.6322021,-0.6240161,-0.16950898,-0.17745121,-0.17519787,0.5549622,0.65472394,0.46188885],[-0.048509836,0.6186861,-0.56957906,-0.63238627,0.35587925,0.47782204,-0.622644,0.1277044,-0.32014754,-0.24985255,0.19653115,-0.11492239,-0.59642744]],"activation":"identity","dense_3_b":[[-0.0043907734],[0.0006517651],[0.0069493363]]},{"dense_4_W":[[-0.6007436,0.5252799,1.091879]],"dense_4_b":[[0.0049111033]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019 b'39990-TXM-A040x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019 b'39990-TXM-A040x00x00'.json deleted file mode 100755 index 4957b7620b..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019 b'39990-TXM-A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.561399],[0.9560459],[0.31967336],[0.04428853],[0.96082354],[0.95901185],[0.9568036],[0.9313539],[0.9091667],[0.8810181],[0.8528346],[0.04422074],[0.04421771],[0.04421117],[0.043970585],[0.043718267],[0.04335803],[0.04287711]],"model_test_loss":0.043126773089170456,"input_size":18,"current_date_and_time":"2023-08-06_15-33-56","input_mean":[[26.94165],[0.021270154],[0.0046278955],[-0.009065303],[0.021303134],[0.021765355],[0.021796774],[0.022019608],[0.023005532],[0.02868764],[0.03272592],[-0.009263705],[-0.00921664],[-0.009177719],[-0.009201262],[-0.009262942],[-0.009267896],[-0.009328963]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.8717046],[1.401547],[-3.6374924],[0.011636128],[-0.010584985],[-0.1608906],[-3.4310641]],"dense_1_W":[[1.1484131,0.2360844,-1.2279263,0.6593642,-0.706906,0.57722515,-1.5107461,0.148039,0.48555797,0.14457138,-0.4081769,0.12444598,-0.5787572,-0.6569945,-0.012713922,0.6449968,-0.18181801,0.03532019],[0.83998966,-0.7946136,-1.1200137,0.31668094,0.31830063,-0.95925987,0.99205875,-0.60420567,-0.1273,-0.11898313,0.2820395,-0.71049374,-0.48740363,0.55304694,0.13322441,0.119103864,0.31011325,-0.21130522],[-1.4661362,0.23715574,-1.2752273,-0.041717865,0.2500426,-0.56513333,1.121119,-1.1740829,-1.4563355,-0.31711218,1.0432303,-0.606916,-0.4165662,0.40286353,0.2652817,0.29227725,0.57232744,-0.4241923],[-0.014610312,2.4209461,-0.0010322147,-0.48897117,-1.4935441,1.4336565,0.21062562,-1.205451,-0.3245356,0.69025,-0.1866847,0.47154546,-0.33315396,0.31453168,-0.23816307,0.23188154,0.21139425,-0.31219307],[0.0049821893,-1.9138168,0.0008263949,-0.6567317,-0.6164778,2.2373643,0.1648842,0.29560664,-0.15978582,0.13433349,0.09199213,0.7548104,0.8661949,-0.5156456,-0.84439373,-0.769481,-0.13660415,0.8850856],[-0.04535164,-1.3319466,-5.446676,0.7491545,1.40338,-0.27946347,0.58855826,-1.6417941,-1.3516777,-0.061358944,1.9686421,-2.0562751,-0.9776005,0.5102906,0.71488136,0.8446566,0.029088987,-0.0021240264],[-1.6955886,1.0932087,1.2057613,1.2197119,0.26736736,0.40396026,-1.1926581,-0.027528899,0.41201085,0.04445834,-0.17239684,-0.047891464,-0.2615087,-0.34971696,-0.186749,-0.07132908,-0.2368726,-0.10784222]],"activation":"σ"},{"dense_2_W":[[-1.013594,0.5034582,-0.95556456,-0.08708601,-0.8562468,0.16710468,0.07527283],[0.6687172,-0.7619872,-0.53848594,0.6010305,0.9034991,0.014348103,-0.593205],[-0.860986,0.6847677,0.3897247,-0.18235233,-0.56724346,0.42058796,-0.9473925],[-0.57470554,0.049254473,-0.3956524,-0.27702963,-0.1518893,-0.22931539,0.0917812],[-0.7363305,0.19133672,-0.47538042,-0.037515156,-1.0081038,0.37126565,-0.02480417],[0.058126763,-0.3683029,-0.31503877,-0.33700588,0.28384364,-0.41182697,0.21078625],[-1.699499,0.43488288,3.1312578,-2.43165,-0.23042913,1.4457437,-0.23582318],[1.1079293,0.21069455,-0.10997463,0.67785615,-0.1292696,-0.19016528,0.23199928],[-0.18085922,0.26667058,-0.11703674,-0.13090491,-0.98974144,0.2998666,-0.34656715],[0.56333655,-0.9618346,0.17298692,0.49641728,0.3144268,-0.17813024,0.25162554],[-0.18821634,0.47741577,-0.53012407,0.021764161,-0.90728444,-0.15855366,-0.4862484],[-1.1602566,0.254095,-1.2540381,-0.8706271,0.036233105,-0.36567953,0.12120533],[-0.3278052,-2.3773234,0.59865904,0.86674654,0.14178967,-1.3721049,1.4259635]],"activation":"σ","dense_2_b":[[-0.013262277],[-0.22405964],[0.09981698],[-0.04231693],[-0.027923957],[-0.10180608],[-0.8146485],[0.0004782006],[0.038938325],[-0.23186892],[-0.031742647],[-0.032234117],[-0.57888836]]},{"dense_3_W":[[0.58763653,-0.32315147,0.1878662,-0.2600824,-0.02019101,-0.4588076,1.4286964,-0.16221656,0.019991938,0.1896809,0.17505044,-0.06803269,-0.3277477],[0.31274745,0.08359626,-0.48973972,0.19148718,-0.022602405,-0.10987586,-1.4325415,-0.11361555,-0.1394098,0.47897077,-0.15372795,-0.7521875,0.5662985],[-0.41849798,0.636405,-0.480077,-0.29047763,-0.3423191,-0.06704497,-0.5570328,0.70148677,-0.62109405,0.680771,-0.6235916,-0.40535742,0.8969159]],"activation":"identity","dense_3_b":[[0.11709517],[0.070712626],[-0.017060732]]},{"dense_4_W":[[-0.14990221,0.26407397,0.9163793]],"dense_4_b":[[-0.008794706]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019.json b/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019.json deleted file mode 100755 index 7125acea96..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA INSIGHT 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.603165],[0.968196],[0.31648555],[0.043116625],[0.97207046],[0.97122186],[0.9696193],[0.9440986],[0.9209154],[0.89170784],[0.8635297],[0.0430813],[0.043076806],[0.043065626],[0.04281562],[0.042584687],[0.0422511],[0.041811552]],"model_test_loss":0.0409439355134964,"input_size":18,"current_date_and_time":"2023-07-18_02-56-25","input_mean":[[26.58399],[0.02317232],[0.002863659],[-0.0103310775],[0.023948237],[0.024388459],[0.024497893],[0.02269405],[0.02217117],[0.02469916],[0.02554692],[-0.01046288],[-0.010425196],[-0.010389729],[-0.0103868665],[-0.010423806],[-0.010380345],[-0.010442573]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.7315183],[-2.0931118],[-0.08195505],[-0.07830412],[0.17271917],[-4.8443527],[1.3409065]],"dense_1_W":[[1.3492318,0.050542787,-2.0778215,0.23633496,-0.18946455,0.08569419,-1.1538246,-0.56782997,-1.1068271,-0.28026178,0.6351039,-0.5325991,-0.16680008,-0.6554269,0.7481424,0.39339453,-0.037751142,0.12015114],[-0.8597578,1.2366588,1.7126143,-0.63454264,-0.43808976,0.8164015,-0.69233084,0.61550444,0.9666506,0.42250025,-0.7908081,0.5167161,0.30983937,0.048737403,-0.14529826,0.22033516,-0.09019369,-0.3203758],[0.051401302,1.1819376,5.170329,-0.33289638,-1.3051468,0.29249665,-0.37950587,0.86728233,1.2912674,0.83467674,-2.1016138,1.439997,0.83915204,0.022718783,-1.1455536,-0.6881879,-0.294737,0.1764151],[0.13776821,-0.616747,-0.0515103,0.09284325,0.5059833,-2.2745788,0.8794392,0.23675422,0.050319634,-0.16485108,0.022945715,-0.55973744,-0.19152954,0.5871755,0.48204577,0.43679258,0.084300846,-0.48278216],[0.32304537,-0.17996605,-0.050503615,0.057818476,-1.1874164,0.93133926,-1.135065,-0.2207176,0.5842914,0.26639673,-0.4034041,0.74324435,-0.26271045,0.25194508,-0.33687708,-0.11164587,-0.21532725,0.31314066],[-2.675871,0.18930794,0.004894184,0.36429468,-0.28649125,1.037061,-0.8956486,-0.2692209,0.13867386,0.14524221,-0.07555664,0.13616084,-0.29872495,0.0028986863,-0.50115776,0.32039323,0.062777095,-0.08310216],[0.82229155,0.4732484,1.5131059,0.062322427,-0.036212314,0.24138685,-0.46806708,0.7292275,1.3152804,0.55548984,-1.013016,0.65633196,0.2736623,-0.5331334,-0.49591142,0.22494234,0.028473936,-0.29246685]],"activation":"σ"},{"dense_2_W":[[-0.07206964,-0.69786,-0.3486531,0.48960513,-0.0696577,-0.49357864,0.2556807],[-0.2884806,-0.41657805,-0.3665416,0.15454409,-0.028397316,-0.2936546,-0.16180961],[0.803782,-0.27441671,0.8961105,-0.4721216,0.7000408,0.5584937,0.4574221],[0.2588418,0.21096861,-0.08602997,-0.7243836,0.6489519,1.1368387,-0.47698346],[0.5214179,-0.4379109,-0.10204686,0.5734521,-0.5929383,-0.35884753,0.059597526],[0.7346847,-0.71839786,-0.044602457,-1.2187109,-0.13774236,-2.6510515,-0.51899457],[-1.7133079,-4.6997886,-0.25009632,0.4603738,-0.87082464,3.0611444,-3.0963175],[-0.048846636,0.91797,-0.31641433,-0.20087503,0.10279341,0.38753894,-0.038774494],[0.15197727,-0.81371284,-0.12212125,0.7514405,0.32369855,-0.2520269,-0.50490427],[0.25197092,0.8954266,0.3530475,-0.9002343,-0.6774651,0.55687094,-0.2753792],[0.9715217,0.11435808,0.7430187,-0.18673508,0.24399346,0.75376093,0.18281539],[0.07828533,0.40924087,-0.0052447147,-0.87007385,-0.16614385,0.75889,-0.09113192],[-0.42538083,-0.6130854,-0.18442006,0.81436867,-0.4363763,-0.4421119,-0.20321086]],"activation":"σ","dense_2_b":[[0.21890728],[-0.08548715],[-0.08091435],[-0.101685315],[0.10115151],[-0.14451991],[0.54433477],[-0.21013816],[-0.0104931025],[-0.4982431],[-0.1676464],[-0.31867242],[0.17811179]]},{"dense_3_W":[[0.7400645,-0.16807431,-0.12028546,-0.58515614,0.34891638,-0.5609874,0.7747953,-0.06871472,-0.044812664,-0.26168486,-0.2864116,-0.4026426,0.7852125],[0.13187477,0.58926487,-0.62580276,-0.043964617,0.5385393,0.07869039,0.43877578,-0.6161494,0.4016125,-0.06597045,-0.4159714,0.23538205,0.7423825],[0.11068092,0.26080158,0.051800307,0.3499296,-0.56061244,0.5514093,-1.840586,-0.14135396,-0.050766982,0.4223278,0.39574477,0.30749676,-0.8040509]],"activation":"identity","dense_3_b":[[0.034426726],[0.022138074],[-0.039126255]]},{"dense_4_W":[[-0.8798318,-0.64988774,0.49071792]],"dense_4_b":[[-0.03172631]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018 b'39990-THR-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018 b'39990-THR-A020x00x00'.json deleted file mode 100755 index 690b647429..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018 b'39990-THR-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.624078],[1.0587155],[0.30083516],[0.047404915],[1.0569501],[1.0572157],[1.0565227],[1.0357862],[1.0151423],[0.9855047],[0.9551931],[0.04727608],[0.047284212],[0.047292266],[0.047139347],[0.046923578],[0.046476692],[0.045933507]],"model_test_loss":0.03084651380777359,"input_size":18,"current_date_and_time":"2023-08-06_16-32-16","input_mean":[[24.835194],[0.0007982536],[-0.006176701],[-0.0052586584],[0.00027294309],[-0.0003220067],[-0.0009233009],[-0.0011664837],[-5.9159433e-6],[0.00031557973],[0.0022665297],[-0.005350762],[-0.005354779],[-0.005356321],[-0.0052974457],[-0.0052572815],[-0.0053089443],[-0.005361436]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.3534836],[-0.029432654],[1.8868316],[-0.09822117],[-2.4564312],[-0.062489524],[4.9500136]],"dense_1_W":[[1.3379444,-0.023224303,0.92547566,0.23139125,0.49582657,-0.19798304,0.17489886,0.19757572,0.4532939,0.05501206,0.44625548,-0.37186652,0.23857181,0.08223163,-0.40953666,-0.31662405,0.36565343,-0.02073929],[0.0018158369,-0.46781677,0.014307537,0.7127616,-0.183635,-0.75742817,0.6894066,0.24744697,-0.17661563,-0.27236703,0.15312704,-0.57848364,-0.5893935,0.2702419,0.44554567,0.22370823,-0.226104,-0.09203226],[1.799059,-0.198707,-1.016055,-0.011727806,-0.029179385,0.14295676,-0.29293978,0.17230937,-0.47932827,-0.69661826,-0.093703836,0.18523113,-0.10232647,0.03687105,0.44274545,-0.19036789,-0.29666153,0.107951805],[-0.003098032,-0.24532981,-0.017002787,-0.5023018,0.39906764,-1.200529,0.4519783,0.4683689,-0.14362553,0.06751771,-0.17091979,0.3470844,-0.1885182,0.16463032,-0.009498001,-0.10712965,0.6976556,-0.33137426],[-1.357193,0.119205914,0.77373636,0.08123809,-0.53554714,0.04073674,0.14673577,0.47008705,0.36763436,0.7785362,-0.2854519,0.033120852,-0.38505244,-0.0073482324,-0.027826203,-0.18191494,0.7202002,-0.36105922],[0.011540895,0.42653874,3.4537587,-0.14331447,0.17654268,-0.25341675,-0.9539831,0.67298365,0.9465182,0.5915356,-1.033552,0.40142527,0.23822671,-0.1597271,-0.6579629,-0.23393449,-0.18252316,0.27954388],[2.213533,1.03911,1.1523687,-0.7107895,-1.6353345,0.7368801,-0.029617624,0.59569466,-0.3488169,1.8759083,-0.59652627,-0.33486545,-0.16461614,0.23255706,0.38946012,0.0076609664,1.2241695,-0.82663125]],"activation":"σ"},{"dense_2_W":[[-0.38179168,-0.03762462,-0.16407442,0.22533777,0.21200526,-0.75755686,-0.70566297],[0.23745127,0.79392534,-0.13295732,0.2560252,-0.525396,-0.3199242,-0.37806568],[-0.07160659,-0.8020838,0.9527979,-0.8270174,0.4712437,0.30625376,0.11045921],[-0.760045,-0.27719706,-0.10346,-1.3937811,0.93653303,0.7137455,-0.27598134],[-0.47952121,-0.6838305,0.20842296,-0.347254,0.57235146,0.32606634,-0.29145405],[-0.75135994,0.47685748,-0.6925233,0.6067481,-0.47287223,-0.6708088,-0.5606238],[-0.1407047,-0.042412486,0.19884428,0.6875437,-0.051208068,0.089406244,-0.25268498],[0.15601759,-0.5533243,0.65179765,-0.9195583,0.54043883,-0.31588987,0.042402852],[0.016135221,0.43866783,0.14963633,0.45334944,-0.13526076,-0.47658014,-0.27877006],[-0.6760022,-0.99107736,-0.0065089352,-0.7310922,1.198063,0.26301616,0.15857588],[-0.53217345,0.08108589,-0.42232883,0.2585569,-0.6059891,-0.16030814,-0.38680902],[0.20514117,-0.7086649,0.30526543,-1.014871,0.70494556,-0.1754464,0.6393286],[-0.44732463,0.7236195,-0.20577241,0.6082023,0.08172972,-0.12622307,-0.26760522]],"activation":"σ","dense_2_b":[[-0.23157027],[0.10348182],[0.103248015],[-0.25145143],[-0.16215345],[0.05333198],[-0.007814407],[-0.12305106],[0.015793381],[-0.11626731],[-0.21887426],[-0.013616658],[-0.045431573]]},{"dense_3_W":[[0.11133691,-0.7149343,0.6122002,0.5992357,0.48934844,-0.8058861,-0.61579424,-0.20425087,0.0400084,0.7586056,0.21969084,0.73337686,-0.5684788],[-0.32940114,0.5844858,0.33521906,-0.1380717,-0.15706351,0.44334856,-0.03572488,-0.44520766,0.33684713,-0.0387427,0.3344798,0.22412832,-0.34584302],[0.41397762,0.5771128,-0.17538065,-0.2331263,0.2025833,0.167861,-0.30182636,-0.55495805,0.4524257,-0.08304705,0.5681975,-0.48104328,-0.034903586]],"activation":"identity","dense_3_b":[[-0.029943425],[-0.01140329],[0.025632406]]},{"dense_4_W":[[1.1838417,-0.092230946,-0.76815987]],"dense_4_b":[[-0.028896004]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A040x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A040x00x00'.json deleted file mode 100755 index 9f7945bc6c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A040x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3870325],[0.88046026],[0.31456453],[0.045971613],[0.8823275],[0.88133013],[0.8802286],[0.85606366],[0.83917105],[0.81649935],[0.7949408],[0.045805056],[0.045844175],[0.045870136],[0.045709606],[0.045540884],[0.04515765],[0.044633806]],"model_test_loss":0.03413263335824013,"input_size":18,"current_date_and_time":"2023-08-06_18-19-42","input_mean":[[23.715818],[-0.030671604],[-0.0010694538],[-0.002801656],[-0.03120858],[-0.03159417],[-0.032069772],[-0.028450362],[-0.02625614],[-0.023662683],[-0.020763114],[-0.002952926],[-0.002957236],[-0.0029530823],[-0.002849485],[-0.0027969833],[-0.0027900888],[-0.002775541]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.030706996],[-0.037872314],[-0.05548866],[3.9280896],[0.7474149],[0.90278316],[3.6281414]],"dense_1_W":[[0.024131007,1.1437668,5.7560873,0.15635465,-0.29974687,0.29323357,-1.209728,-0.08944458,0.8328114,0.55170995,-0.49652693,1.7797251,0.356449,-0.22379819,-0.6863433,-0.7702987,-0.084863424,-0.71548474],[0.039950125,-0.1556448,0.90247494,-0.21784821,0.081626974,0.20843558,1.5873073,-0.3335005,-0.6408446,-0.004191309,-0.01373474,-0.3732137,0.0840519,0.481374,0.0065601915,-0.0018563746,-0.11723978,-0.15687008],[-0.041693777,0.8153725,-0.93551993,0.8342616,-0.9125522,-1.0517205,0.80132794,-0.33272502,-0.5316489,-0.020130547,0.51738137,-1.1073763,-0.06170218,0.75484115,-0.099664174,0.078711264,-0.3155204,0.23027797],[1.347042,0.35269168,2.0550568,-0.19498034,0.82868904,0.7170074,-0.6723933,0.46272853,0.51815087,0.19424136,-0.32263738,0.5095938,0.105270185,-0.3356029,-0.6227554,0.18846878,0.35004437,-0.55869645],[-0.68249965,-0.7106739,-0.00091033557,-0.1215673,0.15705624,-0.83085936,0.22485417,0.6567156,0.13330625,-0.08166536,-0.17778291,-0.45113075,-0.04207592,0.35418072,0.21138912,0.44137782,0.0059437924,-0.133213],[-0.6332932,0.5227072,-0.0001976942,0.34365958,0.32673892,0.2907148,-0.113340415,-0.39088866,-0.26699466,-0.05758928,0.29842612,0.024981031,0.13643564,-0.099530175,-0.41440305,-0.029128596,-0.51134044,0.29531562],[1.258255,-0.44770962,-1.8778437,-0.04598984,-0.900177,-0.19406404,0.4236334,-0.42944542,-0.32314876,-0.38610578,0.3892241,-0.43024847,0.047275137,0.42269197,0.073702455,0.19503468,-0.13383509,0.37180188]],"activation":"σ"},{"dense_2_W":[[-0.6328002,-0.2733073,-0.91156006,0.084900156,0.24577273,0.21559577,-0.45250878],[0.31812322,-1.1152663,-0.6027436,0.2201572,-0.53793555,1.0482581,-0.9947389],[0.15643081,-1.0215927,-0.24996142,-0.19163433,-1.1767645,0.20719749,0.052449297],[-0.64238095,0.6003157,0.50265914,-1.0465411,0.7531211,-0.8987147,-0.47903138],[-0.045131184,-0.89249134,-0.2586124,-0.3946543,-0.66559446,0.7098345,-0.35624668],[0.01925909,0.70794433,0.6441276,0.05606592,0.5759388,-0.44503638,-0.16193989],[0.106712155,0.49243534,0.91235846,-0.508013,-0.17323163,-0.39521646,0.27420443],[0.14106807,-0.38276723,-0.74229676,-0.17772292,-0.2867895,0.07301143,-0.5713336],[-0.3910647,-0.331973,-0.71291363,0.44479296,-0.372079,0.43584257,0.23784764],[0.6200412,-0.46858776,-1.0548015,-0.37598544,-0.95491964,0.7775705,-0.32049537],[-0.5429174,-0.33909863,-0.51903373,-0.53528494,-0.9287474,-0.050585847,-0.24405093],[0.08782715,-0.5397067,-0.39007556,-0.11375101,-0.4224178,0.72133744,-0.851765],[0.23905222,-0.28642985,-0.86665606,0.44080213,-0.5833951,0.714745,-0.7849159]],"activation":"σ","dense_2_b":[[-0.28084794],[0.035663433],[-0.17919558],[-0.14884101],[-0.19750093],[-0.05943652],[-0.010351563],[-0.13942906],[-0.26031336],[-0.12523566],[-0.32246646],[-0.19670182],[0.03445928]]},{"dense_3_W":[[-0.54237396,-0.12057569,-0.33454332,-0.22615993,-0.5465151,-0.14707579,0.05022189,0.56217587,-0.17346314,-0.24858905,0.34007478,-0.00070786034,0.52975553],[0.5001979,0.41751292,0.6217282,-0.7284195,0.47918427,-0.6284354,-0.34686244,0.010521516,0.46527955,0.300923,0.1515217,0.24209905,0.6725099],[-0.36316845,0.706709,-0.09291999,-0.8208684,0.164437,0.1152729,-0.014193419,-0.3382088,-0.5153448,0.64160955,-0.4063204,-0.023448244,-0.27234897]],"activation":"identity","dense_3_b":[[-0.04338367],[-0.095272206],[-0.045654554]]},{"dense_4_W":[[0.4292374,1.7759846,0.5118597]],"dense_4_b":[[-0.059387]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A060x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A060x00x00'.json deleted file mode 100755 index 52fbc920a8..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A060x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.0581903],[0.92126673],[0.29617915],[0.04191473],[0.9171323],[0.9183279],[0.9188417],[0.9060646],[0.89225584],[0.87377656],[0.85549104],[0.04186598],[0.041867044],[0.041861024],[0.041707642],[0.041504312],[0.04113141],[0.040689647]],"model_test_loss":0.024623241275548935,"input_size":18,"current_date_and_time":"2023-08-06_18-45-10","input_mean":[[26.12887],[-0.018342948],[0.0023950052],[-0.00060018164],[-0.020283561],[-0.020622766],[-0.020715354],[-0.020511365],[-0.020389233],[-0.020154186],[-0.019204807],[-0.0007310425],[-0.0007260691],[-0.0007204341],[-0.0006898669],[-0.00067769137],[-0.0007068316],[-0.0007057846]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.34347212],[-0.04366823],[3.8996286],[-3.2322345],[0.0011430938],[0.31775263],[0.02871207]],"dense_1_W":[[-1.2845949,0.13241255,-0.00054695434,0.30559602,-0.457657,-0.50316894,0.41611654,0.76597494,-0.020354524,-0.1652268,-0.1537093,-0.95382077,-0.4738125,0.2229064,0.497753,0.5096397,0.2834458,-0.39443842],[-0.01576654,1.0631088,-0.0001952519,0.2668259,0.5884113,0.42140722,-1.0702667,0.06912717,0.29095903,-0.16439292,0.07887146,0.29752833,-0.5947841,-0.45468485,-0.29552692,0.02692619,0.34921086,-0.04025514],[0.918351,-0.39751226,-2.0331492,0.636789,-0.6820441,-0.2611252,0.43445766,-1.2055922,-0.8403307,-0.123105325,0.5316267,-0.883859,0.15459336,0.32164282,0.28913066,0.20976447,0.02999975,0.067868724],[-0.8948686,0.07852778,-1.858944,0.25246492,-0.72072095,-0.721946,0.2008207,-0.6164795,-0.620322,0.054701116,0.13644697,-1.0398991,0.23678952,0.9060979,0.24625729,0.06296468,-0.09471517,0.18253052],[-0.039542284,0.14739217,-1.8839234,-0.05269514,0.22938618,0.1295076,-1.715298,1.3541347,0.60284644,0.07251003,-0.58243793,0.369853,0.17180686,-0.93567884,0.41123584,0.22822875,-0.015471544,-0.1450907],[-1.309309,-0.0065789986,-0.0009026052,-0.43786958,0.66638273,0.6100126,-0.80755997,-0.44549793,-0.33233902,-0.14217907,0.4560685,1.0638386,-0.23771513,0.031021614,-0.31280205,0.110058166,-0.23958574,0.024892198],[0.021762278,1.2449024,2.3610842,0.10449084,0.035584703,-0.20509337,-2.1041403,1.2424486,0.5425319,0.13568977,-0.68708223,0.6785129,0.2722758,-0.94338864,-0.11912091,-0.061731618,-0.21562424,0.265597]],"activation":"σ"},{"dense_2_W":[[0.8672452,-1.6432475,-0.089617,3.4410927,-1.8457493,-1.653231,-1.1289697],[-0.8830999,0.42412817,0.3355593,0.30391192,0.37201688,0.70189875,0.76556355],[-1.0386908,0.7344996,-0.46029314,-0.045133006,0.41179648,0.23103125,0.06681513],[0.97836345,-0.851959,0.74249834,-0.25212237,-0.082773805,-0.61097443,-0.47594827],[-0.489878,0.80100036,-0.38931137,0.06700653,-0.20617403,0.2470712,0.9071803],[-0.9829343,0.34199762,-0.5856996,0.21864368,0.9632561,-0.06746073,0.14236969],[-0.22686507,0.0058632977,-0.67398316,0.106053695,0.06964084,0.42800158,0.84875035],[0.8461344,0.14065352,0.077666566,0.5249845,-0.3699625,-1.0579052,-1.0444427],[-0.6473488,0.069085024,0.1963253,0.106187075,0.045327008,0.5108394,0.20862271],[-0.18507846,0.81007284,0.59458715,-0.20684378,0.41903466,1.124245,-0.0002866817],[1.8409206,-1.6266977,1.558487,-0.14739716,-0.71901566,-0.9584196,-0.24527057],[0.061728116,-0.75477535,-0.22849028,-0.3439474,-0.65592027,-0.9196831,-0.34239137],[-0.24715817,0.27214324,-0.46822995,-0.11250425,0.4140462,0.5036997,0.808618]],"activation":"σ","dense_2_b":[[0.3682189],[-0.3061952],[-0.2186805],[0.26665255],[-0.20908445],[-0.25180277],[-0.16508935],[0.37200344],[-0.132723],[-0.0748416],[0.77447575],[0.07100879],[-0.28392908]]},{"dense_3_W":[[-0.7492231,0.6381115,0.22848813,-0.6114985,0.4652135,0.43796808,0.15224089,-0.86344284,0.23925477,0.66866344,-0.874919,-0.37883374,0.47491515],[-0.23657976,-0.20048968,0.14517088,0.0775067,-0.15648171,0.5634285,-0.51960784,-0.31498674,-0.14429168,-0.22901323,0.0648477,0.0648267,0.5823677],[-0.010220655,0.21547753,-0.08935665,0.67853194,0.40634638,0.30693397,-0.31160212,0.8876798,0.2663386,-0.41578376,-0.043752998,0.05976479,-0.30815133]],"activation":"identity","dense_3_b":[[-0.03995597],[0.043906566],[-0.009552566]]},{"dense_4_W":[[0.96169305,-0.013711991,-0.33541062]],"dense_4_b":[[-0.032807786]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A070x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A070x00x00'.json deleted file mode 100755 index d9ddfeb90d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TG7-A070x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.899371],[0.91326123],[0.34754744],[0.047207538],[0.921164],[0.9188041],[0.9149523],[0.8824703],[0.86114454],[0.8327107],[0.80909157],[0.04698797],[0.04704211],[0.04708921],[0.0469777],[0.04675353],[0.04638313],[0.045919105]],"model_test_loss":0.029772095382213593,"input_size":18,"current_date_and_time":"2023-08-06_19-12-45","input_mean":[[23.732822],[0.017107664],[-0.0011733986],[-0.0058285887],[0.017914131],[0.017934287],[0.018237941],[0.017002761],[0.015237825],[0.013338944],[0.011673382],[-0.005840362],[-0.005826218],[-0.0058171875],[-0.005817545],[-0.0058693774],[-0.0060108923],[-0.00612493]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20021264],[3.4939082],[-0.06716851],[0.058503635],[-0.010445441],[-0.16600388],[4.0031]],"dense_1_W":[[0.67624974,0.5699806,1.7589446,0.38397965,0.04085462,-0.35647398,0.94661707,-0.042084765,-0.36401713,0.15266082,-0.11755991,-0.42012995,-0.390879,0.27095684,-0.3359402,0.44403496,-0.50348926,0.20556912],[1.2939718,-1.0459632,-1.4953133,0.24710384,-0.07565443,-0.4741599,0.8066539,-0.5519822,-0.8259321,0.08815797,0.5646691,-0.22644426,0.6596317,0.49577862,-0.5832377,-0.30473575,-0.07392759,0.22181918],[-0.0067671034,-0.56580436,-1.5979874,0.72282726,0.14223135,-0.70996284,1.6942539,-1.0655241,-0.59319955,-0.13150467,0.68681896,-0.33786333,-0.6004301,0.93967056,-0.18882798,-0.21886076,-0.018479563,-0.026317876],[0.73770875,-0.35808742,-1.7224159,-0.11537585,0.23505013,0.3487726,-1.6180664,0.44352862,0.087284215,0.14080617,-0.049784306,0.67705816,-0.18708247,-0.038130477,-0.0593233,0.15170136,-0.2373075,0.12623678],[-0.00046603545,0.062258437,-0.00017648668,0.5743302,-0.14112268,0.7994641,-0.5734729,-0.1330987,0.122790836,-0.05908033,0.053587526,0.40562433,0.48647818,0.07770536,-0.8969449,-0.569001,-0.15433595,0.106549785],[-0.00043468282,-0.44794786,-0.0009173404,-0.15259606,-0.423234,-0.7315594,0.2841295,0.7197476,0.27196157,-0.043154158,-0.35170138,-0.3242454,0.4141323,0.15176967,0.3337161,-0.022378944,-0.016765838,-0.13956091],[1.370725,0.92907214,1.5363995,-0.07274529,0.06922402,0.47750995,-1.1804242,1.0793897,0.87313735,0.03309975,-0.787432,0.1583054,-0.06471896,-1.6379938,1.0917811,0.2863863,0.16701585,-0.370107]],"activation":"σ"},{"dense_2_W":[[-1.1142431,-0.98553467,-1.7528756,-0.7601161,0.023125764,0.29621416,0.057998575],[-0.57707655,-0.035297927,0.7552565,0.40910327,-0.045871045,0.7647045,-0.17583843],[0.54533637,0.37994358,0.48098484,-0.60859483,-0.679812,1.1466373,-0.7521221],[-0.766621,0.29065615,-0.96372104,0.4400032,1.691393,-1.3640326,1.5831442],[-0.03152584,-0.0041346215,-0.59791905,0.0149094295,0.5149197,-0.568262,0.5052371],[-0.62852687,-0.5016056,-0.88126785,0.6810648,0.76567554,-0.68329334,0.26362616],[0.09154294,-0.23193486,0.9080769,0.06993361,-0.50866467,0.6603812,-0.6362647],[-0.7537723,-0.8049923,-0.8947776,0.73191917,0.7269287,-0.6561125,-0.15393494],[-0.45121416,0.21887077,0.8701729,0.49937823,0.093833074,0.6793174,-0.26953593],[-0.21209432,-0.52174926,-0.84514666,0.044568583,0.4728377,-0.45035967,0.13409898],[0.5650158,-0.6122694,-0.23879126,0.88060015,-0.02077808,-1.9465554,-0.37588525],[0.19426925,0.5452357,0.12054777,-0.40416533,-0.81852937,0.9164135,0.20086637],[-1.2047343,-0.5585611,-1.8479179,-0.6856552,0.07956908,0.2805922,0.37198797]],"activation":"σ","dense_2_b":[[0.060228728],[-0.04707918],[-0.14618197],[0.106457904],[-0.03570688],[-0.08961752],[-0.05534363],[-0.121585414],[-0.109557174],[-0.067889966],[-0.14876497],[-0.058959074],[-0.12490072]]},{"dense_3_W":[[0.38950223,0.3090716,-0.4296155,-0.33159044,-0.105799004,-0.119462036,0.53925854,0.22593993,-0.034717377,-0.23057248,0.3610593,-0.022898644,-0.06612316],[0.7082383,-0.2031159,-0.35994145,0.57508343,0.49524105,0.3460956,-0.74825346,0.7125477,-0.066172495,0.29165456,0.6697642,-0.56427914,0.5089701],[-0.21685903,-0.047797453,-0.24373047,-0.06741093,0.49110416,0.062480558,-0.5235519,-0.48258132,-0.27274242,0.333045,0.41328818,-0.4939122,-0.037244707]],"activation":"identity","dense_3_b":[[0.018447949],[-0.053515278],[-0.02512046]]},{"dense_4_W":[[-0.07239497,1.4876865,0.61020267]],"dense_4_b":[[-0.03861425]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TGS-A230x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TGS-A230x00x00'.json deleted file mode 100755 index bb87addba0..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017 b'39990-TGS-A230x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.844337],[0.5474532],[0.2851794],[0.027097791],[0.54364073],[0.5449447],[0.54493386],[0.5406305],[0.53676015],[0.5303491],[0.52479345],[0.02704525],[0.027049432],[0.027056439],[0.027171213],[0.027275724],[0.027305145],[0.027313853]],"model_test_loss":0.011909760534763336,"input_size":18,"current_date_and_time":"2023-08-06_19-37-10","input_mean":[[22.95614],[0.03637806],[0.0046443446],[-0.009752038],[0.035477746],[0.03569809],[0.03587167],[0.038072705],[0.041633505],[0.043689143],[0.044423867],[-0.009905221],[-0.009882373],[-0.009861099],[-0.009661706],[-0.009565372],[-0.009564497],[-0.009780675]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.017572576],[-4.3160543],[0.0974798],[0.036516342],[-0.109429516],[-0.09818942],[4.911552]],"dense_1_W":[[-0.0024906907,-0.16255474,0.0021684417,0.15618499,0.51274085,-1.5496616,0.80450743,-0.17654379,0.029981567,0.29689407,-0.22370933,-0.40722302,-0.47401586,0.088543475,0.39740565,0.16661157,-0.21702406,0.18496276],[-1.7687228,0.7045914,1.427233,-0.52335125,0.59448713,0.15286753,-1.2777213,0.61541426,0.16629013,0.4778544,-0.32696342,-0.17506757,0.095090166,-0.1734923,0.12915663,0.4323549,-0.13984495,0.013180874],[-0.0005372349,0.14655821,0.00052846695,-0.1672421,-0.10420727,1.4758636,-1.3471918,-0.3041868,0.0994203,0.18412685,-0.011641346,0.20525645,0.029496245,0.26476464,-0.43268526,-0.11217049,-0.21945795,0.25870478],[-0.032725878,-0.5761932,-3.2336373,0.5103813,-0.077060595,-0.80228996,1.8519014,0.14672789,-0.111017115,0.24072622,-0.12112954,-0.3908596,0.10182307,-0.07298533,-0.080630735,0.008331639,-0.120116994,0.006328887],[0.03457588,-0.49316353,2.6339474,0.19689563,0.17444913,-0.8295214,1.600949,-0.595955,-0.69125766,-0.7232554,0.86711705,-0.012927358,-0.16348226,0.26314303,-0.0088081835,-0.46151197,-0.063149415,0.23691247],[-0.0007938469,-0.26171395,-1.7098687,0.26605788,-1.0185215,-1.438486,1.65897,0.34761468,-0.032835998,0.5944291,0.07509286,-0.3272494,-0.19096224,0.46081677,-0.099406004,0.1578144,0.2245294,-0.33107895],[1.8251307,-0.31498715,1.4632752,-0.25625032,0.15879938,1.4816606,-1.8760675,1.3390347,0.31716788,0.5548306,-0.5275588,0.24619943,0.06173876,-0.8373367,-0.09087632,0.6366511,-0.082824394,-0.030000336]],"activation":"σ"},{"dense_2_W":[[0.7515066,-0.5105429,-0.5129767,0.17204086,0.4370165,0.21994908,-0.6377811],[-0.8214936,-0.19322807,0.41158032,0.1989778,-0.14067653,-0.64911515,0.5294647],[0.51943374,-0.06608904,-0.29252574,-0.024339033,0.43838638,0.051782995,-0.806854],[-0.20359917,-0.32902804,0.337066,-0.61808026,-0.07043727,-0.34022537,0.30081543],[-0.24775623,0.51326185,0.5934297,-0.98377573,-0.11107068,-0.32810766,0.3160865],[0.5520875,-0.010964958,-0.69238853,0.44000012,0.18294834,0.55245346,-0.085966766],[0.266246,0.22741622,-1.3200338,0.31004852,0.4994686,0.6832114,-1.012235],[0.6528813,-0.3028174,-0.9139022,0.44758174,0.6425402,0.010288926,-0.20716433],[-0.5859752,0.29565674,0.641747,-0.30805898,-0.56379014,-0.216961,0.75915325],[-0.7312802,1.830524,1.2278521,-0.80010766,-0.8330499,-0.69043976,-0.28447995],[0.5335052,-0.064827405,0.027745938,-0.46684337,0.44196686,-0.48609126,-0.21828449],[0.14514819,0.4311585,-0.54999,0.5635193,-0.4327273,-0.14394662,0.111346856],[-1.0599593,1.1263603,0.78328055,-0.37957004,-1.5480173,0.1396851,-0.2799352]],"activation":"σ","dense_2_b":[[-0.23358788],[0.1585287],[-0.13420668],[-0.07403241],[0.010910343],[-0.18071596],[-0.14818127],[-0.12828562],[0.14517418],[-0.07583147],[-0.09213995],[-0.09467464],[-0.08490435]]},{"dense_3_W":[[0.34530333,-0.25396794,0.3704989,-0.45187533,-0.6564372,0.28631496,0.28807354,0.6734085,-0.5048169,-0.14331086,0.3927886,0.21402659,-0.19487047],[0.5606163,-0.28793406,-0.03255529,-0.27054605,-0.64770496,0.5929222,0.71289337,0.023057688,-0.31981897,-1.0039912,-0.42174533,-0.2053406,-0.33733523],[-0.05791618,-0.55499506,0.4860968,0.516192,0.107287996,0.33412755,0.3361389,0.28090212,0.30633086,-0.5674268,0.15556479,-0.100490406,-0.6992101]],"activation":"identity","dense_3_b":[[0.05391226],[0.12384217],[-0.0018761213]]},{"dense_4_W":[[-0.80719674,-0.53903717,-0.10743938]],"dense_4_b":[[-0.060299486]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A020x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A020x00x00'.json deleted file mode 100755 index 4fc4f99db6..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A020x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.526597],[0.8048686],[0.30508777],[0.03864828],[0.80819684],[0.80695915],[0.8048399],[0.78234345],[0.76694405],[0.7469485],[0.7296534],[0.038567755],[0.038570154],[0.038559318],[0.03835149],[0.03808803],[0.03767571],[0.037237816]],"model_test_loss":0.03462047502398491,"input_size":18,"current_date_and_time":"2023-08-06_20-57-06","input_mean":[[26.62668],[0.036549807],[-0.011428904],[0.0053228196],[0.03878817],[0.038509928],[0.03783984],[0.032552782],[0.02958787],[0.025563305],[0.02255467],[0.005326508],[0.0053158393],[0.0053043445],[0.0053029354],[0.005256346],[0.005181934],[0.0050085713]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.14232375],[1.8012465],[-0.09831748],[0.5650695],[-1.1499583],[-0.073488325],[1.0894103]],"dense_1_W":[[0.056877207,0.6916827,5.06491,-0.66757196,-0.064828135,0.602485,-0.75314325,-0.17327878,0.6848782,0.34329203,-0.5423522,1.1682849,0.17310293,-0.36728725,-0.4643529,-0.31240857,0.02507186,0.3971787],[0.8599211,0.040786155,1.3326324,-0.47951195,0.44746584,0.6010731,-0.21368843,0.12426477,-0.04983132,0.23454875,-0.15349868,0.19200465,0.3104551,-0.3557172,-0.13984811,0.4962251,0.053631846,-0.1638603],[-1.8845662e-5,-0.96039295,-0.008062018,-0.4011542,0.38096327,-0.589807,0.55235106,0.41631168,0.11027108,0.09306343,-0.19353023,-0.60363764,-0.12267431,0.49039286,0.5191193,0.55169106,0.30454066,-0.5621538],[1.0135822,-0.75806355,-1.6029091,-0.3095834,-0.22254121,-0.09464273,-1.3611665,0.771017,0.79057467,0.24156936,-0.58263016,0.49122322,-0.08950236,-0.12695374,-0.22518735,0.39627716,-0.10022992,0.050749615],[-1.2416042,-0.17200327,-1.6770357,-0.3177143,-0.34086037,-0.027091691,-1.5113678,0.49007565,0.66320384,-0.0010659369,-0.34323072,0.5169337,-0.15815243,-0.034780547,0.1575047,-0.0329744,-0.3683034,0.32797682],[-0.0022168742,-0.66831297,0.010362603,-0.41855475,-0.009861155,-0.94385296,0.1030419,0.45698124,0.26305547,-0.21666865,-0.11719163,-0.22144005,-0.04730197,0.7822476,0.046567436,-0.084721416,-0.086411186,0.39097503],[0.5916624,-0.35777295,-1.1239158,0.20729716,-0.6318845,-0.7276167,1.2016071,-0.27480146,-0.15381776,-0.08857165,0.15498745,-0.845312,0.26758724,0.7284694,-0.2389467,-0.1021588,0.118127644,-0.060775146]],"activation":"σ"},{"dense_2_W":[[-0.22620663,0.41269052,-0.24866156,0.6366785,0.7235434,-0.927365,-1.0595255],[-0.36320922,-0.8501176,0.7743313,-0.2655733,-0.20027223,0.3987106,0.16717343],[0.04363351,-0.39013597,-0.14777897,0.050077282,0.23006651,0.32082573,0.6458379],[-0.10794271,0.6917472,-1.081361,0.42123145,0.6480493,-0.3713631,-0.89706177],[-0.78707266,0.32178167,1.1140773,0.19835484,-0.92583483,0.54546994,1.2142284],[-0.4685015,-1.2930269,0.8641388,-1.1940204,-0.26867914,0.68155724,0.5093967],[-0.1882023,0.36285752,-0.6288009,0.08845282,0.53267115,-0.48252743,-0.72988355],[0.42914814,-0.29254675,-0.78575516,0.43952206,0.26590148,-0.6462319,-0.8898721],[-1.1129463,-1.0545493,0.41503805,-0.4397955,0.37739003,0.2824943,-0.12243744],[0.5261344,-0.49560457,-0.19782127,-0.63711095,0.24736477,0.4398861,0.6398021],[0.05428658,-0.59174234,0.26730546,-0.12481052,-0.08528374,0.07640281,0.28411782],[0.78370523,1.1058642,-0.23422256,0.77695924,-0.41036674,-0.23147115,-0.84960663],[0.22395311,-0.522629,-0.0788354,-0.15769184,-0.3324099,0.5808104,0.924355]],"activation":"σ","dense_2_b":[[-0.039920773],[-0.052275084],[-0.0664735],[-0.018644892],[0.00933328],[-0.054911967],[-0.00089501834],[-0.023597311],[-0.3882073],[-0.091632456],[-0.4284712],[-0.028570231],[-0.12698737]]},{"dense_3_W":[[-0.30708212,-0.07836911,-0.51141727,-0.12163258,-0.34234747,-0.13424605,0.5527976,0.338374,-0.08043284,-0.53650296,-0.08814839,-0.09911217,0.26711917],[-0.5153229,0.610062,-0.3431148,-0.43862098,0.6182512,0.8723251,0.027186068,-0.46111137,0.6949713,-0.20838192,-0.17872754,-0.25688672,-0.2768381],[0.5712013,-0.50477827,-0.41985807,0.6996244,-0.04315098,-0.090902686,0.57373744,0.65513474,0.2195478,-0.17768551,-0.16094655,0.4999511,-0.60238904]],"activation":"identity","dense_3_b":[[-0.019368384],[0.06465865],[-0.06263113]]},{"dense_4_W":[[0.30276972,-0.77930284,1.3356577]],"dense_4_b":[[-0.057673924]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A030x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A030x00x00'.json deleted file mode 100755 index 072cb370f2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A030x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.718611],[0.8000405],[0.316423],[0.04299987],[0.8036066],[0.80211085],[0.80001944],[0.7775613],[0.75944704],[0.7362369],[0.7155587],[0.042815663],[0.042829156],[0.042837203],[0.042570762],[0.042158205],[0.041655492],[0.04112391]],"model_test_loss":0.022167924791574478,"input_size":18,"current_date_and_time":"2023-08-06_21-24-15","input_mean":[[24.369797],[-0.025400253],[0.017546965],[-0.00700374],[-0.02907116],[-0.0272434],[-0.026022244],[-0.018144533],[-0.013257402],[-0.008418786],[-0.005300719],[-0.0070171817],[-0.006979727],[-0.0069393516],[-0.0067121363],[-0.006487458],[-0.0063709775],[-0.006421042]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.7274725],[0.025503755],[0.3050141],[-5.3191023],[-0.03876078],[0.005245881],[-5.0506983]],"dense_1_W":[[-0.2822948,-0.722028,3.7289326,0.10887399,0.23870549,0.50487334,-0.123285055,0.6266674,-0.16613187,-0.31120768,0.21549895,0.8222215,0.093914084,-0.508679,-0.32368693,-0.5741282,-0.12807958,0.4776648],[0.055145074,-0.08890773,2.0090845,-0.22150633,0.07060641,-0.22094366,1.112321,-0.9160675,-0.5255298,-0.2628351,0.6098551,-0.54194224,0.21753678,0.80302423,-0.20514414,-0.26842067,0.14056496,0.033558667],[0.07740017,0.015846146,2.7256997,-0.40292552,0.21246663,0.70980185,-1.5323384,0.36885697,0.4570335,0.031200917,-0.2520181,0.7061896,0.4765367,-0.40083462,-0.020111812,-0.83463514,-0.2164461,0.6454257],[-1.7542838,0.968146,-2.7611947,1.1451197,-1.0110191,-0.8876714,0.20558445,-0.9517466,-0.4182316,-0.12540092,0.31168443,-0.33938956,0.24651282,0.0059528793,-0.85313106,0.4553901,-0.33676484,0.039334722],[0.0048947604,0.28315127,-0.00082401093,0.1642722,-0.026302634,0.5552507,-0.4484803,-0.77365834,0.3072703,0.20140412,-0.07074192,1.1858759,-0.019229556,0.54098135,-0.6814733,-0.69271094,-0.06874056,-0.38412106],[0.0007334778,0.7766232,0.00028844643,-0.21648946,0.092252165,0.67591894,-0.27549696,-0.24640717,-0.29265153,-0.3485241,0.46819794,0.36771885,0.1777801,-0.9394743,-0.5500784,0.5453998,0.23175853,-0.06195575],[-1.6910515,-0.50021756,2.6513228,-1.0415213,0.7283371,1.1932234,-0.42946246,0.6699792,0.35031915,0.056402538,-0.2107231,0.35974085,0.18628371,-0.5288515,0.4471923,-0.037989102,0.38440272,-0.13335472]],"activation":"σ"},{"dense_2_W":[[0.32577014,0.79221934,-0.328502,0.93716705,-0.48035973,-1.1603907,-0.2849361],[-0.018025871,1.2269095,-0.17799911,0.3586097,-0.5202041,-0.9837849,-0.52449334],[0.4882362,0.007634269,-0.8909171,-0.3146946,0.22157149,-1.2225018,0.20821871],[0.80880105,0.06718037,1.1132499,0.29183453,0.04864204,-0.16105369,0.35970175],[-0.37581718,-0.5779451,0.3496446,-0.47957718,0.56743324,0.7492507,0.09928946],[-0.4170784,0.6871286,-1.0214018,0.49072498,0.097653925,-0.34628057,-0.669162],[0.07657919,0.3276044,0.025352756,0.4546719,-0.42029864,-0.9768511,-0.06424113],[-0.034272887,0.27446097,-0.026066864,-0.23361085,0.50696295,0.26659736,0.061146133],[0.20783767,-0.38495246,0.64545757,-0.5973285,0.28495064,0.6255407,-0.27093932],[-0.18777645,-0.10720107,-1.0076562,-0.91708684,0.035999604,-0.3695375,-0.40669018],[0.097274005,-0.0091937585,0.77790815,0.5603293,-0.007872101,0.16779582,0.57061195],[-0.27653685,0.8055118,-0.16641589,0.67337465,-0.68099606,-0.7176573,-0.09002476],[0.50360245,-0.814891,-0.0020142735,0.34887952,0.38281712,0.5023187,0.52313113]],"activation":"σ","dense_2_b":[[0.2157577],[0.2698682],[-0.019235173],[-0.10241727],[-0.100874275],[0.06276079],[0.035551473],[-0.12188733],[-0.1428853],[-0.20376948],[-0.16719232],[0.18453568],[-0.34984714]]},{"dense_3_W":[[-0.15546247,0.4479613,0.29678583,-0.07754084,-0.34736145,0.23861347,0.62535715,-0.21091194,-0.4652678,0.41793606,-0.08758342,-0.032690294,0.18323281],[0.70506346,0.4563717,0.3900941,-0.7799406,-0.11504136,0.42975253,-0.052854165,-0.2509722,-0.19303511,0.4449753,-0.030831125,0.6785045,-0.16403332],[-0.6801335,-0.18466944,-0.18921193,0.6546068,0.3580845,-0.63010234,-0.6467311,-0.13526618,0.15568815,0.35201934,0.61143976,-0.62779784,0.7224356]],"activation":"identity","dense_3_b":[[-0.05987917],[-0.07057249],[0.046607416]]},{"dense_4_W":[[-0.41022143,-1.0402968,0.69203836]],"dense_4_b":[[0.06063404]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A050x00x00'.json b/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A050x00x00'.json deleted file mode 100755 index e2f4fae4a9..0000000000 --- a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017 b'39990-T6Z-A050x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.436153],[1.0504706],[0.3418279],[0.044102445],[1.0572962],[1.055557],[1.0525179],[1.0187471],[0.9908011],[0.95748615],[0.92414606],[0.043971427],[0.044015896],[0.044045128],[0.04389467],[0.04364494],[0.043296155],[0.042847775]],"model_test_loss":0.038220494985580444,"input_size":18,"current_date_and_time":"2023-08-06_21-51-36","input_mean":[[23.848715],[0.018280305],[0.012880258],[0.00016874999],[0.015305563],[0.01623863],[0.01724972],[0.02289785],[0.026459597],[0.03181198],[0.03424346],[0.00015466582],[0.00016650796],[0.00017154339],[0.00011696259],[5.7035195e-6],[-6.984356e-5],[-0.00021620118]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.03454988],[-4.80883],[-0.0003980326],[0.045162812],[2.7693284],[-0.12798071],[-5.1148744]],"dense_1_W":[[-0.021953972,-0.6909956,0.0017137715,0.075967655,0.19107713,-0.6735136,0.5936085,-0.059220172,-0.3937673,-0.08009787,0.19657694,-0.92206305,-0.40902787,0.80064285,0.36957166,0.41741195,-0.09949758,0.0328572],[-0.41551954,0.34888965,4.58918,-0.58479553,1.2140695,1.0730668,-0.80987257,1.7057942,1.8264681,0.5418806,-1.5800008,0.90441865,0.40738422,-0.9309175,-0.5846453,-1.1779749,-0.21697095,1.2636313],[-1.3167963,0.22196263,0.00087620446,0.11951662,0.23572233,0.98367923,-1.184788,-0.15921544,-0.17442104,-0.03715148,0.20377636,0.7771119,-0.31182548,-0.39967468,-0.30966496,0.10307021,-0.1549598,0.16605021],[0.016689815,0.62469226,5.6109867,0.25332543,0.017362839,0.066708766,-0.90982044,0.4760742,1.3472136,0.47811866,-1.0950692,0.7803302,0.23873158,-0.12769687,-1.0736917,-0.9507369,-0.3849879,0.9753211],[1.010975,0.48392332,2.3908904,-0.09404196,0.29996136,0.6191447,-0.33926985,0.94034505,0.6360225,0.15894395,-0.681273,0.48581445,-0.14646457,-0.5143217,-0.61096245,0.016869107,0.16057582,0.25225523],[1.2771941,-0.12252131,-0.0015340669,-0.18589194,-0.108365774,0.8503448,-0.28897393,-0.25453618,-0.109775856,-0.07973199,0.20226198,0.16910028,-0.13213143,-0.004498944,-0.079716355,0.31004015,0.1381526,-0.22449149],[-1.9269731,0.68068326,2.6605928,0.31519896,0.73409057,0.86063737,-1.4537466,1.1653538,0.65197283,0.33013284,-0.82076246,0.5808779,-0.16310015,-1.1616337,-0.56682473,-0.24635708,0.90833735,-0.1679019]],"activation":"σ"},{"dense_2_W":[[-0.19316064,0.20220636,0.1543245,0.56923085,-0.5256424,0.6484845,0.5277906],[0.58739203,0.02642884,-0.5941336,-0.06645716,-0.47577676,-0.6182639,0.22779459],[0.47835082,-0.13229278,-0.5625976,1.091255,1.0804834,1.1058354,0.12684019],[-1.1107054,-0.5791231,1.0741233,0.6597225,0.1555275,0.37428802,-0.07498665],[0.71273017,-0.030820772,-1.1579764,0.3962723,0.1522951,-0.62006533,-0.22865336],[-0.43192923,-1.3364362,0.49843183,1.4019581,1.2106336,0.93200284,-0.84781635],[0.33329925,-0.50564456,-0.025362682,0.08924529,-0.44918236,-0.18738124,-0.9237199],[0.74970734,0.2891013,-0.88326615,-0.37782103,-0.12960875,-0.46564922,0.253634],[-0.38317993,-0.049594685,0.62969357,-0.4982168,-0.8223472,-1.1548349,-0.9691452],[-0.509654,1.1230011,-0.095659316,-0.08150701,0.13044642,0.76143026,1.9938471],[-1.733176,0.57158726,0.43324548,-0.34991685,-0.22035135,0.76057756,-0.052056145],[0.975577,-0.4635662,-0.9864897,-0.0116866175,0.28406203,-0.43784142,0.101669684],[1.0218577,-0.020748869,-0.8567677,-0.03760161,-0.33631977,-0.11666814,-0.17231067]],"activation":"σ","dense_2_b":[[-0.34342867],[0.0511681],[0.14040104],[-0.18537521],[-0.013827617],[-0.11964682],[-0.0019164886],[0.05570073],[-0.22459657],[-0.46932775],[-0.59917027],[0.19691558],[0.12876545]]},{"dense_3_W":[[-0.20874692,-0.03773357,-0.22803174,0.17655598,-0.21538508,-0.22147778,-0.36320722,0.2394826,0.309721,-0.50003666,0.18370363,0.965146,0.6532681],[-0.68880624,0.089210816,-0.13193853,-0.09678856,0.26519805,0.21867493,0.03511478,0.21086489,0.13713072,-0.3630258,0.02014443,0.5465172,0.19587718],[0.2179609,-0.33041763,0.349815,0.50508064,-0.6743199,0.49183506,-0.36830014,-0.34079608,-0.62299275,0.13984378,0.3973101,-0.7238013,-0.31278804]],"activation":"identity","dense_3_b":[[0.019930799],[-0.07322117],[0.0665013]]},{"dense_4_W":[[-0.13234596,-0.36558858,1.5018625]],"dense_4_b":[[0.064201705]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018.json b/selfdrive/car/torque_data/lat_models/HONDA_ACCORD.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA ACCORD 2018.json rename to selfdrive/car/torque_data/lat_models/HONDA_ACCORD.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016.json b/selfdrive/car/torque_data/lat_models/HONDA_CIVIC.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CIVIC 2016.json rename to selfdrive/car/torque_data/lat_models/HONDA_CIVIC.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022.json b/selfdrive/car/torque_data/lat_models/HONDA_CIVIC_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CIVIC 2022.json rename to selfdrive/car/torque_data/lat_models/HONDA_CIVIC_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019.json b/selfdrive/car/torque_data/lat_models/HONDA_CIVIC_BOSCH.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CIVIC (BOSCH) 2019.json rename to selfdrive/car/torque_data/lat_models/HONDA_CIVIC_BOSCH.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CLARITY 2018.json b/selfdrive/car/torque_data/lat_models/HONDA_CLARITY.json similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CLARITY 2018.json rename to selfdrive/car/torque_data/lat_models/HONDA_CLARITY.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V 2017.json b/selfdrive/car/torque_data/lat_models/HONDA_CRV_5G.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CR-V 2017.json rename to selfdrive/car/torque_data/lat_models/HONDA_CRV_5G.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/HONDA_CRV_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA CR-V HYBRID 2019.json rename to selfdrive/car/torque_data/lat_models/HONDA_CRV_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA HRV 2019.json b/selfdrive/car/torque_data/lat_models/HONDA_HRV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA HRV 2019.json rename to selfdrive/car/torque_data/lat_models/HONDA_HRV.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018.json b/selfdrive/car/torque_data/lat_models/HONDA_ODYSSEY.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA ODYSSEY 2018.json rename to selfdrive/car/torque_data/lat_models/HONDA_ODYSSEY.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA PILOT 2017.json b/selfdrive/car/torque_data/lat_models/HONDA_PILOT.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA PILOT 2017.json rename to selfdrive/car/torque_data/lat_models/HONDA_PILOT.json diff --git a/selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017.json b/selfdrive/car/torque_data/lat_models/HONDA_RIDGELINE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HONDA RIDGELINE 2017.json rename to selfdrive/car/torque_data/lat_models/HONDA_RIDGELINE.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050 4CNDC106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050 4CNDC106'.json deleted file mode 100755 index 810d5b1684..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050 4CNDC106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.83634],[1.3114692],[0.61259305],[0.04069087],[1.3149719],[1.3138335],[1.3109658],[1.2883614],[1.2688274],[1.2462783],[1.2217312],[0.040413603],[0.040479485],[0.040545307],[0.040706556],[0.040736057],[0.04062868],[0.040408727]],"model_test_loss":0.004580862820148468,"input_size":18,"current_date_and_time":"2023-08-06_22-45-30","input_mean":[[20.29631],[-0.20027053],[0.014035869],[0.0016505374],[-0.20306659],[-0.20239536],[-0.20110086],[-0.1928657],[-0.18353474],[-0.171302],[-0.16113067],[0.0016583024],[0.0016512063],[0.0016456466],[0.001655548],[0.0016689815],[0.0017368481],[0.0018190349]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.326124],[0.2025785],[-0.098271556],[-3.9150567],[-0.034150004],[0.15999922],[0.15790012]],"dense_1_W":[[-1.299842,0.7154461,0.50361294,0.707755,-0.32854462,0.5378334,-0.2463958,0.55273217,-0.11124414,0.0818784,0.12354188,-0.2839917,-0.0078714555,-0.43367207,-0.06824078,-0.11825003,0.009444434,-0.050293162],[0.012949336,-0.29667792,0.020020511,0.20652233,0.07910441,-0.9396354,-0.07545959,0.2788547,-0.13547169,0.24944903,-0.3807775,-0.20812687,0.6074481,0.8033544,0.63277185,0.624231,0.2708898,-0.12817378],[0.007405703,0.3899947,0.011966838,-0.28451037,-0.41553152,0.5924629,-0.3221766,0.27565926,0.12245936,0.07997573,-0.18988231,0.25652406,0.0025251263,0.024572864,-0.1805577,-0.041730937,-0.09416745,0.114651345],[-1.314923,-0.8099221,-0.5021875,-0.65911645,0.3549381,-0.34351438,-0.018062847,-0.33712468,-0.083063975,0.118071266,-0.21253352,0.42918342,0.22217433,-0.006059381,0.07905543,0.071201935,0.08123039,0.03532524],[0.0059883036,0.633405,3.1777372,-0.35775912,-0.48683342,0.45391664,-0.12081466,-0.10396013,-0.058201157,0.02189144,-0.2272636,0.3546558,0.3708983,-0.53645164,0.015508216,0.0337646,-0.060697123,0.12773308],[0.016417185,-0.08919656,0.0043452727,1.0047843,-0.27470052,0.3708835,-0.5663267,-0.29918858,-0.1055758,-0.048055023,-0.0047955806,0.3848289,0.09456668,-0.1911486,0.38866982,0.40791333,0.34307832,-0.107040025],[0.012326768,-0.35066816,0.023062164,0.11834323,-0.49445873,-0.40111482,0.67107445,-0.17822216,0.012243669,-0.015511885,-0.075803205,-0.20342149,-0.04872656,0.1803967,0.067403704,-0.13901299,-0.016193623,0.10545096]],"activation":"σ"},{"dense_2_W":[[0.68674135,-0.6659134,0.5956395,0.12655623,-0.062817745,-0.12547888,-0.25941992],[-0.61886525,0.17155291,-0.22070692,0.7328443,-0.5755818,-0.34458303,-0.08562272],[0.20490937,0.091596,0.17527196,-0.46830234,0.45194998,0.086104736,0.026383685],[0.41048616,-0.27680868,0.8749343,-0.3792618,0.015523265,0.13319112,-0.39641076],[-0.21381493,0.5849179,-0.9504806,0.21972664,0.120829634,-0.519766,0.78654087],[-0.07081899,0.30812186,-0.042367518,0.22959028,-0.8620051,-0.47999159,-0.10604032],[0.48751,0.14033422,0.3791711,-0.9662732,0.42280945,0.42151052,-1.1193146],[-0.42666185,0.0900884,-0.7094497,0.8601399,-0.023163248,-0.6888624,0.7585005],[0.7715003,-0.54247683,0.024090352,0.24359225,0.11092992,-0.21225674,-0.42073125],[-0.74185073,-0.08530311,-0.13807726,-0.13045816,-0.23199996,-0.5793514,0.31687632],[-0.29189909,0.6799488,-0.71430886,0.044500347,0.031233395,-0.36464205,0.23336875],[0.0026518344,-0.35539848,-0.24951808,-0.15187661,0.06614357,-0.51367974,-0.53242975],[-0.083562754,-0.36494836,-0.62077016,-0.5867332,0.061696846,-0.87958634,0.12203935]],"activation":"σ","dense_2_b":[[-0.11182095],[0.019549185],[-0.06678602],[-0.016046902],[-0.09487844],[-0.09783255],[-0.21236032],[0.04908964],[-0.26582202],[-0.059639674],[-0.094594166],[-0.29934412],[-0.23795456]]},{"dense_3_W":[[-0.6317685,0.5268228,-0.15907462,-0.7917317,0.5163576,0.30266294,-0.2348481,0.6155206,-0.027430234,0.17797364,0.41818848,-0.036049694,-0.5178868],[-0.26872328,-0.39003056,-0.09896492,0.12855911,-0.55909926,-0.5083438,0.2223784,0.64059246,0.22532892,0.23159789,0.27662674,0.23292752,-0.30605522],[0.15627481,0.2843338,-0.08109648,-0.6148113,0.47045776,0.15507717,-0.22756813,0.17076828,-0.17303488,0.011014704,0.2036813,-0.018549033,0.5282868]],"activation":"identity","dense_3_b":[[-0.08994592],[0.018008003],[-0.09251441]]},{"dense_4_W":[[-0.9093955,0.009164481,-1.0056945]],"dense_4_b":[[0.08682442]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050x00 4CNDC106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050x00 4CNDC106'.json deleted file mode 100755 index e975ca93ad..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA050x00 4CNDC106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.59357],[1.477006],[0.56332403],[0.0488563],[1.4668952],[1.4705441],[1.4723984],[1.4532107],[1.4244952],[1.3764879],[1.322398],[0.048695624],[0.048735626],[0.048768714],[0.048758227],[0.048573222],[0.048228193],[0.04771695]],"model_test_loss":0.006445982027798891,"input_size":18,"current_date_and_time":"2023-08-06_23-11-36","input_mean":[[22.237236],[6.9949005e-5],[-0.011986303],[-0.00972222],[0.0063137817],[0.0058564004],[0.0051534283],[0.004587619],[0.0048142886],[0.005183529],[0.008339459],[-0.009665056],[-0.0096769305],[-0.009684455],[-0.009677782],[-0.009679327],[-0.009684613],[-0.0095741255]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.855301],[0.052071594],[-0.9259835],[-0.39606982],[-0.28288805],[2.4262483],[-0.34318432]],"dense_1_W":[[-0.43493858,-0.70013213,-0.31350356,-0.43949002,-0.598497,-0.5485545,0.4025656,-0.5401992,-0.018980056,-0.061278734,0.1137699,-0.25585833,0.4615678,0.1875789,0.30483955,-0.031047022,0.28664255,-0.0021283238],[0.16496778,0.69868094,2.0469344,-0.17368059,-1.1800704,-0.13566142,-0.42462012,0.23021017,0.65531075,0.49585822,-0.36106113,0.7175682,0.0027661566,-0.519457,-0.08598626,-0.26602933,0.166157,0.115440816],[0.7728235,-0.4924479,2.2911828,0.36538774,0.028460652,-0.89249814,0.8510172,0.028672855,0.31544507,-0.12564549,0.436127,-0.38716024,-0.22180186,0.23269372,0.10323456,0.09477643,-0.39314544,0.08314657],[1.5947833,0.21068165,-1.9855356,-0.33621395,-0.21167557,0.5248549,0.27686295,-0.20009576,-0.08829141,-0.38474026,-0.2801312,0.15994297,-0.16367479,0.23527442,0.0995661,0.087180234,0.0139048565,-0.01788154],[-0.1763247,-0.7516114,0.018385636,0.02481674,-0.13665949,-1.128679,0.63042605,0.19469936,0.008045146,0.17501755,-0.26599288,-0.36662114,0.17498758,-0.06488771,0.494955,-0.1309667,0.06411596,-0.025877746],[0.41982695,-0.89662635,-0.3100757,-0.18364146,-0.72511435,-0.31305894,0.42398736,-0.40684158,-0.09220529,-0.14246567,0.17467463,-0.16741924,0.34426558,0.06386407,0.064436376,0.07904302,0.37082943,-0.05846411],[-1.2621454,-0.40426448,0.008373463,-0.5806397,-0.37494826,0.25897807,-0.87750936,-0.34095204,-0.12761776,-0.22150302,0.18955815,0.19867262,0.21504422,0.07421347,0.14425631,-0.102518186,0.16319299,0.14805317]],"activation":"σ"},{"dense_2_W":[[-0.3315551,0.6894821,-0.077518575,-0.22825818,-0.15571377,-0.9379825,0.15222666],[-0.40593046,-0.07850631,0.2123167,-0.6120017,-0.32046098,0.25036517,-0.5017452],[1.6233888,-0.81733793,0.32388014,-0.49089634,0.5228173,0.27702752,-0.019065294],[-0.81814194,0.2933751,-0.43884784,0.24256489,-0.89946127,0.005718796,0.1616723],[-0.646881,0.11765002,0.020421116,-0.06024994,-0.7751037,-0.69670886,0.40203825],[-0.4584075,-0.29050452,-0.53295654,0.4170185,-0.4519702,-0.2822419,-0.35187477],[-0.6656979,-0.33147767,0.07978853,0.13856018,-0.66579354,-0.27202693,-0.45372754],[0.45943737,-0.61478317,0.09913581,-0.2357037,0.39553985,0.45948792,-0.12240596],[0.043193635,-0.08017425,0.03667257,-0.087842114,-0.8149818,-0.1100522,-0.41438082],[-0.37532488,0.7357754,0.1027241,-0.89521164,-0.2897733,-1.1208502,0.6037124],[-0.39368445,0.0629941,0.02851393,-0.046042874,-0.1590253,-0.016730668,-0.53213465],[0.31148022,-0.68707335,-0.06828221,-0.11472954,0.2530224,0.66532046,-0.10488325],[1.1789107,0.08234099,0.20439823,-0.51836455,0.7248978,0.5591445,-0.13914037]],"activation":"σ","dense_2_b":[[-0.11449777],[-0.1390032],[-0.37206075],[-0.01236088],[-0.04907102],[-0.05842376],[-0.15911177],[-0.19211829],[-0.11261235],[-0.15294583],[-0.13028015],[0.081644855],[-0.13006176]]},{"dense_3_W":[[-0.115885824,-0.47170904,0.5831736,-0.082577854,-0.31832224,-0.33083022,-0.11571216,0.19875251,-0.476999,0.02469458,-0.26611003,0.35896003,0.20480263],[0.2875189,-0.26662576,-0.2587217,0.49244243,-0.21378644,0.59825927,-0.085313775,-0.8429834,-0.09471229,0.7827554,0.05744314,0.1804075,-0.5764435],[-0.6480157,-0.07066631,0.13443626,-0.6231428,-0.4225046,-0.06471173,-0.16550478,-0.12601337,-0.10136987,-0.46307796,-0.026577879,0.6142914,0.4441342]],"activation":"identity","dense_3_b":[[0.06527926],[-0.009909654],[0.06479232]]},{"dense_4_W":[[-0.2580477,0.33718058,-1.1184793]],"dense_4_b":[[-0.062109288]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA070 4CNDC106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA070 4CNDC106'.json deleted file mode 100755 index e992f30792..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.06 56310AA070 4CNDC106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.869463],[0.5858021],[0.32688117],[0.02582744],[0.58848983],[0.58583117],[0.584275],[0.58906364],[0.59349614],[0.59887445],[0.610877],[0.025786323],[0.025794433],[0.025818141],[0.025857087],[0.02581527],[0.025688644],[0.025606968]],"model_test_loss":0.0014639738947153091,"input_size":18,"current_date_and_time":"2023-08-06_23-37-00","input_mean":[[26.716673],[-0.074982375],[0.043144263],[-0.0048145084],[-0.09424786],[-0.086935855],[-0.080987304],[-0.06796313],[-0.063149996],[-0.056549143],[-0.056314655],[-0.0047811475],[-0.0048097097],[-0.0048591294],[-0.0050809965],[-0.0051085255],[-0.005041358],[-0.0050054914]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.078991316],[0.3026068],[-0.25273243],[0.013439778],[0.37009302],[0.13664821],[-0.16456622]],"dense_1_W":[[-0.0030744555,-1.0954541,-0.03142538,-1.6753882,-0.12300866,0.79268783,-0.56524116,0.06749773,0.08401616,0.6239685,0.59483725,0.9908935,0.2398722,0.2553315,0.21238373,0.056749463,-0.23877978,0.30825418],[-0.8543499,0.46904665,0.6405476,0.6127007,0.2573736,0.18805248,0.36992317,-0.25051284,-0.08710556,-0.09765011,-0.5353191,0.2860888,-0.31374735,0.2946619,-0.7910126,-0.3691096,-0.79668784,-0.8112845],[0.004426532,-0.38074616,-2.8285646,0.8732835,0.24752633,-0.13101755,0.24333438,-0.19012967,-0.750537,0.4089185,0.44140428,-0.6625775,-0.22507015,-0.15794866,0.21373549,0.1863199,-0.16652858,-0.13657795],[-0.00061952876,0.20687495,-0.031221379,0.15000737,0.057221938,-0.414117,0.08427917,0.028406061,-0.3196398,-0.16508502,0.2385029,0.21718143,0.20419118,-0.23100859,-0.07353892,-0.30362707,-0.14411929,0.2562531],[0.75676596,0.7595603,0.5913131,1.2620265,0.06014515,-0.35853025,0.65820545,-0.26407003,0.24967487,-0.14225705,-0.6774673,-0.34284183,0.23795949,-0.122109324,-0.8345771,-0.65687364,-0.34826776,-0.9373063],[0.015336452,0.8013101,0.25717196,-0.2589111,-0.070080526,-0.015039927,-0.18020448,0.43581685,-0.23000908,-0.49613452,-0.006530597,0.5405513,0.14728923,0.15658382,-0.35035008,-0.57975715,-0.4771852,0.07149061],[-0.0016935252,0.004342065,0.007302239,0.34465888,-0.025569389,0.35721523,0.01775156,-0.2676134,0.13569762,0.04341658,0.00885,-0.121513374,-0.008711255,-0.3805635,0.1356443,0.13222197,-0.06938037,-0.13515687]],"activation":"σ"},{"dense_2_W":[[-0.35044748,0.75662565,0.15265507,0.7413438,-0.4943425,-0.7841103,-0.4461334],[0.5878455,-0.53052,0.46835116,-0.15082686,0.21561971,-0.30972666,0.28406903],[0.20365499,0.4938969,-0.37405172,0.36490002,0.35413012,-0.9276364,-1.271868],[0.15956812,-0.38227826,-0.34810027,-0.014073657,-0.17678988,-0.24762544,-0.8106593],[0.22776775,0.13553928,-0.2668433,-0.55416316,0.092818014,-0.066418946,0.45135185],[-0.379788,0.040577516,-0.18843734,0.21656789,0.1811508,-0.56766593,-0.465205],[-0.23584001,0.24342734,-0.08911726,0.93044406,0.47716722,-0.79287815,-0.7560821],[-0.08083705,0.20666538,0.38358647,0.16494158,0.17152569,-0.5743303,-0.84767425],[0.024201993,0.40508404,-0.452589,-0.14900035,-0.33940226,0.47047055,0.12949952],[0.0010686722,0.10515713,0.31118774,0.42902952,-0.27714232,-0.8179147,-0.23361693],[-0.20535007,-0.012914676,-0.24386998,-0.32201836,0.07650227,0.40637252,0.18290128],[0.46828738,0.15236787,-0.09334366,0.13351235,-0.347683,-0.4621099,0.34972924],[0.11132558,-0.08493177,0.22236344,-0.5575323,-0.43925527,0.57304513,0.71222407]],"activation":"σ","dense_2_b":[[-0.033294365],[-0.02055917],[-0.012818121],[-0.15711962],[-0.008688181],[0.054913495],[0.07755708],[-0.019581897],[-0.043765243],[-0.053016193],[-0.26712343],[-0.07999009],[-0.05613337]]},{"dense_3_W":[[0.696178,-0.5648311,0.6407045,0.19891022,-0.50313693,0.40486115,0.22351098,0.5828681,-0.601358,0.35544997,0.2282452,-0.27341864,-0.26009113],[-0.3853707,0.18478364,-0.5145561,0.32450193,0.5612143,-0.056345817,-0.28207055,-0.359446,0.550403,-0.423757,-0.0041745333,0.059421163,0.12554394],[-0.25317714,0.23387927,-0.35460812,0.067600355,-0.37119082,0.52048504,0.7020422,0.29556522,-0.58882946,0.039621986,-0.4467602,0.32936186,-0.4934978]],"activation":"identity","dense_3_b":[[-0.03463644],[0.016086485],[-0.025971314]]},{"dense_4_W":[[-0.73397875,0.10442852,-0.5272976]],"dense_4_b":[[0.033531036]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 56310AA050x00 4CNDC107'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 56310AA050x00 4CNDC107'.json deleted file mode 100755 index 2124ae9ec3..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 56310AA050x00 4CNDC107'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8824434],[0.71507746],[0.40526694],[0.027533442],[0.70021],[0.70435107],[0.70917654],[0.72280884],[0.7279133],[0.72587556],[0.71601045],[0.027381662],[0.027431164],[0.027479855],[0.027565915],[0.027533367],[0.027572744],[0.027474292]],"model_test_loss":0.0026778955943882465,"input_size":18,"current_date_and_time":"2023-08-07_00-25-13","input_mean":[[23.297268],[-0.03233586],[0.0028342474],[-0.0057605663],[-0.032880228],[-0.032776646],[-0.032454334],[-0.032823607],[-0.034516074],[-0.031360645],[-0.0298374],[-0.0057719713],[-0.0057596182],[-0.005749741],[-0.005749389],[-0.005687085],[-0.005583106],[-0.005525541]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.5215416],[-0.57060343],[-0.10824382],[0.24978213],[1.0079527],[0.3802316],[0.889446]],"dense_1_W":[[-0.26616007,0.32819784,0.00067071285,-0.17974856,-0.27740893,0.317025,-0.06948472,-0.059453495,0.011850398,0.09067377,-0.06956775,-0.018317414,0.17877837,-0.18234687,0.09975633,-0.06088335,0.67421824,-0.501803],[-0.2902224,0.03435688,-0.0007335937,0.096210994,0.12977274,-0.5014846,0.12585396,0.19064707,-0.33947954,0.09289936,0.0021525132,-0.5650862,0.1586393,0.24856442,5.5656827e-5,-0.16046683,0.47567898,-0.26273644],[0.004148071,-0.20369966,0.0006762518,-0.12915482,0.31135672,-0.40276182,-0.023599507,-0.048985712,0.14804183,-0.27225778,0.13084674,-0.2682165,0.079972215,0.3869157,0.16938664,-0.06664921,0.18059294,-0.10463955],[-0.042720374,-0.44797078,0.106441885,-0.23366769,0.3137181,0.46343398,0.44943058,0.6756963,0.63177943,0.18888515,0.6256494,-0.64797264,-0.7504678,-0.021724926,-1.2981596,-0.49731153,-0.041930113,-0.5024712],[0.93396103,0.0685933,-2.0326483,-0.108520836,-0.112476364,-0.18603157,0.4607162,0.0659317,-0.21982923,0.030069323,-0.005501312,-0.19012018,0.0807506,-0.08516471,0.017757716,0.59362125,0.06101577,-0.30881],[-0.039777555,0.6639411,0.10703323,-0.17111959,0.74993485,0.4655031,-0.24367447,-0.091623016,0.21031639,0.5017018,0.9008939,-0.2138174,-1.124537,-0.841201,-0.6622513,-0.45340645,-0.6225992,-0.35385105],[0.652006,0.12817843,1.9792969,0.122777954,-0.5505552,0.32176024,-0.59021205,0.6974296,0.23109314,-0.08562345,-0.243364,0.04599025,0.48566473,-0.2583534,-0.23012485,-0.47488052,-0.08368516,0.34066808]],"activation":"σ"},{"dense_2_W":[[1.3105916,-0.9507534,0.12762353,-0.48912024,-0.82522184,-0.28377983,0.09846663],[0.6104658,-0.36417446,-1.0213474,-0.0030217022,-0.5582867,0.26822597,0.1030378],[-0.2444796,0.6386674,0.64500415,-0.32919264,-0.2632627,-0.2914869,-0.41501835],[-0.17211501,0.72615033,0.8057921,-0.3012537,-0.06894025,-0.6685643,0.12407082],[1.0545709,-0.7296641,-0.7836252,-0.5428908,0.31110647,0.5414368,0.78908324],[-1.0883812,0.45824885,0.30062124,0.6135413,-0.5220157,-0.2808084,-0.65922874],[-0.45479217,0.72624725,0.80973893,0.16011865,0.14399557,-0.057426546,0.4549376],[0.26526257,-0.9891332,-0.5146369,0.21206275,-0.1548442,-0.29759446,-0.63057125],[-0.89195234,0.7344573,0.13697046,0.1335858,-0.3111978,-0.10358053,-0.5817338],[0.35159203,-0.53573203,-0.37090668,-0.07636804,-0.7223272,0.34780052,0.25976828],[1.4417952,-0.9369937,-0.5165861,-0.5886849,0.27827945,-0.17774494,0.33352372],[-0.83197176,0.056716688,0.3176061,-0.0045141433,0.40866536,-0.42308146,0.32042512],[0.21989709,-0.18666251,-0.56908923,-0.5630903,-0.44349894,0.4591227,0.2543278]],"activation":"σ","dense_2_b":[[0.13017428],[-0.26941714],[-0.088276364],[-0.046999395],[0.4457564],[-0.06871929],[-0.10337065],[-0.22012532],[-0.08198058],[-0.033206128],[0.10756691],[-0.02121439],[-0.059810642]]},{"dense_3_W":[[-0.10640557,0.06776593,0.32191923,-0.28953195,0.026864873,0.2731794,0.16903114,0.44673413,0.48168063,-0.3712548,0.23447442,0.29575455,-0.1468495],[0.66085047,-0.27319327,0.2644553,-0.5318593,0.7203917,-0.34130642,-0.5875807,-0.46950552,-0.6058821,0.41351122,-0.006779633,-0.31155804,0.5298571],[-0.29553437,-0.58076066,0.52323264,0.45213857,-0.16277957,0.25945267,0.4144006,-0.66534394,0.22506356,-0.63662976,-0.7497482,0.07323068,0.024176065]],"activation":"identity","dense_3_b":[[-0.034318473],[-0.04050105],[0.079460956]]},{"dense_4_W":[[-0.04219099,0.38754243,-0.83605766]],"dense_4_b":[[-0.053366307]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 x00x00x00x00x00x00x00x00x00x00x00 4CNDC107'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 x00x00x00x00x00x00x00x00x00x00x00 4CNDC107'.json deleted file mode 100755 index 2dbdb89f2e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021 b'xf1x00CN7 MDPS C 1.00 1.07 x00x00x00x00x00x00x00x00x00x00x00 4CNDC107'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3239555],[1.2216686],[0.56163263],[0.040356442],[1.2047082],[1.2095532],[1.2141893],[1.2243134],[1.227764],[1.2343445],[1.2368515],[0.040138606],[0.04019667],[0.040256687],[0.040477395],[0.040625844],[0.040658556],[0.04046674]],"model_test_loss":0.003521745325997472,"input_size":18,"current_date_and_time":"2023-08-07_00-49-58","input_mean":[[24.67693],[-0.04921823],[0.0012857419],[0.0007996762],[-0.04480579],[-0.04406795],[-0.043653794],[-0.043152645],[-0.0432289],[-0.046706084],[-0.050676387],[0.0009143127],[0.0009410887],[0.00097576616],[0.0010559426],[0.0011112413],[0.0010468352],[0.0010160342]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.49570504],[1.3210211],[2.6898615],[-0.02208882],[-0.09377371],[-2.7531927],[0.006006821]],"dense_1_W":[[0.15420651,0.23067516,0.11304303,0.013207053,-0.28895557,0.4683098,-0.20896511,0.015550693,0.122526914,-0.109381676,0.07471001,-0.13962431,0.2163086,0.028139457,-0.44415337,0.0053714034,0.042319868,0.042410903],[0.50394976,-0.23329197,-0.15899694,-0.12280355,0.14703913,-0.48161858,0.69567484,-0.34582955,-0.36040807,-0.004507536,0.14408033,0.1836344,0.11809705,0.32179466,-0.16438203,-0.31062344,0.1120704,0.18364586],[0.49820933,-0.26314422,-0.26272264,-0.22503936,-0.12580016,-0.47477996,0.33671036,-0.34708446,-0.31003487,0.25983158,-0.15030581,0.091946304,0.03323872,0.34110484,0.39555183,-0.2991158,-0.2320138,0.28421888],[0.01583395,1.1208205,3.865706,-0.44494992,-0.5262589,0.31796062,-0.81724226,0.43527883,0.4510549,-0.08255983,-0.6121285,0.9358581,-0.0058640586,-0.34025922,-0.21380498,-0.23998466,0.11081464,-0.20770882],[-0.0034587705,0.21727203,-0.007030041,0.011187133,0.24777392,0.7926248,-0.55883515,-0.28467444,-0.32108763,0.23630463,0.122614495,0.5811709,0.06195977,-0.31027994,-0.46347076,0.063689135,-0.34609768,0.3360888],[-0.5817377,-0.59925795,-0.2828089,0.12346245,-0.023504892,-0.43106267,0.37201306,-0.25494003,-0.04706249,-0.23423873,0.07503895,-0.08940586,-0.017763922,0.51661766,0.123237476,-0.40396547,-0.06934791,0.2436692],[-0.00840452,0.30712155,-0.2591553,-0.13306698,-0.66947764,0.38101527,-0.18025695,0.18304327,0.42003196,-0.19946226,-0.31748682,0.37292734,0.12961847,-0.26775375,0.4295266,-0.30892614,0.2832681,-0.0377284]],"activation":"σ"},{"dense_2_W":[[-0.7306887,-0.3954964,0.39146426,-0.29959947,-0.47128507,0.3531377,-0.334773],[-0.20252958,0.19992398,-0.33168688,-0.44316828,-0.403189,0.8955503,0.049495354],[-0.5052344,0.2230648,0.7528356,-0.11088759,-0.22496831,0.6596836,-0.5600461],[0.7656071,-0.48874223,-0.57206357,-0.23170787,-0.06306857,-0.43644294,0.34748504],[0.1213388,0.25739238,-0.41398072,0.06884506,0.82274115,-0.41439316,-0.13129346],[-0.66222745,-0.39265332,0.34125367,-0.5192327,-0.01774378,0.07983937,-0.5983968],[0.05495612,0.7774879,0.5478655,-0.4151472,-0.3105426,0.10111106,-0.31487244],[0.20206158,-0.57719696,-0.76630634,-0.8810195,-0.77503985,0.31274256,-0.30636895],[0.6253499,0.25690252,-0.74118155,0.46701622,0.42273006,-0.3957298,-0.3012005],[-0.020889444,0.19570331,0.09289772,0.13839301,-0.5962096,0.24448077,-0.4408785],[0.38479564,-0.4298671,-0.22112085,0.36361158,-0.18309206,-0.19321738,0.38277677],[0.6633294,-0.20508423,0.10870525,-0.35996673,0.8237321,-0.77270275,0.51027477],[-0.03977624,0.15964952,0.7697739,0.24770993,-0.8757424,0.37308407,-0.7050307]],"activation":"σ","dense_2_b":[[-0.092581324],[-0.1461753],[-0.054165266],[0.06442791],[-0.00013360326],[-0.11788689],[0.06482655],[-0.25213814],[-0.059510298],[-0.23111191],[-0.030306052],[-0.00994865],[-0.10923587]]},{"dense_3_W":[[0.26818967,-0.13706638,-0.016091619,0.60452354,0.23608918,-0.5172543,-0.46327448,0.18274918,0.674987,0.38215277,-0.19895244,0.44653496,-0.5346905],[-0.592465,-0.39396238,-0.6349639,0.1223753,0.6926395,-0.30194458,-0.54252756,-0.0013925297,0.51748616,-0.26460662,0.20391932,0.058503315,0.03102843],[0.5844198,0.15142864,0.5510742,-0.54181045,-0.11530869,-0.38452375,0.34452912,0.33701643,0.21574911,0.43324685,-0.42422894,-0.22249535,0.19921371]],"activation":"identity","dense_3_b":[[0.043458235],[0.064931095],[-0.06555825]]},{"dense_4_W":[[0.75090593,0.62048215,-0.7586382]],"dense_4_b":[[0.054481287]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.02 56310BY050 4CNHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.02 56310BY050 4CNHC102'.json deleted file mode 100755 index ca102af60e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.02 56310BY050 4CNHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.952709],[1.1003942],[0.47154436],[0.03557234],[1.0985221],[1.100109],[1.1007283],[1.0919963],[1.0812235],[1.0604604],[1.0346675],[0.035514425],[0.035544988],[0.035569686],[0.03549034],[0.035385482],[0.035147294],[0.034815073]],"model_test_loss":0.004957424011081457,"input_size":18,"current_date_and_time":"2023-08-07_01-40-53","input_mean":[[24.884089],[-0.016909879],[0.012826358],[-0.026510358],[-0.019373143],[-0.018562341],[-0.01784492],[-0.013357136],[-0.008858641],[-0.0046453234],[-0.0011935525],[-0.026596593],[-0.026568031],[-0.026541922],[-0.026392153],[-0.026309952],[-0.02631445],[-0.02632764]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.4760303],[-0.18308954],[-2.167727],[-0.417148],[-0.013595293],[2.8997235],[0.019984849]],"dense_1_W":[[2.096428,0.04293517,-0.055048794,-0.46484697,-0.35501856,0.42526284,-0.45293817,0.22161071,-0.635065,0.12139629,0.0034814414,0.5435328,0.020969981,-0.072267376,-0.08442676,-0.28275377,0.42481178,-0.0931807],[0.03543624,-0.6877385,-3.3156288,-0.10774069,0.90167654,-0.23635304,0.26507783,0.22863936,-0.51606226,-0.7042943,1.0019395,-0.19395043,0.54403013,-0.22361496,-0.0723612,0.024753883,0.21771601,-0.058525223],[-0.2608231,0.1017871,0.077472344,0.2912071,0.06507552,0.55804306,0.16650774,-0.20267099,0.31049293,0.34334332,-0.22618186,0.56663543,-0.40060464,-0.41012672,-0.46737882,0.41070658,-0.19341056,0.07924895],[-2.1272566,-0.26860842,-0.056874078,0.028759755,-0.117427334,0.6830661,-0.49746,-0.15804365,-0.597628,0.20925169,0.075665824,0.06611037,0.1801026,-0.04828015,-0.060966395,-0.237039,-0.07277843,0.1432378],[-0.012815778,-0.123973764,-0.14136693,0.3905719,0.11651388,0.14950705,0.09933541,-0.7976692,-0.060879573,0.2617282,0.19549161,-0.40608075,-0.12369088,0.50207996,-0.102547385,-0.44343522,0.08439864,0.0862764],[0.31134474,0.71243083,0.095208526,0.27090108,0.3364311,0.3387401,-0.6072888,0.26359472,0.51003397,-0.03195535,-0.1718143,0.122315615,0.08455601,-0.29650295,-0.45320752,0.15260614,-0.14674625,0.12800558],[-0.013968377,-0.26977414,0.052489035,-0.20114611,-0.16536346,-0.5467719,0.34399673,0.33305255,-0.11911299,-0.012991744,-0.2281494,-0.38340676,0.2801909,0.06072155,0.11670941,0.27231306,0.056253888,-0.20349257]],"activation":"σ"},{"dense_2_W":[[0.25041997,0.10206583,0.715677,0.18107271,-0.95661914,-0.17999575,-1.1160771],[0.18456584,0.117620505,0.6509535,0.23106942,-0.979118,0.9328957,-0.4987036],[1.0633037,-0.7188896,0.55112547,0.08787729,-0.6966662,1.2828107,-0.46829444],[0.26642972,-1.0333931,2.0355246,1.8633006,-1.7384061,-0.27828768,-1.8381956],[0.22363526,-0.08106195,0.26395926,-0.62673736,-0.12962806,-0.7491592,0.7798321],[-0.09318676,-0.4941464,-0.38996404,0.26097637,0.17723922,-0.5002643,0.8469415],[-0.32657585,0.23485117,-0.6398364,-0.10261886,0.57225746,-0.9840285,0.23459736],[-0.6653256,0.20312071,-0.052869216,-0.010713486,-0.021094337,-0.53480285,0.46862552],[0.19337021,0.5902509,-0.45771724,-0.40887538,0.65314317,0.2744537,0.36075133],[-0.09122067,-0.13116741,-0.72494227,-0.5763938,0.48517498,-0.15608339,0.7322048],[1.1417534,-0.78113425,0.78245425,0.040167056,-0.5890334,1.335385,-0.67876405],[-0.39274675,0.036710966,-0.059761982,-0.35286152,-0.02719329,-0.27672735,-0.50070906],[0.02223952,-0.45935592,0.25860146,-0.30429536,-0.16111197,-0.3231146,0.62293917]],"activation":"σ","dense_2_b":[[-0.04028944],[-0.028142564],[0.078946814],[-0.46476564],[-0.0035999476],[0.030332983],[-0.25515258],[-0.018076524],[-0.026729377],[0.031496003],[0.08078611],[-0.27224502],[-0.045907073]]},{"dense_3_W":[[0.4620854,-0.02418078,0.7011184,0.020806301,-0.27951247,-0.5371555,0.116979554,-0.30603725,-0.18933018,-0.40903252,0.6753726,0.568753,-0.4310432],[-0.54020286,-0.041412946,-0.24306548,-0.61936015,-0.05605574,0.15100999,-0.07693919,0.16520485,-0.05813703,0.47304806,-0.64346826,0.19271328,-0.038352612],[-0.33212858,-0.55580896,-0.67064255,-0.3418983,0.586469,0.21342045,0.7920437,0.2883454,0.4300167,0.6901999,0.34964025,0.1846654,0.04058318]],"activation":"identity","dense_3_b":[[-0.059763335],[0.079902194],[0.035987742]]},{"dense_4_W":[[0.39221895,-0.7381316,-0.6760117]],"dense_4_b":[[-0.046233788]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050 4CNHC103'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050 4CNHC103'.json deleted file mode 100755 index 6494d76e93..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050 4CNHC103'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.5466146],[0.80981266],[0.4014232],[0.035715338],[0.808276],[0.80946004],[0.8099587],[0.8003049],[0.79292077],[0.7788614],[0.7569955],[0.035431836],[0.03552915],[0.035616748],[0.035825603],[0.035789166],[0.035539445],[0.035157643]],"model_test_loss":0.0024959088768810034,"input_size":18,"current_date_and_time":"2023-08-07_02-05-51","input_mean":[[20.843248],[-0.067527235],[0.00015006482],[-0.012940521],[-0.06860682],[-0.06791663],[-0.06730508],[-0.06773257],[-0.066599436],[-0.0642261],[-0.06246489],[-0.012981559],[-0.012971355],[-0.012961813],[-0.013026318],[-0.013139244],[-0.013358213],[-0.013696734]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.36959708],[-0.3927159],[0.015337716],[-2.6280007],[0.013323148],[-2.6784072],[0.012876663]],"dense_1_W":[[0.00441593,-0.28445426,0.12868425,-0.06594001,0.643517,-0.26863223,0.23516199,0.0933076,-0.54322356,-0.13129324,0.22534953,0.15129176,-0.13127483,0.19987836,-0.39554223,-0.0589629,-0.49924454,-0.28881076],[0.39027417,0.15401302,-0.056920696,-0.47890553,-0.3300009,-0.48306167,0.5828366,-0.065358765,0.11067453,-0.19332197,0.08158799,-0.13183025,0.08212273,0.34178394,0.30528525,-0.046424016,0.45213524,0.049064413],[-0.0018742161,1.0021389,3.8293767,-0.20225114,-0.7356092,0.38675764,-0.6186065,0.1530118,-0.19326465,-0.16745023,-0.09147689,0.3500271,0.28329384,-0.3719793,-0.11645031,0.012525024,-0.15232189,0.16442363],[-0.37709048,-0.18989839,-0.39395905,0.45258853,-0.27445865,-1.0695606,0.52972853,-0.24389778,0.18883058,-0.3289555,0.026898181,-0.4512817,-0.012726739,0.24032715,0.039549112,-0.15741278,0.23836505,-0.22582999],[0.0026869208,0.5816565,0.0047081015,0.33716485,-0.43749458,-0.90179884,0.090872325,-0.18876752,0.28434423,0.30354127,-0.45683673,-0.0043129507,-0.15474738,-0.12864216,0.33334208,-0.37975344,-0.17868224,0.17245947],[-0.37269658,0.056210883,0.39117196,-0.20178121,0.48395464,0.6668031,-0.19134971,0.05924893,0.20031299,-0.051123295,0.11479842,0.3327035,0.406696,-0.60037625,-0.55025846,0.3823001,0.067088164,0.03777696],[0.28842884,0.27748382,0.055223227,0.24982269,-0.25035748,0.6999531,-0.5086199,-0.16066559,0.18782836,-0.009960592,-0.09571262,0.5652131,-0.20471764,-0.25930697,-0.46783432,-0.36040586,-0.04924343,-0.036189865]],"activation":"σ"},{"dense_2_W":[[0.4325747,0.05352207,-0.019636882,0.23707733,0.51061547,-0.4637862,-0.40100852],[0.20493814,-0.20983218,-0.4001346,-0.008143373,0.2476857,-0.037123583,-0.67152816],[-0.38300198,-0.5133637,0.054119077,-0.6279624,-0.49244288,0.6256476,0.7907053],[0.19233866,0.08520638,0.08706983,-1.0209559,-0.61933124,0.5403933,0.96377575],[-0.5673173,-0.8495875,0.35421842,-0.16951926,-0.36651966,0.16976853,0.0146132065],[-0.11585242,0.6740597,-0.41580456,-0.12795658,-0.036778353,-0.3175067,0.04743779],[-0.07734896,-0.36116868,-0.13891894,0.13353403,-0.17158407,0.18492623,0.215829],[-0.079607025,-0.0628624,-0.40307927,-0.6614631,0.25177357,0.37012863,-0.057130966],[-0.39253744,-0.11905358,-0.0998102,0.14498588,0.031866945,0.4783852,-0.27589342],[-0.46258968,-0.5466553,0.5868711,-0.5633951,-0.14532568,0.22600377,1.0318995],[0.11289376,-0.40194705,0.4572626,0.7012955,-0.27434063,-0.30249357,0.39138433],[0.0068481546,0.33485183,-0.21508186,-0.07030695,-0.10074153,-0.07031553,0.2075642],[0.19613013,0.27113703,-0.25391266,-0.21612066,0.19921905,-0.14536792,-0.3427696]],"activation":"σ","dense_2_b":[[-0.012001398],[-0.02212474],[0.14096059],[0.041697618],[-0.008908936],[0.047332846],[-0.009194286],[-0.039932724],[-0.043813754],[0.036821954],[-0.0014258353],[0.00875199],[0.015467969]]},{"dense_3_W":[[0.32098088,-0.32571092,-0.6606648,-0.15589207,-0.29422677,-0.11235969,0.27968746,-0.4088068,0.46579373,-0.32524452,-0.25602353,-0.074144796,0.4581445],[0.2711465,0.4530056,0.31585717,0.165996,0.09512367,0.54065865,-0.5712976,0.093997784,0.22095615,-0.3393496,0.04974402,0.16312775,0.20385568],[0.6250006,0.51413673,-0.7039048,-0.40498862,-0.30975106,0.5319801,-0.030333402,-0.34835565,-0.48519892,-0.087083556,0.5168309,0.3949118,0.14679015]],"activation":"identity","dense_3_b":[[0.029179294],[2.9370978e-5],[0.024199445]]},{"dense_4_W":[[-0.8672829,-0.09036683,-0.9275841]],"dense_4_b":[[-0.027475327]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050x00 4CNHC103'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050x00 4CNHC103'.json deleted file mode 100755 index d347614e8c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.03 56310BY050x00 4CNHC103'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.490675],[1.1291032],[0.58252037],[0.039405],[1.1280589],[1.1279522],[1.1269643],[1.1124369],[1.1045281],[1.0925866],[1.0763438],[0.039314747],[0.039330542],[0.039342582],[0.039305937],[0.039206024],[0.038994968],[0.03869199]],"model_test_loss":0.005967735778540373,"input_size":18,"current_date_and_time":"2023-08-07_02-32-21","input_mean":[[22.534412],[-0.032263618],[-0.0037575949],[-0.0020172608],[-0.032352883],[-0.032752782],[-0.032883693],[-0.034339994],[-0.03540198],[-0.038307104],[-0.037811134],[-0.0020329459],[-0.0019997917],[-0.0019778514],[-0.0019503924],[-0.001969454],[-0.0020386311],[-0.0020115753]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.476557],[-0.68177766],[-1.4334949],[0.9746544],[-1.3537669],[-0.16913444],[1.5312378]],"dense_1_W":[[-1.4674118,-0.24609241,-0.017173812,-0.1921773,-0.33003026,-0.7032546,0.8222835,0.45996,0.033816524,0.1080052,-0.2516134,0.101496324,0.052959982,0.008949171,0.2056011,-0.13730909,-0.070785694,0.091235936],[-0.15725255,-1.8879077,-3.1574435,-0.026291944,0.91971624,0.7033072,0.87052536,0.5834137,-1.1149441,-1.1206936,0.80906874,-0.29204804,-0.66741747,0.41703406,0.6053606,-0.0012035158,0.24638794,-0.3302526],[-0.6278058,-0.38527206,-0.31773865,-0.08035399,0.022208743,-1.0113361,0.106477626,-0.0055144937,-0.11381203,0.112506695,-0.0055704513,0.38441408,-0.06360585,-0.008369453,0.008495975,-0.45555764,0.25611266,0.114160754],[1.2448323,0.124219336,0.3851474,0.1306329,0.17512998,0.5563543,0.33161706,0.5850413,-0.12428443,-0.16596517,0.01010055,-0.5043342,0.37030837,0.16615497,-0.36301187,0.0164275,0.034172643,-0.044182498],[-1.5838906,0.20879757,-0.015540314,-0.18438894,-0.05623706,-0.16800252,0.08689027,-0.24974507,0.009985618,-0.004396259,0.034236554,0.11091792,0.11175782,-0.080768205,-0.24925712,0.37246683,-0.022103941,-0.048722908],[0.056122262,0.2864052,-0.05922396,-0.15394859,0.2536335,-0.6977994,0.12732469,-0.56870854,0.11164165,-0.16432123,0.20823452,-0.35387105,0.1299614,0.02070388,0.43777424,0.29617321,-0.0202072,-0.2295211],[0.29040423,-0.44746503,-0.37836528,-0.5874443,-0.40612307,-0.81674665,0.2653388,-0.074799396,-0.13337858,0.16270955,-0.046827342,0.16102041,-0.042110663,0.68649536,0.16037555,-0.6455673,0.2862756,0.15030107]],"activation":"σ"},{"dense_2_W":[[0.88346493,-0.88215524,-0.714372,-1.4153144,1.6741431,-0.96062607,-2.4220207],[-1.0811888,0.7783481,-0.61303014,0.08742927,-0.32858953,-1.0313102,-0.14017701],[-0.83909744,-0.51418436,-0.34867173,-0.40438738,0.38744128,-0.9341407,0.5689156],[1.2234789,0.4505039,0.883525,-0.9082529,-0.45139286,-0.037596144,-0.4650941],[0.28187194,-0.01952515,0.6481759,0.5426486,-0.35617682,0.15431538,0.9969678],[0.9743034,-0.5146453,0.46463448,0.4160945,0.36689076,1.08357,0.15814787],[0.98991585,-2.347642,0.09153862,-1.1622584,0.11513134,-0.03356802,-0.5818536],[0.22896764,0.23242263,0.2844799,0.4641689,-0.3848538,0.4694864,0.82048494],[0.5654004,-0.40305212,0.9788426,-0.47530088,0.11026323,0.9248025,-0.09487986],[-0.66444695,0.07370127,-0.9244193,0.23670202,0.02346553,-0.8573719,0.1414936],[-1.7262199,0.06688502,-0.24180819,-0.55838716,-0.031299785,-1.0274018,0.274008],[0.29235423,-0.4138396,-0.8648773,-1.1904085,1.2492888,-0.97297734,-1.8818952],[-0.6758243,0.089520454,-1.1900347,-1.3192135,0.22304952,-0.4525044,-0.4759342]],"activation":"σ","dense_2_b":[[-0.028017305],[-0.061963774],[0.20414406],[-0.6334071],[-0.03253269],[-0.25242165],[-0.16586097],[-0.124249145],[-0.3108962],[0.24476607],[0.23445076],[-0.09690479],[0.23614454]]},{"dense_3_W":[[0.012833234,-0.3479158,-0.5259433,0.17710736,0.40674126,0.61857796,-0.07993461,0.4996034,0.12137744,-0.7061775,-0.7857778,-0.22047266,-0.6328669],[1.1566063,0.04082107,0.8082871,-0.7832778,-0.23352258,-0.6495986,0.6835129,-0.091181114,-0.3048599,0.7264398,0.43395072,0.89236176,0.31225243],[-0.80061877,-0.6287943,-0.4909107,0.12166274,0.54646,0.12600482,-0.28478548,0.48107162,0.044651717,-0.007296607,-0.81748486,-0.8812352,-0.6868977]],"activation":"identity","dense_3_b":[[-0.050449766],[-0.01878802],[0.12566388]]},{"dense_4_W":[[-0.20012462,0.9402982,-0.45523268]],"dense_4_b":[[-0.0072831307]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.04 56310BY050x00 4CNHC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.04 56310BY050x00 4CNHC104'.json deleted file mode 100755 index 118eb1cf3e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021 b'xf1x00CN7 MDPS C 1.00 1.04 56310BY050x00 4CNHC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.336879],[1.3154227],[0.59994406],[0.036185816],[1.3162037],[1.3162056],[1.3148344],[1.2966222],[1.275338],[1.2474067],[1.2149154],[0.036175884],[0.036184948],[0.036186848],[0.03609507],[0.03606698],[0.03593411],[0.03568829]],"model_test_loss":0.004663573112338781,"input_size":18,"current_date_and_time":"2023-08-07_02-57-17","input_mean":[[20.966389],[-0.1988315],[0.007915254],[-0.0028921724],[-0.19796984],[-0.19835053],[-0.19851768],[-0.19411317],[-0.18918088],[-0.1827134],[-0.17358756],[-0.0029098932],[-0.0029171635],[-0.0029238905],[-0.0029175677],[-0.0029673595],[-0.0030402362],[-0.0030292866]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.50860286],[-1.1555929],[0.23071012],[-0.1957657],[-1.2921786],[-0.5563927],[0.019920422]],"dense_1_W":[[0.39047584,-0.47947386,-0.005918953,0.2007276,0.044099685,0.15533815,-0.040589128,-0.2630327,0.0071245213,0.061105832,0.04366077,0.1350462,-0.1124703,0.12785473,-0.04178164,-0.44747785,0.0028341468,0.23350663],[-0.34462857,-0.5556194,0.0146421995,0.0050324253,0.1526045,-0.52050006,0.40116233,-0.29075962,0.1761436,-0.34321496,0.18081273,-0.052150007,-0.34601086,0.51632524,0.06400605,0.0061850185,-0.32717043,0.20724139],[0.029175306,0.7315644,4.721232,0.08325713,-0.48493296,-0.24665754,-0.1523269,-0.005119804,0.22956513,0.3020592,-0.4038248,0.6253751,0.25363073,-0.5005454,-0.31425786,0.23239496,-0.31191078,0.047809538],[-0.010508659,0.15341635,0.43864673,-0.1464096,0.18380292,-0.08827558,-0.6522776,0.029167967,0.5192565,0.123401366,-0.32648972,0.15496483,0.31653887,-0.5059119,0.057938904,-0.04915116,0.21404971,-0.12505578],[-0.3848665,0.5562081,-0.031109845,-0.091075,0.122943915,0.46815628,-0.37999207,-0.12903124,0.1892725,0.27956063,-0.132565,0.096547544,-0.34272483,0.12283442,0.06688585,0.3923325,-0.27006665,-0.034028348],[0.08722563,-0.2605648,-0.0077059204,0.053181015,0.0549966,-0.57108873,0.17384295,0.23858054,-0.06958964,0.34006983,-0.2719506,-0.047910836,-0.11265416,-0.12560493,0.27393594,0.2091702,-0.055573467,-0.10821209],[-0.06763393,-0.37754446,-0.009697453,0.08860953,0.28071558,-0.67214215,0.34979525,0.117161624,0.16652317,0.029180126,-0.10343166,-0.21206415,-0.08761407,0.08291694,-0.07274916,0.22889741,0.40336818,-0.373356]],"activation":"σ"},{"dense_2_W":[[0.055040672,0.5993177,-0.22644603,-0.8265452,-0.0038502845,0.44068658,-0.03040217],[-0.70651376,-0.3338041,0.42435834,-0.18500227,0.81759316,-0.5486541,-1.110574],[-0.5266372,-0.7444737,-0.3628261,0.5852146,0.95713323,-0.26699162,-0.8405533],[-0.28034517,-0.2479486,0.64379674,0.7883626,-0.12794921,-0.8036546,-0.1523485],[-1.3158185,0.12383007,0.49551678,0.13944684,0.43195948,-0.86401516,-1.1620226],[-0.077836744,0.46037325,-0.11932971,-0.4114782,-0.32642493,0.08826335,0.3426612],[-0.869882,0.32593668,-0.9218525,-0.37414593,-0.120396055,0.61139256,-0.12451638],[0.018881803,-0.6284976,-0.21616842,-0.26261458,0.17759265,-0.4875057,-0.7788972],[0.23179096,0.5346621,0.14235991,-0.16656797,-0.6345287,0.6345263,0.6490954],[0.42456567,0.16523154,0.15447061,-0.33069327,-0.7372917,0.64228994,0.3790743],[0.3378659,0.57663065,-0.011852186,-0.34422934,-0.8071215,0.16176973,0.9347968],[0.8090811,-1.1519405,1.155839,0.8935971,-0.04736475,-0.6883236,-0.16425224],[0.5435343,-1.5603184,-1.8775592,0.040111613,-1.4295818,-0.6792629,-0.17226006]],"activation":"σ","dense_2_b":[[-0.16689628],[-0.2849929],[0.050556302],[0.0045983535],[-0.21896972],[-0.038251407],[-0.4631888],[-0.45150843],[-0.2340387],[-0.040570892],[0.017508559],[0.33123934],[0.029258676]]},{"dense_3_W":[[-0.48214975,0.61397964,-0.3610514,0.635723,0.8418613,-0.08425857,-0.6093145,0.36558312,0.05758606,-0.27470613,-0.981727,0.8191294,0.86783963],[0.6742536,-0.09863488,-0.8090672,-0.087475404,-0.34558988,0.46608582,0.0860837,-0.19014728,0.6121176,0.5906499,0.030970646,-0.84944576,-0.10872761],[0.34069678,0.72464764,0.53571326,0.3477245,0.24464273,-0.55484986,0.52443147,-0.5883181,-0.4959677,-0.40765953,-0.7288586,0.7889583,0.81876206]],"activation":"identity","dense_3_b":[[-0.13179861],[0.03719345],[-0.098335996]]},{"dense_4_W":[[0.6273808,-0.39738363,0.47976896]],"dense_4_b":[[-0.057788193]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI000 4NEDR106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI000 4NEDR106'.json deleted file mode 100755 index 332a128784..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI000 4NEDR106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.042358],[1.4254401],[0.56163555],[0.046136778],[1.4076314],[1.4138519],[1.4181747],[1.4050233],[1.3790605],[1.3384784],[1.2876749],[0.045835752],[0.045892626],[0.045947872],[0.04606048],[0.04602913],[0.045808274],[0.0454029]],"model_test_loss":0.010334409773349762,"input_size":18,"current_date_and_time":"2023-08-07_04-17-44","input_mean":[[22.024511],[-0.043522414],[-0.002961347],[-0.0065920064],[-0.04150471],[-0.042428624],[-0.043336894],[-0.04086171],[-0.034525074],[-0.028886782],[-0.018756818],[-0.0065919408],[-0.0066040247],[-0.006626225],[-0.0068288157],[-0.0070200725],[-0.0073607014],[-0.0076632937]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.473138],[2.221549],[-1.0823368],[-2.8256664],[0.085434295],[0.028407706],[-0.061113566]],"dense_1_W":[[-0.0089028245,-0.9912872,0.009611258,0.25393942,-0.41998756,-0.32313955,0.8952989,0.029626163,0.11626525,-0.054468796,-0.1326496,-0.4476868,-0.2042107,0.46837947,0.069956504,-0.21724562,0.23439048,-0.047289353],[1.2613285,-0.96326435,-0.17513342,-0.000854132,-0.47149596,-0.018597946,-0.21429752,-0.21073529,0.1354099,-0.07295649,0.030318158,-0.12007737,0.12014077,-0.2163875,0.072022185,0.03959235,0.396182,-0.062489647],[0.012516819,-0.8584632,0.007924718,-0.30343324,-0.42617807,-0.7755947,1.0091652,0.1223127,0.3468889,-0.40062675,-0.07905825,-0.24530481,0.03633433,0.47560924,0.037581664,-0.13015322,0.22054312,0.031255197],[-1.5378897,-1.4828793,-0.18857823,0.16092972,-0.42702663,-0.34182322,0.41900903,-0.18607922,-0.13843817,0.24557483,-0.076981656,-0.4961918,-0.3452876,0.64607316,0.0009507385,0.08998216,0.14214522,0.046318714],[-0.0011267369,0.27540267,0.016030233,-0.20225953,0.013771044,0.6201634,-0.556872,-0.13545676,0.35052666,-0.124900356,0.002072807,0.4798739,-0.08431086,-0.10877774,0.04850312,-0.35767382,0.02486711,0.12758201],[0.024379028,-0.24700065,-2.853376,-0.32122508,0.8939814,0.82656956,1.4070201,0.09498728,-1.3611526,-1.5815003,0.30544436,-0.27033755,0.11556027,-0.054265734,0.20834558,0.13427551,-0.37772593,0.4640547],[-0.030686565,0.84678096,1.770179,-0.36134493,0.24199459,0.28295025,-0.47493774,0.23200317,0.70101535,-0.14119998,-1.0417818,0.40630406,0.13111247,-0.6430103,-0.2674837,0.017178508,-0.29887456,0.38562188]],"activation":"σ"},{"dense_2_W":[[-1.1036853,-1.3721989,-0.51504,1.2015524,0.09316521,-0.96497333,0.4021814],[-0.8097407,-0.7509286,-1.1158744,0.42325807,-0.20259377,0.0626439,0.31110045],[-1.2145201,-1.2441981,0.19279541,0.18892047,0.29747686,-0.25250465,0.6102425],[0.2313029,0.118307896,0.113481075,-0.15884186,-1.111768,0.13841225,0.20408762],[-0.71204215,-0.12088688,-1.1419623,-0.6261491,1.1400135,0.7190926,-0.7439571],[-0.25191402,-0.37898734,-0.28048715,-1.4491202,-0.3656834,-0.7907398,-0.641557],[-0.011884956,-0.5971226,0.335598,1.460086,-1.3101952,0.24946465,-0.7721908],[-0.291724,-1.2193375,0.9255212,1.4103785,-1.3861861,1.1069193,-0.9564451],[-0.005167844,-0.5868809,-0.04781744,-0.4605364,-0.5491854,-0.12518165,0.4831307],[-0.8599904,0.355135,0.13032773,0.4898609,0.9977364,-0.20243338,-0.3729824],[-0.8057951,-1.4712548,0.041369762,0.38580742,0.17479813,-0.5943229,0.58907944],[0.4630881,-0.67586523,0.7142299,-0.026821358,-0.4351039,0.16494957,-0.6159792],[0.47451556,-0.24695386,0.12806706,-0.45427,-0.49645072,0.16154642,0.051802393]],"activation":"σ","dense_2_b":[[-0.10206211],[-0.18115936],[-0.18227798],[-0.24110062],[0.019271357],[-0.057440575],[-0.268234],[-0.5252925],[-0.2866936],[0.05449511],[-0.24483305],[-0.18191986],[-0.07886301]]},{"dense_3_W":[[-0.5275586,0.21438916,0.42354757,-0.080388896,-0.22814655,0.08274758,0.58728325,0.23497643,-0.34910187,-0.65987664,-0.5979741,0.47347566,0.29530162],[0.2212618,-0.04398215,0.08195705,0.55958235,-0.2671096,-0.41001236,-0.07496751,-0.09160523,-0.40878737,0.17242602,-0.28486353,0.67506176,-0.4861643],[0.74257594,0.3091425,0.6776007,-0.5314211,0.5221815,-0.245857,-0.82829714,-0.7256044,-0.20003343,0.63602597,0.68443066,-0.60656106,-0.33084148]],"activation":"identity","dense_3_b":[[-0.08715922],[-0.015241552],[-0.020386416]]},{"dense_4_W":[[-0.18016826,0.060740642,0.8485467]],"dense_4_b":[[-0.027167765]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI090 4NEER106'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI090 4NEER106'.json deleted file mode 100755 index 326f775d56..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.06 57700GI090 4NEER106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.3275805],[1.0196048],[0.52010816],[0.0352276],[1.02782],[1.0252671],[1.0222956],[0.9997506],[0.985749],[0.96506876],[0.9418997],[0.035265286],[0.035257738],[0.035243317],[0.035129223],[0.034967538],[0.034930766],[0.034761045]],"model_test_loss":0.005986420903354883,"input_size":18,"current_date_and_time":"2023-08-07_04-42-18","input_mean":[[16.81989],[-0.0023870994],[0.016375398],[0.007987486],[-0.0038331433],[-0.0028706586],[-0.002052483],[0.0037261376],[0.0077264695],[0.015267296],[0.022873675],[0.007976887],[0.008012079],[0.0080480315],[0.0083447285],[0.008644844],[0.008951735],[0.009266214]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.081543066],[-0.056712516],[1.020892],[1.2038189],[0.8294046],[-1.550392],[0.14646924]],"dense_1_W":[[0.007095242,-0.3357324,-0.020644788,0.15498674,0.3233852,0.681572,-0.58889717,0.10339724,-0.101055495,0.14906228,0.10875192,0.6335114,-0.055108294,-0.29020736,-0.20417833,-0.15015094,-0.17299037,0.08851465],[0.004572572,-0.031241285,-0.13219641,-0.32799125,-0.15282044,0.3018361,-0.04475915,-0.1852419,0.29663882,0.11407058,-0.28158987,0.15243189,-0.138962,-0.818821,-0.21749938,0.16543967,0.674217,0.5435629],[0.6141752,-0.15518521,-1.046077,-0.2757983,0.08250556,-0.15337233,0.7715917,0.11102678,-0.09630107,-0.5728525,-0.09002878,-0.034704853,0.036534615,-0.08534044,0.17554262,0.59318084,0.4653607,-0.6824117],[0.36545298,1.5887244,0.07696325,1.0003874,-0.86354816,0.23606206,-0.5116619,0.38954034,0.11738926,-0.06503386,-0.26383808,-0.15202644,0.03476461,-1.241754,0.06332426,0.76582646,0.33149716,-0.796532],[0.65361756,0.13396756,1.0613457,0.26300004,-0.40400812,-0.013307764,-0.75999826,0.49663877,0.22844444,0.55961716,-0.1376457,0.37311572,-0.24733792,0.14654122,-0.5692375,-0.5544628,-0.27533975,0.66560614],[-0.34781328,1.6558565,0.07238359,0.20479903,-0.8403306,-0.32243812,-0.16335258,0.52112013,0.17627572,-0.04307547,-0.3611007,0.30237716,-0.6051238,-0.386868,0.38447434,0.46520847,0.3120966,-0.6709089],[0.0036248034,0.23074862,0.020143876,0.5349166,-0.40822935,-0.41078866,0.2051622,0.49179015,-0.1525134,-0.59394807,0.23505864,-0.066738114,-0.7911307,0.33049953,0.6046334,-0.020162396,0.5588138,-0.7296629]],"activation":"σ"},{"dense_2_W":[[-0.543734,-0.11568991,0.46326157,-0.3440383,-0.19483161,-0.22621068,0.3506779],[0.5665691,0.39223912,-0.3114283,-0.24454129,0.20308813,0.26517904,-0.55094284],[-0.37307048,-0.3695241,-0.5802875,-0.67846954,-0.4361852,-0.6546891,0.347107],[0.20529634,0.20746405,-0.6926493,0.35652137,-0.09917265,0.36297628,-0.30438402],[-0.13266158,-0.105559945,0.48330346,0.05460201,-0.7987386,-0.11119831,-0.1520496],[0.12158869,-0.16989066,-0.21201673,-0.8567653,-0.80356854,-0.6502743,-0.6812023],[-0.67351097,-0.4814339,0.0066772657,-0.36529928,-0.32967392,-0.014957418,0.56022096],[0.65586,0.5302613,-0.53480864,-0.1837586,-0.37755764,0.5224716,-0.65894675],[0.632538,-0.12352366,-0.17432757,0.053469837,-0.23578659,0.8563387,0.010090043],[0.755902,-0.33837405,0.06354072,-0.0023081547,0.24040125,0.19006617,-0.6459784],[-0.84905565,0.34682384,-0.74062455,-0.36064273,0.06456776,-1.0320303,-0.1568676],[0.11871192,-0.45685586,-0.43699044,0.6423253,-0.41473007,0.8033967,-0.24556923],[-0.7037791,0.28321943,0.3725407,-1.0338148,-0.7480845,0.16597597,-0.18685772]],"activation":"σ","dense_2_b":[[0.0362523],[-0.15209907],[0.06911948],[-0.098613776],[-0.05953099],[-0.11117059],[0.0083315335],[-0.14510527],[-0.099141985],[-0.024182098],[-0.008950716],[-0.078234635],[0.007288485]]},{"dense_3_W":[[-0.28421518,0.64839506,-0.67347926,0.24251053,-0.5610912,-0.08075926,-0.6807234,0.032682177,0.022037055,0.37259215,-0.27325115,0.662137,-0.691926],[0.526823,0.050769817,0.35217327,-0.046594553,0.26780704,0.11182747,0.11998007,0.086257815,0.3501235,-0.32662,-0.34344003,0.25669885,0.21290292],[-0.52280086,-0.16297898,-0.19620705,0.5186644,-0.12866393,-0.18155573,-0.6449941,0.5744024,0.6484104,0.11549675,-0.62331545,0.06612739,-0.012873929]],"activation":"identity","dense_3_b":[[0.031896967],[-0.058957797],[0.028432038]]},{"dense_4_W":[[0.7332587,-0.31298956,1.0786972]],"dense_4_b":[[0.029880757]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.07 57700GI000 4NEDR107'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.07 57700GI000 4NEDR107'.json deleted file mode 100755 index 75fdb3425f..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022 b'xf1x00NE MDPS R 1.00 1.07 57700GI000 4NEDR107'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.16771],[1.2480878],[0.50373644],[0.0415057],[1.240927],[1.243768],[1.2455409],[1.2407454],[1.2340634],[1.2248088],[1.211883],[0.041283466],[0.041348],[0.0414103],[0.041489914],[0.04143776],[0.041264478],[0.0409134]],"model_test_loss":0.007933193817734718,"input_size":18,"current_date_and_time":"2023-08-07_05-08-25","input_mean":[[24.345285],[-0.096162066],[-0.014125192],[-0.0055604912],[-0.09105816],[-0.09206972],[-0.09341297],[-0.10010282],[-0.10234851],[-0.10274896],[-0.10063276],[-0.0054888204],[-0.0055110557],[-0.0055406075],[-0.005718475],[-0.0058116997],[-0.0059951427],[-0.0062671383]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.23237821],[0.018722376],[-1.3757128],[-0.01460865],[0.02967189],[0.08705265],[-1.2340055]],"dense_1_W":[[0.06750661,-0.3542061,0.2432691,0.14180695,-0.5219781,-0.0007836083,0.42668152,-0.0022440958,0.10387852,-0.041751936,0.068489484,-0.14231609,-0.17892262,0.13729224,0.04235856,-0.1593134,0.008738201,0.012944615],[-0.0105973855,-0.33196992,-2.107344,-0.2111076,0.67654485,-0.085388966,0.36568716,-0.049111266,-0.44938025,-0.010503432,0.12672867,-0.15217097,-0.22909231,0.3746955,0.3520743,-0.3600366,-0.08118863,0.04671434],[-0.4432249,-0.2638647,-0.15509327,-0.22285405,0.39585304,-0.07322643,0.20026541,-0.19971582,-0.2071554,0.11940002,-0.09321449,-0.13317838,-0.06569787,0.48338866,0.2730768,-0.22072834,0.17696315,-0.09108241],[0.0020572126,-0.12674253,0.022357568,-0.1565539,0.045776367,0.47296986,-0.17684759,0.25313404,0.09111438,-0.07021955,-0.0518055,-0.12567686,0.21444373,-0.33187112,0.19476555,0.06619808,-0.21118708,0.023201488],[-0.00025779597,-0.35387865,0.012450542,0.14741261,-0.269924,-0.45123708,0.7130625,0.1300766,0.10266559,-0.19306725,-0.058982134,-0.36948946,0.1953737,-0.29075292,0.22910224,0.15611844,-0.11712315,0.058328316],[0.051375203,0.31793782,-0.14423588,-0.0068918834,-0.18315102,0.5918731,-0.28164175,-0.20071678,0.069824845,-0.020674566,-0.11778088,0.17801747,0.2703763,-0.2515284,0.2291236,0.0033097556,-0.43070522,0.29516613],[-0.4140676,0.39011925,0.14862205,-0.13030078,-0.52621514,0.5111128,-0.45828196,-0.27297536,0.23763113,0.3718947,-0.14322172,-0.21290484,0.089274585,0.020155977,0.22360091,-0.28303128,0.13209493,-0.042907283]],"activation":"σ"},{"dense_2_W":[[-0.31453168,0.033921305,0.70444196,-0.58351177,1.0959978,-0.66988647,-0.85257435],[-0.5903374,-0.44103688,-0.70230186,-0.0026794649,-0.34333006,0.5302745,0.918816],[-0.42183512,0.05530731,-0.5427745,0.69254327,-0.8815986,0.44960234,0.30365023],[0.122158416,0.16294368,0.63959545,-0.7836469,0.68446577,-0.47389457,-0.62848955],[0.901804,0.7217306,0.10951365,-0.3829389,0.87658155,0.29891163,-1.3996044],[0.031781312,-0.5354891,-0.7041477,0.31751466,-0.53644896,-0.15998416,-0.16574423],[-0.27697673,-0.28073364,-0.78330237,0.573196,-0.13137478,0.6830283,0.03175229],[-0.045285385,-0.5539421,-0.31835833,0.24435757,-0.6752784,0.5702699,0.70634973],[-0.20699495,-0.047943812,-0.558686,-0.11867195,-0.74516237,0.6060502,0.89396],[0.0669213,0.109555185,0.32660756,-0.73635364,1.029282,-0.38516814,-0.6496012],[-0.41036522,-0.10196122,-0.14805846,0.57442135,-0.6432521,-0.083222605,0.0065267035],[-0.006969785,0.23751916,0.84181625,-1.1058564,0.46725896,-0.6190618,-0.36652294],[0.21793355,0.290169,-0.93023765,0.36604545,-0.7807498,-0.17316261,0.07708634]],"activation":"σ","dense_2_b":[[-0.05177098],[0.037132636],[-0.06423338],[-0.10677436],[0.0036231237],[-0.19121082],[0.053780135],[0.007149082],[-0.021132331],[-0.06560636],[-0.013925233],[-0.20192423],[-0.011626902]]},{"dense_3_W":[[0.14344205,-0.07113653,-0.17046611,-0.59838146,-0.6294641,0.12431688,0.82706773,-0.054024965,0.0036742366,-0.16770674,-0.1288102,0.16114827,-0.18475987],[-0.47564578,0.31864712,-0.14267874,-0.3570462,-0.20744337,0.4933738,0.0050251503,0.44604447,0.3714721,-0.20655935,0.15740293,-0.67137367,0.5913701],[-0.7149089,0.7454441,0.5369203,-0.662988,-0.48257586,-0.2050814,0.18968539,0.2163754,0.17718616,-0.6017345,0.3639053,-0.034539547,0.3536264]],"activation":"identity","dense_3_b":[[0.16334216],[0.029995969],[0.03828924]]},{"dense_4_W":[[0.055147056,0.6825625,0.9658336]],"dense_4_b":[[0.03797484]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019 b'xf1x00AE MDPS C 1.00 1.04 56310G7301 4AEEC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019 b'xf1x00AE MDPS C 1.00 1.04 56310G7301 4AEEC104'.json deleted file mode 100755 index a14217fff8..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019 b'xf1x00AE MDPS C 1.00 1.04 56310G7301 4AEEC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.365931],[1.0053464],[0.48621035],[0.040902473],[0.9949335],[0.999163],[1.0026134],[0.99977523],[0.9919684],[0.97725195],[0.96077615],[0.04045883],[0.04060025],[0.040737074],[0.041246798],[0.04151738],[0.041603032],[0.041438416]],"model_test_loss":0.007651639170944691,"input_size":18,"current_date_and_time":"2023-08-07_05-59-00","input_mean":[[21.148514],[0.04878841],[-0.0029595776],[-0.042372182],[0.047377028],[0.048310757],[0.04831951],[0.046471857],[0.041722726],[0.038647328],[0.0400284],[-0.04253156],[-0.042471983],[-0.042429984],[-0.0424216],[-0.042509023],[-0.042691946],[-0.04297347]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.121761754],[-0.005262723],[-0.42553833],[-1.4800751],[0.39852682],[1.5660636],[-0.2885766]],"dense_1_W":[[-0.0071449946,-0.22166711,0.040895086,0.074089214,-0.24226914,-0.60404766,0.008154148,0.5209098,-0.03358146,0.32940406,-0.45302716,-0.26397997,0.026462026,0.3500697,0.13830581,-0.30527312,0.16121124,-0.07390656],[0.0022779773,0.00796991,2.0393221,0.3221699,-1.7534194,-0.89475006,-1.0659475,0.77743155,2.5998273,1.7403948,-1.4950538,1.2407383,0.099073306,-0.1965835,-0.6947619,-0.5265118,-0.42691574,0.052154247],[0.051531065,0.33934996,0.028932936,0.09824733,-0.27226272,0.6414971,-0.57750374,0.04495341,0.12243749,0.48152295,-0.4014161,0.2573053,0.36582318,-0.2320656,-0.45263124,-0.529971,0.06477085,0.36134705],[-0.69859356,0.37024122,0.18599005,-0.6343367,0.048961602,0.64901793,-0.014536332,-0.35943583,0.07028741,-0.49705738,0.3390023,-0.11667915,0.26095447,-0.13361779,0.18741582,0.45414707,0.04516702,-0.18339908],[-0.0724652,-0.03210611,0.0017774315,-0.021023385,-0.18996063,1.0227648,-0.6022702,0.09638655,0.004159916,0.11472787,-0.03836134,0.4005762,-0.29560152,-0.45276555,0.22651882,0.16092128,0.03422194,-0.106695466],[0.6899316,0.14993052,0.1758256,-0.60796994,-0.1518822,0.5145441,-0.05431888,0.17881271,0.05299809,0.14818904,-0.22618657,0.4235098,0.05817998,0.14069048,-0.5904664,0.058542084,0.4009274,-0.00811349],[-0.0029274654,-1.2603375,0.9620041,-0.3834267,0.5099088,1.114527,-0.28767705,0.72205675,-0.21023215,-0.49849328,-0.1329101,0.0074135163,0.32214153,0.15615329,0.093625374,0.092150904,-0.024664165,-0.09238503]],"activation":"σ"},{"dense_2_W":[[0.12002893,-0.17805395,-0.2880083,-0.38067022,0.12869482,-0.6071237,0.12071723],[-0.12379059,0.2787932,-0.35626152,0.121466,0.32586035,0.1355638,-0.45241648],[-1.130496,0.7352465,0.6112711,0.10642678,-0.08899688,0.04508099,-0.030892976],[0.67437845,0.13706607,-0.7985538,-0.17117155,-0.3313495,-0.3713848,-0.027845394],[-0.517497,-0.46660402,0.1784289,0.50726193,0.36130485,0.43994057,0.3730332],[-0.85701996,-0.3851742,0.50393444,0.33921102,0.42251298,0.54051745,0.14791974],[0.593431,-0.48125875,-0.015125809,-0.37809905,-0.25327942,0.48657876,-0.480061],[0.5388885,-0.7307186,-0.41774607,0.06747027,-0.86199886,0.08562353,0.24053545],[-0.09548584,0.04586038,-0.3076278,0.21206705,-0.670656,-0.5026032,-0.52725095],[-1.2665727,0.18871929,1.1413674,0.5228994,0.10997097,-0.34521362,0.120387435],[0.0748604,0.4996035,-0.0855786,-0.05275676,0.6006561,0.07183944,0.36708173],[-0.48888278,-0.7535756,0.3745485,0.6277024,-0.430217,-0.75581187,-0.6709151],[0.7400373,-0.59288275,-0.7235487,-0.15054081,-0.12360353,0.0075691734,0.16587299]],"activation":"σ","dense_2_b":[[-0.1345922],[-0.2812786],[-0.22687326],[-0.013213066],[-0.11886535],[-0.26479134],[0.110779524],[-0.022709124],[0.013283567],[-0.5753985],[-0.20628732],[-0.069668956],[-0.010791435]]},{"dense_3_W":[[-0.055820215,0.18302114,0.47397888,-0.44688433,0.5031685,0.2437073,-0.5109226,-0.6158206,-0.6161359,0.35794947,0.30956054,-0.39124405,-0.5219915],[-0.09907215,-0.4441128,-0.24953865,-0.61175,0.30950993,0.41822892,-0.2842331,0.23637499,-0.57602996,0.2360482,0.17507787,0.15714398,-0.16979274],[-0.4119329,-0.2348606,0.44085753,-0.46800396,0.37048897,0.27227882,-0.48144114,0.5093462,-0.5514392,0.020650176,-0.1336957,0.27199176,-0.15389821]],"activation":"identity","dense_3_b":[[0.08689549],[0.099912],[0.10019605]]},{"dense_4_W":[[1.2855291,0.25690037,0.18219778]],"dense_4_b":[[0.083643846]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2310 4APHC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2310 4APHC101'.json deleted file mode 100755 index c7fc30d6f5..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2310 4APHC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.9939313],[1.0528377],[0.5315027],[0.029189091],[1.0448871],[1.0467738],[1.0488317],[1.039207],[1.0235921],[0.9892058],[0.946193],[0.028987626],[0.029057996],[0.029122358],[0.029161116],[0.029061846],[0.028845914],[0.028680017]],"model_test_loss":0.005588449537754059,"input_size":18,"current_date_and_time":"2023-08-07_06-50-32","input_mean":[[18.301882],[0.08731057],[0.0127743315],[-0.015221847],[0.083781615],[0.084988184],[0.086485535],[0.08923056],[0.08884011],[0.083579615],[0.07677084],[-0.015187935],[-0.015199815],[-0.015214948],[-0.015418597],[-0.015619739],[-0.01592285],[-0.016167268]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10865636],[2.3342428],[1.9012878],[-1.0550975],[0.42597178],[-0.072197296],[0.13246399]],"dense_1_W":[[0.014873456,-0.6716018,0.030190289,0.05807356,0.1659468,-1.2892563,0.7523864,0.17761192,-0.1367714,-0.25312293,0.10743949,-0.86903024,0.38059515,0.36618868,-0.17938752,0.4116222,-0.04126272,-0.16534285],[0.5307081,0.70384896,0.17447057,-0.5299634,-0.1137985,0.66921306,-0.4550779,0.4195087,0.022407524,-0.011906744,0.01779598,0.31284544,0.12419175,-0.37242392,0.29023978,0.29320818,-0.03838816,-0.1365707],[0.49472126,-0.9217689,-0.16751769,0.2551346,0.4287786,-0.7115711,0.13987176,0.081955396,-0.10713988,-0.14384302,0.056155935,-0.41739097,0.31321964,0.18086141,0.07986471,-0.59072965,0.019683728,0.2156733],[-0.21605797,-0.0773706,1.8579228,-0.054307144,0.09962813,0.459771,-0.43688956,0.4817178,-0.11751329,0.24354506,0.048119925,0.15544271,0.5567847,-0.44885188,-0.071555234,-0.21245098,-0.12196474,0.1607481],[1.1639537,0.22229235,-0.0055136923,0.18512912,-0.31992313,0.6914639,-0.441095,-0.47246328,-0.17016385,0.31878585,-0.050539054,0.5196653,-0.45885605,-0.06979618,-0.6328351,-0.1972874,0.34543124,-0.029788537],[-1.2173545,0.1734982,-0.006638391,0.31715307,-0.49786195,0.5964912,-0.46224737,0.428369,-0.27108857,-0.47364435,0.28244984,-0.38170126,0.3462351,-0.040848292,-0.57324094,0.092280604,-0.33654806,0.22344877],[-0.023229493,0.6459344,3.563477,-0.027724274,-0.50558513,0.3390488,-0.7422579,-0.26814136,0.10699902,0.7712946,-0.27946892,0.16129833,0.41574493,-0.38143778,-0.21668792,0.08835417,-0.18336411,0.06490999]],"activation":"σ"},{"dense_2_W":[[-0.7401138,-0.33438444,-0.30976433,0.15630613,0.13618709,0.44008145,0.43946928],[0.3344595,-0.32618588,0.32839847,0.15315771,-1.035439,-0.41636187,0.18828368],[-1.6167084,-0.46759644,-1.9622544,1.1570694,-0.06380261,0.70214266,0.045398716],[0.7825211,-0.885754,0.5565485,0.076575294,-0.52415085,-0.30411518,-0.025386691],[0.8624213,-1.7385436,-0.08763568,-0.8164249,-0.70833945,0.5085741,-0.4101307],[-0.5877383,0.8294365,-0.3091808,-0.512284,0.39336714,0.38540366,0.5915022],[0.34969604,-0.36038882,0.58447695,-0.14356469,-0.0804361,-0.3685647,-0.3614559],[0.72681546,-1.4046979,0.05443059,-0.16271566,-0.34866697,-0.22142158,-0.74306345],[0.5620642,-0.3955179,0.833503,-0.054495268,-0.54243296,-0.229325,-0.19776875],[-0.4541713,0.9203334,-0.70482004,-0.301528,0.21780983,0.25789845,-0.045716804],[-1.002443,-0.6559031,0.046121206,0.037933722,0.035592597,-0.0741523,-0.62133527],[0.9827719,-1.4614758,-0.3133424,-0.52563715,-0.24086906,-0.17160659,-0.6464693],[0.83488077,0.028223112,0.78030294,0.04748862,-0.31935772,-0.51587915,-0.18742341]],"activation":"σ","dense_2_b":[[-0.13555096],[-0.32605985],[-0.35664767],[-0.10862631],[-0.2544254],[-0.043318216],[0.000725854],[-0.23828812],[0.10916386],[0.00066704256],[-0.21592386],[-0.24546382],[0.03496515]]},{"dense_3_W":[[-0.48865333,0.012070441,-1.1093414,0.37793216,0.106044106,-0.37514287,0.2380262,0.6363306,0.13366772,-0.5155996,0.35994524,0.29682592,0.7856256],[0.07205148,0.53575456,0.73853123,0.31763637,0.29280093,0.4034669,-0.43210915,0.1826047,-0.6585059,0.087924495,0.4158608,0.10441277,-0.53451645],[-0.5815711,0.5280911,-0.4214647,0.73003256,0.8056002,-0.8074712,0.11868743,0.352855,0.50734097,-0.23951167,-0.20682806,0.3864585,-0.0063988008]],"activation":"identity","dense_3_b":[[-0.0008838433],[0.05478047],[-0.09860168]]},{"dense_4_W":[[-0.43285844,0.1527011,-0.5464815]],"dense_4_b":[[0.096321255]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2510 4APHC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2510 4APHC101'.json deleted file mode 100755 index 946d3622da..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020 b'xf1x00AE MDPS C 1.00 1.01 56310G2510 4APHC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.562192],[1.1790692],[0.4002067],[0.04594392],[1.1686502],[1.1728791],[1.1756221],[1.1729841],[1.156941],[1.1271893],[1.0963595],[0.045839865],[0.045870736],[0.045898065],[0.045978826],[0.04594467],[0.045800198],[0.045554243]],"model_test_loss":0.004118586890399456,"input_size":18,"current_date_and_time":"2023-08-07_07-15-40","input_mean":[[23.066132],[0.057099603],[-0.01063407],[0.004261095],[0.062055044],[0.060667243],[0.058939908],[0.05526614],[0.05360945],[0.051924873],[0.05241744],[0.00427781],[0.0042802687],[0.00428003],[0.004243646],[0.0041739033],[0.0040482194],[0.0038935656]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10965323],[-0.052080173],[-0.1538397],[-2.384923],[-0.09352556],[0.0018890598],[2.3688684]],"dense_1_W":[[0.7755966,-0.2301085,0.06612401,-0.35135305,-0.36526012,0.6195271,-0.17558895,0.33820674,0.29887065,-0.27747476,-0.13994163,0.43222815,0.16581486,-0.0976609,-0.25181568,-0.47843766,-0.32353792,0.45968184],[0.7839898,-0.45771372,-0.06646608,0.0075052464,0.48982865,-0.43683746,0.25553277,0.032161202,-0.55129576,0.59574753,0.017138774,-0.6380152,0.14585742,0.4083551,0.21304548,0.6200874,-0.086530834,-0.21368058],[0.08205719,0.03429464,0.016315881,-0.12871714,0.07213858,-0.45993748,0.095523514,-0.11810924,0.06553878,-0.5675574,0.2978788,-0.1445707,-0.33768746,0.50254714,0.22325698,-0.1333724,-0.06763935,0.09734261],[-0.35377377,-0.43953004,-0.19076808,0.15645324,-0.23917644,-0.0014493754,0.17704272,-0.25057337,-0.78162295,-0.06046742,0.096349254,0.027729603,-0.36563933,0.80371153,-0.027431296,-0.2516018,-0.13851781,0.04337426],[0.00498448,0.8467486,3.7462854,0.1478785,-1.0097741,0.0915918,-0.5104059,0.09881933,-0.0863164,0.48782897,-0.091693185,0.5003006,0.5728494,0.21510558,-0.710957,-0.29564264,-0.25217718,-0.17932595],[0.037292775,0.549042,-0.020767516,0.042928286,-0.015053085,0.80091596,-0.5040608,-0.20316118,-0.30876288,0.18842556,0.16377552,0.7935661,0.03645923,-0.8193547,-0.08692827,0.11217417,0.064909056,-0.06385711],[0.35312757,-0.118093394,-0.19476774,0.5554578,0.1930753,-0.48555315,0.057567388,-0.7159381,-0.27626652,-0.37647247,0.20957941,-0.44620857,0.0002755669,0.58868754,0.10452296,-0.66695416,0.27288365,-0.14926693]],"activation":"σ"},{"dense_2_W":[[-0.19584657,-0.56228656,0.049819242,0.3356435,-0.8650626,-0.22927399,-0.7001092],[-0.08733842,-0.654029,-0.8732687,0.31039196,0.65217227,0.6601506,-0.9831877],[-0.28144318,-0.5611539,0.32681772,0.31215787,-0.44330865,0.008832871,0.37263072],[-0.09786935,-0.48769787,-0.69821197,-0.38688582,0.5728046,0.18644942,-0.7118146],[-0.8619828,0.0027679028,0.43955415,1.0463487,-0.69266444,-1.0750707,-0.07059785],[0.31811947,-0.2366228,-0.72350734,0.1262254,0.25636208,0.46176276,-0.34769687],[-0.69273907,1.5178095,0.8711242,-0.07443719,-0.69538844,-0.69129455,0.7530523],[0.3147337,-0.11657144,-0.8414669,-0.09644994,0.08891191,0.1703831,-0.6425643],[-0.3112073,0.35414124,0.11913388,0.3313928,0.11848869,-0.853674,0.47229782],[-0.60429984,0.27235946,0.7851893,0.31956023,0.6252034,-1.6533685,0.58046734],[0.41311583,-0.19508654,-0.0685557,-0.17002022,0.1134038,0.4991351,-0.3182844],[-0.8717183,0.66564476,0.12376991,1.2741002,-0.5322097,-1.1083273,-0.37658596],[0.67320377,-0.41162866,-0.042097807,-0.6380872,-0.46145105,0.875035,-0.52515566]],"activation":"σ","dense_2_b":[[-0.36951348],[-0.20310313],[-0.1163803],[-0.058099788],[-0.27018055],[-0.12597482],[0.15152946],[-0.2217294],[0.014968804],[-0.19001697],[-0.042399503],[-0.189941],[0.096105725]]},{"dense_3_W":[[-0.12309125,0.77507085,-0.3702677,0.4653985,-0.7352844,0.17442249,-0.20582232,0.52809495,-0.38240287,-0.38384795,0.35505968,-0.7694335,0.81513363],[0.49237758,-0.24538146,-0.54058105,-0.29702288,0.7292889,0.23451614,0.2204175,0.16993591,-0.58852774,0.5432413,0.13110612,0.1945469,-0.18632029],[0.40756968,0.5396459,-0.06640867,0.52895707,-0.22500473,0.5870712,-0.55817175,0.10517919,-0.51188445,-0.37411118,0.49139977,-0.56567246,0.21133785]],"activation":"identity","dense_3_b":[[0.039045013],[-0.05285484],[0.031891406]]},{"dense_4_W":[[0.4020106,-0.34673893,0.3534026]],"dense_4_b":[[0.032409564]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4000x00 4OEDC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4000x00 4OEDC104'.json deleted file mode 100755 index 62ea60b001..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4000x00 4OEDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9823537],[1.4029322],[0.5391447],[0.04887051],[1.3963706],[1.3995055],[1.4009825],[1.3885417],[1.3692048],[1.3372831],[1.2967274],[0.04857869],[0.048658866],[0.048733797],[0.04879035],[0.048757277],[0.04862833],[0.048260294]],"model_test_loss":0.00437383446842432,"input_size":18,"current_date_and_time":"2023-08-07_08-07-32","input_mean":[[21.874346],[-0.0005797015],[0.010789347],[-0.012909609],[-0.003366453],[-0.002296705],[-0.0016360051],[0.0021639771],[0.005118338],[0.0068367384],[0.008824422],[-0.012872645],[-0.012881624],[-0.012900158],[-0.013073698],[-0.013239728],[-0.0134497825],[-0.013658659]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.66749334],[-2.3284407],[-2.552216],[-0.51326174],[-0.16542026],[-0.78371996],[0.58516866]],"dense_1_W":[[-0.20467584,0.3742327,-2.1127253,0.4140109,0.20715296,-0.40205246,0.7444451,-0.40750897,-0.32128036,-0.10457273,0.029910121,-0.114483304,-0.17820649,0.09675455,0.15047672,-0.07704191,-0.08496522,-0.05037796],[-0.75994927,1.0465562,0.074481115,0.45544595,-0.099778585,-0.30777687,0.45363194,-0.26308686,0.34833267,-0.061779257,0.19875576,0.0100148255,0.026750173,-0.087523125,-0.44454777,-0.16642322,0.22628598,-0.020208687],[-0.79274124,-1.5697699,-0.0782978,-0.27417132,0.8103041,-0.113830596,-0.45296183,0.41277897,-0.14532241,-0.25087643,-0.024198774,-0.08969185,0.0901834,-0.2042583,0.41698653,0.31030753,-0.13242747,-0.111738786],[0.72596943,0.70769554,-0.0069162454,-0.1704995,0.033077016,-0.14304133,-0.018031847,-0.013690503,0.2569981,-0.08117829,-0.07157592,0.62022674,0.22071594,-0.22532593,-0.5013286,-0.37610313,0.016311774,0.18602486],[0.07123103,-0.7177917,2.071481,0.12931369,-0.08568253,0.006763331,0.5998342,-0.65402156,0.13034452,-0.1689963,0.48351094,-0.1429906,-0.4140654,0.6116886,-0.28543368,-0.3805712,0.27751157,0.042374272],[0.7390709,-0.30262133,0.007570949,-0.09976768,0.11671621,-0.57199293,0.060994264,0.17037009,-0.23032549,0.08530586,-0.033951357,-0.04542262,-0.36450365,0.41992882,0.061726227,0.15781905,0.02539049,0.070994005],[0.27319646,0.6453565,-1.9857005,0.5767287,0.21463604,-0.2138314,0.2007721,-0.25790113,-0.2563649,-0.000869855,-0.091922425,-0.72040427,0.13880335,0.62027377,-0.44047758,-0.050440025,0.25620586,-0.2074692]],"activation":"σ"},{"dense_2_W":[[-0.22115013,0.055372495,-0.6996138,0.5370589,-0.47052458,-0.651092,0.3839152],[0.42745695,-0.38167813,0.14885446,-0.37276337,-0.05345867,-0.013708567,-0.3856122],[0.12907071,-0.54699695,0.39133784,0.2088913,-0.28036752,-0.3084716,0.032560136],[-0.5054007,0.7835044,-0.44982964,-0.23468708,0.12779902,-0.1858994,-0.6199746],[0.045793723,0.039428864,-1.0686759,0.91881555,-0.108995505,-0.029487936,-0.21528293],[0.19056086,0.6597351,-0.8134895,0.018328965,-0.45527688,0.03831411,0.214237],[0.31016105,-0.1720769,0.6232735,-0.0155809345,0.04817505,0.15304431,0.10533786],[-0.42903107,-0.13552563,-0.09239265,0.4200264,-0.4343141,-0.47912154,-0.39496207],[0.20956168,-0.2317832,0.21835831,-0.16000728,0.49696466,0.14894594,0.57515436],[-1.595405,0.8692183,1.0247264,-0.9062122,0.17050256,-0.7897474,-0.94245416],[0.51542455,0.5987507,-0.84974045,0.5130476,-0.10149645,-0.5025105,-0.49863508],[0.604559,-0.26422802,-0.07353111,-0.7784861,0.42281657,0.66297257,-0.4316652],[0.08229692,0.19338071,0.0894164,-0.5593924,0.03616016,0.012567026,-0.30123827]],"activation":"σ","dense_2_b":[[-0.056233797],[-0.0057250382],[-0.21214126],[-0.011911729],[0.085418984],[-0.15823714],[-0.06585213],[0.00472772],[-0.017725466],[-0.118805535],[0.026983896],[0.005067724],[-0.005340161]]},{"dense_3_W":[[0.22465749,-0.015047881,-0.32157594,0.1449359,-0.06417016,0.21772367,-0.12643653,0.51667756,-0.28002724,-0.052840073,-0.21226676,-0.3199402,-0.088716716],[0.38327125,-0.26344195,-0.22620219,-0.37501743,-0.12782073,-0.17671679,-0.0013878844,-0.39273772,0.29493284,-0.15408261,-0.6016259,0.6571256,0.38118032],[0.5750975,-0.63398695,0.040233657,0.29500204,0.55213654,0.23952343,-0.20580381,0.39102614,-0.5990083,0.6517685,0.48111153,-0.4062521,0.022178443]],"activation":"identity","dense_3_b":[[-0.025877675],[0.030203432],[-0.03420004]]},{"dense_4_W":[[0.7982145,-0.41420195,1.1245165]],"dense_4_b":[[-0.03153333]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4050x00 4OEDC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4050x00 4OEDC104'.json deleted file mode 100755 index bb7fd89979..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019 b'xf1x00OS MDPS C 1.00 1.04 56310K4050x00 4OEDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.2050185],[0.9195626],[0.5246053],[0.026908562],[0.9114053],[0.91469693],[0.9157698],[0.9051642],[0.89098597],[0.8697803],[0.84026057],[0.02667492],[0.026759142],[0.026839804],[0.02711494],[0.027168302],[0.027056737],[0.02683038]],"model_test_loss":0.012174735777080059,"input_size":18,"current_date_and_time":"2023-08-07_08-31-57","input_mean":[[17.967325],[0.011739178],[0.026453309],[-0.011081186],[0.0075463396],[0.009542315],[0.011502368],[0.022000773],[0.02539335],[0.027365072],[0.028902],[-0.011176858],[-0.011109888],[-0.0110546965],[-0.010866341],[-0.010897031],[-0.011053293],[-0.011188322]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.07830097],[-0.106249824],[0.012656421],[-0.7821596],[-4.5630274],[4.243537],[-0.025950456]],"dense_1_W":[[-0.0061698896,0.9194918,-0.00018699981,-0.34165612,-0.23813021,0.5475082,-0.3704561,-0.42950627,-0.13424502,0.21240903,-0.011586605,1.1467392,0.22920804,-0.97056633,-0.19121549,-0.14086221,0.1938753,0.06405196],[-0.017454816,0.94919956,-1.7687415,0.4144439,0.8393141,-0.34053108,0.591435,-1.1978676,-0.8482392,-0.29364696,0.25886354,-0.35653427,-0.13556425,0.47442123,-0.4813972,-0.018155526,0.33277246,-0.18364869],[-0.040766764,0.3978997,-1.3777528,0.16677733,-0.3166893,0.5034032,-0.571129,0.6231584,0.10250656,-0.090288945,-0.61956155,0.77258164,-0.37414613,-0.29708913,-0.17747499,0.037844185,-0.56138355,0.47048673],[0.008608961,0.64667994,0.023636322,0.044800144,-0.5491374,0.11336454,0.20036654,0.08956678,-0.33463073,0.093234874,-0.018535366,0.532879,-0.23179846,-0.06182031,-0.34088808,0.03265121,-0.2914414,0.30612496],[-1.8624474,-0.19170734,-1.0794584,0.2858776,-0.1582014,-0.25510505,-0.03886111,-0.35928875,-0.14603446,-0.5926313,0.2556083,-0.33798292,0.021711705,0.8842171,-0.400223,-0.5245886,0.14859252,0.14324439],[1.9104458,-0.11458521,-1.0961788,0.19383249,-0.31420794,-0.17993532,0.25383317,-0.7584393,-0.2644037,-0.38957348,0.24189566,-0.5495086,0.5854412,0.56651443,-0.59044236,-0.0595582,-0.07797032,0.15840146],[0.0036954198,0.69409066,-0.012849071,0.46628892,-0.17679054,0.4750851,0.1464102,-0.27525088,0.07638812,-0.2049708,0.18918438,-0.12693706,0.07179836,-0.335187,-0.066388905,-0.20065263,0.34333003,-0.1499994]],"activation":"σ"},{"dense_2_W":[[-0.13210453,0.08910437,0.112129636,-0.6724287,0.32233343,-0.38829568,-0.6956729],[-1.2644566,1.0245068,-0.37191963,-0.15572028,0.32260516,-0.31606585,-0.22227848],[-0.03247183,-0.47341025,0.4291947,0.39933267,0.13988854,-0.39599544,0.55437887],[-0.90225273,0.96759653,-0.16322282,-0.085484885,0.7531134,-0.113716386,-0.94529647],[0.48373836,-0.3832921,0.46859494,-0.18692574,-0.41694966,-0.53875446,0.5226155],[-0.67205244,0.7038471,0.22241417,-0.48700184,0.42653432,0.7408016,-0.48191002],[-0.45786425,-0.30025077,0.2096484,-0.34739977,-0.48270205,0.44449425,-0.16691647],[-0.7252935,0.30027175,-0.36952794,-0.33110753,0.74412864,0.31916663,-0.48723075],[-0.24956082,0.15855722,0.11829418,-0.35178453,0.20442583,0.10315542,-0.5577277],[0.60572875,0.15592562,0.2794675,0.13093506,-0.44617447,-0.35550103,-0.050321754],[-0.3681325,-0.061035957,-0.2969062,-0.47592452,0.4287097,0.3534037,-0.18543088],[-1.0721568,0.7378009,-0.9598528,-0.12334156,0.38073373,-0.10097934,-0.232853],[0.04294625,-0.63974065,0.42062205,-0.42591855,-0.27762684,0.15938188,-0.47567785]],"activation":"σ","dense_2_b":[[-0.30254075],[-0.22242764],[-0.022691285],[-0.24312088],[-0.06020819],[0.030239394],[-0.026921261],[0.007865209],[-0.22096242],[-0.037584588],[-0.26260158],[-0.1736811],[-0.039475847]]},{"dense_3_W":[[0.25513327,0.070872426,-0.110507585,0.3759061,0.35881704,0.3910026,-0.6006786,-0.03306147,0.493357,-0.46323946,0.03671056,-0.21105683,-0.39182687],[-0.43874225,-0.18637833,0.6820224,-0.62881595,0.27813682,-0.48058766,-0.5119805,-0.54016674,0.04924179,-0.08472005,0.53560334,-0.2701661,0.002975206],[-0.32438537,0.13052621,-0.6701673,-0.32776773,-0.35359666,0.3229217,-0.29717216,0.11487679,-0.066415556,-0.12536126,0.4941659,0.1786442,0.120943174]],"activation":"identity","dense_3_b":[[-0.036048852],[0.051064212],[-0.037224863]]},{"dense_4_W":[[-0.5492757,1.0810244,-1.2183135]],"dense_4_b":[[0.040853735]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020 b'xf1x00OS MDPS C 1.00 1.00 56310CM030x00 4OHDC100'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020 b'xf1x00OS MDPS C 1.00 1.00 56310CM030x00 4OHDC100'.json deleted file mode 100755 index 89f76fc1e7..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020 b'xf1x00OS MDPS C 1.00 1.00 56310CM030x00 4OHDC100'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.320636],[1.4672288],[0.555081],[0.033456076],[1.4485593],[1.454114],[1.4598106],[1.4775645],[1.4885659],[1.5030168],[1.5086156],[0.033279758],[0.033330515],[0.03337976],[0.03357182],[0.03373127],[0.033942096],[0.034174994]],"model_test_loss":0.0034313653595745564,"input_size":18,"current_date_and_time":"2023-08-07_09-47-01","input_mean":[[16.719969],[-0.34553456],[-0.025382733],[-0.0116697345],[-0.3357296],[-0.33838782],[-0.34124425],[-0.34988672],[-0.35434204],[-0.36063692],[-0.36771125],[-0.01169898],[-0.011674334],[-0.01165932],[-0.011694122],[-0.011704462],[-0.011737361],[-0.011825235]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.12625436],[-0.030992975],[1.7781299],[0.1869105],[-1.89145],[0.008262398],[0.07576191]],"dense_1_W":[[0.009522326,-0.5508854,-0.03136063,0.029506687,-0.05980197,-0.63274986,0.97521657,-0.13758267,-0.011687601,0.08580122,-0.079591334,-0.6555507,0.22438921,0.28736886,-0.12301472,0.2645947,0.49559113,-0.4847965],[-0.018401735,0.37491256,0.0038027354,-0.07964615,0.38655296,0.3701792,-0.5896364,0.00059126964,0.04474745,0.26934335,-0.16293159,0.21059878,0.50954914,-0.18871093,-0.7607577,-0.2164596,0.43915057,-0.026766567],[0.9350977,-0.71919394,-0.3546374,0.20745265,-0.13460818,0.039738543,0.40334892,-0.07613035,0.030847827,0.008619683,0.08559006,0.15181334,0.12347329,-0.15474145,-0.24624701,-0.25018868,-0.195366,0.33170772],[-0.012065977,-0.27186581,0.051803753,0.2872634,0.20535347,-0.2876118,-0.20237778,0.08967258,-0.22776744,-0.11768601,0.09860908,-0.26557824,-0.34911528,0.6094111,0.072002344,-0.28330874,-0.15977615,0.20908129],[-0.94839776,-0.4837727,-0.37379816,-0.36139977,0.24034177,-0.30601895,0.071798995,-0.08959876,0.05900306,0.09905,0.025198964,0.03703683,0.15677285,0.38272214,-0.23764542,-0.28992912,0.1327766,0.1434804],[0.008056818,0.38128582,2.9280443,0.1751433,-0.3785394,-0.18362774,-0.77038676,0.3448695,0.30613825,0.60532063,-0.16727439,-0.08651086,-0.08615892,0.21958824,0.027262067,-0.003296754,-0.5401621,0.18965037],[1.0339775,0.45337832,-0.015582236,-0.0063054073,0.056368716,-0.30668864,-0.02802569,-0.19660905,0.43840367,-0.17627239,-0.030975454,-0.057090487,0.306885,-0.24460675,-0.060861766,0.19225666,-0.3149098,0.15006702]],"activation":"σ"},{"dense_2_W":[[0.6902859,-0.6393492,-0.44761193,-0.3838106,0.4084184,-0.509032,0.4051396],[-0.22254738,-0.08053956,-0.18914244,0.13284113,-0.6440283,-0.17699161,0.3351629],[-0.67853475,-0.18324746,-0.8725586,0.063068196,-0.50468117,0.4416853,-0.718201],[-0.21037722,0.026921168,-0.9217467,-0.5199083,-0.1263664,-0.42184907,0.10097415],[-0.4352312,0.13832696,-0.9440917,-0.61247665,0.11328457,0.5671792,-0.52296823],[0.39174297,-0.09831927,0.28159302,0.31369746,0.10481584,0.09035183,0.13667637],[-0.24003993,0.57464117,0.012518535,-0.31918442,-0.2873576,-0.105834864,0.13482167],[-0.1323263,-0.07528578,0.03620373,0.1001147,-0.34535193,0.2595585,-0.05328041],[-0.6540329,0.5568342,-0.3725302,-0.6058455,-0.09868532,-0.8560664,0.4088728],[-0.072663926,0.43851793,0.17612897,-0.22449215,-0.7815626,-0.23553626,0.42175516],[0.036100484,-0.17945322,0.7347332,0.62554735,-0.22215228,-0.49261123,-0.0353556],[0.4271888,-0.74014676,-0.46194273,0.3661966,0.7197653,-0.4986745,-0.6228453],[0.36488712,-0.13825116,-0.48768026,0.5608169,0.323051,-0.027168993,0.07831102]],"activation":"σ","dense_2_b":[[-0.027757965],[-0.016351482],[-0.024558742],[-0.085644595],[-0.046783354],[-0.07285203],[-0.0006671193],[-0.05067625],[-0.016443914],[-0.020814378],[0.03668154],[-0.20516597],[-0.048601683]]},{"dense_3_W":[[0.32911223,-0.26069397,-0.043751866,-0.48354477,-0.07570592,-0.33116663,-0.4901479,-0.13365264,-0.6457748,-0.36664736,0.58490235,0.1868273,-0.45664176],[-0.34076023,0.24871762,0.6651098,-0.2161779,0.12477483,0.10071758,0.59505385,-0.081202336,-0.16617194,0.083364025,-0.6090697,-0.2990762,0.18049675],[0.35747406,-0.3925092,-0.20388703,-0.22220151,-0.6932658,0.40903154,-0.59456044,0.10416559,-0.23720811,-0.17813742,0.5602839,0.33316627,0.6221551]],"activation":"identity","dense_3_b":[[0.03296679],[-0.010274947],[0.0053764265]]},{"dense_4_W":[[-0.38123104,0.6776871,-1.0605929]],"dense_4_b":[[-0.008991764]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103'.json deleted file mode 100755 index bc74f44fbe..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.03 56310-S8020 4LXDC103'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.175346],[1.2147926],[0.40956834],[0.043589003],[1.2094305],[1.2120428],[1.213341],[1.1980789],[1.1770303],[1.1413853],[1.096605],[0.043463618],[0.043503705],[0.043532778],[0.043430444],[0.043218896],[0.04280715],[0.04230417]],"model_test_loss":0.007078256458044052,"input_size":18,"current_date_and_time":"2023-08-07_10-44-09","input_mean":[[23.77826],[0.042549085],[0.0008366095],[-0.004325034],[0.041777823],[0.04188725],[0.04202964],[0.04286655],[0.041103654],[0.037775554],[0.035643935],[-0.0043570427],[-0.0043655117],[-0.0043805246],[-0.004415017],[-0.004466785],[-0.004567743],[-0.0046552946]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.965341],[-1.3328798],[2.873564],[0.35027432],[0.6997454],[-0.21583362],[-0.27257147]],"dense_1_W":[[-0.47184834,-0.69497913,-0.2730397,-0.13578247,-0.41297266,-0.36849588,0.45024145,-0.2319935,-0.30260193,-0.15122801,-0.51926386,-0.45438546,0.07730465,0.5861091,-0.020928165,0.48080453,0.056900945,0.042121172],[0.59712833,-0.7607585,0.026460258,0.32494903,-0.122338474,-0.1373476,0.071163654,0.1314587,-0.12158134,-0.2506838,0.13905102,-0.7858368,-0.19018257,0.18298808,0.830341,0.3877357,0.040660307,-0.34048963],[0.4699344,-1.0309892,-0.29336283,-0.13386539,-0.38560688,0.13875784,0.310352,-0.46929145,-0.19158518,-0.39478084,-0.32203192,-0.44451842,-0.03810472,0.13355829,1.0309442,0.12171281,0.06862913,-0.056783624],[-0.31507948,0.88658756,3.0891764,-0.016361725,-0.46861553,0.06094547,-0.7714304,-0.1749589,0.7333911,0.28544956,-0.52014995,0.7543131,-0.18914306,-0.438352,-0.09483591,-0.10935197,0.06640237,0.10865169],[-0.6810932,-0.62288636,3.2094796,0.23221104,-0.025693255,-0.024708634,0.39303362,0.26580834,0.01109397,-0.008134186,-0.011310946,-0.16316406,-0.22316264,0.030972356,0.5338975,-0.17917001,0.2126686,-0.2364076],[0.11154792,0.45386994,-0.0020048814,-0.13927853,0.20206624,0.26231214,-0.5960362,0.5244008,0.074492626,-0.26563543,0.07578456,0.25490692,0.20137514,-0.46869782,-0.06294161,0.13251714,-0.106802404,-0.038976945],[0.04923776,-0.56570596,-0.023485426,0.31115237,-0.015669545,-0.54184866,0.43453303,-0.05844923,-0.059031844,-0.3202865,0.20897299,-0.4897307,-0.5586684,0.590096,0.2163083,0.06288182,-0.15607044,0.043854684]],"activation":"σ"},{"dense_2_W":[[0.6042513,-0.41607365,-0.15501793,-0.9058375,0.494895,-0.5677933,-0.19259822],[0.24214138,0.89813733,1.3278699,-1.0037,-0.27477452,0.15186948,0.82211167],[-0.4369761,-0.27131867,-0.46790847,0.4080189,0.12101331,0.57774526,-0.6197042],[-0.3105224,0.19357671,-0.5197163,-0.1386291,-0.3751452,0.76656866,-0.42951363],[0.4263876,-0.19077252,-0.45208168,-0.2320784,0.2086758,-0.11445575,-0.5586836],[0.1574424,-0.08930149,-0.025565622,0.11400002,0.07183162,0.33150333,-0.67951137],[-0.00696618,0.02959456,-0.30796584,0.09413716,-0.016803082,-0.2540206,-0.64932644],[-0.478996,-0.22900066,0.17936084,0.51007396,-0.27805895,-0.19075584,0.362384],[0.011149391,0.36451602,0.42717254,-0.2344727,0.6348016,-0.77200013,-0.15786803],[0.43334863,-0.38772285,-0.4590563,0.33910498,-0.32742906,0.5451967,-0.672129],[1.9660255,0.25045738,-0.2614816,-1.1789049,0.25753427,-1.7329595,0.075383596],[0.80854565,0.44739807,0.09770806,-0.48315546,-0.13119374,-0.7300847,0.13286975],[0.11956496,-0.28744987,0.3014693,-0.28274173,0.52113587,-0.47521448,0.35999197]],"activation":"σ","dense_2_b":[[-0.1408794],[-0.06288287],[-0.012260787],[0.08074568],[0.02582188],[0.002878733],[-0.238239],[0.022335405],[-0.08137566],[0.048318516],[-0.48222473],[-0.11309628],[-0.17126083]]},{"dense_3_W":[[0.5729494,0.443129,-0.5894581,-0.52491343,-0.10086044,-0.36603114,0.09061523,-0.0777708,0.45014396,-0.44782442,0.61933756,0.6175609,0.5284045],[0.60463345,0.24479416,-0.64297765,-0.64166015,0.07398127,-0.23124957,0.013111015,-0.58013326,0.60139996,-0.5977943,-0.31441298,-0.034418926,0.5766632],[-0.41230297,0.0819272,0.021512562,0.40312076,0.5106018,-0.0969059,0.306975,0.06700377,-0.34809703,0.48136255,-0.21470276,0.09597008,0.49942]],"activation":"identity","dense_3_b":[[-0.04435611],[-0.025747824],[0.027492581]]},{"dense_4_W":[[-0.851287,-0.29851007,0.48474476]],"dense_4_b":[[0.038550936]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104'.json deleted file mode 100755 index 4e0dfca188..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8020 4LXDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.056006],[1.4101361],[0.41225532],[0.045771565],[1.4047778],[1.4076663],[1.4089199],[1.3933164],[1.3716278],[1.3344857],[1.2923727],[0.04557442],[0.045628536],[0.045675997],[0.045730982],[0.04567293],[0.04542135],[0.045018636]],"model_test_loss":0.00867381040006876,"input_size":18,"current_date_and_time":"2023-08-07_11-10-56","input_mean":[[25.56377],[-0.052645843],[-0.0035276904],[-0.013127003],[-0.051226523],[-0.05180752],[-0.052373447],[-0.05199156],[-0.051400427],[-0.052954886],[-0.052905556],[-0.013169344],[-0.013158662],[-0.0131510245],[-0.013154536],[-0.013176389],[-0.013252023],[-0.013282005]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.68120617],[-1.2007718],[-0.50614536],[0.7864571],[1.8299532],[0.14825825],[-0.015340148]],"dense_1_W":[[1.1199652,-0.078471795,-0.02101174,0.3584074,0.17968981,-0.19903003,0.12223812,0.18867153,-0.1669939,0.012081453,-0.10156123,-0.16801898,0.13951854,-0.04682727,0.040429268,-0.04173933,0.19039303,-0.07381891],[-0.18552107,-0.63688856,-0.02137382,0.20457703,-0.29974234,-0.55259144,0.45336398,-0.021133235,0.01901811,-0.37169448,0.13456118,-0.3071185,-0.22914943,0.61524135,-0.27383205,-0.1330443,0.14043514,0.08927942],[0.1926113,-0.27000305,-0.008649953,-0.21855511,-0.030888382,-0.16513677,0.39715445,-0.30844018,-0.017153203,0.093351975,-0.012528175,-0.35072303,-0.10748886,0.113659255,0.49542776,0.28211826,0.23563762,-0.4190026],[0.9724377,0.5390427,0.01619258,-0.3782754,-0.13919044,-0.18610589,-0.25080666,0.039643906,-0.23925631,0.45390597,-0.16189374,-0.15735695,0.32372928,-0.49280795,0.13093178,0.40426654,0.30928588,-0.4606705],[0.31533858,-0.32204363,-0.031351704,0.25225377,-0.6184541,0.012579387,-0.013788457,-0.2484758,-0.38601685,-0.37180173,0.30587637,-0.41104367,-0.06381989,0.28475899,-0.11201605,0.15005648,-0.02408876,0.070196375],[-0.05559003,-0.57731414,0.0009183374,-0.15830034,0.32752046,-0.47376716,0.32692105,-0.028732348,-0.3711419,0.3037169,0.026518416,-0.16056052,-0.086504,0.080008745,0.2828945,-0.017448967,-0.06945115,-0.020946816],[-0.01733753,0.7237506,3.472701,0.27271795,-0.40486532,0.056092504,-0.24601175,-0.052139923,0.16743213,-0.068572104,-0.00896937,0.2883757,0.5440398,-0.29913893,-0.3024588,-0.5673238,-0.2726739,0.35933533]],"activation":"σ"},{"dense_2_W":[[-0.5932156,-0.17436917,-0.86359346,0.32812464,-0.7771405,-0.2133228,0.42944756],[-0.21486568,0.017540466,-0.3076961,-0.040222447,0.12777315,0.01670594,-0.72814006],[0.037832227,-0.3021096,-0.43493658,0.2691959,0.002386393,-0.90290415,-0.8527598],[-0.05667615,0.4105785,0.43791267,-0.66102684,0.19379678,0.0034966974,-0.63614714],[-0.24539289,-0.2868011,-0.971667,0.74372065,0.0054125004,-0.70493174,-0.27502376],[0.22307737,1.1438144,0.48204678,-1.34653,-0.48455057,0.64900017,-0.72665155],[0.47112092,1.0107919,0.5427512,-1.2793072,-0.42651054,0.5067852,-0.5551137],[-0.7673742,-0.6745484,-0.99198294,-0.41266263,-0.4100962,-0.174795,0.5818804],[0.0852762,0.18207242,0.8183619,-0.5843856,1.0058954,0.18574238,0.08424301],[-0.08769919,0.5601262,0.5962264,-0.0019132155,0.8132487,0.6793232,0.17075731],[-0.7578988,-0.79018444,-0.47751963,0.36069503,-0.040583238,0.050442085,0.2954631],[-0.4815163,-0.32178232,-0.15335134,0.6915401,-0.60536283,-0.56515604,-0.20786098],[0.2656557,0.9920723,0.4726771,-1.0218889,-0.14299747,0.23651631,-0.15890613]],"activation":"σ","dense_2_b":[[0.026248137],[-0.44299766],[0.043020185],[-0.44655073],[0.21503547],[-0.51649547],[-0.52930456],[0.09336591],[-0.2554213],[-0.28878778],[0.1169097],[0.3210494],[-0.4154725]]},{"dense_3_W":[[0.41299453,-0.066272356,0.33743006,-0.20297222,0.3149677,-0.66625124,-0.47435388,0.87357444,-0.46995607,-0.6577897,0.6913372,0.8391053,-0.41768512],[0.21756826,-0.04198229,-0.34622204,-0.077409394,0.36491418,0.34946445,-0.16554481,0.25513986,-0.21913688,-0.49385577,-0.107037865,0.13471128,0.3483314],[-0.65252286,-0.4097913,0.49876347,-0.57664716,-0.16723605,-0.40482098,-0.10828655,-0.3436007,0.1842379,0.20728882,-0.73673856,0.11894116,0.22566953]],"activation":"identity","dense_3_b":[[0.09075453],[0.16417536],[-0.034160458]]},{"dense_4_W":[[1.3366597,0.032031875,-0.25315842]],"dense_4_b":[[0.08058132]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104'.json deleted file mode 100755 index f115f5f8a5..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00LX2 MDPS C 1.00 1.04 56310-S8420 4LXDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.973073],[0.95391583],[0.41054899],[0.04000471],[0.948944],[0.9501768],[0.9511314],[0.94470316],[0.9386586],[0.9273338],[0.9128515],[0.039655894],[0.039748702],[0.039835606],[0.040048752],[0.040042162],[0.039870463],[0.039569415]],"model_test_loss":0.006820903159677982,"input_size":18,"current_date_and_time":"2023-08-07_11-35-32","input_mean":[[25.87563],[0.03444932],[-0.005718268],[-0.0067776064],[0.035757456],[0.034977943],[0.03397304],[0.032574583],[0.033818536],[0.035891917],[0.03648409],[-0.0067452686],[-0.0067759207],[-0.0068118596],[-0.0069498047],[-0.0070627993],[-0.0072338316],[-0.0074106893]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.29337177],[0.66558135],[1.4415557],[-0.5266783],[0.16447654],[-0.10947574],[-0.06639086]],"dense_1_W":[[0.005461846,0.3028855,-0.9854084,-0.36890888,-0.53238684,0.52668965,-0.25776407,0.22581728,0.46904722,-0.04119145,-0.3861126,0.05695158,0.46752244,-0.22415254,0.03926628,-0.30610013,0.33170545,-0.08449963],[0.22456734,0.3669208,-0.0028302418,0.03447742,0.23297563,0.29559872,-0.5093176,0.085083686,-0.2612917,0.48527485,-0.1594518,-0.00450076,-0.21800643,0.43129826,-0.35478443,0.33027887,-0.5035417,0.14951973],[0.49297655,0.15207167,-1.0634992,0.11992674,-0.119991384,-0.032969154,0.3350461,-0.05330331,0.2389221,-0.31744695,-0.019832905,-0.011234121,-0.19565247,0.27552214,-0.02907322,-0.20475934,-0.27375516,0.22658962],[-0.2927863,-0.25061154,-0.86077774,0.38277695,0.46133354,-0.24130213,0.49445266,-0.30399632,-0.16158967,0.27781072,-0.081007525,-0.2356671,-0.027503187,-0.046890937,-0.062831424,0.13332452,-0.20753789,0.0064896126],[0.14027123,-0.31178385,0.00042652222,0.046416104,-0.06375891,-0.7625973,0.49403247,0.08477962,0.19782965,0.06535667,-0.2237524,0.00016943947,-0.4144055,0.47161788,0.22153234,-0.3320155,-0.17704901,0.29443938],[0.038497016,-0.37529072,-0.0028597962,0.108154766,0.060559765,-0.06721315,0.19045271,0.049022302,-0.2868929,-0.24597946,0.20001437,-0.54507667,0.13740665,-0.09072125,0.15628168,0.4834033,0.5418541,-0.52194417],[-0.084147945,0.7816322,3.3733516,-0.17901123,-0.5475804,0.13706692,-0.5615205,0.06558603,-0.15445961,-0.041518424,0.07307288,0.54342633,-0.091437295,-0.04500106,-0.18742481,-0.11182337,-0.32038802,0.37347284]],"activation":"σ"},{"dense_2_W":[[-0.33089092,-0.22617778,-0.2098423,0.464438,0.4536977,0.6569846,-0.11208219],[0.42292553,0.72667843,-0.3986618,-0.48419535,-0.89743257,-0.45015466,-0.03912514],[0.15107515,0.95479184,0.40600297,-0.19311583,-1.0210984,-0.8584778,0.5974732],[0.0047267857,0.15918939,0.07144057,-0.35448834,0.637432,0.184555,0.18535456],[-0.12454911,0.29654753,-0.34574932,0.34942415,-0.26024386,0.44442993,0.14613877],[-0.37099168,-0.5386991,-0.3271315,0.54532915,0.6926416,-0.17912938,-0.6608735],[-0.63072056,-0.3643776,0.64305526,-0.29544187,0.7246565,0.56209284,-0.16261125],[-0.04684182,0.7014187,0.08467743,-0.5152171,-0.0669242,-0.09466255,0.2614267],[1.1972748,0.91310155,-0.61666393,-0.3711597,-1.1699697,-0.8451692,-0.5264526],[-0.17695586,-0.7369236,0.15112078,0.4462285,0.8489584,-0.19433662,-0.18448965],[-0.53724587,0.017794129,0.4338191,0.24491285,0.36948907,0.70015615,-0.30459952],[0.757806,-0.034863185,-0.77135277,-0.2933871,-0.27939826,-0.9393837,0.2961518],[0.43675852,0.053857032,0.498965,0.37739882,0.4588103,-0.37056544,0.14442298]],"activation":"σ","dense_2_b":[[-0.06206714],[0.07846223],[0.107750826],[-0.046243668],[-0.033654705],[-0.035633843],[0.015834749],[0.017618928],[0.04875132],[-0.032331567],[-0.041599613],[-0.009607665],[-0.095047034]]},{"dense_3_W":[[-0.27053934,-0.5599827,-0.5261372,0.5703626,0.2743929,0.6257322,0.3774779,-0.20829831,-0.4448903,0.6131186,0.29582694,-0.49130827,-0.046639528],[0.2578624,-0.83337194,-0.027313164,-0.29705286,-0.3806988,-0.019476013,0.53997874,-0.44911963,-0.4572695,0.39203748,0.4073216,-0.5038811,0.19435048],[0.5505637,-0.52018625,-0.22615957,-0.042771284,0.30023396,0.07614445,-0.36263672,-0.5696729,-0.15394297,0.29655027,0.5070545,-0.16651826,0.013556858]],"activation":"identity","dense_3_b":[[0.004786969],[0.017816467],[0.008341951]]},{"dense_4_W":[[-0.70178753,-0.6261923,-0.58992994]],"dense_4_b":[[-0.009440654]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.00 56340-S9000 8B13'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.00 56340-S9000 8B13'.json deleted file mode 100755 index 3583885a42..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.00 56340-S9000 8B13'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6636677],[1.0415155],[0.4405441],[0.03810654],[1.0415744],[1.0396914],[1.0376655],[1.0191053],[1.0017574],[0.9810815],[0.9587672],[0.03804814],[0.038069014],[0.0380983],[0.038099322],[0.037983626],[0.037768982],[0.037503105]],"model_test_loss":0.0070123192854225636,"input_size":18,"current_date_and_time":"2023-08-07_12-25-32","input_mean":[[24.58516],[-0.053356342],[0.0018561187],[-0.028318454],[-0.052350596],[-0.05162282],[-0.050804704],[-0.052188896],[-0.050713386],[-0.048506834],[-0.04722293],[-0.028366687],[-0.028323544],[-0.028278554],[-0.028274836],[-0.028321512],[-0.028377615],[-0.028479535]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.40149847],[-0.036968376],[2.9324126],[-0.050440587],[-1.6624343],[-3.111909],[-0.08347813]],"dense_1_W":[[-0.2231008,0.43419427,-0.008418177,-0.25645596,-0.27315116,0.3730735,-0.56420225,0.531981,0.050561436,0.049857076,0.01984278,0.15615726,0.14532468,-0.1341266,-0.14356773,0.022001041,-0.47281718,0.04480727],[-0.3699377,-0.8539471,-0.011191063,-0.03840326,0.5528697,-0.5095522,0.79292774,0.53987986,0.3397071,0.09874697,0.16869819,-0.20077275,-0.38679546,0.18692482,0.27885512,-0.3531348,-0.11918749,-0.47793227],[0.44518143,-0.8884128,-0.12010096,0.2840199,-0.01654247,-0.37926447,0.6241959,-0.3588111,-0.18594895,-0.37540522,-0.1184817,-0.28526396,0.09523298,-0.08844218,0.28927204,-0.030794572,-0.22434682,0.02950121],[0.051157415,-1.5702069,-3.6776006,0.07019505,0.37266773,0.20280795,0.16947661,0.08074228,-0.93735164,0.26037607,1.2727387,-0.5875368,0.118953235,-0.052235976,0.5290898,0.0075836885,0.2145108,-0.341396],[0.8406824,-0.6357117,-0.012508759,-0.114874125,0.22464035,0.6901549,0.30033943,0.15118437,0.42181274,0.32857767,0.35121942,0.5021367,-0.826353,-0.3353306,-0.15846261,0.104648225,-0.16137573,-0.854983],[-0.48347813,-0.9890036,-0.12638868,0.4244501,0.22061923,-0.6496192,0.73929363,-0.2879861,-0.27470425,-0.47338513,-0.026745116,-0.7317621,0.03403621,0.31189573,0.43235132,-0.16640383,-0.20338999,-0.027866011],[-0.0053826473,-0.8913341,0.00012506823,0.27318633,-0.0037789296,-0.86155355,0.40793747,0.27253038,-0.080729984,-0.031735364,-0.02203216,-0.15663473,-0.13908623,-0.0398157,0.14052938,0.24337272,-0.40471002,0.18925937]],"activation":"σ"},{"dense_2_W":[[0.30025923,-0.26395065,-0.6900893,0.12076107,-0.27104673,-0.4204864,-0.12814534],[-0.59520245,-0.31921673,0.12515253,-0.10728783,0.30437303,-0.44225642,-0.7510248],[-0.97030437,0.091399565,1.041651,0.5298835,0.12482943,-0.39294013,0.3376671],[-0.35264635,0.030865038,-0.043722976,-0.25330108,-0.47328326,-0.044327017,0.23717652],[0.45056573,0.22202963,-0.79909515,-0.29515973,-0.34452644,-0.12819465,0.28630367],[-0.1962231,-0.06441422,-0.3860033,-0.45442382,0.5523658,-0.37580812,0.17132744],[0.15821941,-0.65717125,-0.29991794,-0.23657624,0.30773747,-0.4825543,0.3368553],[0.44671333,-0.23616415,0.060102407,-0.4938546,0.5823045,0.030239027,-0.5907059],[-0.7725862,0.65374887,0.99496603,-0.52427566,-0.74721336,1.1665807,0.485246],[0.5747518,-0.54922277,-0.4279965,-0.32235864,-0.39549112,-0.63029706,0.08336972],[-0.6286281,0.53232676,0.09173603,-0.3197821,-0.58844185,0.6930728,0.89978975],[-0.8540552,0.23237345,0.01174916,0.02329381,-0.21082848,0.4638076,0.61707777],[-0.38213924,0.12289726,0.02848087,-0.2358143,-0.09083596,0.68827146,0.39511114]],"activation":"σ","dense_2_b":[[0.007899074],[-0.24461511],[-0.17740962],[-0.0007998822],[-0.01197454],[0.04764368],[-0.017339833],[0.072300844],[-0.23241436],[0.096137755],[-0.14189208],[-0.18733168],[-0.09664416]]},{"dense_3_W":[[0.49906957,0.43125764,-0.0050584874,0.29804975,0.15355866,-0.29560578,0.35590634,0.5839829,-0.59895027,0.1900103,0.30921668,-0.6190028,0.016287152],[-0.09681585,-0.42354482,-0.550485,-0.07733479,0.41151676,0.5945164,-0.04800964,0.37133008,0.010906173,0.52148324,-0.5151786,-0.2838045,-0.49523494],[-0.25222576,-0.27630806,0.11442517,-0.29334897,-0.17029618,-0.20770106,-0.042667136,0.15740934,0.22484288,-0.6796396,0.36673924,0.31320038,0.2187441]],"activation":"identity","dense_3_b":[[0.041152943],[0.050569043],[-0.04529463]]},{"dense_4_W":[[0.6610413,0.93398947,-0.9665046]],"dense_4_b":[[0.04895585]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.01 56340-S9000 9201'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.01 56340-S9000 9201'.json deleted file mode 100755 index 17e7de42ee..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020 b'xf1x00ON MDPS C 1.00 1.01 56340-S9000 9201'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.31745],[1.1132171],[0.47852853],[0.042235937],[1.1178341],[1.1160868],[1.1140894],[1.0932467],[1.0700195],[1.0378196],[1.0042937],[0.042053793],[0.042099174],[0.042147044],[0.04229224],[0.042290386],[0.04213167],[0.04170115]],"model_test_loss":0.007971670478582382,"input_size":18,"current_date_and_time":"2023-08-07_12-50-19","input_mean":[[22.745663],[-0.02314496],[0.006329487],[-0.007906635],[-0.024401885],[-0.024847621],[-0.024651228],[-0.020919092],[-0.019033547],[-0.014008034],[-0.00841008],[-0.007998144],[-0.007991008],[-0.007984672],[-0.007925103],[-0.007978865],[-0.008057719],[-0.008112883]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10009004],[-2.4347603],[-0.45647046],[-0.26168102],[0.4559833],[-2.3471363],[-0.024856634]],"dense_1_W":[[0.00685374,0.29781812,-0.0045040743,-0.2483261,0.36356887,0.7941921,0.115958326,-0.303391,-0.31066865,-0.4133796,0.5499007,0.6501906,-0.06862256,-0.59767103,0.10247653,0.22389303,-0.0670222,0.012925103],[-0.43374088,0.95874643,0.010345864,0.029017475,-0.63670444,0.31695086,0.07258637,0.13453023,0.47587368,0.46790752,-0.30345193,0.46282083,-0.093325965,-0.0597011,-0.52926123,-0.23205075,0.21186207,0.15266287],[-0.010350411,0.40709472,0.0041358415,0.5390394,-1.0806609,0.64311004,-0.09017517,-0.18798684,-0.12183539,0.010223074,-0.05575936,0.11231753,-0.13522181,0.09871264,0.1674028,0.2260443,0.92522573,0.22312124],[0.20998508,-0.7601628,0.0044564125,0.0017229705,0.8512942,-0.2566007,-0.22104141,-0.06553982,-0.23601292,-0.25825587,0.37305197,-0.1024032,-0.36825082,0.21398295,0.9294358,0.4860802,0.548133,-0.0834842],[0.37757793,0.6797055,-0.004590874,-0.56208813,-0.2976163,0.6580122,-0.56625277,-0.09451766,0.17261557,0.19591618,-0.17517307,0.20502836,-0.16963857,-0.29324597,-0.00045291794,0.17973329,-0.5582203,-0.4135608],[-0.43611768,-1.3107734,-0.009830083,0.20460518,0.74073887,-0.54199576,0.2283278,-0.0015428674,-0.17581679,-0.8339866,0.4044754,-0.4352709,-0.3658589,0.2867904,0.8084769,-0.29901847,0.13045451,-0.26202014],[-0.00031012832,-0.38003787,-2.2669997,0.3342903,0.09606713,-0.04249713,0.8710125,-0.60461634,-0.725245,0.3113496,0.45141265,-0.7288661,-0.29998294,0.6268596,0.084224634,-0.021362655,0.14650373,-0.14192608]],"activation":"σ"},{"dense_2_W":[[0.6022557,0.12733772,0.5688971,-0.47040647,-0.19734168,-0.25412557,-0.64506894],[-0.87848234,-0.2927233,-0.38882446,0.01753978,-0.66094726,-0.009080832,-0.046852414],[-0.6812371,-0.12201253,-0.17657526,-0.14278913,0.10146227,-0.33213505,-0.42730355],[0.5288182,-0.1530913,0.2752494,0.21740611,0.08138198,-0.79552627,-0.09336282],[-0.67439306,-0.7681033,-0.25968102,0.10087962,-0.073134035,0.74803954,0.5110043],[-0.26234108,-0.5890924,-0.90448207,-0.34318918,-0.14372866,0.06295756,-0.5832333],[0.56269956,0.31309462,-0.22407316,-0.74141455,0.3451219,0.16766134,-0.038615566],[-0.42197526,-0.6832733,-0.11012318,0.81781024,-0.49532312,0.5044022,0.6058622],[-0.22078349,-0.49892014,-0.6127092,0.39234552,-0.9247115,0.024139864,-0.1763933],[0.4427586,0.6229294,0.29448354,-0.64260805,-0.12868074,-0.14595105,-0.4953741],[-0.8060251,-0.57394534,-0.24703805,0.22687304,-0.019541593,0.08022944,-0.17855246],[-0.1300446,0.48822337,0.5738244,-0.4108309,0.12754422,-0.551131,-0.15526813],[-0.9597397,0.17972887,-0.75652325,0.14697702,-0.6045928,0.7029836,0.5235034]],"activation":"σ","dense_2_b":[[-0.047481403],[-0.06560398],[-0.27885428],[0.0077811894],[0.058150165],[-0.25603768],[-0.049105696],[-0.031028127],[-0.19086929],[-0.09221374],[-0.01903645],[-0.00713192],[-0.066267215]]},{"dense_3_W":[[0.04823237,-0.536979,0.27751818,0.1655786,-0.38873705,-0.2579097,0.089698836,-0.45589212,-0.138498,0.4641493,-0.38723156,0.27027082,-0.26783973],[0.61633486,-0.5096373,-0.36629617,-0.20646454,-0.7141381,-0.18465841,0.49784765,-0.26393116,0.26770627,0.6908027,0.36391553,-0.4442028,-0.09214944],[0.5473221,0.5475575,-0.34196937,0.420392,-0.2992392,0.3096095,0.6112058,-0.34745613,-0.20254803,-0.1975557,-0.50081915,0.5198232,-0.6212465]],"activation":"identity","dense_3_b":[[0.056188975],[0.049475864],[0.041392375]]},{"dense_4_W":[[1.0715346,0.3261359,0.63600165]],"dense_4_b":[[0.051208194]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8409'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8409'.json deleted file mode 100755 index 4cc4de130e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8409'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.896653],[1.2753624],[0.5317558],[0.04692811],[1.2610264],[1.2643604],[1.2686262],[1.2531861],[1.2319366],[1.202845],[1.1703773],[0.046726346],[0.046764154],[0.04680635],[0.046880126],[0.04682511],[0.046679065],[0.046382528]],"model_test_loss":0.007070815656334162,"input_size":18,"current_date_and_time":"2023-08-07_13-44-54","input_mean":[[22.618917],[-0.12753934],[0.0057965177],[-0.0060813604],[-0.1289674],[-0.12929432],[-0.13033809],[-0.12293899],[-0.12034268],[-0.11245273],[-0.10651569],[-0.0061726016],[-0.006176799],[-0.0061910134],[-0.0061672167],[-0.006181863],[-0.0062086484],[-0.0062240455]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20530139],[-0.33197266],[-2.1811483],[3.7774518],[1.2599417],[-3.9418454],[-0.18807785]],"dense_1_W":[[-0.03620619,0.19689178,0.09866175,-0.09322594,-0.078725435,1.1390496,-0.7356808,-0.012869471,0.15444094,0.07297737,-0.14101654,0.03384644,0.15915924,-0.4428113,0.22565778,-0.04034416,0.19587907,-0.20443197],[-0.06502236,-1.4234812,-6.6071515,-0.25332624,0.78716946,1.0407856,1.018014,-0.38713723,-1.3469931,-0.75132585,0.98401487,-0.26469627,-0.3915288,0.12644795,0.454595,-0.08865953,0.17730202,0.021167783],[-1.5585331,-0.5798272,0.22335605,0.03818846,0.6245181,-0.47028995,0.5918746,-0.054077096,0.54335994,0.034108605,0.047890723,-0.41479602,0.2831795,0.124537066,0.255331,-0.33859366,0.039150972,-0.07043993],[1.394775,-0.23261723,-0.28053886,-0.22738497,0.10594227,-0.6431526,0.0015595681,0.1450129,0.015581782,-0.0155119905,-0.31749186,-0.25720045,0.47923756,0.052539762,-0.22887582,0.12794253,0.039806157,0.09652687],[1.740706,0.11734064,0.3073235,0.26312536,0.08612904,-0.15223877,0.44893447,-0.15653725,0.32468832,0.13602708,0.0652706,-0.584739,0.15232132,0.11354476,0.053987373,0.033912808,0.3362455,-0.4482535],[-1.4522748,-0.30714616,-0.29713413,-0.21153042,0.35632578,-1.3907708,0.5317352,0.12741564,-0.0064160936,0.12887736,-0.41460907,0.34433788,-0.2432804,0.09331247,-0.24749541,0.36895674,-0.23798321,0.21776763],[8.573988e-6,0.27198073,0.0034219692,-0.06563512,-0.29250515,1.0881044,-0.64386135,0.1843868,0.031134987,0.025746144,-0.008881639,0.6693814,-0.17966537,-0.19181062,-0.4711859,0.06456762,-0.24241222,0.27226776]],"activation":"σ"},{"dense_2_W":[[-1.4079269,0.36448163,0.54817736,0.5838273,0.023329774,0.6411659,-1.3597034],[-0.51554555,-0.4119896,-0.0757938,-0.52624255,-0.32881626,-0.09241929,-0.6173628],[0.17114219,-0.5917404,0.52103335,-0.91308004,-0.64996517,-0.45323023,-0.27036774],[-0.7816448,-0.34142476,0.27209246,0.83823246,0.25578618,0.78207064,-0.5922945],[-0.63912165,0.056242548,0.40855795,-0.16621237,0.15351564,0.39832217,-1.1449009],[0.4102927,0.34681398,-0.034716405,-0.62436956,0.011792132,-0.74056876,0.11482153],[0.24064858,0.38059077,-0.389402,-0.75450635,-0.05456221,-0.24500677,0.71137184],[-0.047961276,0.31060773,-0.3119071,-0.08383901,-0.21034946,-0.39693183,0.71529126],[0.8864901,-0.13776888,-0.40138802,-0.5242289,0.3239953,-0.2595277,0.62388825],[0.47216353,-0.35241503,-0.41698897,-0.24461508,0.41777575,-0.14391029,0.903978],[-0.8213227,1.2268875,-0.76732516,1.3276708,0.9519929,0.39465946,-0.77069944],[-0.72467273,0.39069507,-0.303594,0.23257187,-0.3579329,0.6990695,-0.30224627],[-0.8027119,0.16713265,0.5837898,-0.078509,0.07100372,0.7838912,-1.001968]],"activation":"σ","dense_2_b":[[-0.25387064],[-0.30531904],[-0.02434373],[-0.18550278],[-0.324516],[-0.007148533],[0.015090404],[-0.005064251],[0.035354376],[0.17334807],[-0.047236674],[-0.22442318],[-0.2525012]]},{"dense_3_W":[[-0.5563823,0.087780975,0.18698041,-0.3394262,0.008317095,0.66230845,0.58490086,-0.0028694326,0.66133267,0.11329112,-0.48986503,-0.11975826,-0.68024075],[-0.54618734,-0.104708515,0.64458096,-0.55121964,-0.24448135,-0.28165248,0.36517873,0.50535154,-0.17659181,0.5379147,-0.3447484,-0.52534163,-0.031908248],[0.3347168,-0.2290193,0.5621586,0.30639598,-0.36269528,0.5464596,-0.4033829,0.14275603,-0.34687775,-0.47407392,-0.01195648,0.4732098,-0.3589579]],"activation":"identity","dense_3_b":[[0.059350483],[0.070591144],[0.03717587]]},{"dense_4_W":[[1.0896041,0.62514883,0.03852297]],"dense_4_b":[[0.06460823]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8A12'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8A12'.json deleted file mode 100755 index 17e2a43814..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.00 56340-S2000 8A12'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.358906],[1.038606],[0.52003336],[0.03449092],[1.025025],[1.0285342],[1.033122],[1.0280541],[1.0189449],[1.0088568],[0.9928373],[0.034335066],[0.03436934],[0.03440254],[0.03445266],[0.034416895],[0.0341578],[0.033791963]],"model_test_loss":0.005529345478862524,"input_size":18,"current_date_and_time":"2023-08-07_14-09-26","input_mean":[[22.959547],[-0.052741483],[-0.004481133],[-0.0017092802],[-0.050769974],[-0.051488187],[-0.05162069],[-0.051915728],[-0.050174993],[-0.052261814],[-0.05214494],[-0.0018301547],[-0.0017879381],[-0.0017471444],[-0.0015715543],[-0.0013785135],[-0.0013404073],[-0.0012749063]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.502992],[-4.356874],[-0.0042948504],[-0.5028367],[0.051018726],[-0.15338463],[-0.1509676]],"dense_1_W":[[-1.6411753,-0.32697722,0.3120288,-0.39750454,-0.13167776,0.86057496,-0.6939451,0.6071072,0.14159355,-0.0063595567,0.25375837,0.44821614,-0.29423907,-0.028513383,0.3023456,0.1316031,0.036363505,-0.14323804],[-1.6328104,0.5942663,-0.30570295,-0.123248264,-0.034441516,-0.87338793,0.69189394,-0.6236746,-0.052855786,-0.13514496,-0.221532,0.0011332782,-0.20347112,0.4917645,-0.20858406,-0.14016572,-0.089411296,0.21504334],[-0.21007055,0.41557994,0.037863724,0.4959517,-0.45360732,0.7074271,-0.28405392,-0.111691974,0.18850206,0.015849397,-0.12006921,0.25533158,0.07951575,-0.8312149,0.03035362,-0.21261916,-0.1735698,0.18428572],[0.3310752,-1.6132231,0.045440618,-0.7522596,0.412424,0.76531404,0.04731471,0.6839483,-0.027021188,0.28972885,-0.1742223,0.42704728,0.58289766,-0.2732268,-0.12959486,-0.24415614,-0.101852916,0.3081016],[-0.011170702,-1.5589105,-3.495791,0.33255365,0.94771427,0.5074355,1.0023425,-0.1316612,-1.802023,-0.406795,1.0740488,-0.35055503,-0.06440544,0.37088916,0.3481748,-0.535885,0.018674394,0.108048186],[-0.03412157,0.6122013,0.07255059,0.06107659,-0.46524987,1.2860525,-0.8113254,0.04586139,0.033707816,-0.16047795,-0.015120353,0.37895563,0.42033595,-0.6925642,-0.38245085,-0.044110574,0.058740735,0.07787144],[-0.005288463,0.5904715,-0.10395662,0.34950814,0.29257905,1.0213965,-0.35862765,-0.72644925,0.097196706,-0.19612406,0.52340215,-0.017568931,0.2601534,-0.986547,0.5020255,0.2743259,0.23409082,-0.5168832]],"activation":"σ"},{"dense_2_W":[[-0.47496098,0.5138251,-0.7892653,-0.75560045,0.48735014,-0.53306115,0.16811597],[-0.3102205,1.9871738,-0.4366547,-0.41493884,0.11469561,-0.6691428,-0.44414428],[0.19802967,0.3727984,0.39753315,0.42768952,0.41358182,0.6435363,0.24335779],[-0.66378856,0.5819373,-0.051759593,-0.89287,0.096190274,-0.6734764,0.11215895],[0.3314184,-0.13227205,0.21310683,-0.12126428,-0.16501734,0.4487741,0.72218174],[-0.8345799,-0.4282664,-0.47909757,-0.4936077,-0.46425676,-0.7605428,0.2990966],[0.066827886,-0.5356042,0.10570844,0.5161373,0.062971145,-0.31447783,0.17028944],[-0.7473447,0.56870705,-0.67485994,-0.19401033,0.22181664,-0.14370336,-0.010975309],[0.24166872,-0.4976755,0.6000056,0.3400344,-0.38725704,-0.06810995,0.5731925],[-0.35525835,1.1168011,-0.22931977,0.10211827,0.0522062,-0.82619613,-0.69551224],[-0.9838338,1.1467155,-0.25217372,-0.08675337,0.07187647,-0.39047343,-0.51041925],[0.5434614,0.47051767,0.7331644,0.36079296,0.21453767,0.2669549,-0.24738385],[-1.5833589,0.7161828,-0.08223795,-0.0792626,0.7528849,-0.024336126,-0.06581944]],"activation":"σ","dense_2_b":[[0.22666334],[0.53868324],[-0.1864018],[0.20797202],[-0.102829635],[0.17410047],[-0.059639398],[0.046856824],[-0.15465018],[0.37563977],[0.42138037],[-0.040794667],[0.15081088]]},{"dense_3_W":[[0.059286855,-0.6201953,0.66562283,0.22414349,0.51240027,-0.13008,0.6259135,-0.5094883,0.33165294,-0.08362942,0.012212406,0.27687398,0.4015779],[-0.49880126,0.070532426,-0.43096852,0.37746346,0.10856794,0.5118211,0.2279282,0.27002206,-0.3318831,0.39096662,-0.351321,-0.09415256,0.6066714],[-0.62661433,-0.4761153,0.30911666,-0.43303257,0.7428668,-0.21072751,0.14316693,-0.31729576,0.503867,-0.40831396,-0.5834226,0.30889633,-0.3942228]],"activation":"identity","dense_3_b":[[0.008437807],[-0.045322042],[0.051086687]]},{"dense_4_W":[[0.20634736,-0.37115717,0.97134864]],"dense_4_b":[[0.040139616]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.01 56340-S2000 9129'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.01 56340-S2000 9129'.json deleted file mode 100755 index 3c127b3ecc..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019 b'xf1x00TM MDPS C 1.00 1.01 56340-S2000 9129'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.282052],[1.4976072],[0.5488163],[0.04954058],[1.4906036],[1.492054],[1.4935261],[1.4723681],[1.4461412],[1.4036433],[1.3585291],[0.049254097],[0.049325753],[0.049396638],[0.049512744],[0.04941646],[0.049044546],[0.04844633]],"model_test_loss":0.00627125846222043,"input_size":18,"current_date_and_time":"2023-08-07_14-36-50","input_mean":[[25.058535],[-0.022251762],[-0.0062643415],[-0.006741323],[-0.019891106],[-0.02031645],[-0.020919193],[-0.022687394],[-0.024389008],[-0.02746425],[-0.027944699],[-0.006677959],[-0.0066979136],[-0.006710192],[-0.0067440853],[-0.0067666965],[-0.006773558],[-0.006752982]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.17761493],[0.065649986],[-0.76249593],[-2.9280584],[2.8058326],[1.0595294],[0.66408336]],"dense_1_W":[[0.009145467,0.4170902,0.034774374,-0.0138638485,-0.39550337,1.045921,-0.68865854,0.19794099,-0.033008657,-0.044810697,0.031777132,0.11889747,-0.09361271,-0.012631721,-0.17615353,0.20466472,0.15644592,-0.16351333],[-0.0061399164,-1.4166915,-5.645784,0.073381424,0.5393407,0.32291308,0.31408218,0.2008273,-0.35585976,-0.43743655,0.7283993,-0.46206388,0.11366365,-0.11259773,0.06420009,0.11462869,0.35199496,-0.32473722],[0.75156087,-0.054094438,0.056640625,0.14823626,-0.48060635,-0.6280021,0.5193494,0.21376126,-0.3183618,0.16855966,-0.12529948,-0.49619958,-0.31324717,0.3645703,0.082277454,0.36189565,0.5037089,-0.29449514],[-0.7632688,-0.27169684,-0.23086967,-0.15549572,-0.079988874,-0.84466547,0.5305665,-0.14300905,-0.6319775,-0.18426856,0.20290938,-0.075952776,-0.1215382,0.9547558,-0.08411024,-0.18286705,0.14476883,-0.06562494],[0.7433322,-0.45799735,-0.22533219,-0.16057462,-0.43227366,-0.50694495,0.7030353,-0.27264476,-0.36092183,-0.18616752,0.113610044,-0.19430344,0.013998261,0.79424304,0.10917846,-0.07473551,-0.054330464,-0.032398082],[-0.0100051705,0.2767743,0.012484329,0.14437622,-0.21558216,0.60862535,-0.45100874,0.0608264,-0.20519726,0.11275251,0.0047225803,0.16176194,0.4537485,-0.5460852,-0.45898968,0.17339261,-0.0010471605,0.0726244],[-0.7537442,-0.23575833,0.058653012,-0.1419492,0.1560171,-0.88010234,0.43974218,-0.1777623,0.07786165,-0.18940662,0.11003291,-0.7475638,-0.46154422,0.7977223,0.62764406,0.48734587,-0.122180894,-0.07988648]],"activation":"σ"},{"dense_2_W":[[-0.44969195,-0.47718954,0.44621757,-0.10789645,0.611765,-0.18588941,0.012329608],[0.13036671,-0.5190893,-0.45879737,-0.15106045,-0.3414679,0.8747279,-0.12338378],[0.382678,0.49006438,-0.55374706,-0.7979588,-0.66582894,0.49023482,-0.22071177],[-0.82273644,0.6556447,0.6050713,-0.14068466,1.266661,-0.21573777,-0.105440065],[1.0855136,-0.30474165,-0.08955326,-0.34984973,-0.12816525,0.5724931,-0.68358016],[-1.020146,-0.46681815,0.47050923,0.23170453,0.49748507,-0.21584909,0.50045234],[-0.51235473,-0.16342548,-0.10362162,0.7775686,0.25859034,-0.5426786,0.15350342],[-0.7412454,-0.19349915,0.51770556,0.89931875,0.44185257,-1.0582427,-0.053990576],[1.1346184,-0.40109345,-0.22971821,-0.6369844,-0.07736686,0.45002407,-0.34542826],[0.8599848,-0.50594753,-0.01019188,-0.6136041,-0.44588706,0.10080783,0.19961627],[-0.74791193,0.3330768,-0.34094897,1.0123053,-0.008348638,-0.9700476,0.23540768],[-0.2771327,-0.008559937,0.33475313,0.34185767,0.7079121,-0.68679994,0.523643],[0.55554783,-0.041663673,-0.45565832,-0.08963832,-1.0109894,0.22129427,-0.42119744]],"activation":"σ","dense_2_b":[[-0.2371153],[0.11922548],[-0.030385548],[-0.0757551],[0.15123996],[-0.11702709],[-0.081945956],[-0.14611888],[0.25165284],[-0.0024621708],[-0.15761453],[-0.23728251],[-0.10741819]]},{"dense_3_W":[[-0.22576405,-0.19548972,-0.60756344,0.12658192,0.19608,-0.4017061,0.35516047,0.015072161,0.42969325,0.09205027,0.6273664,-0.4431949,-0.40578642],[0.035641454,-0.60118145,-0.11233975,0.5058922,-0.47696126,0.49505487,0.44402495,0.28497314,-0.49870777,-0.109422185,0.32074592,0.6422087,-0.25553414],[0.5741452,0.13303332,-0.6632543,-0.23719987,-0.19621162,-0.22117068,0.102075905,0.15589632,-0.5905995,-0.64983845,0.25684682,0.6521155,0.109088175]],"activation":"identity","dense_3_b":[[-0.019887898],[-0.09508023],[-0.051447187]]},{"dense_4_W":[[-0.08363187,-1.1579778,-0.26778743]],"dense_4_b":[[0.08655493]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022 b'xf1x00TM MDPS C 1.00 1.02 56370-S2AA0 0B19'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022 b'xf1x00TM MDPS C 1.00 1.02 56370-S2AA0 0B19'.json deleted file mode 100755 index 616274010e..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022 b'xf1x00TM MDPS C 1.00 1.02 56370-S2AA0 0B19'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.993529],[1.324396],[0.5305161],[0.04294904],[1.3205608],[1.3210983],[1.3210579],[1.2954506],[1.2668177],[1.222909],[1.1779213],[0.04279379],[0.04282814],[0.04286333],[0.042902395],[0.042827405],[0.042586636],[0.042191453]],"model_test_loss":0.006565318908542395,"input_size":18,"current_date_and_time":"2023-08-07_15-28-26","input_mean":[[22.832775],[-0.040264394],[-0.02767458],[-0.003989959],[-0.03488428],[-0.03718118],[-0.03951456],[-0.05100156],[-0.06057131],[-0.07277594],[-0.083841816],[-0.0039337794],[-0.003943521],[-0.00395225],[-0.004023454],[-0.0040841275],[-0.0041823583],[-0.0042870827]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.18876944],[1.3463621],[-1.908932],[0.94169223],[-2.0187588],[0.0035511698],[0.0053254846]],"dense_1_W":[[0.005867352,1.2254535,3.4375358,0.068283305,0.16577429,-0.009294751,-0.5739759,0.19231455,0.27828252,-0.1432012,-0.838622,0.21616323,-0.06911776,-0.2046535,-0.27959976,0.06780521,0.39013436,-0.15592383],[1.3789212,-0.19859079,0.14766572,0.47943616,0.29903832,-0.6807818,1.1864055,-0.063221924,0.0021910756,0.15888207,0.3227435,-0.102154195,0.05816301,0.067887574,-0.14981405,-0.23042272,0.024423974,-0.20121309],[-0.6294663,0.81912273,0.117754824,0.045635737,-0.30043265,0.41747543,-0.72729063,0.30596933,0.083178654,-0.009687303,0.18535374,0.15427576,0.048291914,-0.27375552,-0.06383911,0.36632884,0.025411423,-0.36048925],[1.5819824,-0.44059455,-0.19170646,-0.11758157,-0.6440937,0.96508884,-0.54323167,-0.35875118,0.20947236,-0.018358774,-0.49196693,-0.30316466,0.13093069,-0.11939344,0.26340368,0.10947761,-0.3237495,0.4436966],[-0.8038508,-0.9236595,-0.12660962,0.053774275,0.24433418,-0.726227,1.2170812,-0.3135991,-0.23039672,0.09241596,-0.22223517,-0.362112,0.26941076,0.17195722,-0.3402102,-0.08320549,0.06449958,0.28475815],[-0.0011107235,-0.038697846,0.0022872635,-0.28063372,-0.14913365,1.2446141,-0.6184191,0.11545028,-0.017611,0.13889763,-0.023370638,0.33740774,0.31302363,-0.35052314,-0.42641684,-0.2141415,-0.34904203,0.42076],[-0.005175982,-0.7099676,0.00016399156,0.03889922,-0.30047348,-0.9106055,0.5045013,0.35966375,-0.023503177,-0.0043678866,-0.19590726,-0.6871834,0.24169926,0.17034449,0.21276642,0.10462949,-0.37484288,0.20454486]],"activation":"σ"},{"dense_2_W":[[0.104682855,-0.50470614,0.35854033,-0.035443306,-0.37905973,-0.27697846,-0.9634923],[0.112081155,-0.7351773,0.41254714,0.7830785,-0.38910425,0.9948105,-0.3034996],[-0.3261952,0.676342,-0.8663035,0.049848557,0.327171,-0.3208539,0.79908615],[-0.15818742,0.07726966,0.43970603,0.24589102,-0.50519943,-0.37369853,-0.4947362],[0.06886326,-0.4172607,0.28755546,-0.41808438,-0.52109635,-0.42815572,-0.263946],[0.051430058,-0.28650117,-0.009554365,-0.07774851,0.7187316,-1.0449941,0.017990898],[-0.08103111,0.17932983,-0.5922217,-0.5895948,0.3433449,-0.3952535,0.07908759],[-0.30518368,0.87019897,-0.8338993,0.51584834,0.7291329,-0.6600101,0.73442346],[0.46777672,0.60007197,0.4286051,0.8649935,-1.1103383,0.74301636,-0.80451095],[0.08020403,-0.6593858,0.086899064,0.23602426,-0.012647624,0.6520031,-0.9400746],[-0.35595152,0.041667316,0.3093184,0.03735144,-0.7210566,0.5299639,-0.15386833],[0.09228896,-0.71585226,0.30710077,0.2406018,-0.47016156,-0.11183533,-0.27596667],[-0.612182,-0.2192639,-0.19045848,-0.06639905,0.1694014,-0.33918324,-0.1311936]],"activation":"σ","dense_2_b":[[-0.21769845],[-0.07666798],[0.1883953],[-0.15336362],[-0.39611495],[-0.028968781],[-0.30332094],[0.133016],[0.062327497],[-0.11558597],[-0.038368657],[-0.13163656],[-0.23315099]]},{"dense_3_W":[[-0.20311363,-0.5751432,-0.09544995,0.40782174,-0.3749152,0.42719337,-0.27624348,0.23038137,-0.10259029,0.42679816,0.14456484,-0.28356594,0.40488628],[0.101418085,-0.10259608,0.37198663,0.20094174,-0.16163434,0.11256627,0.0009847895,0.36355582,-0.68457043,0.038573015,-0.30619755,-0.40124977,0.18100727],[-0.26906586,-0.5600097,0.5290126,-0.36010587,0.13541447,0.42952237,0.15362886,0.7573779,-0.41288292,-0.43268642,-0.23467787,0.1252901,-0.15268406]],"activation":"identity","dense_3_b":[[-0.04268578],[0.0621331],[0.05889129]]},{"dense_4_W":[[-0.026682906,-1.0218076,-1.0972601]],"dense_4_b":[[-0.0560793]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102'.json deleted file mode 100755 index 2c61a6ddc0..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLAC0 4TSHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.194418],[0.9826876],[0.43571737],[0.03203097],[0.98284227],[0.9834058],[0.9829836],[0.9639176],[0.94775534],[0.92251784],[0.8937146],[0.03200366],[0.03202884],[0.032050643],[0.032007705],[0.031979978],[0.031913992],[0.031803887]],"model_test_loss":0.004605790600180626,"input_size":18,"current_date_and_time":"2023-08-07_16-17-55","input_mean":[[21.787415],[-0.073023595],[0.006111772],[-0.0030836551],[-0.07544397],[-0.07518822],[-0.074919075],[-0.072652444],[-0.07070591],[-0.06814254],[-0.06605076],[-0.0029780078],[-0.0030136248],[-0.0030446842],[-0.0032140582],[-0.0032444522],[-0.0033729817],[-0.0034472218]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.021883458],[-0.013235099],[-0.121804215],[-0.25270373],[0.013701096],[1.7847886],[1.8580865]],"dense_1_W":[[0.015979825,0.025676368,0.82048047,-0.20396332,-0.06994716,-0.19865473,0.85325474,-0.46978325,-0.24091806,0.10684887,0.10043876,-0.08637539,0.26329783,0.46833506,-0.48420766,-0.046872795,-0.19976763,0.2933011],[-0.010659484,-0.5590501,-1.8482552,0.18219163,-0.29451025,-0.039495107,0.69195104,0.3583238,-0.246975,-0.3466151,0.39438456,-0.101077646,-0.20400386,0.21190208,-0.20427756,0.02704431,0.14872628,-0.09532689],[0.28008336,-0.19451748,0.002395767,0.07651338,-0.013720813,-0.7281727,0.46541923,0.05587276,-0.076292664,0.27889255,-0.22249366,-0.20972478,-0.32013837,0.35491177,0.019567257,-0.05948678,0.061387423,0.12222018],[0.38760716,0.28468573,-0.0046121255,-0.503213,0.15541966,0.010528314,-0.08428991,0.20208262,-0.106319115,-0.12040755,0.10501226,0.4507385,0.60220087,-0.4585774,-0.02489347,0.114339024,-0.33559904,0.10983539],[0.0009784829,0.35729215,-0.003829106,-0.0028381112,-0.48749572,0.8682397,-0.29993644,-0.08423156,0.010641775,0.07446828,-0.037331752,0.27161676,-0.1789018,-0.30909738,-0.3551168,-0.248932,0.2984701,0.13843094],[0.44399467,-0.5334002,-0.23803857,-0.21615528,-0.016919455,-0.5706182,0.545457,0.27349538,-0.114982955,-0.39205012,0.124447465,-0.10823347,0.1663843,0.2260901,-0.15672842,0.13161573,-0.02115449,0.0032338887],[0.5019759,0.68048036,0.25314942,0.13284066,-0.33117083,0.582654,-0.24854451,-0.47353426,0.40295416,0.24269429,-0.14332053,0.23747285,-0.33417442,-0.106693946,0.0037535615,0.04599831,0.037733346,-0.04265533]],"activation":"σ"},{"dense_2_W":[[0.08401161,-0.2599535,-0.609856,0.7646542,0.67341596,-0.26291236,0.76118547],[-0.3651008,-0.20817277,0.31787935,-0.43461692,-0.29770243,0.018088236,-0.46393844],[0.2615463,0.48856091,-0.40368366,-0.18834044,-0.08188224,0.2784943,-1.0847317],[-0.52402174,-0.20936744,-0.77195823,-0.22592704,0.69131356,-0.7199108,-0.06898959],[0.080265164,-0.16496317,-0.8305106,0.6760351,0.37774935,-0.30932015,0.4807624],[0.37443948,-0.778584,-0.66466296,-0.3686006,-0.43090945,-0.57971597,-0.24787214],[0.07640942,0.3376665,0.6566895,0.113762006,-0.49356726,0.7215417,-0.42951873],[0.50611526,-0.21789505,0.79877114,-0.11904481,-0.68082315,0.22485676,-0.97027636],[-0.26019892,-0.22099318,-0.19246079,0.57908934,0.6265812,-0.54631793,0.5911588],[0.117363736,-0.5874855,-0.49562076,0.7931459,0.28048941,-0.39128372,0.27204272],[-0.45832366,0.06207395,-0.73029464,0.796244,0.60792464,-0.3163733,0.099765696],[0.120567635,-0.30641696,-0.59669787,-0.55059415,0.08865131,-0.259314,-0.06436874],[0.6329438,0.59759134,0.57218724,-0.645048,-0.735474,0.9010533,0.20121096]],"activation":"σ","dense_2_b":[[0.030452332],[-0.09173468],[-0.22073863],[-0.046627972],[-0.05838497],[-0.0528763],[-0.09991468],[-0.034997243],[-0.055857778],[0.04780818],[-0.05873308],[-0.317891],[-0.035200205]]},{"dense_3_W":[[0.3929027,-0.3861305,-0.49493206,-0.0818116,0.027093373,-0.31794766,-0.57132995,-0.5508263,0.24935243,0.44998237,0.27979627,-0.02445104,-0.590858],[0.5505083,0.5507326,0.19556087,0.2572581,0.4237801,0.65517,0.028538687,-0.09970234,0.18431105,-0.009243993,-0.021522932,0.17175677,-0.37279418],[0.00045096828,-0.19784781,0.35283023,0.6747326,-0.057934422,0.43838486,-0.45512754,-0.47786975,-0.2604245,0.16420609,0.05705802,-0.25166398,-0.37800297]],"activation":"identity","dense_3_b":[[0.058641378],[0.038829286],[0.08638757]]},{"dense_4_W":[[1.2422407,0.79126894,0.21478729]],"dense_4_b":[[0.05097585]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100'.json deleted file mode 100755 index 7096b57212..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-GA000 4TSHA100'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.052273],[0.9509479],[0.50553817],[0.038164727],[0.9445496],[0.94397974],[0.94506735],[0.93094087],[0.91978514],[0.90017253],[0.8804518],[0.037949175],[0.037987206],[0.038005527],[0.037829578],[0.03761687],[0.037189245],[0.036789745]],"model_test_loss":0.004591483157128096,"input_size":18,"current_date_and_time":"2023-08-07_16-42-35","input_mean":[[23.199976],[0.06977518],[0.010112249],[0.011418438],[0.06521592],[0.06679082],[0.06787061],[0.07323156],[0.07372562],[0.07214795],[0.07004894],[0.011164797],[0.011199542],[0.011221814],[0.011139646],[0.011041907],[0.010719572],[0.010505906]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.014942537],[-4.3474574],[-0.08941054],[-4.3885407],[-0.014533082],[-0.040196232],[0.061592374]],"dense_1_W":[[-0.012185595,0.2322522,0.7511205,0.02690325,0.5641042,0.42065173,-0.8066829,0.18944919,0.39064535,-0.5669989,-0.14261945,0.34274545,-0.20055962,-0.6011869,-0.12676005,0.13741869,0.45624214,-0.2540088],[-1.3546237,0.8447106,0.35209763,0.076260105,-1.0732373,0.3980371,-0.39189407,1.4404069,0.225998,0.47837642,-0.25626668,0.47501436,-0.20985436,-0.2627164,-0.21115017,-0.010310166,-0.54525554,0.4810268],[0.002832261,-1.1939845,-3.5876055,0.5727716,0.8229184,0.06148804,0.54211617,0.0322967,-0.6423043,-0.55174315,0.664836,-0.16645195,-0.5878055,-0.32204002,0.13268834,0.2666557,0.5713847,-0.38673636],[-1.3233963,-0.87649137,-0.3446561,0.14505188,0.6079438,-0.34363598,0.624898,-0.82965463,-0.60310423,-0.3681155,0.16082169,0.0010988517,-0.4206278,0.33600268,0.02962365,0.1367739,0.277682,-0.30213332],[0.013596902,-0.13552241,-0.70311356,-0.13047394,-0.32529,0.5773636,-1.1701663,0.24257344,0.43782198,0.043168012,0.08643236,0.48032,0.23322079,-0.021323098,-0.31740412,-0.11516121,-0.24237125,0.31669086],[0.001166192,-0.40128833,0.0049709324,0.111636855,0.27789602,-0.79010975,0.42289734,0.16445734,0.12562138,-0.34984663,0.12859115,-0.35596535,-0.0395504,-0.019919783,-0.21450609,-0.14650743,0.23265977,0.41473433],[0.0023671926,-0.6460285,-0.0019327962,0.14094958,0.38341612,-0.9574827,-0.101965494,0.004554995,0.46401522,-0.12909779,-0.1426274,-0.29289252,0.08252197,0.46871328,0.22656342,0.13870023,-0.055463392,-0.2501583]],"activation":"σ"},{"dense_2_W":[[-0.62714016,-0.42675447,0.39623365,0.09701159,-0.5383957,0.45013547,0.6001207],[-0.35508782,-0.57408017,-0.12564163,0.28653708,-0.08157015,0.20559573,0.46634027],[0.5093158,0.36876306,-0.4645391,-0.65979177,0.57504994,-0.35079157,-0.17476],[-0.31621355,-0.29714108,-0.34154972,-0.78180116,-0.008518251,-0.4106797,-0.19771425],[-0.43568668,-0.17445277,0.23282811,-0.3699338,0.16136363,0.05052372,-0.09912311],[-0.46512806,-0.5448078,-0.08042258,0.6210385,-0.16905335,0.28547442,0.5111774],[-0.034349065,0.5364692,-0.51728934,-0.16454658,-0.22226335,-0.42052928,-0.20821048],[0.33714008,-0.4330567,0.37451595,0.2814601,-0.47018304,-0.39796677,-0.55231714],[0.57910985,-0.024047505,0.30089426,-0.6221561,0.50119555,-0.50120574,-0.7213545],[-0.40165135,0.20899656,-0.2954376,-0.14917205,-0.59254116,0.37713796,0.22864541],[0.6255446,-0.06200693,-0.4204777,-0.036136795,0.446564,-0.2950839,-0.64832413],[-0.26900464,0.49159622,0.3034731,-0.13085237,0.56453574,-0.8307436,-0.28495753],[-0.47413096,-0.7120706,-0.035541266,0.24300101,-0.6801091,0.27434683,-0.107843675]],"activation":"σ","dense_2_b":[[-0.09530544],[-0.091849595],[0.10365482],[-0.28563413],[-0.27218583],[-0.11129274],[0.004807437],[-0.06996],[0.050393272],[-0.10061962],[0.04376929],[-0.04139788],[-0.13395813]]},{"dense_3_W":[[-0.66973096,-0.48279104,0.7676326,-0.5096833,0.2064793,-0.38637576,0.35450128,0.07051719,0.5298366,-0.20001142,0.28865328,-0.04322722,-0.4298923],[0.3608688,-0.3860877,0.34115362,0.10120958,-0.30185267,0.09988014,-0.46597403,0.5618963,-0.13389808,-0.2762836,0.5472369,0.30736694,-0.16745393],[-0.459392,0.11412182,-0.040371146,0.6745572,-0.27183312,-0.536198,-0.15377107,-0.07133568,0.04935285,-0.06970548,0.27231002,0.4255971,0.2895038]],"activation":"identity","dense_3_b":[[0.044112355],[-0.017487336],[0.043834195]]},{"dense_4_W":[[1.0927324,0.054080144,0.7976937]],"dense_4_b":[[0.042528085]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102'.json deleted file mode 100755 index 039dbb74b4..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022 b'xf1x00TM MDPS C 1.00 1.02 56310-CLEC0 4TSHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9339604],[1.088105],[0.44446564],[0.040635813],[1.0915902],[1.0908207],[1.0892842],[1.0640342],[1.0442107],[1.0169972],[0.9836625],[0.040394578],[0.04044262],[0.040480178],[0.040640704],[0.040678967],[0.040454783],[0.040132876]],"model_test_loss":0.012677030637860298,"input_size":18,"current_date_and_time":"2023-08-07_17-34-14","input_mean":[[22.346836],[-0.1010392],[0.011439833],[-0.024613421],[-0.104070425],[-0.103574194],[-0.10293765],[-0.095743805],[-0.08788937],[-0.07853373],[-0.06978028],[-0.024727972],[-0.02470151],[-0.02467759],[-0.024601528],[-0.024534974],[-0.024629418],[-0.024778875]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.15558718],[-2.6034374],[-0.04039103],[0.65522605],[1.2802107],[-0.27219942],[-2.634381]],"dense_1_W":[[-0.24201536,0.7082375,0.0028008588,-0.027780006,-0.17135863,0.8042699,-0.29119372,-0.007927601,0.47618863,-0.03486508,-0.16500926,0.45117432,0.007103674,-0.5084788,0.060515866,-0.011655033,-0.18416026,0.17665891],[-0.4738057,-1.3893577,-0.26687565,0.5591557,0.19673826,-1.0583004,0.4100114,0.08631018,-0.27167842,-0.36606842,0.17948642,-0.91138256,0.396046,0.4691029,0.03294264,-0.1527472,-0.1440006,-0.040798534],[-0.062322266,0.8630222,3.1276238,0.31263065,-1.0991832,-0.350469,-0.7729707,0.5405366,1.1623893,0.3297452,-0.467351,0.8092153,0.47536352,-0.62649566,-0.13063848,0.078494415,-0.9319446,-0.035552464],[2.002557,-0.40489927,-0.013253979,0.0036408182,-0.96465665,0.19661005,-0.953392,-0.20606351,-0.26921293,0.00091835565,0.024142867,0.30179256,-0.05378692,-0.3731178,0.29126972,0.056546733,-0.13077201,0.019902507],[0.016891545,-0.07916437,0.11697357,-0.5920895,0.8242633,-0.11014468,0.3030195,0.35970256,0.08895364,-0.30832535,0.84346753,-0.8849758,-0.47036183,0.11911124,-0.22588879,0.065679416,0.021028057,-0.427552],[9.724902e-5,-0.38385,-0.020528087,0.05751557,-0.14688933,-0.86524874,0.8712383,0.03841566,0.18008858,0.11291066,-0.35409862,-0.13303213,-0.1636967,0.5216691,0.06455103,0.35800162,-0.08108982,-0.05743626],[-0.4588684,0.83262295,0.25882557,-0.19348866,-0.21520121,0.85895246,0.24441022,0.04129096,0.09734719,0.33709678,-0.10813452,0.626401,-0.23454317,-0.4344429,-0.44665545,0.30053115,0.17539406,0.007217913]],"activation":"σ"},{"dense_2_W":[[-0.651883,-0.28622374,0.12934318,-0.29924047,0.45619386,0.49076936,-0.5204953],[0.19332084,-0.8814819,0.12185404,0.1112917,0.09789456,-0.32125413,0.5419122],[-0.0070752506,0.30487537,0.22090623,0.374676,0.5418867,0.1608909,0.16253495],[1.6104504,-0.8317929,-0.48558232,0.23532712,-0.2672344,-1.3590785,1.5980096],[0.1554723,-0.67611736,-0.075388476,0.024493428,-0.4251306,-0.6432536,0.05229573],[-0.44482633,-0.36988914,-0.8266434,-0.77991384,-0.020200279,0.08657742,0.4415185],[0.37289235,-1.3610709,1.2108856,1.1463528,-0.08294851,-0.36348182,0.015509408],[-0.26891112,-0.4422061,0.04140005,-0.25809646,-0.45758307,0.12543325,-0.11151142],[0.6491537,-0.6115983,0.12226665,-0.022036532,0.25215194,-0.39254242,-0.08420935],[0.41343462,0.040416438,0.5110888,-0.30294675,-0.24655536,-0.94380873,0.4448432],[-0.21065868,0.49556023,-0.3594535,-0.1782758,-0.1000126,0.6914605,-0.44446382],[0.50264686,-0.51379687,0.38724154,0.19442251,0.023962934,-0.3308979,0.17989966],[-0.08920153,0.04748019,-0.23014763,0.21383081,-0.33842874,-0.65826106,-0.1681412]],"activation":"σ","dense_2_b":[[0.011876502],[-0.36479667],[0.017360244],[-0.07617602],[-0.23157506],[-0.28419593],[0.06942652],[0.011033443],[-0.086510606],[-0.045363814],[0.03267394],[-0.13571551],[-0.264156]]},{"dense_3_W":[[-0.6548141,-0.13956049,-0.48768273,0.120333016,-0.28902444,0.21501225,0.307953,-0.107009396,0.440212,0.4713256,-0.055264547,-0.3514998,-0.5159563],[-0.096859366,0.5156044,-0.23406532,0.55331874,-0.026274543,-0.5353379,0.25472736,-0.5028626,0.25127223,0.3485652,-0.64658546,0.40520468,0.34961805],[0.60555744,0.38062447,0.51950586,-0.049985483,-0.54793733,-0.44031206,-0.013909685,-0.4211523,-0.22971645,-0.38632122,0.6218737,-0.41705465,-0.09672569]],"activation":"identity","dense_3_b":[[-0.02192258],[-0.031370267],[0.023667987]]},{"dense_4_W":[[0.74219704,1.1328688,-0.6478822]],"dense_4_b":[[-0.026964737]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0000 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0000 4DNAC101'.json deleted file mode 100755 index 49384985ac..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0000 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.0880184],[0.927232],[0.38201457],[0.029326165],[0.9297298],[0.9282585],[0.926674],[0.9185298],[0.9110499],[0.9009496],[0.8885786],[0.02925959],[0.029274147],[0.029276866],[0.029164143],[0.028929831],[0.028371913],[0.027726393]],"model_test_loss":0.002121754689142108,"input_size":18,"current_date_and_time":"2023-08-07_18-58-26","input_mean":[[22.443861],[-0.06408811],[0.0033772418],[-0.0077469447],[-0.063098],[-0.0624671],[-0.061826434],[-0.05872468],[-0.052127004],[-0.04868136],[-0.043194663],[-0.007867037],[-0.0077954014],[-0.0077240258],[-0.0075072567],[-0.0073709814],[-0.007499314],[-0.0075947903]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.4392896],[0.11256368],[-0.009349937],[0.017267969],[0.07836847],[-0.49510518],[-0.36707103]],"dense_1_W":[[-0.0035144198,-0.07837074,-0.10444379,-0.21379957,-0.055707484,-0.43247733,0.12956916,-0.16459478,-0.026531655,-0.41787723,0.11838695,-0.36631712,0.29493195,0.8054866,0.48842925,0.3487459,0.29926014,0.33285514],[-0.00566682,0.0685797,-0.0070852637,-0.1262075,-0.117236935,0.11295796,-0.070642754,0.23535657,-0.13772064,0.20243229,-0.08022183,-0.3007161,-0.27897793,-0.74277157,-0.1217799,0.18944399,0.512346,0.80977684],[-0.00033654989,-0.31247973,-1.0609967,-0.4622876,0.098224156,0.07347569,0.4536589,0.16399379,-0.21179616,-0.25765136,0.28651273,0.2288293,0.3252808,-0.009037016,0.08319518,-0.38650706,-0.22199428,0.3495078],[8.025195e-5,0.117466316,-0.0020013717,0.25343972,0.21027248,-0.3314746,-0.24337924,0.21665736,-0.124749966,-0.16508707,0.118159376,-0.6589648,-0.38464743,0.24033323,0.11305636,0.06770096,0.3398314,0.020196075],[-0.123161614,0.23502746,-1.6969047e-5,-0.08013821,-0.13597044,0.68115455,-0.29792637,-0.023697855,-0.14486383,-0.10938473,0.1794991,0.07350343,0.15798949,0.06415683,-0.18382339,-0.21429943,-0.013510968,0.160445],[-0.0044880393,0.19351251,-0.1222242,0.38997644,-0.82055694,0.039774433,-0.34056687,0.69073474,-0.21781223,-0.43224278,-0.09824878,0.6865208,-0.13685298,0.07766766,-0.13825902,0.3761925,0.53175914,0.50025547],[0.19364405,-0.07879009,-0.0004976161,-0.16666786,0.40081018,0.60932076,-0.4746135,-0.16062911,0.00033986976,-0.12215615,0.24129596,-0.051383093,-0.29511973,0.03366455,0.4457546,0.17353448,0.10611054,-0.27080864]],"activation":"σ"},{"dense_2_W":[[-0.21429534,-0.2805947,0.33813262,-0.55704015,0.19794577,-0.41809848,0.5465813],[0.05483169,-0.48598504,0.2133983,0.4682273,0.08959408,-0.68643206,0.14104469],[0.5768833,0.2345835,0.23833336,0.88208973,-0.7001157,-0.87939644,-0.5970078],[-0.50687236,0.34342203,-0.60396534,-0.39049196,0.1544499,0.37261438,0.6712155],[-0.2097123,-0.5347513,-0.26231483,-0.16484694,-0.0996075,0.47142714,0.6025729],[0.14433241,-0.26973325,-0.40456578,-0.22319494,-0.16914153,0.34973475,0.41994274],[-0.39278847,-0.26437518,0.014975275,-0.3900699,0.20229916,-0.47895268,0.3397611],[0.018268416,0.19815785,-0.16354918,-0.6932698,0.82313913,0.33753312,-0.23361456],[0.84115773,-0.4972589,0.04639677,0.57515514,-1.2003638,-0.4645931,-0.35091218],[0.2870165,0.29187405,0.13971819,0.32765952,-0.43575177,-0.54234403,-0.47328368],[-0.534798,0.1346562,-0.35825455,-0.4411009,0.7369132,-0.24896927,0.43602455],[0.60806775,-0.6560042,0.121712156,0.8236341,-1.3794309,-0.54273456,-0.23115636],[-0.36894193,0.43866634,-0.4424108,-0.3495697,0.2603339,-0.26079863,0.54851836]],"activation":"σ","dense_2_b":[[-0.17165633],[-0.1849741],[0.04078258],[-0.08273829],[-0.16197646],[-0.22186738],[-0.10296965],[-0.15492782],[0.10536137],[-0.21006389],[-0.0909507],[0.008903828],[-0.12633856]]},{"dense_3_W":[[0.12136265,-0.18142237,0.20568378,0.43467548,-0.3135675,-0.30494106,0.32837293,0.43891245,-0.10172039,-0.6920788,0.3248927,-0.36158195,-0.36961478],[0.20634529,0.016585633,0.615192,0.3980539,0.31894875,-0.22123288,-0.44111037,0.21111517,0.5416054,0.48227146,0.4775837,0.023265895,0.086540245],[0.097952254,0.069732554,-0.85863006,0.5982017,0.4785997,0.2211003,-0.16872703,0.26387373,-0.45675164,0.3492257,0.14213935,-0.22985671,0.5829968]],"activation":"identity","dense_3_b":[[-0.089413054],[0.038146988],[-0.09979728]]},{"dense_4_W":[[0.7397742,-0.18844637,1.2101274]],"dense_4_b":[[-0.09552154]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101'.json deleted file mode 100755 index 75ef8f9f84..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0010 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.206886],[1.4504983],[0.49971998],[0.04266468],[1.4383729],[1.442444],[1.4449018],[1.4304984],[1.408558],[1.374435],[1.3352983],[0.042570964],[0.04259354],[0.042611882],[0.04251703],[0.04239174],[0.042183105],[0.041899502]],"model_test_loss":0.010444642044603825,"input_size":18,"current_date_and_time":"2023-08-07_19-25-56","input_mean":[[22.475485],[0.031372134],[0.0032399746],[-0.008984418],[0.032596383],[0.032747533],[0.033002835],[0.034930702],[0.03454325],[0.032979634],[0.030567244],[-0.009006616],[-0.008997529],[-0.008991521],[-0.008974956],[-0.008960746],[-0.008996439],[-0.0090720635]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.4730613],[-1.0220556],[2.2321498],[-0.24373206],[-0.12732792],[-0.5460787],[0.106436335]],"dense_1_W":[[-0.41534066,-0.9714392,-0.31006238,0.09352594,0.055552863,-0.83239764,0.31457546,0.21544012,-0.02930472,-0.10614339,-0.15644209,-0.32349718,-0.2776175,0.4681082,-0.023063358,0.07786211,0.2524736,-0.23179433],[-0.95453423,-0.26022857,-0.8862801,0.13255504,-0.07940164,-0.13633952,0.97671944,-0.32103124,0.13677597,-0.54467875,0.006754226,-0.5190258,0.22493096,-0.069508426,0.35693893,0.23997544,-0.24516748,-8.168083e-5],[0.4379902,-0.5599902,-0.32294285,-0.11438441,-0.28119034,-0.41465545,-0.007964375,-0.23656115,0.24708937,-0.0064412868,-0.27999642,-0.06364177,-0.022107648,-0.14844713,0.67481005,-0.39441112,0.21968858,-0.11588854],[0.0060809795,-1.1198676,0.0067951665,0.40737534,-0.17178549,-0.29760578,0.22654669,-0.15745667,0.113858625,0.35876435,-0.29039302,-0.09667714,-0.28005886,0.4659065,-0.2083599,-0.044308778,0.10261238,-0.015207596],[1.192366,-0.13911475,-0.7602778,0.061394785,-0.33700565,0.43223011,-0.383315,0.21897188,0.0576574,-0.06383468,-0.40268126,0.25918442,-0.083131015,-0.057717066,-0.16279124,0.056148607,-0.22752735,0.26602584],[-0.70031285,0.80340934,0.86016697,-0.10652274,-0.49268568,-0.25453496,-0.77597094,0.038994193,0.80372953,0.4799013,-0.42903787,0.16632754,-0.05639839,0.06240709,0.04071726,-0.36329105,0.119140625,0.0075790263],[1.2511556,0.18218865,0.8153701,-0.17519355,0.03620571,0.020730898,0.62968934,-0.6549357,0.038980555,-0.24152188,0.6776999,-0.15306287,-0.034662757,0.29590893,-0.04357369,0.18099506,-0.09237122,-0.09097706]],"activation":"σ"},{"dense_2_W":[[-0.3733046,-0.63211983,-0.2867291,-0.62118083,-0.010183722,-0.8466765,0.16133504],[0.0067310715,0.09728172,-0.6812141,-0.9659649,0.40198094,0.19644472,-0.74384815],[0.9709826,0.20648259,0.1305725,0.3045001,-0.48293394,0.117387146,0.25224584],[1.4520717,0.2679463,-0.0059825173,0.42838717,-0.34279865,-1.3324488,-0.41395462],[-0.14703725,0.24708863,0.47823694,0.2118483,0.19143926,-0.33324513,-0.41627753],[0.63378096,0.0006939869,-0.2391469,1.0002756,-0.46094698,-0.0097055435,0.49494484],[0.1101795,0.34717083,0.48524472,0.53889567,-0.20231925,-0.6760102,0.3543506],[-0.61280346,-0.46988106,-0.82949644,-0.14417309,0.5123994,0.38542563,-0.31748974],[-0.14198948,-0.46256673,-0.24424392,-0.5878419,-0.6047017,-0.9315717,-0.25987655],[-0.20438918,-0.2538593,-1.2795161,-0.36110374,-0.18944141,0.4315354,-0.09864795],[0.35757583,0.24092562,-0.48579407,-0.2887947,-0.2939099,-0.08969654,-0.53155077],[-1.1322478,-0.42064786,0.14613308,-0.4441744,0.60612696,-0.1682891,-0.77085215],[-0.9423813,-0.71970075,-0.32939398,-0.046559554,0.1559522,0.72302336,-0.31480452]],"activation":"σ","dense_2_b":[[-0.0395953],[0.10148138],[-0.08946762],[-0.5085817],[-0.16269651],[-0.09828724],[-0.14257945],[0.028001558],[-0.25607547],[0.19008303],[-0.15752983],[-0.08156744],[0.2400192]]},{"dense_3_W":[[-0.6305707,-0.7183922,0.61189455,-0.12082674,0.584848,0.7042283,0.2124863,-0.44369617,0.06019076,-0.84690446,-0.1584007,-0.1594603,-0.6551266],[-0.46845788,-0.041823298,0.21797846,-0.23213589,-0.018164458,0.39548802,0.30017138,-0.03640287,-0.08625531,-0.6911282,0.25928518,-0.51322585,0.30503047],[-0.070132144,0.36179328,-0.12638825,-0.6702514,0.2901435,-0.48632953,-0.3823228,0.6769935,0.23988372,0.72708833,-0.030890048,-0.0013352007,0.744018]],"activation":"identity","dense_3_b":[[0.030665295],[0.012413447],[-0.042725306]]},{"dense_4_W":[[-0.6892979,-0.21168873,0.8236525]],"dense_4_b":[[-0.033550464]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101'.json deleted file mode 100755 index 889660b7e2..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.9665575],[1.5094953],[0.52320474],[0.049412034],[1.494938],[1.5003909],[1.5036423],[1.4904568],[1.4657476],[1.4215478],[1.3661709],[0.049073346],[0.04916127],[0.049235035],[0.049330566],[0.049299713],[0.049100358],[0.048681706]],"model_test_loss":0.006334397010505199,"input_size":18,"current_date_and_time":"2023-08-07_20-16-55","input_mean":[[23.208042],[0.017637342],[0.0033097109],[-0.0011208885],[0.016748862],[0.016963536],[0.017422808],[0.018023973],[0.019261051],[0.018516017],[0.017028408],[-0.0012430567],[-0.00119908],[-0.001152659],[-0.0010296609],[-0.0009178911],[-0.00079258456],[-0.00066169875]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.9270706],[0.34167355],[-0.01630501],[3.9094112],[-0.043808307],[0.15332954],[0.118518315]],"dense_1_W":[[-1.5419726,0.58544344,0.56862235,-0.06356117,0.07506152,0.28493872,-0.35853422,0.20940292,0.24808577,0.45340854,-0.049729943,-0.34037575,0.31803313,0.018770482,-0.05861212,0.21162248,-0.21842924,0.08095126],[-0.07264593,-0.5357274,-0.024528537,0.15763216,0.3570794,-0.42941192,0.094519556,-0.16744949,0.18548526,0.052800182,-0.063974306,-0.5917518,0.29506087,0.2680911,-0.042359374,-0.037600614,-0.09749487,0.073244646],[-0.0029357334,0.72618747,-0.015540882,-0.093255214,0.22835523,0.555266,-0.62294084,-0.17355366,0.3260155,0.08499513,-0.09322718,0.27955085,-0.20150794,-0.20985933,-0.066402666,-0.24783993,-0.23513341,0.08126326],[1.5574979,0.559662,0.567851,0.1754574,0.23001745,0.08429833,-0.1186271,0.104694836,-0.034708384,0.5989565,0.003940667,0.0305492,-0.13524628,-0.33834115,0.23645407,-0.13648601,0.36581174,-0.23015225],[0.01866292,0.70351815,2.7991784,0.10008903,0.32329226,0.06749305,-0.7636863,-0.22283834,0.55308366,0.393383,-0.91913027,0.05840779,0.3406047,-0.19909629,-0.42205387,-0.11921279,0.065681584,0.23244768],[-0.11102194,0.20182216,0.020422867,-0.07504458,-0.041374493,0.92653614,-0.7219375,0.13102369,0.15029763,-0.3139946,0.18343666,0.3855709,0.13207433,-0.15633012,-0.43713525,0.017802745,0.13749008,0.023212397],[-0.12214576,0.27012697,-0.20684451,0.30103195,0.1707631,-0.061825205,-0.5469716,0.43340564,-0.0114306,-0.054020558,-0.16695587,0.03798708,-0.08483028,-0.18931572,0.10700518,-0.017429946,-0.3692487,0.19230193]],"activation":"σ"},{"dense_2_W":[[-0.28481036,0.4442005,-0.49662253,-0.30369344,0.28666368,-0.5901366,-0.19034614],[-0.39463997,0.82266545,-0.47083145,0.26275617,-0.55930537,0.09152094,0.12053862],[-0.065527946,0.7516073,-0.38549796,-0.4017811,-0.5203226,-0.34265035,0.35704702],[0.49352384,-0.07352777,0.31377402,-0.31515568,0.24645923,-0.40181553,0.16380012],[-0.44656533,0.9368167,0.067596,-0.3864591,-0.21814522,-0.50566894,-0.037946723],[-0.11529442,-0.77994573,0.49268404,0.60564643,0.42883676,0.14445429,0.1348402],[0.2191809,-0.33139595,0.16480243,0.16290003,-0.0043159393,0.6970341,-0.041437156],[-0.46837336,-0.39128634,-0.3864894,-0.42419514,0.5158304,0.16268568,0.089716256],[0.33990654,-0.64127713,0.6676083,-0.027778113,-0.36237058,0.54869413,0.3664469],[0.56407857,0.14337154,-0.07523904,-0.20489646,0.29481626,0.22405949,-0.68056136],[-0.039734222,0.16601059,-0.36197644,-0.5222118,-0.7296214,0.16421038,-0.07977159],[-0.1643846,0.2016056,0.0016275152,-0.34612948,-0.37732452,-0.4296534,0.097400256],[-0.32195345,0.8429351,-0.26391914,-0.64564407,0.23150569,-0.26123956,-0.60648614]],"activation":"σ","dense_2_b":[[0.10372978],[0.12321004],[0.13260162],[-0.16394557],[0.07401815],[-0.18640429],[-0.14209749],[-0.15091346],[-0.1005035],[-0.18927059],[-0.04283729],[-0.29649624],[0.123969376]]},{"dense_3_W":[[0.19306692,0.2528086,-0.3471299,0.34726095,-0.6172253,0.20776936,0.25171283,-0.26050565,0.62590677,-0.57339996,0.2380261,-0.6438946,-0.26486552],[0.6904486,0.42464823,-0.35924688,0.54782605,0.543181,-0.4043161,0.009881902,-0.16082425,-0.42172116,-0.22864279,0.05615898,-0.28659266,-0.4109365],[-0.29332277,-0.5604171,-0.74596137,0.29303262,-0.14240001,0.4824831,0.46960396,0.37756348,0.60751295,0.49847186,-0.4308299,0.2783596,-0.70612234]],"activation":"identity","dense_3_b":[[-0.056833137],[0.060321722],[-0.06470401]]},{"dense_4_W":[[0.8418126,-0.58512366,1.0991992]],"dense_4_b":[[-0.059645038]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102'.json deleted file mode 100755 index e5e8da5f6b..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310-L0210 4DNAC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.209062],[1.0191541],[0.56490785],[0.03716055],[1.0188767],[1.0189412],[1.0184771],[1.020577],[1.0258486],[1.0280116],[1.0317844],[0.037011214],[0.037051532],[0.03710102],[0.03726322],[0.03710542],[0.036862206],[0.036776513]],"model_test_loss":0.002482755808159709,"input_size":18,"current_date_and_time":"2023-08-07_20-41-25","input_mean":[[26.846655],[-0.005333997],[-0.006017142],[-0.010085426],[-0.0068516037],[-0.006621865],[-0.007106698],[-0.0063117202],[-0.001445884],[0.0037559327],[0.00702609],[-0.010317291],[-0.010258594],[-0.010206334],[-0.010051272],[-0.009953821],[-0.01002816],[-0.010258082]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.04493686],[1.2359415],[-0.16813134],[0.30498078],[-0.004396829],[-0.11936104],[-0.10290137]],"dense_1_W":[[0.028586365,0.6713196,0.037628382,0.4525395,-0.4088543,-0.52644724,0.25289974,-0.106175065,-0.05286671,-0.105505764,-0.06060507,-0.066001944,-0.16948535,-0.14447865,0.15240416,-0.12086707,-0.22067334,0.29359263],[-0.25259453,0.72662085,-0.019954639,-0.37567586,-0.14041515,-0.110880576,0.028293425,-0.111130856,0.09566052,-0.21661228,0.100265615,-0.12622023,0.32393003,0.1720742,0.23493229,-0.2314176,-0.29668775,0.054298155],[0.0075020846,-1.0379118,0.058415513,-0.6336649,0.1777533,0.3996224,-0.14824356,0.53841037,0.20370372,0.06709238,-0.20242065,0.16530342,0.005269978,0.07914464,0.18396617,0.3359595,0.11940208,0.41780698],[-0.26971325,-0.29349837,0.016340017,-0.28127313,0.19968756,-0.35273314,-0.12725332,0.16223203,0.31847185,-0.08272004,-0.13002057,-0.23478554,-0.21000664,0.18946603,0.4066612,0.3821535,0.22385387,-0.25274214],[-0.011883075,0.35591817,1.8070056,-0.06357242,-0.49122602,-0.32094464,-0.035770092,0.23602432,0.17338297,0.42658088,-0.5602121,0.20542847,0.16731963,-0.7897803,0.1867783,0.29209885,0.06069555,-0.044831645],[-0.1184021,0.49316457,-0.011386314,0.28487483,-0.52669007,0.39699084,-0.15737064,0.023462037,0.13752255,0.11296199,-0.18964504,0.13462819,0.020783164,-0.37708953,-0.05232704,-0.2913591,0.2881553,-0.29922846],[-0.00057304814,-0.1185001,-0.13426046,-0.5729028,-0.01707388,-0.430987,0.17981416,0.108656205,-0.09637776,0.20971496,-0.047136426,0.10920909,0.16905956,0.19190785,0.0035438074,-0.025583372,0.28871274,-0.07032088]],"activation":"σ"},{"dense_2_W":[[-0.49437255,-0.3074483,0.12577564,-0.80536854,0.3818203,-0.2508327,-0.77941257],[-0.590948,0.057729438,0.5775266,-0.82149684,-0.16385625,0.26468316,-0.1986721],[-0.8693337,0.20204362,0.1808782,-0.6436834,0.3982201,0.04757887,-0.7291577],[0.48308417,-0.22587106,-0.62049073,0.30455,0.25944746,-0.08833746,0.29077286],[-0.050321363,0.29200885,0.25033513,-0.55846786,0.1142234,0.7839083,-0.91171724],[0.52267236,0.182393,-0.44948658,0.33957008,-0.57718825,-0.3744284,0.7962124],[-0.5793259,-0.39043754,0.56887144,-0.95162636,-0.04339133,0.38223684,-0.22251375],[0.29715785,-0.73829925,-0.6508201,0.26157615,-0.04009715,-0.3925987,0.42690706],[-0.5547783,-0.23581004,-0.20441227,-0.7084414,-0.7474019,0.15549515,-0.3855206],[0.74185896,-0.4140863,-0.5546949,0.042983074,0.33081874,-0.43315694,0.48314857],[-0.94190675,-0.1646355,-0.072953984,0.065710135,0.06073757,0.06576593,-0.103899956],[0.016691964,-0.77896374,-0.30583504,0.5844499,-0.4492795,-0.8628446,0.3806826],[-0.8750809,0.30358797,0.28483135,-0.42145577,0.469206,0.36288846,-0.21708845]],"activation":"σ","dense_2_b":[[-0.16136013],[-0.147815],[-0.048753243],[-0.020298453],[-0.06278913],[-0.051829122],[-0.26132149],[0.015052996],[-0.2423293],[-0.06199252],[-0.122265354],[0.0028793006],[-0.06900899]]},{"dense_3_W":[[0.35378894,0.46196505,0.25659692,0.03284285,0.061739363,-0.08112019,0.21352358,-0.7698974,0.073869765,-0.54001474,0.1673904,-0.12502979,0.46009788],[-0.058786314,0.07694819,0.7003563,-0.64618176,0.6994461,-0.4292753,-0.09363771,-0.04728599,0.1309421,0.060272142,0.29588172,-0.62102175,0.56741786],[0.3380847,0.40602964,0.22502236,0.46803278,-0.7782516,0.16471472,-0.37719798,0.038931362,0.22495954,0.6876152,0.021589195,0.5572496,-0.62703234]],"activation":"identity","dense_3_b":[[-0.045253523],[-0.04910254],[-0.007204871]]},{"dense_4_W":[[1.0239853,0.8379715,-0.19809574]],"dense_4_b":[[-0.042378113]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0000x00 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0000x00 4DNAC101'.json deleted file mode 100755 index d9e967aaa0..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0000x00 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9410305],[1.0135205],[0.43755898],[0.035255913],[1.0150132],[1.0147188],[1.0138017],[1.0047818],[0.99736667],[0.9853777],[0.97017664],[0.035170607],[0.03518756],[0.035202954],[0.03514626],[0.03504212],[0.03485243],[0.034570012]],"model_test_loss":0.003483835142105818,"input_size":18,"current_date_and_time":"2023-08-07_21-07-13","input_mean":[[24.285349],[-0.05928403],[-0.01614233],[-0.009645592],[-0.053309042],[-0.05531696],[-0.056520157],[-0.062387902],[-0.06518509],[-0.06607999],[-0.06631701],[-0.009559443],[-0.009565792],[-0.009585358],[-0.009782268],[-0.009886353],[-0.010085134],[-0.010364845]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.32126558],[0.036132913],[0.14653946],[-0.16673681],[0.011947655],[0.8634933],[-0.8429776]],"dense_1_W":[[0.4527837,-0.36523563,-0.00895103,0.0708803,-0.37383398,-0.15341127,0.58478814,-0.08056343,0.17823605,-0.26987255,0.11071506,-0.03524059,-0.19979352,0.007495296,0.41383117,0.05486684,0.34592432,-0.36494422],[-0.005359442,-0.2667065,0.013745064,-0.084581405,0.24264771,-0.15815671,-0.086041525,-0.26656815,0.012661911,-0.2871439,0.47772396,-0.571899,0.061434507,-0.15776612,-0.11044384,0.37591726,0.2713445,-0.026513515],[0.004771754,-0.26444337,-3.0509355,0.42927757,-0.16592573,-0.5067485,0.500884,0.20909443,0.04189764,-0.027662966,0.37295133,-0.43910545,-0.21445197,0.1298138,-0.10558352,0.2703849,0.1670119,-0.43948233],[0.39938697,0.29979974,0.008373226,0.16164267,-0.26766345,0.43186393,-0.039016787,0.019693874,0.1261662,-0.37198588,0.1659897,0.1892901,0.117931575,-0.6488737,-0.16253956,0.0455478,-0.0022032904,0.025826642],[-0.011956519,0.021317355,0.021973232,0.3160384,-0.28960922,-0.29251087,0.60586154,-0.41510195,0.128146,0.22726218,-0.32743308,-0.2132152,-0.10418378,0.035125237,0.119344465,-0.1968828,0.0840623,-0.04892973],[0.4348723,0.22955361,0.015684376,-0.16318707,-0.31230125,0.19132592,-0.2461668,0.23461606,0.09528534,0.4775696,-0.3119358,0.0008261773,-0.13662255,-0.09776182,0.34027192,0.13092493,0.0071137655,-0.14361662],[-0.32389423,0.38325608,0.0145612145,-0.11149766,0.051686168,-0.008923491,-0.25343153,-0.36856908,0.40953627,0.27845463,-0.15776885,0.014580425,0.035484746,-0.1405985,0.008262141,0.0750361,0.22170645,-0.17522527]],"activation":"σ"},{"dense_2_W":[[-0.6714466,-0.34783113,-0.12780505,0.91295844,-0.19930731,0.36767703,0.5786663],[-0.6771721,-0.11134032,-0.033869732,0.45200992,-0.19539332,-0.059520427,0.39429346],[0.43033612,0.83407825,-0.5783082,-0.9366921,0.93509126,-0.028040314,-0.72735274],[0.15360972,0.077082366,0.35429364,-1.051215,0.7068334,-0.85113597,-0.18565065],[-1.3485137,0.31199598,-0.9909041,0.35103118,-0.8839503,-0.51250356,1.0146881],[-1.1571593,-0.21886723,0.22874051,0.36782742,-0.33092886,0.5572583,0.21506594],[-0.86161023,-0.9853974,-0.45453233,0.28777933,-0.9925813,-0.37540138,0.96739244],[-0.5824667,-0.54830873,-0.7745198,-0.02694336,-0.8390693,-0.05262828,0.9321934],[0.90932316,0.36091605,-0.29672763,-0.4059818,0.5786526,-0.32232416,-0.83604115],[-0.0006442681,0.18862467,-0.693046,1.0736086,-0.44083816,0.92259085,0.4656397],[-0.1815308,0.3588715,0.97227794,-1.3006788,0.060749445,-1.4515802,-0.3403856],[0.13273185,0.4301123,0.09077474,-0.66371524,0.5008187,-0.8510345,-0.8018143],[-0.32866758,0.45398203,0.11124515,-0.40842384,0.4973462,-0.7254867,-0.8856933]],"activation":"σ","dense_2_b":[[0.0012725799],[-0.11492474],[-0.017718269],[-0.3617725],[-0.1245201],[-0.038838513],[-0.22801119],[-0.1657449],[-0.04381892],[0.11536696],[-0.42785484],[-0.074301556],[-0.3165186]]},{"dense_3_W":[[0.7072188,0.32837203,-0.8357544,-0.07334732,0.36024168,0.6057319,0.73583984,-0.059062883,-0.6172043,-0.002954617,-0.55209947,-0.6971218,0.38010213],[-0.69038504,-0.23186448,0.36981446,-0.3447812,0.38637486,-0.032711018,-0.046227716,0.39877996,0.38114014,-0.111415684,-0.082114026,0.21984167,0.5183156],[-0.51899433,-0.12916048,0.5884876,0.71727073,-0.6060962,-0.33618042,-0.24320374,-0.5715705,0.822553,-0.59673494,0.3488014,0.63506675,0.38828656]],"activation":"identity","dense_3_b":[[-0.0030867092],[-0.08421286],[-0.05693552]]},{"dense_4_W":[[0.26367742,-0.0008218267,-0.6682586]],"dense_4_b":[[0.034324795]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0010x00 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0010x00 4DNAC101'.json deleted file mode 100755 index 5988f76d32..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0010x00 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.724716],[1.4959972],[0.5397873],[0.048951324],[1.4975377],[1.4972339],[1.4954233],[1.4662817],[1.4340023],[1.3873618],[1.3405958],[0.048942763],[0.048936542],[0.048920844],[0.04871155],[0.04843174],[0.047928806],[0.047302604]],"model_test_loss":0.008742202073335648,"input_size":18,"current_date_and_time":"2023-08-07_21-34-23","input_mean":[[22.895647],[-0.05509051],[-0.0009339962],[-0.0024197318],[-0.05186684],[-0.05237507],[-0.052418586],[-0.051652323],[-0.04790127],[-0.043305434],[-0.039102893],[-0.0023933721],[-0.0023879136],[-0.0023819967],[-0.0023226556],[-0.0023347258],[-0.0023805785],[-0.002389813]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.1189297],[0.028616758],[-0.120110326],[-1.3364003],[-1.155689],[4.545205],[4.6856055]],"dense_1_W":[[1.6764991,-0.2165616,0.02171967,0.16306138,-0.33178213,-0.51356286,-0.92342836,0.073167734,-0.3029504,-0.49412876,0.22411734,-0.050114613,0.45258516,-0.39424014,-0.27986053,0.68608093,0.5258633,-0.16820106],[-0.052571695,0.91275,-0.014465118,0.043426633,-0.025098825,0.6740059,-0.13264339,-0.07667199,-0.09834313,0.036156673,0.09688627,-0.3393718,0.2594245,-0.45005876,0.22202903,0.16855074,-0.18687673,-0.25429112],[0.035393406,0.03501877,2.4415658,-0.43501148,-0.05228597,0.2040651,-0.20346655,0.38124704,0.24086578,0.21851066,-0.5910301,0.24155477,0.3626571,-0.36362377,-0.028416263,-0.33286482,0.31952125,0.0679023],[1.2067224,0.446494,0.0043112906,-0.16087066,0.18499684,0.39496493,-0.5509506,-0.075064704,0.13784459,-0.0049934876,0.006677537,0.26749933,0.39251417,-0.03499381,-0.6604564,-0.17244674,0.16260312,0.11549027],[1.0689722,-0.8116208,-0.006096875,0.34023157,0.47210988,-0.4384605,0.5331227,-0.41759884,-0.069540545,0.19452903,0.044704154,-0.47479782,-0.5569904,0.34265992,0.62784165,-0.021865688,-0.0069787498,-0.18864322],[1.831592,0.787637,0.15575852,0.030726168,0.3170631,-0.2733012,-0.09314743,-0.054926086,0.25987238,0.3793867,0.17776896,0.3717297,0.16224486,-0.16089486,-0.75732154,0.07296396,0.22855438,0.05832146],[1.7819636,-1.194306,-0.15287273,0.1887876,0.27201483,0.029433675,0.21670823,-0.35105628,-0.034238473,-0.11963524,-0.24842486,-0.26960924,-0.4148937,0.21680552,0.606679,-0.034082934,-0.29762813,-0.009257641]],"activation":"σ"},{"dense_2_W":[[-0.4629005,-0.4974006,-0.2904858,-0.6057455,0.7039836,-0.41832525,1.0372955],[0.28977782,0.80422324,-0.13876091,0.116478674,-0.019442132,0.9098352,-0.26412618],[0.26888716,-0.03308781,-0.11852592,0.05119105,0.31046206,-0.46183512,-0.50962996],[-1.0175097,-0.2795209,-0.91239053,-0.49764445,0.46378636,-0.72158617,-0.30564114],[-0.13860786,-0.5658692,-0.37510815,-0.2453204,-0.09008834,-0.40480798,-0.38012755],[-0.44616798,0.29338104,-0.093062796,0.35459974,0.14732593,0.3038334,-0.11383935],[0.22607525,-0.17798835,0.35510284,0.40880376,-0.8194073,-0.17143391,-0.46821502],[0.4565513,-0.55615324,-0.13392484,-0.49555677,0.7522913,-0.8161395,1.1037465],[-0.12025648,-1.121007,-0.07142694,-0.48535815,0.806789,-0.2798449,0.904912],[-0.6080642,-0.3117671,-0.7829517,-0.8494238,-0.41115513,-0.7792509,-0.17217514],[-0.3106535,0.37121254,0.16562602,0.6343219,-0.45030606,0.21602832,-1.0619884],[-0.48947912,-0.78191125,0.010906762,-0.2521157,0.61846507,-1.1840519,0.18846932],[-0.2804687,-0.8394935,-0.39661968,-0.5188922,0.90818566,-0.8677206,-0.12709521]],"activation":"σ","dense_2_b":[[-0.0071314005],[-0.017422963],[-0.04535261],[-0.2071086],[-0.061347343],[0.0069322526],[-0.026729736],[0.07267423],[-0.18793571],[-0.049161524],[-0.05531663],[-0.099349104],[0.08250706]]},{"dense_3_W":[[-0.25297967,0.50810736,-0.46908683,-0.03641949,0.038947254,0.34386054,0.5226972,-0.039223388,0.1741124,-0.5845979,0.7130592,0.2419447,-0.4491347],[0.5216683,-0.018714925,-0.06133189,0.31551158,0.32538223,-0.11293018,-0.16491419,0.6735836,0.35999843,0.32989758,-0.6725572,0.58409536,0.079916805],[0.038063955,0.29448617,0.57898533,-0.0692794,0.28799778,0.13160062,-0.37904146,-0.67243326,-0.32990336,0.2804782,-0.2603852,-0.19796656,-0.3136028]],"activation":"identity","dense_3_b":[[0.06003448],[-0.08627991],[0.07051213]]},{"dense_4_W":[[0.9887464,-1.0906954,0.7141598]],"dense_4_b":[[0.06921589]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC101'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC101'.json deleted file mode 100755 index c9966e62df..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.973185],[1.2308006],[0.47124374],[0.039767727],[1.2234948],[1.2267562],[1.228702],[1.2206274],[1.2050939],[1.1789762],[1.1437212],[0.0397065],[0.039725386],[0.039734013],[0.039686594],[0.039645616],[0.039555065],[0.039334625]],"model_test_loss":0.005078984424471855,"input_size":18,"current_date_and_time":"2023-08-07_22-00-26","input_mean":[[22.121334],[-0.010464258],[-0.004889951],[0.003433857],[-0.00816012],[-0.008416927],[-0.008662932],[-0.008998272],[-0.008217049],[-0.0068580806],[-0.006010885],[0.003438706],[0.0034568459],[0.0034763422],[0.0035396859],[0.0035731636],[0.0036217745],[0.0036836462]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10654221],[-0.2905768],[-2.871999],[-0.1245177],[0.16143306],[0.082655065],[2.428078]],"dense_1_W":[[-0.009274342,0.5175485,-0.040819537,-0.2658763,0.66790605,0.5001351,-0.3282055,-0.21050686,0.13056423,-0.19473574,0.27589467,0.500145,0.09231609,-0.6249076,0.07356131,-0.2784489,0.2743887,-0.14142068],[0.045650993,-0.7187672,-3.9221926,0.25971168,0.0050335308,0.815766,0.9371128,-0.28306046,-0.60010844,-0.4402398,0.334732,-0.3486068,-0.43578961,0.25923377,-0.06565995,-0.33657274,0.63861084,-0.118178956],[-0.21374783,0.42282847,0.266799,0.05025237,0.0064825355,0.820618,0.2315524,0.26671964,-0.082816996,0.4062073,-0.17926975,0.1487991,0.139769,-0.3999773,-0.13033853,-0.06021389,0.13246544,-0.12687539],[2.2001243,-0.46080446,0.021041024,-0.025847267,-0.0166095,-0.59955376,0.71440715,0.577141,0.040229637,0.1345268,-0.21883093,-0.07305829,0.07283621,-0.030786302,0.3648521,-0.32475784,0.45030454,-0.24509932],[0.0038562298,-0.60293394,-0.020617504,0.019694017,0.3763915,-0.5692821,0.9114758,-0.21734723,-0.1944635,-0.018555427,0.17110226,-0.13353539,-0.5393221,0.6298117,0.1664842,-0.04548269,0.03591765,-0.080464125],[2.0805016,0.294753,-0.015689991,-0.55368453,0.109172165,0.39725655,-0.34113577,-0.54655766,-0.3882753,0.09528684,0.21858771,-0.055341844,0.22205897,-0.2005731,0.5021007,0.059200656,-0.046633355,-0.09212842],[0.21265858,0.5654287,0.24386185,0.10141437,0.066008195,0.45167878,0.1299337,0.4275724,0.05719904,0.15785104,-0.13811876,0.19489175,-0.2531665,0.06650904,-0.31723106,-0.05296288,0.14543928,-0.10396655]],"activation":"σ"},{"dense_2_W":[[0.7208203,-0.5637391,0.59667504,-0.24075457,-0.9961346,-0.13531135,-0.12724179],[0.08353179,-2.235628,0.29917157,-1.315324,-0.22382064,-1.8709669,-0.44139647],[0.5387289,0.32765672,0.35890356,-0.52188003,-0.70411855,0.3507985,0.5237647],[-0.25249085,0.050148275,0.6831794,-0.27731276,-0.10181721,0.8868131,0.51331794],[-0.061348394,0.0007661709,-0.43009564,-0.5424198,0.14139919,-0.5450331,-0.039015777],[-0.18883842,0.14738812,-0.23603185,-0.3689771,0.36367714,0.12600073,-0.4179159],[-0.4459407,0.36866704,0.113049746,0.29777262,0.1801355,-0.38669178,-0.7965472],[-0.017579421,0.05280841,-0.38046154,0.4176994,0.14375417,0.10180892,-0.53780746],[-0.13019691,0.32150963,-0.7783258,0.4411255,0.9020806,0.30856878,-0.24670088],[-0.71212524,-0.3333824,-0.10890434,-0.05027984,0.58339226,-0.3812356,0.18127146],[0.4350403,0.11608274,0.16477108,-0.072991945,-0.6695063,-0.11097746,0.06759265],[-0.7526205,0.5938332,0.34072697,-0.696911,0.17783667,-0.74074334,-0.9378376],[0.804114,-0.12623003,0.16351596,-0.31503728,-0.7229197,0.40303767,0.2082207]],"activation":"σ","dense_2_b":[[-0.31468102],[-0.17055899],[-0.2285355],[-0.097128555],[-0.010586535],[-0.015096155],[-0.0655667],[0.019932993],[0.071114086],[0.026876245],[-0.35583144],[-0.100859694],[-0.06898828]]},{"dense_3_W":[[0.2983101,-0.7078514,-0.65568393,-0.36758986,0.13057497,0.6307905,0.36659017,-0.25304082,0.42478424,-0.14673297,-0.34746668,-0.24960928,-0.6091494],[-0.3587975,0.03995377,-0.4216834,-0.5777477,0.10252213,-0.20580202,0.28845647,0.40347326,0.67879415,0.48831588,0.15095003,0.6822594,-0.04936859],[0.22906187,0.17523333,0.50960416,0.23045082,-0.21069351,0.058853656,0.3477555,-0.40553525,-0.54917115,0.047501687,-0.12622266,-0.13184138,0.646118]],"activation":"identity","dense_3_b":[[0.042785127],[0.029713841],[-0.12879385]]},{"dense_4_W":[[-1.0081478,-1.2892519,0.112720646]],"dense_4_b":[[-0.032802135]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC102'.json deleted file mode 100755 index 988cca6227..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS C 1.00 1.01 56310L0210x00 4DNAC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.848481],[0.8862211],[0.48629978],[0.033282995],[0.8825565],[0.8842056],[0.88548553],[0.8823946],[0.8792348],[0.8754788],[0.869421],[0.03292297],[0.03304511],[0.033158313],[0.03340195],[0.033433877],[0.033367477],[0.03335788]],"model_test_loss":0.004575948230922222,"input_size":18,"current_date_and_time":"2023-08-07_22-26-28","input_mean":[[18.430927],[-0.07129647],[0.018491521],[-0.026260056],[-0.07448064],[-0.073375314],[-0.07258443],[-0.065266214],[-0.063046746],[-0.059541434],[-0.054584157],[-0.02657762],[-0.02647423],[-0.026383044],[-0.02612497],[-0.026040455],[-0.026031366],[-0.026007706]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.001867291],[2.5971534],[0.22938758],[-0.22608748],[-2.7614555],[-0.07245665],[0.011351448]],"dense_1_W":[[0.0048964336,0.32368863,0.0071244487,-0.06219253,-0.69971055,0.66141987,-0.1635048,-0.32375827,0.06625927,-0.06529672,0.21220222,0.6800635,-0.10624061,-0.30102918,-0.25439295,-0.24798034,-0.30751342,0.45424858],[0.8717096,0.27175072,0.008614075,-0.39488295,-0.5048402,-0.07688018,0.21375221,0.25862306,0.3802419,0.780373,-0.34666312,0.07282488,0.2847437,-0.38848653,0.20993155,0.44143435,-0.11863596,-0.10396724],[-0.0052353255,-0.31822816,0.004281337,-0.30333275,0.034296587,-1.0526781,0.15911727,0.13257483,0.3769281,0.06922915,-0.31705686,-0.13642934,0.15893984,0.35623473,-0.2221777,-0.53985226,0.31177884,0.1331077],[-0.0026488309,-0.46307364,0.0040305443,0.21302664,0.10572383,-0.33876655,0.11481708,0.06491223,0.22308613,0.20670146,-0.18406537,0.18875864,0.001323788,-0.15270492,-0.009875742,0.10065525,-0.10484487,0.07724725],[-0.8517313,1.2480507,0.009313202,-0.59048694,-1.1145165,0.34028202,-0.09743023,-0.15318984,0.5041415,0.41274792,-0.16457404,0.8264525,-0.21307376,-0.43806297,0.17587166,0.0247668,0.416932,-0.20631395],[-0.0018124692,1.0170236,-2.7477639,0.19892676,-0.17666285,-0.57476693,0.5719481,-0.52562296,-0.88914037,-0.8647134,1.5394452,-0.3119364,0.088813215,0.07492086,-0.11926867,-0.3707679,0.21501637,0.24960175],[-0.023958094,0.095316805,-0.016534787,0.16063792,0.04441202,0.39860037,0.024935467,0.1530449,-0.15884824,-0.40695116,-0.09302091,0.56395507,-0.28016278,0.13766079,-0.5281072,-0.44597715,0.28976548,0.1696837]],"activation":"σ"},{"dense_2_W":[[0.15154204,-0.78675294,0.22928046,-0.033503618,-0.15833412,0.45278502,-0.4705822],[-0.5834908,-0.14377658,0.38843614,-0.029937692,-0.35921872,0.36018422,-0.058587343],[0.053825956,-0.6018707,0.35535994,0.5998146,-0.44884253,-0.37599027,-0.13201852],[0.073090784,0.5060707,0.09179472,-0.24177255,0.38017172,-0.23855892,0.20076287],[0.06758576,0.10149547,-0.86642444,-0.6211972,0.19965667,0.40455145,-0.032479934],[0.5254006,0.2655984,-0.13189656,-0.57774425,0.29848206,-0.013868569,-0.47990555],[0.5851224,0.48843405,-0.07289669,-0.42773506,0.3975408,-0.44622093,0.1360654],[-0.015633296,-0.62110466,-0.38382724,0.0018601576,0.1371097,0.0743509,-0.3674576],[-0.6463754,-0.70364404,0.25133833,0.18379001,-0.28124034,0.38435185,0.32847217],[-0.61743426,0.28012255,0.51616675,0.08034732,-0.3428058,0.39314508,-0.211209],[-0.4220699,-0.4960329,0.33365622,0.41486493,-0.45122844,-0.29246688,-0.30248302],[0.09507034,-0.3089235,-0.5273463,-0.7179823,0.86094236,-0.2863892,0.14491831],[0.24167342,-0.19868858,0.18480074,-0.42431474,0.15458284,0.12002474,0.038593136]],"activation":"σ","dense_2_b":[[-0.053941116],[-0.019561898],[0.053443328],[-0.07374648],[-0.30186814],[-0.10220643],[-0.006079856],[0.005632312],[-0.06199264],[0.0008034756],[0.06794324],[-0.13134351],[-0.025431834]]},{"dense_3_W":[[0.6019684,0.08368994,0.11931014,-0.5326191,-0.5951374,0.17335932,-0.6391729,0.5901674,-0.44038236,-0.26132423,-0.13372217,0.4315051,0.07855694],[-0.38172075,-0.4879406,0.26037207,-0.19332667,-0.50175065,0.5571594,0.3143821,0.21798374,-0.5415063,-0.11827112,-0.7028584,0.52945256,0.61205876],[-0.27886352,-0.20352115,0.5313796,-0.33827436,-0.23451158,-0.11697601,-0.4642654,0.21843909,0.17134716,0.55283946,0.53888303,-0.64016294,0.59808445]],"activation":"identity","dense_3_b":[[0.028694455],[-0.02157225],[0.021652581]]},{"dense_4_W":[[-0.88839185,1.1335969,-1.251347]],"dense_4_b":[[-0.02365967]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100'.json deleted file mode 100755 index 982d9a2e7a..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020 b'xf1x00DN8 MDPS R 1.00 1.00 57700-L0000 4DNAP100'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8251824],[0.97374165],[0.39678615],[0.039650038],[0.9675714],[0.96974653],[0.971445],[0.96010584],[0.9482498],[0.93838036],[0.9262751],[0.039522577],[0.039549936],[0.039577607],[0.03943945],[0.039266065],[0.03906478],[0.038730167]],"model_test_loss":0.005850189831107855,"input_size":18,"current_date_and_time":"2023-08-07_22-51-04","input_mean":[[23.948711],[-0.11042184],[0.0008513909],[-0.004719362],[-0.10913178],[-0.109804966],[-0.11005321],[-0.10579765],[-0.10312579],[-0.10175711],[-0.098089136],[-0.0047842367],[-0.004759096],[-0.0047326833],[-0.0044965143],[-0.0043862625],[-0.0043439874],[-0.004256917]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.19536564],[-0.0041716034],[-1.7697656],[0.034405522],[-0.9804138],[1.5592381],[-4.038623]],"dense_1_W":[[-0.96289176,-0.16844435,-0.33135042,0.04781623,-0.0905433,0.31838787,-0.7973821,-0.6977461,-0.22462271,-0.15944098,0.05584555,0.032361288,-0.017556911,-0.4097252,0.08451744,0.47493675,0.24613103,-0.13016479],[0.0025252467,0.36295822,0.0051952563,-0.061572302,-0.35887212,0.22229104,-0.22204724,0.034594852,0.14076412,-0.17208177,0.011452716,0.090597436,0.29632482,-0.23263389,-0.075431645,0.027754778,-0.26631972,0.22669151],[0.98580307,0.1460111,-0.006533776,0.25585753,-0.2031787,0.75645447,-0.19832224,0.22909965,-0.22415143,0.056795266,0.034398753,0.4630238,-0.19674145,-0.13854524,-0.4064176,-0.12922981,-0.060546197,0.065589026],[0.045029007,0.50269336,2.7796633,-0.0076377117,-0.63786316,-0.06653349,-0.55045384,0.08327676,0.27944806,0.5322522,-0.36390388,0.3737667,-0.20071353,-0.21758012,-0.16247746,0.31800562,-0.12797713,0.037218444],[-0.55134237,-0.18539825,-0.19819416,0.27468693,-0.15253156,-0.55906934,0.24991404,-0.03944831,-0.2475911,-0.038619418,-0.102022864,-0.13440825,-0.39271066,0.31743523,-0.016324805,0.19443971,-0.21604395,0.17059657],[-1.036423,-0.37088332,-0.0090809995,0.4914565,-0.09154215,0.25218782,0.24309473,0.30631322,0.35170037,0.23679022,-0.34137195,0.12669902,0.0069693094,0.13518511,-0.4373841,-0.6247206,-0.14910895,0.30531472],[-1.0771234,0.76018256,0.35249147,-0.31738096,0.097953156,0.07492969,-0.1556959,0.533758,0.14374508,0.8647132,-0.44715706,0.62586576,0.11443575,-0.3779071,-0.2320536,0.10263231,-0.2999651,0.04361549]],"activation":"σ"},{"dense_2_W":[[-0.10324592,0.11039738,0.51771843,0.09347721,-0.87196016,0.6635172,0.24947388],[0.024585094,0.59421515,0.068763964,0.5486269,-1.4608854,0.88192827,-0.39993966],[0.4413766,0.7881249,0.39034104,0.18230437,-0.9140034,0.05566271,0.09512442],[-0.47279245,-0.3493564,0.14005436,-0.5340587,0.5966407,-0.46430302,0.22444999],[-0.45392346,-0.04614412,-0.35355964,-0.18547632,0.3873904,-0.7008455,0.12206877],[-0.36739802,0.20268749,-0.12268851,-0.106193095,0.5999196,-0.37765756,-0.44922847],[-0.54880965,-0.7290866,-0.28915912,0.17727232,0.38667715,-0.6511501,-0.1383285],[0.52068883,0.50054383,0.6252861,-0.23605038,-1.4634428,0.41514036,0.9438054],[-0.648459,0.2471083,-0.65482795,-0.119111195,-0.30439776,-0.04859132,-0.6602194],[-0.5173293,0.11870849,-0.33469254,-0.796215,-0.45731404,-0.4510818,-0.40196368],[-0.45839694,-0.41415405,-0.6876088,0.11170082,-0.13311273,-0.35558105,-0.49632224],[0.39769867,-0.35987017,-0.20037495,-0.5226243,0.72143537,-0.20635548,-0.46655688],[-0.37865394,0.016113892,-0.520626,-0.25705534,0.94881725,0.11235735,-0.83941835]],"activation":"σ","dense_2_b":[[-0.4009523],[-0.35328817],[-0.17279775],[0.024035925],[-0.0030043991],[-0.0042769755],[0.08547396],[-0.49828207],[0.03243174],[-0.38892063],[0.16030122],[0.15409443],[0.15423937]]},{"dense_3_W":[[-0.35692686,0.11431418,-0.20940931,-0.16842283,0.5645013,-0.037901483,-0.5341042,0.054549012,0.54704887,0.54749495,-0.27935258,-0.17022972,-0.36970934],[-0.4523077,-0.20165743,-0.606432,-0.17038603,-0.01184516,0.4348867,0.696362,-0.133869,0.5862017,0.3475741,0.57729375,0.45561698,0.055455644],[0.17490287,-0.49273917,-0.6702675,0.52635163,0.24822022,-0.15901737,0.50198627,-0.7415996,-0.32407025,-0.50210077,0.2912399,-0.02596676,0.75527865]],"activation":"identity","dense_3_b":[[-0.030630419],[0.020200811],[0.036532093]]},{"dense_4_W":[[-0.01753921,-1.0593574,-0.9545534]],"dense_4_b":[[-0.026306424]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102'.json deleted file mode 100755 index 7e8479916d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5450 4DNHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.689964],[1.1172562],[0.47065306],[0.039288677],[1.1148199],[1.1146759],[1.1138787],[1.0997579],[1.0863613],[1.0626523],[1.0341643],[0.039109986],[0.039163604],[0.03921246],[0.039282],[0.0392662],[0.03901584],[0.03859772]],"model_test_loss":0.006890684831887484,"input_size":18,"current_date_and_time":"2023-08-08_00-34-17","input_mean":[[22.360703],[0.03464188],[0.0027785136],[1.2959163e-5],[0.037677385],[0.03741321],[0.03715227],[0.03595462],[0.03641664],[0.032926656],[0.026464323],[-2.0994983e-5],[-8.1254e-6],[-7.6023986e-7],[-6.278352e-5],[-8.228038e-5],[-0.0002560112],[-0.00051422045]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.4041638],[-0.009381184],[-1.2474654],[-0.32208985],[4.033501],[-0.6852106],[-3.9728174]],"dense_1_W":[[-0.687249,1.1542901,2.1917975,-0.54792583,0.11244576,0.16998574,-0.49382955,-0.13925558,0.09835213,-0.15130454,-0.9653543,0.16384646,0.027884314,-0.14891884,-0.48109746,0.091843285,0.5578272,-0.05534039],[-0.0014183326,0.726647,-0.0035275402,-0.11533925,-0.4059522,0.7295035,-0.47751862,-0.2416707,-0.02734288,0.06507004,-0.0064442307,0.6041324,0.67849165,-0.55099046,-0.23613937,-0.032516804,-0.16318728,-0.08419399],[-0.5954915,-0.76488334,-2.0431242,0.15687804,0.23584543,-0.42583415,0.10554652,0.11953392,-0.15156066,0.21460378,0.87915903,-0.35293782,0.25323242,0.39901143,0.25572163,0.08249874,-0.38727182,-0.047129497],[0.14069723,-0.3919022,-0.0008744924,-0.059669092,-0.09359133,-0.6368598,0.5902478,0.20133625,-0.121440604,-0.065659136,-0.0057477783,-0.30779642,0.24014011,0.40626147,-0.12158061,-0.14876814,0.16586542,-0.033642642],[1.5318011,1.1091315,0.0042629745,-0.28907332,-0.062063456,-0.10614539,-0.03415317,-0.004241847,0.26679656,0.012595347,0.6646693,0.22112225,0.17988127,0.090471245,-0.17571782,0.19749698,-0.393442,0.21523812],[0.310905,0.29187796,-0.0007723808,-0.363841,-0.6149396,0.70793575,0.0772483,0.04830643,0.29118708,-0.17558831,-0.028698755,0.21452032,0.6498187,-0.6480603,0.19537422,-0.61544496,0.34354338,0.06310341],[-1.525909,1.1347268,0.006725862,0.065649055,-0.52072847,0.30013448,0.3943772,-0.4068202,-0.0063213394,0.3581553,0.6199145,0.49079955,0.060594473,-0.46649554,-0.118231915,0.08833182,-0.1837789,0.1082475]],"activation":"σ"},{"dense_2_W":[[-0.41003475,-0.5941811,0.35549054,0.70805454,0.06241565,0.24009907,-0.2571945],[-0.17879263,-0.5668489,0.078311555,0.26954442,-0.46130812,-0.2986236,0.026367432],[-0.032109488,0.4100262,-0.53486085,0.4058389,0.044560365,0.16679758,-0.3034037],[0.73847044,-0.20993896,-0.5642298,-0.3659582,0.20961727,0.43580025,0.0177744],[-0.4672462,-0.61421245,-0.44849893,-0.17692474,0.22861485,-0.3238457,0.15435395],[0.22824611,0.28959498,-0.2854186,-1.4559703,0.9620582,0.74461776,-0.108179726],[-0.02588813,-0.3127553,-0.71865684,-0.44503638,-0.27046338,0.14424235,-0.038083725],[0.32513967,-0.3561943,0.24827418,-0.32704267,-0.38088554,0.2438981,-0.1064644],[-0.17885895,0.42748332,-0.74465275,-0.8093966,-0.11033694,0.3553823,0.62148225],[0.131998,0.100577846,-0.17490678,0.6352548,-0.47178045,-0.57052344,-0.17243351],[-0.6209595,0.369551,0.19621795,-1.3971734,0.64587736,0.51646644,0.4175135],[0.0005163468,-0.24055383,-0.20226417,0.67244124,-0.23466797,-0.48380762,-0.53093874],[-0.22020346,0.3996716,0.2970228,-0.7995752,0.09480631,-0.08127671,0.62530756]],"activation":"σ","dense_2_b":[[0.031364277],[0.07349004],[-0.05814894],[-0.024128156],[-0.0155091975],[-0.29374],[-0.26029426],[-0.021580614],[-0.16836035],[0.012105176],[-0.36115757],[0.10476691],[-0.13135944]]},{"dense_3_W":[[-0.5763429,-0.56471676,0.12633902,0.5479549,-0.6422557,0.27148914,-0.23865283,0.15508497,0.5120569,-0.18321085,-0.20305811,-0.3290402,0.043243363],[-0.02372374,0.39314762,0.15481226,-0.5593528,-0.5013217,-0.16603263,-0.23262566,0.25007325,-0.20149072,0.21564138,-0.6830406,0.700577,-0.50517535],[-0.5742908,-0.04224201,-0.06110482,-0.050169945,-0.53291845,-0.1360594,0.564487,-0.24321367,-0.24506827,-0.27379003,0.5516074,-0.5063531,0.4253847]],"activation":"identity","dense_3_b":[[-0.02731678],[0.03552884],[-0.0069239554]]},{"dense_4_W":[[1.098094,-0.99127156,0.16504136]],"dense_4_b":[[-0.030831616]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102'.json deleted file mode 100755 index 157ce56e6c..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.02 56310-L5500 4DNHC102'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.806735],[1.2785676],[0.5104689],[0.044312194],[1.2728615],[1.2750368],[1.2765797],[1.2632731],[1.244448],[1.2167825],[1.1834176],[0.044200357],[0.044231147],[0.044254437],[0.04425257],[0.04418865],[0.044067442],[0.043792143]],"model_test_loss":0.01218547485768795,"input_size":18,"current_date_and_time":"2023-08-08_00-59-43","input_mean":[[23.11654],[-0.032949522],[0.009155593],[-0.029586772],[-0.034678016],[-0.034348194],[-0.033619005],[-0.028988048],[-0.025731714],[-0.019963661],[-0.016452389],[-0.029611032],[-0.02960542],[-0.029594153],[-0.029447835],[-0.029455785],[-0.029506048],[-0.029566707]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.8828355],[0.40646476],[2.090121],[0.8059917],[2.205458],[0.9334858],[-0.33200896]],"dense_1_W":[[-0.53053826,0.27904403,1.8534683,-0.2955934,-0.3956192,0.78547305,-0.38176653,-0.35697734,0.3331119,0.34091163,-0.686063,0.7608489,-0.5477775,-0.041410368,-0.1755996,0.27248794,-0.08716658,0.06782427],[-0.0023688215,0.28428173,0.0065304525,-0.08413256,-0.49787298,1.0713955,-0.62245727,0.101583414,-0.008971785,-0.22987749,0.13199726,0.29666874,0.24260923,-0.649986,0.11152149,-0.28588438,-0.0071382457,-0.29161188],[0.3604459,0.8241495,0.008147093,0.061904266,0.021917332,0.83537346,0.071819894,0.21101502,0.039214145,0.07105925,0.017073013,0.5363549,-0.0137413,-0.37729445,-0.37352064,0.1549617,-0.30158794,0.29164574],[0.50972414,0.21102065,1.906497,-0.3665385,-0.2077211,0.5899225,-0.7436237,-0.027170774,0.59833825,0.55375063,-1.0024506,0.2756846,0.1362578,-0.4424235,0.17111245,0.14868937,0.27094048,-0.2256927],[0.3570491,-0.9449637,-0.0038414046,-0.18648717,-0.21053085,-0.71682775,0.19967486,-0.24819107,-0.12916584,-0.021362225,-0.01222075,-0.39958,-0.110254936,0.35989097,0.5008998,0.0059754075,0.054075558,-0.20690106],[-0.0066155936,-0.92957646,0.013711732,-0.28924587,0.9040592,-0.5274747,0.5186851,0.4869224,0.07748703,0.21800375,-0.13250247,-0.3384952,-0.19564785,0.61564326,-0.33629382,0.21877833,-0.17645325,-0.85731995],[-0.15106708,-0.18163809,1.5749623,-0.080494866,0.0063749384,-0.41591707,1.2240275,-0.5400741,0.18987378,-0.2516748,-0.13973542,-0.62628853,0.36244768,0.08076608,0.24033926,0.054027114,0.13816029,-0.222367]],"activation":"σ"},{"dense_2_W":[[0.18049516,0.06898391,0.026188483,0.50226945,-0.836067,-0.15816489,-0.035430282],[0.77764225,0.4938293,-0.18668377,0.33298555,-1.4891886,-0.24971096,-0.17076197],[-0.60486037,-0.68777907,-1.0724757,0.35820767,0.6229709,0.89322317,0.55584955],[-0.6130941,-0.45594084,0.2157379,-0.32011363,0.8813185,0.22641036,0.34688213],[-0.054075092,-0.7679671,-0.13776255,0.19197619,0.26417407,-0.16748618,0.29280367],[-0.10182613,-0.12194571,-1.0255779,-0.60696757,-0.09953989,0.23414455,-0.36724913],[-0.20329732,0.5056915,-0.016156103,0.11111321,-0.5714082,0.2851215,0.07377184],[0.050893724,0.2936281,0.19905426,0.02157211,-0.71915215,-0.31541398,-0.32369208],[-0.38534418,-0.57820314,-0.69817704,-0.78573805,-0.22289091,-0.1444706,0.84120387],[-0.22642383,-0.1060583,-0.6594286,-0.86231923,-0.11660855,-0.09651285,0.41405997],[0.35768324,0.29057413,0.52457124,-0.084269114,-0.76201826,-0.09401483,-0.106591016],[-0.43864337,-0.53775054,-1.1092063,-0.5224982,0.116868414,0.6581688,0.5014254],[0.34511328,-0.054018814,0.8002029,-0.07694278,-0.40526733,-0.13650577,-0.44867894]],"activation":"σ","dense_2_b":[[-0.09483589],[-0.30355707],[0.013573359],[0.045211345],[-0.0871814],[-0.24410044],[-0.0775358],[0.11720473],[-0.008279821],[-0.2442025],[-0.2776844],[0.015379876],[0.09168367]]},{"dense_3_W":[[0.40055394,0.582905,-0.4111319,-0.31334177,-0.48468548,0.11764927,-0.08204717,0.27377617,-0.7112729,0.19272773,0.26190874,-0.8084976,0.4428442],[-0.21866779,0.3226937,0.10855049,0.07141476,-0.13760294,-0.22177294,0.160254,-0.37559277,-0.5011528,-0.32128072,0.5026536,-0.39558798,0.10326434],[-0.18509546,-0.48764798,0.19780253,0.2646118,0.09047094,0.31383237,-0.58293486,-0.08110487,0.6763159,0.46092844,0.059963726,0.57369226,-0.64778125]],"activation":"identity","dense_3_b":[[0.052880295],[0.07685314],[-0.04764411]]},{"dense_4_W":[[0.9994107,0.08082187,-0.78512675]],"dense_4_b":[[0.05184357]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103'.json deleted file mode 100755 index 85544ca5c7..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021 b'xf1x00DN8 MDPS C 1.00 1.03 56310-L5450 4DNHC103'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.26363],[1.2876029],[0.4691794],[0.042342793],[1.2798712],[1.281447],[1.2820183],[1.2581282],[1.2295567],[1.1863525],[1.135284],[0.04198092],[0.042049758],[0.04212124],[0.042146564],[0.041984763],[0.041710183],[0.041294366]],"model_test_loss":0.006388714537024498,"input_size":18,"current_date_and_time":"2023-08-08_01-25-55","input_mean":[[22.872793],[-0.08689881],[0.0010234753],[-0.0038607456],[-0.08724453],[-0.087999865],[-0.08858455],[-0.08748225],[-0.08481368],[-0.08042719],[-0.07732415],[-0.003858866],[-0.0038813055],[-0.0039040009],[-0.0041669253],[-0.004390024],[-0.0046632714],[-0.004900364]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.5336922],[-0.6008307],[-0.6673705],[-1.177618],[2.1967514],[-2.8734276],[-0.27195445]],"dense_1_W":[[1.2013925,-0.38953242,-0.028237127,-0.14180943,-0.18575947,0.1106242,0.12136914,-0.71949697,-0.20943782,0.047901746,0.09341362,0.0044323304,-0.29708275,-0.052522436,0.53091663,0.27349496,0.3104034,-0.38801497],[-0.23073046,0.8099321,-0.03846076,-0.91607964,0.11726978,0.42854434,-0.07123206,-0.2530622,0.029919352,0.23274454,0.029808447,0.55654866,0.31956628,0.027127922,-0.24346891,0.12953727,0.1545052,-0.016463429],[0.4944997,-0.507676,-0.021496933,-0.13818543,0.00021766199,-0.45922992,0.5179483,-0.1616277,-0.13048062,-0.02763714,0.031596903,-0.2688555,0.3347001,0.022401655,0.18831164,0.16599877,-0.00036161195,-0.058895797],[0.79052234,0.5169544,0.004457134,0.07639163,0.040505003,0.16811295,-0.49953467,0.30723387,0.43350053,-0.30323687,0.0021920651,0.5147583,0.1054229,-0.8480872,-0.08184729,-0.10606368,-0.11437162,0.14529237],[0.87388206,1.4188874,0.005403591,-1.2710905,-0.5001256,0.66239464,-0.049878355,-0.09099538,0.22368619,0.1436128,-0.05005276,0.5060512,0.5519586,0.14216568,-0.03614136,-0.30450502,-0.01521232,0.22127852],[-1.1201782,1.1519747,0.018877197,-0.84099257,-0.10477958,0.22008999,-0.0178951,0.098986864,-0.25299644,0.25593615,0.013966401,-0.02736472,0.4958138,0.34917468,-0.06082836,-0.18867119,-0.08527511,0.14691037],[-0.011524901,1.2455785,3.091312,0.2794258,0.30048615,-0.25095785,-0.81237376,0.073421545,-0.07831179,0.29788557,-0.48452437,0.3920703,-0.35341492,-0.0816123,-0.2704529,0.057917055,-0.08816406,-0.20087627]],"activation":"σ"},{"dense_2_W":[[-0.16297658,0.03952007,0.017301178,0.11138396,-0.54143757,-0.6359262,-0.48702642],[0.023838406,0.53726286,-0.8185933,0.9541119,-0.21379428,1.0464535,-0.14768387],[-1.4899192,-0.46342307,-0.012913185,0.6559764,-1.133273,0.5413093,-0.4222291],[-1.5246911,-0.19620198,0.47882864,-0.2679241,-1.1384221,-0.3305512,-0.79238653],[-0.67590755,-0.47291875,-0.37138042,-0.867928,-0.3243818,0.35817894,-0.081819],[-0.44167435,0.26642233,-0.7098097,0.98480886,0.2975434,1.3568006,-0.6182568],[0.021911422,0.0072481604,0.80867565,-0.6889035,-0.58101594,-0.28012198,0.083424546],[-0.31145698,-0.15393952,0.88755167,-0.5754666,0.14976555,-0.2653118,-0.24384615],[-0.24493891,-0.06982408,-0.36303687,-0.28657684,-0.14763613,-0.33112663,0.09139967],[-0.3299021,0.33315933,-1.5499225,0.38461637,-0.3175137,1.1142358,0.43303496],[-1.0491866,0.33792546,-0.069094226,-0.509567,-1.1447937,-0.050081585,-1.2587998],[0.19292325,-0.06235127,0.7175149,-0.33345056,-0.8505459,-0.8724147,0.4035013],[-0.26649722,-0.77229846,1.0092193,-0.67018247,-0.044674527,-0.95283824,0.4402431]],"activation":"σ","dense_2_b":[[-0.19604135],[-0.27089414],[-0.061074182],[0.049550105],[-0.17541133],[-0.013591371],[-0.1635722],[-0.110457405],[-0.2914021],[-0.630707],[0.06793911],[-0.19795586],[-0.1507593]]},{"dense_3_W":[[0.20882441,0.32402983,-0.65811265,-1.3424684,0.384235,0.53797245,-0.056847516,-0.7877067,-0.21982256,0.8989965,-0.93191963,-0.13438137,-0.60060513],[-0.26045218,0.37893888,-0.31171417,-0.692449,-0.33556944,0.19751847,-0.22969474,-0.47745273,0.08315438,0.36671123,-0.725029,-0.41554233,-0.31832826],[0.11780495,-0.14251727,-0.22456245,-0.6772515,0.4477451,0.006119811,-0.36196816,-0.3983645,0.06536692,1.012304,-0.91562796,0.46987322,0.039987262]],"activation":"identity","dense_3_b":[[0.07951171],[0.20113988],[0.19002767]]},{"dense_4_W":[[0.76106316,0.6755035,0.4400971]],"dense_4_b":[[0.20939666]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.00 56300-N9100 2228'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.00 56300-N9100 2228'.json deleted file mode 100755 index ae735ba724..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.00 56300-N9100 2228'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.974163],[1.2132347],[0.5706513],[0.0502793],[1.2130301],[1.2128786],[1.2129273],[1.2019379],[1.1921468],[1.1817437],[1.1693443],[0.049872153],[0.050001368],[0.050128575],[0.0504321],[0.050471127],[0.05024059],[0.049630113]],"model_test_loss":0.0027105817571282387,"input_size":18,"current_date_and_time":"2023-08-08_02-17-02","input_mean":[[24.601255],[0.09067642],[0.00598973],[-0.01976689],[0.08466021],[0.085768804],[0.087323815],[0.088206366],[0.08898853],[0.08882811],[0.08783784],[-0.019929642],[-0.019905197],[-0.019887373],[-0.019954689],[-0.02004099],[-0.02029898],[-0.020633632]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.033486906],[-0.9854258],[0.18699676],[0.23900361],[0.066415675],[0.29984745],[-0.8694348]],"dense_1_W":[[-0.017391304,-0.1664158,1.2471004,0.17742877,-0.17622486,-0.07136989,0.17133567,-0.4406301,-0.17438401,0.10146424,0.2975635,-0.1329268,-0.1988518,0.13207461,-0.07052476,-0.57519513,0.1340373,0.2621166],[-0.53872705,-0.23616274,-0.9677832,0.3608879,0.5576081,0.5372162,-0.07011008,-0.33063745,-0.5091716,-0.47236058,0.5879706,-0.025170565,-0.39819354,-0.0017943033,0.23057717,0.32230052,0.053017925,-0.38491854],[-0.007569397,-0.15017577,0.017163722,0.11802223,0.086126305,-0.43940485,0.27736512,-0.08943185,0.12873243,0.42947087,-0.3468891,0.022381762,-0.22449934,-0.0031788715,0.19415219,0.17616823,-0.16482577,-0.6204708],[0.484722,-0.47863308,-0.003916951,-0.14998426,0.27055895,-0.62900317,0.35633156,0.2332263,-0.23696448,0.15093268,-0.056025397,-0.15387145,-0.028749702,-0.114084855,0.43514955,0.20574397,-0.04303955,0.029721491],[-0.0050577456,0.45235983,1.3863038,0.11857966,-1.062984,0.024143053,-0.5049202,0.520871,0.14744748,0.660791,-0.5397323,0.1884993,-0.3807901,-0.26886487,0.04286105,-0.15216194,-0.18675679,0.3220595],[0.3422851,-0.091745734,0.00288963,0.20548403,0.0039008386,0.80896676,-0.24846731,-0.039755683,-0.37319353,0.19646579,0.11100307,0.28086716,0.011461304,-0.20595428,-0.4130035,0.09002887,-0.08794721,-0.04846733],[-0.5121424,-0.10687892,0.97480345,-0.32319045,-0.55000156,0.039779805,-0.23451307,0.39487234,0.677461,0.028733881,-0.3141663,-0.006031874,0.020082282,-0.2869862,0.3214539,0.14777255,-0.032176822,-0.0048443917]],"activation":"σ"},{"dense_2_W":[[0.51288545,0.26980367,0.41815448,0.7882964,-0.01700049,-0.40586126,-0.7246673],[-0.032620583,0.6513666,0.52040267,-0.40663394,-0.97148997,-1.0426518,-0.22752136],[0.16157787,-0.28532407,-0.62873006,0.2976417,-0.2695294,-0.6110988,-0.32099858],[0.288502,0.5002554,0.24604729,0.60736823,-0.52036625,-0.591719,-0.34863025],[-0.49133012,0.13397883,-0.3788907,-0.95399517,0.04031534,0.8688636,0.36374664],[0.57312244,0.38245326,-0.06361987,-0.015409997,-0.4972398,-1.1938152,-0.1887008],[-0.23034595,-0.06613118,-0.42114103,-0.5018989,-0.034961794,0.59000736,0.19794862],[-0.6363575,-0.519735,-1.0045744,-0.11841846,0.09764135,-0.7355506,-0.1620501],[-0.740666,0.07916898,0.051017664,-0.20237261,0.42158294,0.64777046,0.18364593],[-0.3495589,-0.21401046,-0.56614906,-0.9645764,0.23658282,0.30558574,0.44571444],[0.54428804,0.7490656,0.028581897,0.068156295,-0.8264058,-1.1980392,0.34633735],[0.12275982,-0.13522817,0.5264364,0.5047181,-0.529052,-1.3191032,0.2033573],[0.62411124,0.4409063,-0.18518022,0.8019149,-0.49426788,-0.65130705,-0.27399883]],"activation":"σ","dense_2_b":[[-0.110052325],[-0.29302466],[-0.5614016],[-0.07483078],[0.18669383],[-0.20799044],[0.07792293],[-0.3352715],[0.062055763],[0.018744566],[-0.0924943],[-0.23109648],[-0.04416926]]},{"dense_3_W":[[0.50142425,0.10667864,0.4399292,-0.028254379,-0.39511585,-0.5136239,-0.34489322,-0.21440437,-0.5778223,-0.33600324,0.6226011,0.27962455,0.11977961],[-0.043028127,0.52723306,0.20324984,-0.5955265,0.15386851,0.15855698,0.4817966,0.53277177,-0.517283,0.78218174,-0.12013057,0.39024982,-0.7431557],[0.4440453,0.35185146,-0.028372388,0.61086553,-0.9743987,0.5447786,-0.42143017,0.11649257,-0.6926346,-0.6080743,0.47793046,0.5229465,0.56632364]],"activation":"identity","dense_3_b":[[-0.03343789],[0.052187573],[-0.114594795]]},{"dense_4_W":[[-0.18980438,0.15273905,-0.88665426]],"dense_4_b":[[0.09599546]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-CW000 1A15'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-CW000 1A15'.json deleted file mode 100755 index 71720e600d..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-CW000 1A15'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.22473],[0.8251674],[0.55987936],[0.04294055],[0.80855274],[0.8140519],[0.819299],[0.8224256],[0.8223862],[0.8136785],[0.807375],[0.042726606],[0.042794228],[0.042867724],[0.043195076],[0.04336566],[0.043502316],[0.043476745]],"model_test_loss":0.0011282428167760372,"input_size":18,"current_date_and_time":"2023-08-08_02-41-29","input_mean":[[21.709253],[0.02837096],[0.014460302],[-0.004794128],[0.024455145],[0.026277967],[0.028953284],[0.0311847],[0.033131044],[0.030929914],[0.030909915],[-0.0050024847],[-0.004941226],[-0.0048792004],[-0.004936204],[-0.0050907354],[-0.005161467],[-0.005247103]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20276919],[-0.81567574],[0.17173824],[0.02485116],[-0.16411562],[0.4910318],[-0.05420777]],"dense_1_W":[[-0.0012471483,0.89754707,-0.30605346,0.30311847,-1.4427079,0.6952515,-0.65700763,0.040769663,0.49388984,-0.0077092303,-0.12679042,0.30025703,0.22031534,-0.947996,-0.76274323,0.6916131,0.9007639,0.7855221],[-0.6438617,0.5432943,0.055781104,0.14055097,-0.05817591,0.85594875,-0.63760585,-0.14287747,0.0445909,-0.4966032,0.3642643,0.5872178,-0.43109778,-0.80650455,0.052074146,0.2705149,0.12943903,-0.19362473],[0.003357844,0.31364292,0.22141118,0.98970664,-0.247483,0.6660532,-0.45712006,0.2463237,0.04045275,-0.11441027,-0.20408206,0.25224286,-0.0011789324,-0.36312783,-0.7617343,-0.306311,-0.3153426,-0.5837831],[0.028954435,0.66365343,0.022223057,0.07054718,0.24609722,-1.2109858,-0.4602635,0.3987523,0.01633434,-0.09760745,-0.1753251,-0.49207205,0.0021850022,0.53756136,-0.00042571075,0.009666692,0.042855307,-0.11420329],[-0.03580821,1.9344804,8.167719,-0.66073954,0.7095272,0.1456512,-1.4878063,-1.1827188,-0.20311646,-0.14221944,-0.27837816,0.6607043,0.51872766,-0.2517782,0.24511532,-0.028188378,-0.12866867,-0.06853984],[0.53031373,0.023884322,0.039527502,-0.16327015,-0.037574653,0.8523508,-0.17424065,-0.25996268,-0.031912126,-0.14452986,0.22546388,-0.028659882,-0.0152696865,-0.29828578,0.35591877,0.16280918,-0.16622923,-0.045724925],[-0.0099094855,-0.024337003,-0.90923375,0.33954924,-1.0551822,-1.4047244,3.1376684,-0.67196745,0.21238333,-0.35975868,0.3339244,-0.7338359,-0.37664357,0.6216561,0.230003,0.13399994,0.009667031,-0.18426572]],"activation":"σ"},{"dense_2_W":[[-0.46300676,-0.92880476,-0.6603387,0.18106437,0.6114232,-0.3085461,-0.34915724],[-0.27267945,-0.032490827,-0.19413497,0.67636174,-0.25963235,-1.0346236,0.5159924],[0.10341285,-0.2286906,0.58102465,-0.6124768,0.27501637,0.63732,-0.25335288],[0.47252873,0.15228121,0.15265052,-0.1303907,-0.27630845,0.29428765,0.054996368],[-0.60003024,-1.7184374,-0.3925117,2.1059344,-1.1817226,0.8805947,2.0097177],[-0.5157754,0.2864647,-0.2600413,-0.5098677,-0.8062721,-0.8342195,-0.12589265],[-0.27893555,0.4498806,-0.46256977,-0.34525606,0.16928495,0.57889444,0.1360685],[-0.069990896,-0.033348653,-0.5150556,0.86856264,-0.43608308,0.2634268,0.50319856],[-0.92615515,0.8989689,-1.0192099,1.1630723,-1.5832745,-2.3778448,1.1420947],[0.24078313,-0.059227604,0.52533114,-0.22976397,0.26565957,0.0019856135,-0.37963587],[-0.43368915,-0.19412571,0.030553307,-0.008343276,-0.24855247,-0.38562915,0.028216615],[0.24137807,0.50673467,0.58424366,-0.5623794,-0.4958684,0.043686286,-0.29952815],[-0.53380847,-0.6478634,-0.66525984,-0.09425604,0.30415344,0.033006296,-0.2779725]],"activation":"σ","dense_2_b":[[-0.19925767],[-0.22416385],[-0.024587726],[0.00076841726],[0.9967099],[-0.21401763],[-0.009374596],[0.037712634],[-0.41577217],[-0.08446474],[-0.22238271],[0.029249683],[-0.19375889]]},{"dense_3_W":[[-0.064283945,-0.28218833,0.29587984,0.47048366,0.1037391,-0.34584334,-0.099526614,-0.4141651,-0.71549547,-0.14117901,-0.48195595,0.6179986,-0.056695417],[-0.5290835,-0.5220605,-0.5042605,-0.30072263,0.6284589,-0.45276895,0.028285943,-0.31197917,0.39458558,0.17490475,0.0648546,-0.5194648,-0.4971718],[-0.32037377,-0.016439343,0.07254626,-0.09806289,-0.59013605,0.27251726,0.36449474,-0.557429,0.4412477,0.3926684,0.5275635,0.4008913,-0.14265701]],"activation":"identity","dense_3_b":[[0.004609829],[0.016195556],[0.0031462326]]},{"dense_4_W":[[0.73565596,-0.034537062,0.4909206]],"dense_4_b":[[0.0029074473]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-N9000 0B24'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-N9000 0B24'.json deleted file mode 100755 index df9d5c3321..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-N9000 0B24'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.049927],[0.90012175],[0.48095357],[0.04241544],[0.8875352],[0.8917799],[0.8952688],[0.89421207],[0.88974833],[0.8810388],[0.8717085],[0.04214072],[0.042199083],[0.042250115],[0.04236346],[0.042318553],[0.042197257],[0.04192991]],"model_test_loss":0.0027597311418503523,"input_size":18,"current_date_and_time":"2023-08-08_03-06-21","input_mean":[[24.36531],[-0.12347623],[0.006147819],[-0.016785737],[-0.12271177],[-0.123503655],[-0.12395989],[-0.118791655],[-0.116043516],[-0.107350565],[-0.103384055],[-0.016675012],[-0.0167048],[-0.016730325],[-0.016802218],[-0.016868604],[-0.017092224],[-0.017343003]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.3077128],[-0.053523973],[-0.08867575],[-3.564466],[-0.8363932],[-0.03499285],[-0.9791886]],"dense_1_W":[[-0.657707,-0.40130603,-0.05392449,-0.17988339,0.54668987,-0.46538657,0.57125705,-0.8721553,-0.48437503,-0.3783023,0.20773576,-0.006874521,-0.16955361,0.5569281,0.012815096,-0.24756004,0.13119608,-0.0070960107],[-0.00478684,-0.024804201,-0.7233322,0.07783175,-0.24326427,-0.3535344,0.9700095,-0.7786834,-0.6422574,0.0039578755,1.0983216,-0.08911305,-0.43728283,0.4707163,-0.30569777,0.37014574,0.22817229,-0.17220958],[-0.0018613227,0.18911898,-0.003760839,-0.19434088,-0.11199104,0.8207415,-0.1570958,-0.0013982604,-0.3096825,-0.12772126,0.23146391,0.71790016,-0.23160003,-0.35091403,-0.104312025,-0.04883372,0.24788088,-0.024843656],[-0.6503062,0.4760144,0.05285127,-0.5623532,-0.31313643,0.11321604,-0.39134973,0.48142427,0.8163628,0.24858923,-0.16951846,0.20952548,-0.13689561,0.36601552,-0.25696254,0.21768238,0.08233283,-0.015864879],[-0.9636597,0.40053022,-0.0058141947,-0.33463675,-0.11677622,0.26507962,-0.21261413,-0.79070723,0.18271628,-0.105050296,0.18018496,0.17602134,0.7042138,-0.3778066,-0.45499915,0.03500361,0.11619197,0.020927545],[-0.0077773444,0.5942843,3.5123742,0.106612384,-1.3349271,-0.28774235,-0.8317361,0.39143825,1.498797,0.28138006,-0.60930085,0.0037155056,0.28335968,-0.20002076,-0.15279055,0.09878292,0.17169282,-0.04990126],[-0.9617149,-0.15065387,0.0058096866,-0.28747433,0.38993824,-0.16643299,-0.17986324,0.08583848,0.41806793,-0.09902705,-0.102467,0.09218759,0.28329134,-0.0128028095,-0.28463566,0.009430492,0.3542676,-0.045534987]],"activation":"σ"},{"dense_2_W":[[-0.81077546,-0.10424342,0.6886152,0.848398,0.6319954,-0.058461085,-0.36828956],[0.60984695,0.55423707,-0.42063406,-0.32707918,-0.24104166,-0.48186648,-0.24464516],[0.161898,-0.48786223,-0.41306773,-0.6622412,-0.13313001,0.022441162,-0.036522806],[0.57633585,0.079778,-0.68529695,-0.6923111,-0.63098544,0.06022443,0.58791363],[-1.1134484,-0.025714546,1.190732,1.4953258,1.1254282,-0.68416023,-1.3409424],[0.33615056,-0.18059164,-0.32584703,-0.43712434,0.011917973,-0.38235188,-0.048886925],[0.27672747,0.2700329,-0.5545609,-0.17063317,0.06863414,-0.29364643,-0.068461105],[-0.75640607,-0.67021567,-0.8091184,-0.5977734,-0.33590022,0.33695093,-0.052878845],[-0.29990476,0.07485581,-0.18799536,0.3113804,-0.2548531,0.079891905,0.5823901],[0.7713344,0.40596846,-0.39756826,-0.42803642,-0.12433386,-0.5623329,0.15788138],[0.47727326,0.5254002,-0.44868997,-0.5893729,0.033892345,-0.47418627,0.5335775],[-0.5053448,-1.0315061,0.3315767,1.0608679,0.8883031,0.15161903,-0.40771657],[-1.3299836,-0.099792145,0.9213788,0.5617499,1.2194797,0.03981927,-1.172062]],"activation":"σ","dense_2_b":[[-0.3320475],[0.016477866],[-0.29854566],[0.0858396],[-0.28445113],[0.055967335],[-0.0076928814],[-0.32438016],[-0.011105792],[0.0491247],[-0.061171416],[-0.26423758],[-0.19981484]]},{"dense_3_W":[[0.07605307,-0.5657727,0.21602604,0.33659753,0.061791074,0.16310127,0.0704255,0.33747506,-0.37032503,0.48479742,0.47762752,0.07121615,-0.47501156],[0.60820574,0.17259821,-0.14938714,-0.53478646,0.82433504,-0.56874645,-0.27502382,0.037113808,-0.19531803,-0.52230936,-0.5779869,0.4101667,0.6944722],[-0.07375422,-0.5958687,0.09147497,-0.47058004,-0.16646929,0.12560609,-0.015372727,-0.5500357,0.5909702,-0.19595517,-0.6633332,0.46147022,0.5020841]],"activation":"identity","dense_3_b":[[-0.018324953],[0.00094535865],[0.0076563973]]},{"dense_4_W":[[0.03257061,0.92077035,0.33927587]],"dense_4_b":[[0.0008585189]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN.json deleted file mode 100755 index bebd461c43..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON 4TH GEN.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8535337],[1.1871091],[0.57845885],[0.049630664],[1.1714827],[1.1759739],[1.1807529],[1.1754702],[1.163419],[1.1391207],[1.1146902],[0.049304288],[0.04938992],[0.04947085],[0.049577486],[0.049585983],[0.049360827],[0.048854783]],"model_test_loss":0.0038447733968496323,"input_size":18,"current_date_and_time":"2023-08-08_01-51-57","input_mean":[[23.75506],[0.019698216],[0.02125942],[-0.012130068],[0.02019723],[0.019409409],[0.020214675],[0.029943746],[0.034989115],[0.04343616],[0.04719076],[-0.012154487],[-0.012135111],[-0.012114784],[-0.012035617],[-0.012112525],[-0.012144607],[-0.012390441]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.2290616],[-0.06566025],[-0.26232734],[-0.014396481],[-0.23760305],[0.014094781],[-0.13057418]],"dense_1_W":[[-0.2349692,-0.0063291234,-0.035249587,0.08617903,-0.365861,1.0055882,0.2188088,0.1449217,-0.24121442,-0.4175699,0.37988308,0.62451494,-0.123622105,-0.09489112,-0.50720054,-0.44936404,0.0527042,0.2325743],[-0.0063050375,0.3207623,-0.0044895783,0.28548434,-0.507397,0.6541944,-0.6847768,0.43596634,0.030897599,0.20960332,-0.057178702,-0.21487401,0.053376693,0.13392489,-0.21650217,-0.109688595,0.039938804,-0.116206385],[0.2708052,0.5528461,-0.03331542,-0.12908351,0.06319576,0.12678441,0.13067268,-0.2470256,0.05019679,0.10845501,-0.038128812,0.35948697,-0.12627743,-0.37605998,0.25131917,0.24767017,-0.49968937,0.09801629],[-2.6202499e-5,0.37221593,2.4131448,-0.299408,-0.6506924,0.47218078,-0.29836714,0.32324246,0.577699,0.008439944,-1.0393782,0.1451764,-0.10641525,0.44623712,-0.0794428,-0.11800355,-0.12773673,0.28916764],[0.0017583282,-0.03781789,-0.21004789,0.41564634,-0.0032608341,0.31357232,-0.6957937,-0.53825456,-0.52614933,-0.6324325,-0.009301665,0.02049273,-0.048440617,-0.4821638,-0.18134792,0.3243188,0.33311984,0.39314845],[0.004920383,-0.533088,0.1415015,-0.13392477,-0.40952107,0.8444377,-0.8526385,0.7274967,0.9084346,0.18900108,-0.6379418,0.19544344,0.42572308,-0.39255446,-0.24895424,-0.019269833,0.0014590932,0.02395835],[0.00041457335,-0.469483,-0.03338856,0.17351627,0.01683441,-0.35584116,0.016615873,0.38706398,0.33813193,-0.23397829,-0.32178026,-0.17345887,-0.10871371,0.21958116,-0.042337235,-0.1781205,0.16341408,0.14160205]],"activation":"σ"},{"dense_2_W":[[0.44592378,0.15143807,-0.009424234,0.35239178,-0.09963268,0.55982405,-1.0174559],[-0.442566,0.29746428,-0.33482108,-0.014999504,-0.6711541,-0.40101603,0.6295242],[0.39900258,0.30389005,-0.26535806,0.3451803,0.120485105,0.536382,-0.30911598],[0.11134723,-0.23925714,0.19048968,-0.7852743,-0.16722661,-0.5444894,0.43297023],[0.07680695,-0.53264195,0.015406939,-0.086414926,-0.002185912,-0.81844103,0.35812145],[-0.40373468,-0.54447883,0.13417311,0.024675215,-0.48897472,-0.30226046,-0.10632472],[0.6465857,-0.38075125,-0.18136446,0.3086386,0.03399703,0.64962906,-0.71223384],[-0.46307555,-0.057900187,-0.23908263,-0.2741226,-0.4267321,-0.24727249,0.78550595],[0.0005410685,0.5130376,0.18730785,0.32222855,-0.16497147,0.5314175,-1.0230789],[0.019229718,0.06334568,-0.5937085,-0.46484637,-0.60105985,-0.21383111,0.51939124],[0.23276499,0.666815,0.71696717,-0.31990758,0.5952141,0.4067587,-1.1618655],[0.1722438,0.71504825,0.46906963,-0.13681711,0.47640622,0.45497712,-1.2770692],[0.3419466,0.85895354,0.057526387,0.11937055,0.3142995,0.68276507,-1.9635502]],"activation":"σ","dense_2_b":[[-0.24404627],[0.09535624],[-0.2836256],[0.032848567],[0.057316262],[0.049310047],[-0.25128764],[0.15491374],[-0.3825811],[0.13178083],[-0.30603507],[-0.29319304],[-0.7450717]]},{"dense_3_W":[[-0.30619392,0.6724943,-0.17787461,0.21804851,0.57443386,0.35076854,-0.5711128,0.59865326,-0.13248625,0.35207286,-0.35570997,-0.6262289,-0.32156947],[0.63655996,-0.082538255,0.31164888,-0.009138885,-0.13852367,-0.18027483,-0.38830742,-0.57337445,0.09914936,-0.7164049,0.45311737,-0.097862616,0.3133059],[0.21028735,0.1864526,0.24931045,0.3717982,0.38209185,-0.06889437,0.4184427,-0.15917623,-0.6388955,0.72339946,-0.59677637,-0.51407987,-0.3791772]],"activation":"identity","dense_3_b":[[0.06066313],[-0.053203672],[0.042732116]]},{"dense_4_W":[[-0.9345688,0.41612437,-0.1675497]],"dense_4_b":[[-0.06134532]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-P0100 2228'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-P0100 2228'.json deleted file mode 100755 index e4a5d71459..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.01 56300-P0100 2228'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.217079],[1.0207418],[0.529568],[0.040043645],[1.0053055],[1.0108265],[1.0154151],[1.0237554],[1.0261607],[1.0251414],[1.0156276],[0.039747525],[0.03984065],[0.0399419],[0.040151272],[0.040166046],[0.040242888],[0.040208846]],"model_test_loss":0.00269640376791358,"input_size":18,"current_date_and_time":"2023-08-08_04-21-19","input_mean":[[23.900599],[-0.008398695],[0.0015282386],[-0.007829772],[-0.009208989],[-0.008911737],[-0.008798698],[-0.005703768],[-0.0035596534],[-0.0031186447],[-0.0031662488],[-0.007885317],[-0.007857131],[-0.007826983],[-0.00763483],[-0.0073542255],[-0.0071039707],[-0.007163035]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-8.591739e-5],[-0.17085157],[-0.12687801],[4.364553],[0.8255702],[-0.8432205],[-4.7023892]],"dense_1_W":[[-0.00036674185,-0.15393308,-0.0043171174,0.52888125,0.19427226,1.0408313,0.117876925,-0.2845569,-0.089497805,-0.29269257,0.46610746,0.038173147,-0.28103483,-0.36340392,0.34743688,0.18314365,-0.16116409,-0.29159978],[-0.0051495107,-0.11477599,-0.15387562,0.12564987,0.4429667,-1.0813134,0.2080362,-0.20897992,0.1524622,0.039019175,0.15941331,-0.51186883,-0.16175619,0.35541835,0.15099002,-0.093263775,0.3209118,0.2376951],[-0.0045729824,0.17833863,-0.13646784,-0.19206388,-0.14445858,0.50118786,-1.1250085,-0.12486535,0.12982805,0.18782985,0.025482606,0.8972726,0.32246736,-0.6113951,-0.66491884,-0.60095704,0.4065867,0.78783005],[0.8883356,-0.004670374,-0.3004736,0.43118215,0.2730039,-0.73936516,-0.18756554,-0.30551004,-0.60160047,-0.4570068,0.42535797,-0.5673324,0.23564544,0.31826892,0.3946162,0.030204464,-0.21274225,-0.18297665],[0.5877724,-0.5607949,-2.7950788,0.3463737,0.3446188,-0.49314648,0.37603086,0.14976244,-0.11499728,-0.20843907,0.7227414,-0.21543501,-0.25004113,0.5456382,-0.35219005,-0.28194588,0.22977184,-0.019029563],[-0.42525807,-0.37978706,-2.812959,-0.20304315,0.23198645,-0.7054526,0.9276223,-0.21462558,-0.45101932,0.18400525,0.6539824,-0.4523719,-0.067426644,0.8022,0.12475116,-0.29360187,0.1820839,-0.08618455],[-0.8887159,-0.47105905,-0.30436194,0.5955465,0.044637978,-0.35214606,0.17866008,-0.38256323,-0.6545903,-0.4565794,0.49180064,-1.1552716,0.23951262,0.5748429,0.9034781,-0.27641115,-0.06816631,-0.3625054]],"activation":"σ"},{"dense_2_W":[[-0.057308674,0.07639922,0.2855919,0.06315537,-0.5223864,-0.32385927,-0.7735022],[-0.88395154,-0.36314768,0.18841538,-0.03785002,-0.5138743,-0.74670565,-0.33253807],[0.12478751,-0.6835147,0.49607527,-0.73937863,0.026476782,0.09121713,-0.42469463],[-0.7171305,0.4833388,-0.5362656,0.599928,-0.14776947,-0.052318748,0.46912462],[0.40110588,-0.31508088,0.4552697,-0.9951328,-0.36453304,0.095689364,-0.25619012],[-0.21850535,0.5483896,-0.102815315,-0.30166072,0.42355484,0.024482686,0.47288817],[-1.2052294,0.0726458,-0.46747494,0.19683914,-0.39607075,0.4458234,1.4317138],[0.19502828,-0.048589204,-0.19319248,-0.6721833,0.011818287,-0.031072982,-0.28005797],[-0.019494833,-0.30039933,-0.5927758,0.06800316,-0.08778525,-0.50062007,0.1897266],[0.15044136,-0.33724236,-0.27866372,0.012466757,0.35915533,-0.41124758,-0.57960784],[0.114993274,-0.24257775,0.6021602,-0.96579486,0.07640555,-0.3595668,-0.405754],[0.5267543,-0.18335517,-0.13551843,0.045388196,-0.58716494,-0.32110387,-0.0056233923],[-0.36361262,0.5996567,-0.4573528,0.7281233,-0.21097347,-0.55819994,1.4120568]],"activation":"σ","dense_2_b":[[-0.10522118],[-0.31128448],[-0.07047554],[0.011506447],[0.010999659],[-0.14467213],[-0.42379537],[-0.1810383],[-0.13019946],[-0.102506414],[-0.04960739],[-0.026930744],[-0.10272136]]},{"dense_3_W":[[-0.5352019,0.019407902,-0.4207235,0.6295458,-0.6254561,0.53919613,0.25542,-0.08012609,-0.44455698,-0.5093523,-0.5136104,-0.34459922,-0.37261885],[0.2026642,0.60963094,0.4016697,0.10310326,0.7051762,0.050026696,-0.55055726,0.1682248,0.48129147,0.19183299,0.45172593,-0.32796833,-0.81298125],[-0.4364362,-0.31193537,-0.17849928,-0.27077642,-0.2368534,-0.31495923,0.20951663,-0.035278384,-0.5224049,-0.42713875,0.56383544,0.28901008,-0.67109203]],"activation":"identity","dense_3_b":[[0.064849064],[-0.06753018],[-0.040117458]]},{"dense_4_W":[[-0.8941895,0.62574023,0.66779023]],"dense_4_b":[[-0.055856243]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-P0000 0B27'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-P0000 0B27'.json deleted file mode 100755 index 363238aa43..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.02 56370-P0000 0B27'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.403178],[0.7899407],[0.46679014],[0.038778264],[0.78739744],[0.78873724],[0.7892707],[0.7664106],[0.7474393],[0.72352415],[0.7035473],[0.038599715],[0.038635705],[0.03867455],[0.038486294],[0.03835014],[0.037975483],[0.037434243]],"model_test_loss":0.0036874583456665277,"input_size":18,"current_date_and_time":"2023-08-08_04-46-00","input_mean":[[21.313442],[-0.007652719],[-0.0010814818],[-0.015364245],[-0.008704642],[-0.0084470315],[-0.008181152],[-0.009390086],[-0.006841837],[-0.005270116],[-0.004453076],[-0.015435301],[-0.015421092],[-0.015408219],[-0.015379849],[-0.015380499],[-0.01542405],[-0.01552717]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.015034866],[-2.333925],[0.07472282],[0.33385256],[-1.7635626],[0.20520012],[1.4994509]],"dense_1_W":[[-0.020420635,0.47671422,-2.2228365,0.061408564,-0.33446848,-0.34008023,0.24743442,-0.049677674,-0.3092543,0.027715717,0.2433644,0.22493373,-0.33363193,-0.21346657,0.053122807,0.13210946,0.15116207,-0.1479962],[-0.7627412,-0.33639726,-0.017733732,-0.26600602,-0.030820448,-0.4295762,0.34820956,0.049817856,-0.08305463,0.0075742602,-0.021596808,-0.45695007,0.3086963,0.84450537,-0.5957173,0.10477459,0.18988973,-0.06328525],[-0.06376427,0.20835318,0.002514508,0.26117352,-0.62271047,-0.19520147,0.32756966,0.06494971,0.0065356204,-0.080957,-0.078121,-0.3372254,-0.0696566,0.28001508,0.14789122,0.07902147,-0.37852517,0.10395386],[-0.023382343,-1.0105892,0.16153766,-0.05629362,0.98606056,-0.38667163,0.120815866,-0.0031459653,-0.0114722485,-0.10742418,0.29860422,0.0918033,-0.18897793,0.8804208,0.28319594,-0.3183279,-0.60766125,-0.98080194],[-0.7378326,0.35443896,-0.0014945221,0.23333554,-0.066297725,0.59670603,-0.48733267,-0.0073978053,-0.15717119,0.0717004,0.048404034,0.22451897,-0.4241085,-0.28380367,-0.052011304,0.5055362,-0.11498784,-0.12756315],[-0.004277259,0.42898464,0.09345899,-0.24447562,-0.45621815,0.31656915,-0.1402948,0.04722811,0.008236777,-0.17245218,0.09979451,0.3201254,0.48197353,0.14734976,-0.1808025,-0.3086107,-0.4733515,-0.280876],[1.5839243,0.048649643,-0.01699404,-0.14009474,-0.11868921,0.5394154,-0.35899943,-0.021968285,-0.117241286,0.027508566,0.05609089,0.72090036,-0.19876392,-0.5080364,0.174731,-0.023319548,-0.32231605,0.2783173]],"activation":"σ"},{"dense_2_W":[[-0.22034773,-0.31270447,0.5831825,-0.3320837,-0.39305016,-0.6177819,0.22597681],[-0.5904076,-0.52282643,-0.20162795,-0.12272505,0.43796244,0.72379744,-1.1039912],[-0.3313703,-0.2817194,-0.5364639,-0.57078487,0.87520176,0.567861,-0.7439988],[-0.78400034,-0.3179023,-0.55988556,0.032341063,1.5522407,0.6788271,-1.6406517],[0.010183664,0.27435702,0.79238176,-0.10173684,0.32933375,-0.51913565,-0.42577544],[-0.69303,-0.39014181,-0.107236296,-0.48264664,1.0204724,0.5373991,-0.97509813],[-0.14288978,0.6519878,0.8277582,-0.12722696,-0.00015177799,-0.6953236,-0.16517387],[-0.3694772,-0.12806806,-0.33594415,-0.653893,0.2182475,-0.26103872,-0.2874901],[-0.07374445,0.19246729,0.5173003,0.61818415,-0.022056762,-0.5472877,-0.58056134],[-1.0251218,-1.2561343,-0.07483788,-0.9255225,0.44686273,1.6848487,2.3562455],[-0.349229,-0.21101256,-0.5525006,-0.7540905,0.49885616,0.4253754,-0.5412813],[-0.12317935,-0.6319155,-0.8908915,0.08234697,0.8512533,0.3687786,-0.09611299],[0.05607153,0.01724528,0.10498003,0.18284152,-0.31280768,-0.2632974,-0.622548]],"activation":"σ","dense_2_b":[[-0.025739571],[-0.23397255],[-0.0609166],[-0.2377031],[-0.022815771],[-0.3112023],[0.03326642],[-0.33141518],[0.0427826],[0.45685703],[-0.23909605],[-0.019891355],[-0.017059732]]},{"dense_3_W":[[0.048393164,0.01459173,0.55632687,0.16953933,-0.6129878,0.27854604,-0.30732617,-0.3395474,-0.6306935,0.41403195,-0.24093059,0.3859709,-0.14472291],[0.6029767,-0.49897185,-0.55901927,-0.5471171,-0.2063777,0.09599516,0.64774793,-0.48304877,0.38883877,0.17090505,-0.65467936,-0.7351466,0.53769803],[-0.08842656,0.06706266,-0.32794118,0.12725264,-0.24223024,-0.19160233,-0.22151925,-0.39071792,0.48049617,-0.7938209,-0.2654298,0.28608698,-0.3520467]],"activation":"identity","dense_3_b":[[-0.05909381],[0.06149542],[0.10376763]]},{"dense_4_W":[[1.2233244,-0.6344225,-0.43675804]],"dense_4_b":[[-0.06323359]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.05 56300-P0000 1514'.json b/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.05 56300-P0000 1514'.json deleted file mode 100755 index 8b65df1a06..0000000000 --- a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN b'xf1x00NX4 MDPS C 1.00 1.05 56300-P0000 1514'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.7955017],[0.89799774],[0.5061451],[0.04870496],[0.897324],[0.89804333],[0.8983218],[0.88777643],[0.8856539],[0.87744457],[0.8659113],[0.048619226],[0.048616584],[0.048609655],[0.048495032],[0.048379052],[0.048049383],[0.047698256]],"model_test_loss":0.0017304600914940238,"input_size":18,"current_date_and_time":"2023-08-08_05-11-25","input_mean":[[23.104206],[-0.034794316],[-0.020573495],[-0.0021940465],[-0.028357053],[-0.030680137],[-0.032690864],[-0.042001907],[-0.0496564],[-0.052361522],[-0.051856462],[-0.0021513677],[-0.0021468238],[-0.0021485426],[-0.002253827],[-0.0023359228],[-0.0024148696],[-0.0024249407]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.08124138],[0.1903408],[-0.013999624],[-0.17143527],[0.1768055],[-0.20094149],[-3.179182]],"dense_1_W":[[0.0024723092,-0.09259051,-0.09757232,-0.12717314,0.25085792,-0.30573526,0.052445546,-0.08738104,-0.29787505,0.27411562,-0.018140156,-0.3799589,0.09386907,0.09939116,0.5356948,0.31420502,-0.38083148,-0.029328207],[-0.15488878,0.20467338,0.35297525,-0.60644305,0.6169192,0.115096435,0.48780584,0.056056496,-0.08405607,-0.23489293,0.92967564,-1.6062328,-1.3127173,0.013400019,-1.0209213,-1.1354511,-0.38825014,-1.3973286],[-0.005542379,0.099915504,-0.03526838,0.2042634,0.01714366,0.5498627,-0.26516965,-0.062147252,-0.019922264,-0.098149635,0.15541059,0.5616284,0.28126147,-0.5231745,-0.4385349,-0.16692646,-0.11820826,0.13180146],[-0.001893487,-0.12823583,-0.057376172,0.4284407,-0.047093183,-0.71953607,0.5155282,0.009202056,0.2418623,-0.21878259,-0.012335793,-0.03496361,-0.45879838,0.49171248,-0.1584971,-0.1781668,0.06704749,0.10256722],[0.08270151,-0.091461316,-2.2379663,-0.0538001,0.56830716,-0.22148854,0.0931062,-0.2950928,-0.50371003,0.100836776,0.6016303,0.26128513,0.41152674,0.28541353,-0.695136,-0.79610765,0.3173571,0.21472184],[0.16334678,-0.5975227,-0.34775907,1.1889083,0.43193462,-0.41070813,0.43282235,-0.7802282,-1.0563897,-0.5516799,0.39116058,0.38568383,0.96553546,1.4799829,0.5509527,0.6597429,1.5476053,0.72938883],[-1.1631825,-0.011732463,-1.3126845,0.18595614,-0.5279944,-0.20657395,0.09089918,-0.21701668,-0.29725736,0.09534146,0.16501014,-0.01930718,0.22282849,-0.078318045,-0.2752747,-0.5757349,0.60279995,-0.0931696]],"activation":"σ"},{"dense_2_W":[[-0.781368,-0.6196695,0.22133054,-0.58676493,-0.6143645,-0.38137332,0.5647905],[-0.28955936,-0.5514581,0.023019072,-0.7495296,-0.008635288,-0.43638018,-0.39646024],[-0.3833366,-0.34759468,-0.06495598,-0.098383896,-0.5783148,-0.16990937,-0.03879645],[-0.70470786,-0.24903737,0.15529387,-0.11518866,-0.5277072,0.20462422,-0.35701025],[0.36111197,0.36466828,-1.0183784,0.010062257,-0.2265021,0.78467375,0.3216761],[0.2558025,0.8101411,-0.42377698,0.6952867,0.50709,0.31241566,-0.44120306],[-0.44082734,-0.80780107,0.7503476,-0.26734918,0.42134613,0.060052637,-0.49203876],[-0.21579593,-0.85413295,0.5198353,-0.04937046,-0.25109845,-0.071964934,-0.1370948],[-0.2127926,0.023194531,-1.0355452,0.80749786,0.2418679,0.07336516,0.5543946],[-0.20147315,0.13373135,0.42837965,-0.2858223,-0.08012954,-0.6707916,-0.3436601],[-0.6738826,0.17187825,-0.07171224,-0.5686729,-0.63062835,-0.11246825,0.1411205],[-1.3131889,-0.8463761,0.691169,-0.7734476,-0.655862,-0.7365177,1.823689],[-0.31629813,-0.037334282,0.023063287,-0.9846409,0.076071545,-0.34590834,-0.38197684]],"activation":"σ","dense_2_b":[[-0.008497481],[-0.0669677],[-0.09891911],[-0.05246839],[-0.18587142],[-0.30422455],[0.1410383],[-0.2284569],[-0.499407],[-0.043939065],[-0.31666586],[0.44777015],[0.034658033]]},{"dense_3_W":[[0.23496294,-0.28386167,0.27681643,0.5520175,-0.75150144,-0.37156543,0.30156407,-0.27607068,0.30984825,0.5151721,0.37007424,-0.33879584,0.4097188],[0.31137607,0.26859313,0.34590572,-0.0062326957,-0.6559486,-0.36561298,0.4681323,0.16856219,-0.8273677,0.40059263,-0.12678978,0.7264656,0.6313906],[0.524701,-0.33622202,0.03420367,-0.34464833,-0.37003994,-0.43387958,0.36096427,-0.07529622,-0.31695953,-0.47834525,0.23216519,0.530552,0.54391605]],"activation":"identity","dense_3_b":[[-0.085940674],[-0.08410808],[0.08695583]]},{"dense_4_W":[[0.3335539,1.011704,0.07253775]],"dense_4_b":[[-0.07161993]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_ELANTRA_2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA 2021.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_ELANTRA_2021.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_ELANTRA_HEV_2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI ELANTRA HYBRID 2021.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_ELANTRA_HEV_2021.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI GENESIS 2015-2016.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_GENESIS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI GENESIS 2015-2016.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_GENESIS.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_5.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ 5 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_5.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_EV_LTD.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ ELECTRIC LIMITED 2019.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_EV_LTD.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_PHEV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI IONIQ PHEV 2020.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_IONIQ_PHEV.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_EV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2019.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_EV.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_EV_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI KONA ELECTRIC 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_EV_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_HEV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI KONA HYBRID 2020.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_KONA_HEV.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_PALISADE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI PALISADE 2020.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_PALISADE.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2019.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_HEV_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE HYBRID 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_HEV_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_PHEV_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SANTA FE PlUG-IN HYBRID 2022.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SANTA_FE_PHEV_2022.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2020.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA_HYBRID.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SONATA HYBRID 2021.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA_HYBRID.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2019.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA_LF.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI SONATA 2019.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_SONATA_LF.json diff --git a/selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN.json b/selfdrive/car/torque_data/lat_models/HYUNDAI_TUCSON_4TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/HYUNDAI TUCSON HYBRID 4TH GEN.json rename to selfdrive/car/torque_data/lat_models/HYUNDAI_TUCSON_4TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68417283AA'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68417283AA'.json deleted file mode 100755 index 4dd26dd5c5..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68417283AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.8728914],[1.2090142],[0.50676817],[0.040933758],[1.2023742],[1.205829],[1.2078925],[1.1974459],[1.1874248],[1.1770345],[1.1642895],[0.040819507],[0.04086639],[0.04089597],[0.040786948],[0.040585384],[0.04012954],[0.039522402]],"model_test_loss":0.006614471320062876,"input_size":18,"current_date_and_time":"2023-08-08_06-01-10","input_mean":[[26.654694],[-0.054407947],[-0.01670446],[0.0044869445],[-0.050178558],[-0.052209977],[-0.05427611],[-0.056261167],[-0.0544454],[-0.055462785],[-0.055245146],[0.004572334],[0.004530314],[0.0044882884],[0.004352177],[0.0042599128],[0.0041515296],[0.0040832255]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.43810543],[-0.49519923],[-2.1822188],[-0.58497167],[0.47684842],[-0.09626731],[-2.2094405]],"dense_1_W":[[0.76050776,0.1499411,0.381249,0.04709322,-0.32396638,0.3491626,-0.782436,0.34238994,-0.08037048,0.6680065,0.33735675,0.22206604,-0.103562996,-0.31060776,-0.43599552,0.16334474,-0.25804174,-0.082635574],[0.0035128025,0.5811635,-0.004408256,-0.37787032,0.03389848,0.4616148,-0.32768515,0.18803275,-0.052016713,-0.3570066,0.24113122,0.42042783,0.2498919,-0.17125513,-0.33577308,-0.14208402,0.236966,0.011127863],[-0.18902422,0.9714371,0.0059900363,-0.38097516,-0.22164193,0.20545805,-0.076091416,0.31648,0.11805389,0.18802157,-0.22251801,0.5153625,-0.05821966,-0.091360226,0.0012999892,-0.16460156,-0.16339059,0.15703438],[-0.03422036,0.92381644,6.921008,0.24507758,-0.7177696,-0.6458995,-0.4362909,0.48058942,1.076679,0.42145476,-0.9482223,0.61656874,0.5209579,0.41245258,-0.7608114,-0.24345283,-0.6975248,0.038341008],[0.07477459,0.78708345,0.004199321,-0.23788536,0.15640183,0.40163487,-0.41976067,0.0005454862,-0.054376323,0.094340526,0.030391933,0.49687427,-0.21395701,-0.09833246,0.019072657,-0.102057405,-0.07488578,0.069800615],[-0.74563086,0.5257453,-0.38915852,-0.014258607,-0.014805873,-0.021846136,-0.42956972,0.027794166,0.47592774,-0.21122316,-0.9867605,0.27827996,0.026848149,0.1879612,-0.11019756,0.01456598,0.033016063,0.34982008],[-1.017594,0.6378586,0.49575526,-0.25753835,-0.713349,-0.26929113,-0.6297332,0.2448187,0.93313706,0.418847,0.17675856,0.16072711,-0.031137649,-0.1681622,-0.18200019,-0.021670578,-0.45446116,0.0076085203]],"activation":"σ"},{"dense_2_W":[[0.7745368,0.0051938873,-0.11890521,0.88995504,0.2751288,0.54162115,0.06283707],[0.54824007,0.6159212,0.62110627,-0.4791488,0.16185509,0.3104695,0.45510858],[0.52840376,0.49313548,0.55167854,-0.34572417,0.9121422,0.53487015,0.17644465],[-0.4247197,-0.5281056,0.21303625,-0.6262236,-0.13522103,-0.26233667,-0.14396249],[-0.508547,-0.39328104,-0.39791986,-0.37415636,-0.91709316,-0.24228512,0.27710044],[-0.3951146,-0.31486347,-1.1718545,0.5269846,-1.1596807,-0.5815726,-0.14178322],[0.5949875,0.6315601,0.40430224,-0.038406808,0.53312445,0.18815556,0.085526235],[-0.29179358,-0.8260168,-0.18030375,0.07779656,-0.5514634,-0.49806046,-0.1366583],[-0.73898417,-0.016584689,-0.3333454,-0.22896339,-0.05116171,-0.1202695,-0.32896835],[-0.15493649,-0.76765895,0.004673897,0.10474267,-0.16431782,-0.014079051,0.23144981],[-0.042101637,-0.17159042,-0.7375734,0.071759894,-1.0362455,-0.43458578,-0.23665032],[0.7093842,0.9741466,-0.3642162,0.9787917,0.6507126,0.5392259,-0.42433175],[0.26979947,-0.52341074,-0.9280764,0.26746207,-0.5718743,-0.6411997,-0.5801518]],"activation":"σ","dense_2_b":[[-0.5332849],[-0.6305155],[-0.58254653],[0.12631744],[0.15982336],[0.32477045],[-0.57614744],[0.058194503],[0.30769274],[-0.14737707],[0.074832365],[-0.38743407],[0.04811002]]},{"dense_3_W":[[-0.55727553,-0.051364966,-0.17064416,0.2017602,0.008057165,0.32420316,-0.6367807,0.18341993,0.56611097,0.17584346,0.7482443,0.2938565,0.06779992],[-0.24583314,-0.08192307,0.26317647,0.64154226,0.37813106,0.21800083,0.3874455,0.1719494,0.24538884,-0.30450168,0.12902369,-0.38736972,0.76431566],[-0.04105808,-0.18581067,-0.69706976,0.6209051,0.670406,0.60423225,-0.6668137,0.18300876,0.7437342,0.09521902,0.0137198325,-0.62237316,0.23223503]],"activation":"identity","dense_3_b":[[0.09012325],[0.0749679],[0.11545244]]},{"dense_4_W":[[-0.48435527,-0.45564538,-1.096167]],"dense_4_b":[[-0.0997911]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68453433AA'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68453433AA'.json deleted file mode 100755 index 9ddff83051..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68453433AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.43866],[0.9594654],[0.3912325],[0.038489565],[0.9550493],[0.9573054],[0.95820725],[0.9453249],[0.93590647],[0.9254975],[0.91544265],[0.03837764],[0.038416598],[0.03845292],[0.038414918],[0.038395535],[0.038228408],[0.0379494]],"model_test_loss":0.005756708327680826,"input_size":18,"current_date_and_time":"2023-08-08_06-49-45","input_mean":[[27.448889],[-0.0067297285],[-0.012206868],[-0.012023059],[0.0005211621],[-0.001140509],[-0.002781004],[-0.0060957638],[-0.008815731],[-0.008225145],[-0.010236002],[-0.011980975],[-0.011978335],[-0.011977974],[-0.012018364],[-0.012198565],[-0.012354674],[-0.01254546]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.26672667],[0.020335548],[-0.3113232],[-1.0529982],[0.40098032],[-0.9344168],[0.20128816]],"dense_1_W":[[0.48369458,-0.3686703,0.0016632332,-0.16971397,0.25181967,-0.46175927,0.4843163,-0.374836,-0.37514406,0.34082055,0.026280358,-0.6478774,0.15835607,0.16001779,0.37194988,0.37345862,0.036551144,-0.28789935],[0.07043975,-0.45260653,-0.00046572334,0.37180796,0.5052569,-0.923053,0.37163734,-0.23138288,0.10260282,0.188695,-0.19567782,0.021202957,-0.079410076,-0.09227521,-0.18622167,0.41924185,-0.40328145,0.18227412],[0.017748738,-0.48881784,0.004065963,-0.21506804,0.54495573,-0.85553426,0.14905618,-0.029548364,-0.5290159,-0.07689605,0.3329747,-0.54319984,0.00667545,0.7586954,0.2262732,0.29633564,0.26088232,-0.29550886],[-0.64260155,0.3662986,3.173239,0.63683313,-0.6430913,0.4424823,-0.16027375,0.084609404,0.03705194,0.081928365,-0.097669385,0.18059629,-0.5149442,0.03890781,-0.11840206,-0.10823692,-0.1191671,0.04037941],[0.10563207,0.49981126,0.0029415153,-0.10415694,-0.18625958,0.90915346,-0.7287493,-0.13796005,-0.015489749,0.38912502,-0.15327297,0.3765297,0.088555075,-0.50586104,-0.13467893,0.12457146,0.046435032,-0.057002276],[-0.5938456,-0.024423348,-3.6706417,0.34764245,-0.1914768,-0.114475735,0.13170964,-0.187258,0.2949009,0.20557038,-0.3126963,-0.4473035,-0.41970354,0.6434845,-0.025949601,-0.27021688,0.10270479,0.02460305],[-0.54888344,-0.6696987,-0.00082320906,0.32633713,0.005453797,-0.47443417,0.67143047,-0.013440813,0.004097872,-0.007966471,0.0029117528,-0.3179762,0.02713174,0.09619391,-0.028661765,-0.37402767,0.26313016,-0.016989414]],"activation":"σ"},{"dense_2_W":[[0.5209726,-0.25359967,0.6619714,0.39587265,-0.35387352,-0.04535335,0.120071486],[0.48709035,0.3180766,0.29595408,0.098535866,-0.2987927,0.057739243,0.22679059],[0.23933189,-0.08163726,-0.9657385,-0.4965831,0.68811953,0.09032152,-0.6589171],[0.57636416,0.39442053,0.18478166,-0.12974693,-0.8272915,-0.29775232,0.20715299],[-0.5449741,-0.9353625,-0.31370834,-0.13274054,0.83518785,0.008355828,0.033751678],[0.35901573,-0.66106963,-0.1888595,0.41194937,1.588338,-0.5385817,-0.740165],[-0.98802006,-0.67757845,-0.0989083,0.26249525,-0.2753127,-0.47687986,0.025367346],[0.2892236,0.35800815,-0.13770878,0.55578154,-0.785857,-0.08480091,0.64590573],[0.09093238,-0.48290733,-0.99116063,0.46500945,0.6056846,-0.012176678,-0.12520207],[-0.9990715,-0.28646934,-0.07094919,0.5173688,0.10600437,0.06450096,-0.5188569],[0.68128484,0.008618474,-0.09483195,-0.17140749,-0.6186476,0.34410867,0.29150036],[0.80427694,0.737846,-0.22390766,-0.50543666,0.05763516,0.29581627,0.14593346],[-0.56531626,-1.014788,-1.0390762,0.37543738,0.08958771,-0.27486435,0.24934056]],"activation":"σ","dense_2_b":[[-0.1413122],[-0.15693974],[0.034285396],[-0.10772752],[0.21373348],[0.5429162],[-0.24522312],[-0.023586268],[0.023880517],[0.17696953],[-0.12841567],[-0.026000533],[0.11256094]]},{"dense_3_W":[[0.02749057,-0.4342947,0.59011424,-0.0131820105,0.4288545,0.41173843,0.3578794,-0.13965432,0.16253465,0.36047092,-0.64697146,-0.6048068,0.70385855],[-0.53569496,0.30542025,0.6883935,-0.63130975,-0.15454243,0.19938475,-0.52876604,-0.5835625,0.46811375,0.43471345,0.46132883,-0.004729517,-0.20376478],[0.23920149,-0.5100696,0.109994635,-0.41538352,0.65883255,0.04808402,0.65057176,-0.26300353,0.67316395,-0.23753574,-0.6068177,-0.36342996,0.5059538]],"activation":"identity","dense_3_b":[[-0.043995153],[-0.035359237],[-0.028157346]]},{"dense_4_W":[[1.0061214,0.5680961,0.2576211]],"dense_4_b":[[-0.04061578]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68499171AB'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68499171AB'.json deleted file mode 100755 index a74e54d2e9..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68499171AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.5967526],[1.0102762],[0.43027443],[0.05251798],[0.999985],[1.0024607],[1.0053881],[1.0012413],[0.98920035],[0.97731537],[0.96259564],[0.052146535],[0.052252885],[0.05235032],[0.05248029],[0.052331988],[0.05202955],[0.05168756]],"model_test_loss":0.009552407078444958,"input_size":18,"current_date_and_time":"2023-08-08_07-40-22","input_mean":[[27.414038],[-0.0075059575],[-0.004310022],[-0.012558367],[-0.005643982],[-0.006085868],[-0.0062815067],[-0.006680969],[-0.006342892],[-0.005391843],[-0.004076586],[-0.012551318],[-0.012558776],[-0.0125591215],[-0.0125386985],[-0.012456482],[-0.012317335],[-0.012218792]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.010202121],[-0.20869955],[-1.2660872],[-0.054420657],[0.055866957],[-1.3448147],[-0.8834831]],"dense_1_W":[[0.0012557846,-0.6672937,0.0010295995,0.32252085,-0.048310652,-0.5376883,0.7697637,0.0823376,-0.30575013,-0.26277706,0.24928996,-0.8753449,-0.5025692,-0.077491626,0.5145067,0.079226255,0.5474699,0.06658418],[0.0039056255,0.9247404,-0.009912007,-0.25928807,0.99379,0.96465033,0.08479168,0.010440816,0.27576396,0.073882826,0.17389007,0.53772444,0.30138925,-0.32761773,0.63664806,0.24958122,-0.05548543,-0.2774185],[-1.1338029,0.7972837,2.7477882,-0.2877902,-1.754552,-0.2689002,-0.63449675,0.42324004,1.8994156,0.73137105,-1.1024318,1.0254707,0.08409975,-0.529214,-0.502221,-0.14801149,-0.4222293,0.6621312],[0.00042969367,-0.8577691,-0.0021418685,0.35081863,0.65922713,-0.6490291,0.2931224,-0.60029286,-0.014103398,0.47114435,-0.123872444,-0.43758586,-0.47995508,0.6163008,0.4267091,0.38276717,-0.47198132,-0.14263928],[0.00044543247,0.36023495,0.0021837356,-0.2779762,0.05987485,0.64892846,-0.517532,0.32271734,-0.18660611,0.28274518,-0.1146797,0.13610251,0.5230807,-0.19606018,-0.39453036,-0.046586644,-0.046734218,0.08382657],[-1.2255402,-0.22072525,-2.8729386,-0.25934264,1.7529143,0.06705062,0.02021511,0.045151696,-1.9299484,-0.7893005,0.9692529,-0.14630248,-0.14744897,0.118275866,0.6106455,0.28660807,-0.06394074,-0.28017327],[0.005199153,-1.1621727,0.00077480485,0.17639922,0.46977073,-0.020649184,0.18502355,0.5452717,-0.090024605,0.017219655,0.016716335,0.6221494,1.1390406,1.5075128,0.48781365,0.17463161,0.10828733,-0.43913674]],"activation":"σ"},{"dense_2_W":[[-0.58769137,0.05236564,0.35124663,0.04817339,0.2898144,0.28079572,-0.00064369116],[0.005263831,0.19137648,-0.48806444,-0.23123759,0.6268823,-0.16993119,0.34425706],[-0.5901436,-0.23695424,0.098380215,-0.17219543,0.48076913,-0.4071234,0.28624105],[0.14382643,0.13441655,0.45674977,-0.027003672,0.56117404,-0.45108694,0.33755574],[-0.2538037,0.45569667,0.27736127,-0.23255807,0.07589655,-0.2602569,-0.5057338],[-0.46332666,-0.13729805,-0.12543498,-0.39890754,0.0796631,0.31270605,-0.31902856],[0.49847755,-0.2749227,0.0026628354,0.55073225,-0.50455254,-0.07015729,0.18485697],[0.16384278,0.4331959,-0.2250921,0.16277151,0.5106723,0.31678322,-0.18506958],[0.2638649,0.3195002,-0.43078262,0.13981557,-0.004984484,-0.5785593,-0.18042926],[0.19678845,0.00667378,-0.30015993,0.36041152,-0.8781901,0.11745428,0.40608066],[0.15176365,-0.2606354,-0.27513868,0.46041733,-0.14977318,0.29587746,0.034236424],[0.5043066,0.046352975,-0.06961968,0.10950722,-1.003576,0.024827112,0.36801037],[-0.18985961,-0.4802785,0.3937008,-0.663785,0.06894842,0.10332041,0.35070738]],"activation":"σ","dense_2_b":[[-0.030413345],[-0.018623633],[0.037994068],[-0.039921794],[0.06337368],[-0.0037913572],[-0.11922998],[-0.01326628],[-0.015669143],[-0.30007255],[-0.0722405],[-0.16496572],[0.00060786883]]},{"dense_3_W":[[0.32435206,0.028846495,-0.13252908,-0.1982058,-0.36715662,-0.30138585,0.46504492,-0.31018558,-0.24452554,-0.29342332,0.51592284,-0.40441313,-0.0497606],[-0.08831045,-0.06720264,-0.1351913,-0.31066024,0.31655452,-0.31953314,-0.49679926,0.38395572,-0.3895881,-0.047352865,0.13741386,-0.31013528,0.3948293],[0.45862782,0.2571993,0.62897617,0.37644735,0.40071562,0.31087562,-0.5142998,-0.41985396,0.27594817,-0.54097104,-0.5071787,-0.6661379,-0.014177239]],"activation":"identity","dense_3_b":[[-0.006262847],[0.010518014],[0.007370069]]},{"dense_4_W":[[-0.95558,0.989042,1.2003003]],"dense_4_b":[[0.007831933]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68501183AA'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68501183AA'.json deleted file mode 100755 index d1a79626db..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019 b'68501183AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.452467],[0.86690396],[0.40215713],[0.040074926],[0.8606064],[0.8630931],[0.8649407],[0.85491246],[0.844539],[0.8305169],[0.81689984],[0.03982056],[0.039912425],[0.039979994],[0.039879803],[0.03978153],[0.039445743],[0.03891937]],"model_test_loss":0.010768964886665344,"input_size":18,"current_date_and_time":"2023-08-08_08-04-56","input_mean":[[27.322044],[-0.024251966],[0.010604335],[-0.013273577],[-0.024150817],[-0.02318872],[-0.022487855],[-0.016739838],[-0.013881857],[-0.01513014],[-0.018847467],[-0.01310166],[-0.0131332185],[-0.013161585],[-0.013236801],[-0.0134922145],[-0.013910382],[-0.0144336065]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.7449901],[0.5293309],[-0.13684131],[-0.012751344],[-0.7529798],[-0.23311737],[0.07853056]],"dense_1_W":[[-0.13072656,0.6283987,0.015078402,-0.054005172,-0.2233314,0.45095843,-0.43263704,0.04728289,0.26050776,-0.021932844,-0.11329059,0.54408914,-0.4077183,-0.18935005,-0.10371036,0.2651148,-0.35418501,0.19614394],[-1.7171507,-0.3317916,0.004072612,-0.15467915,0.41885808,0.92006916,-0.8898168,-0.4614065,0.29903418,0.25961474,-0.05122034,-0.20094745,0.5485216,0.06610662,0.016513953,-0.37984493,-0.1926293,0.29794264],[0.007063484,0.6856636,-0.011413773,-0.72127,-0.20380542,1.0480517,-0.8238829,0.2790337,-0.3606132,0.31933337,-0.07325723,0.5433965,0.121130235,-0.2291283,-0.32528403,0.11580332,0.12170283,0.054295488],[0.12663618,0.91206276,0.004443536,-0.30484363,-0.75032,0.7143595,-0.5558535,0.1742707,0.3093525,-0.26842314,-0.069468714,0.12913592,0.27518988,0.11542955,-0.49559456,0.11280359,-0.117812514,0.20811172],[1.7389579,0.4180518,-0.01172704,0.21032059,0.47659472,-0.032733813,-0.875458,0.10615792,-0.013827842,0.23314281,-0.13350959,0.48809958,0.059256323,-0.3293328,-0.038980376,-0.70255446,-0.111022756,0.4263937],[-0.047828943,0.9741059,1.9788678,0.035556808,-0.33137748,0.06869328,-0.0728806,0.30185872,0.42945105,-0.2668291,-1.0493917,0.75109553,-0.044287033,0.2789782,-0.78056633,-0.5101993,-0.1294507,0.57637715],[0.06523681,-1.1740252,-5.89938,-0.22002901,1.5458798,0.5268267,1.4306431,-0.6207323,-1.5871657,-0.4998738,0.18801236,-0.4513105,-0.568868,-0.10367136,0.37126714,0.53899825,0.38020688,0.17896129]],"activation":"σ"},{"dense_2_W":[[-0.8985011,0.11458038,-0.37006074,-0.9091467,0.08845758,-0.4780092,-0.09387305],[-0.30258346,-0.2478026,-0.138898,-0.72172093,-0.6169151,-0.314319,0.7819804],[-0.7148826,-0.49621424,-0.2916977,-0.6574481,-0.073164396,0.27022183,-0.113334574],[-0.20976768,0.049662825,-1.0442357,-0.4784036,-0.31232062,-0.010284477,0.37272945],[0.11602564,-0.09091442,0.43364218,-0.1808539,0.42867213,0.110103086,-0.30165982],[-0.2179075,-1.046752,-0.68968844,-0.23109698,0.047580823,-0.14457914,-0.8176898],[0.65831876,0.8798172,0.87773097,0.5937055,-0.42482352,-0.15033811,0.6182065],[0.017662104,0.35544062,-0.044278342,0.3860054,0.6023141,0.46972203,-0.08535246],[-0.2605915,0.6408727,0.7716486,-0.15743664,0.6014163,-0.008522242,0.12289313],[-0.77912825,0.11850717,-1.0912898,-0.14447807,-0.4524029,0.21814777,0.4140316],[-0.98378664,-0.28703195,-0.5935176,-0.41121966,-0.10323715,0.25849262,0.59001917],[-0.61543965,0.08229077,-0.11793402,0.059594512,-1.2362256,-0.30034783,0.43083572],[-0.15708973,-0.303757,0.52465874,0.088811316,0.15832427,0.11913656,-0.2735138]],"activation":"σ","dense_2_b":[[0.3555512],[0.1413531],[0.0609361],[-0.0072417697],[-0.06120809],[0.16177845],[0.00092023175],[-0.15782398],[-0.20185831],[-0.07573758],[0.08495398],[-0.36860523],[-0.06752801]]},{"dense_3_W":[[-0.17603812,-0.4140721,-0.62913364,-0.49161103,0.06334394,-0.4608268,0.50220513,0.6482869,0.28214014,-0.30096096,-0.68956196,0.14852367,-0.13984762],[0.70722806,0.81301016,-0.0990699,0.34233677,-0.2081479,0.6863452,-0.40330297,-0.23650733,-0.4555184,0.78053814,0.06477601,0.5426404,-0.3088452],[0.06759314,-0.38149613,0.4649801,-0.024833316,-0.14772557,0.68093634,-0.31712177,-0.31436524,0.021902535,-0.06391409,0.52740633,-0.023403548,-0.30866808]],"activation":"identity","dense_3_b":[[0.040954825],[-0.05325551],[0.009019909]]},{"dense_4_W":[[0.83495075,-0.86214906,-0.13330713]],"dense_4_b":[[0.043454375]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AB'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AB'.json deleted file mode 100755 index b31907e804..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.1622963],[0.9471656],[0.44518656],[0.040083434],[0.9350785],[0.94012755],[0.94425213],[0.93108463],[0.91875947],[0.8984224],[0.87960774],[0.040001612],[0.04003194],[0.04005136],[0.040004794],[0.039946392],[0.039676767],[0.039269198]],"model_test_loss":0.010425965301692486,"input_size":18,"current_date_and_time":"2023-08-08_08-57-13","input_mean":[[23.123226],[0.014666694],[0.0013152711],[-0.015370418],[0.015775913],[0.015918152],[0.015987042],[0.017566826],[0.01997459],[0.024210589],[0.023963585],[-0.01532087],[-0.015298695],[-0.015288566],[-0.01526749],[-0.015188506],[-0.015101968],[-0.0150896525]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.4020265],[-0.38869652],[0.5984056],[-0.40903288],[-0.7209127],[-0.21461262],[-0.022622019]],"dense_1_W":[[-0.48059335,0.3100128,0.0076716603,0.16913813,-0.39116326,0.30901742,0.15213187,0.27245435,0.30929,0.0393514,-0.21169001,0.37455606,-0.0841324,-0.35264006,0.057713106,-0.3693904,-0.043460626,0.16143373],[0.1948784,0.3596294,0.0016701045,0.078808986,-0.031749953,0.5201668,-0.3876555,0.035953883,-0.052751865,0.29071456,-0.11915809,0.18078142,0.2654659,-0.3440918,-0.36261106,-0.04538469,-0.16205196,0.2049061],[0.27058375,0.39068493,0.008152962,-0.46268412,-0.37271506,1.1953743,-0.838863,0.20327426,-0.029140756,0.40090236,-0.25554156,0.1980216,-0.24836442,0.40255845,-0.11239343,0.08096013,0.28145158,-0.1982731],[-0.09668808,0.72334373,4.232626,-0.2011821,-1.4960433,-0.6716198,-0.7842683,0.3259893,1.7003231,1.2187169,-0.7756498,0.0010294656,0.015891263,0.07841224,0.28969085,-0.011956924,-0.21773098,-0.1516659],[-1.0268521,-0.04623315,0.02006263,0.53300685,0.49791265,-0.031559914,-0.06060664,0.40332755,0.24802661,0.4815803,-0.37091663,-0.009678896,-0.12575178,0.25624207,-0.65037,-0.19531684,-0.40527076,0.4080783],[0.06124146,0.33298203,-0.007085769,-0.3564556,-0.62365544,0.39928165,-0.30484197,-0.03956767,0.47177354,-0.32725462,-0.05135365,0.41259632,0.104655325,0.02163898,-0.3252136,0.19845222,-0.34582257,0.3192759],[-0.215077,0.61514986,0.014335081,-0.23261109,0.028965365,0.5105243,-0.8640813,0.41804183,0.06355636,-0.26415628,0.11219327,0.18719119,0.18345302,-0.09234277,-0.21879959,-0.077284895,-0.051544398,0.12303621]],"activation":"σ"},{"dense_2_W":[[-0.047037657,-0.82620645,-1.1012506,-1.5222656,1.2184019,-0.95923287,-0.32852557],[0.6561262,0.5126057,-0.24760722,-0.088599116,0.011952697,0.5099274,0.6522026],[-0.5948736,-0.51518464,-0.31788582,0.50248563,-0.48923284,-0.6654764,-1.0108097],[0.5930829,0.5896004,-0.34024367,0.5411401,-0.23081586,0.025500938,0.018493457],[-0.0699199,0.07561291,-0.099223636,0.2656774,0.12801234,-0.09348627,0.39833513],[0.1711992,0.61261594,0.10941279,0.15368794,-0.016752176,-0.08643972,0.51187015],[0.52641517,0.29478607,0.28599206,0.36893985,-0.012896536,-0.36574146,-0.06489677],[-0.9348127,-0.63718593,-0.9197959,-0.17101024,0.6478388,-0.25748882,-0.6722122],[-0.039446525,-0.17253296,-0.1102254,0.11489417,-0.12034824,-0.64540935,-0.61393607],[-0.018881954,-0.5315948,-0.20833272,-0.026863215,-0.46395144,0.38346213,-0.69737613],[-0.89750475,-0.9264009,-0.50270903,0.38569385,-0.1646158,-0.009521657,-0.2364964],[0.64389735,0.66855454,-0.51955,0.20904338,-0.059642173,-0.34599668,0.3828592],[-0.41403893,-0.23343006,0.27303386,0.32080367,-0.08580585,-0.0022561064,0.5581373]],"activation":"σ","dense_2_b":[[0.1540804],[-0.1450312],[0.42652166],[-0.16428761],[-0.15953712],[-0.17998531],[-0.22780614],[0.16343741],[-0.14679368],[0.12547316],[-0.083877504],[-0.18424872],[-0.14974242]]},{"dense_3_W":[[-0.79740316,0.3058743,-0.88944197,0.25014403,0.06497559,0.17014328,0.27509627,-0.6445844,0.052368652,-0.73738235,-0.5432747,0.4932797,0.065226056],[-1.4201472,0.54557586,-1.273868,0.49129322,-0.29190016,0.4022955,0.20194477,-1.0692892,-0.11673556,-0.22659089,-0.57724833,0.10635412,-0.22017439],[-0.029564494,0.52538013,0.31247225,0.23336294,0.4273138,0.10889286,-0.012862975,-0.57009745,-0.06713728,-0.5318249,0.48261672,-0.479357,0.26141784]],"activation":"identity","dense_3_b":[[0.027114814],[-0.091438465],[0.011498378]]},{"dense_4_W":[[1.1969254,0.4108815,0.4734377]],"dense_4_b":[[0.025864411]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AC'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AC'.json deleted file mode 100755 index 352d7b0341..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321644AC'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.830911],[1.115638],[0.4198547],[0.045398682],[1.1110027],[1.1132046],[1.1144112],[1.0970649],[1.0804734],[1.0600687],[1.0419487],[0.04529199],[0.045321435],[0.045338377],[0.045098767],[0.04478193],[0.044281803],[0.04369981]],"model_test_loss":0.016744062304496765,"input_size":18,"current_date_and_time":"2023-08-08_09-22-33","input_mean":[[25.32558],[0.020876955],[-0.0031986607],[-0.021073462],[0.023825074],[0.023209965],[0.022263236],[0.022898776],[0.022900082],[0.021173751],[0.019993754],[-0.021117106],[-0.021114947],[-0.02110833],[-0.020907117],[-0.020756595],[-0.020630443],[-0.020645482]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.08477574],[-1.1208596],[0.056731466],[-0.13102329],[1.3400327],[-0.21376154],[-0.14902717]],"dense_1_W":[[-0.019731255,0.5049976,-0.036526002,0.011823861,-0.1379057,1.0417687,-0.41630954,-0.28008935,-0.10283441,-0.05499538,0.25074315,0.047100175,-0.29597563,-0.07547027,0.25998276,0.22996715,-0.18355547,-0.08965249],[-0.5427593,-0.20459586,-1.1918509,0.49397376,0.40827742,-0.22497697,0.4398683,-0.36652535,-0.032938156,-0.5691974,0.40494335,-0.31987035,-0.33914092,0.37502846,0.1593614,-0.20469041,-0.11929302,0.08297961],[0.09138077,0.5844746,0.01609009,0.106926106,0.18020171,0.29379869,-0.33216235,0.0700583,-0.16037555,-0.24483693,0.24122177,0.21059227,0.16990502,-0.34959447,-0.22446343,-0.048417874,-0.10075254,0.14260091],[-0.04069323,0.72442687,6.4593797,-0.11315368,-0.64344734,-0.65112764,-0.43653354,0.18658906,1.393825,0.79047185,-1.1749243,0.47932476,-0.05644744,0.082114056,0.06887666,-0.52010685,-0.27435255,0.34667605],[0.5707703,-0.5124983,-1.2294043,-0.03657325,0.3137657,0.1472218,0.2302784,-0.17878631,-0.04963707,-0.4735355,0.3274108,-0.5153868,0.3066991,0.21095222,0.18537575,0.19664803,-0.3297685,0.09996214],[-0.064720176,0.19063953,0.034651436,-0.36256272,-0.21260333,0.6277773,-0.3070442,0.04620047,0.34898838,0.21007203,-0.30331737,0.5204954,0.28685373,-0.061015386,-0.26879862,-0.41823646,-0.34857938,0.550084],[-0.021767776,-0.65322065,1.1321541,0.16613401,0.57740504,-0.3740601,0.65210044,-0.37584355,0.0014690036,-0.06747381,0.32518736,-0.50768954,-0.30564624,0.591422,0.2179493,-0.316548,0.25551757,-0.22068849]],"activation":"σ"},{"dense_2_W":[[0.7023776,-0.5377536,0.447295,0.20259193,0.35656255,0.34270075,0.14764449],[-0.8119403,1.898599,-1.0897249,-0.9444553,-0.95713764,-0.7802652,1.1571481],[-0.41300622,0.5057582,-0.42050916,-0.26921916,0.4071575,-0.72827977,0.6723096],[0.659268,0.41014376,0.7103329,-0.2158735,-0.5761206,0.8324001,-0.6932241],[0.7650227,-0.098119624,-0.13894603,-0.09793376,-0.29583746,0.15023077,-0.18984264],[-0.5645378,0.37838322,-0.25003466,0.30110332,-0.17372216,-0.14515066,-0.2892711],[-0.86647314,-0.6360927,-0.512288,-0.40345564,-0.57944584,-0.10611315,0.3009823],[0.47419962,0.12130229,0.47665277,-0.22477815,-0.6503073,0.7154409,-0.5352525],[-0.33391073,0.19982284,-0.18712083,-0.61583984,0.32468942,-0.30625635,0.5543383],[-0.7848551,0.3256499,-0.20679983,-0.61387134,1.2375975,-0.54205257,0.7628237],[-0.80773836,0.5552902,-0.82975096,0.44044396,0.20548598,-0.41023898,-0.015094675],[-0.0031497905,-0.34568506,0.714917,0.34772903,-0.47651246,0.11289852,0.01636551],[0.26711908,0.18439986,0.6041066,-0.32462585,-0.6204204,0.6425605,-0.3411199]],"activation":"σ","dense_2_b":[[-0.09711639],[-0.08352111],[0.047110736],[-0.097634606],[0.0056070853],[-0.100640625],[-0.27092776],[-0.0012954418],[-0.0036094699],[0.3191952],[0.009079399],[-0.12750977],[-0.056785733]]},{"dense_3_W":[[0.06739133,0.59006786,0.6211502,-0.5984078,-0.32169876,0.3524586,0.24023733,-0.27815732,0.5021664,0.56558025,0.14635971,-0.56661624,0.3526846],[0.40286243,-0.37436473,-0.6752988,0.6229788,0.06661106,0.28863597,0.2982523,0.62539214,-0.2726357,0.0369207,-0.49113652,0.13289927,0.42825526],[-0.5299166,-0.058093112,0.2767313,0.31623214,-0.46782243,-0.02541171,0.52295595,-0.17039666,0.5000973,0.43198228,0.28259963,0.442186,-0.49364412]],"activation":"identity","dense_3_b":[[-0.045575317],[0.01754547],[-0.034936134]]},{"dense_4_W":[[-0.8772865,0.7928133,-0.44498837]],"dense_4_b":[[0.02575194]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321646AC'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321646AC'.json deleted file mode 100755 index 547a4dd4b9..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68321646AC'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.737005],[0.88882256],[0.40919855],[0.039857272],[0.8705369],[0.8758246],[0.8814676],[0.8781675],[0.86962575],[0.85621184],[0.8394485],[0.03945453],[0.03953348],[0.03961019],[0.03977209],[0.039786596],[0.039618857],[0.03923206]],"model_test_loss":0.012028406374156475,"input_size":18,"current_date_and_time":"2023-08-08_09-48-14","input_mean":[[22.945333],[-0.0010462697],[0.0048553967],[-0.0153987445],[-0.0021738543],[-0.0016759728],[-0.0015154154],[-0.001325464],[-0.00038370863],[-0.0006709971],[-0.00058776775],[-0.015591592],[-0.015539771],[-0.01549547],[-0.015391692],[-0.015357372],[-0.01538723],[-0.015529609]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.5486719],[0.2716225],[-1.6157514],[1.1729423],[-1.1907693],[-0.39801067],[-0.121997826]],"dense_1_W":[[-0.46544072,0.7250584,4.8497953,0.14721076,-0.5592774,-0.06463778,-0.64544016,-0.40530452,1.03972,0.39865008,-0.32899725,0.3914242,0.2066326,-0.092136934,-0.25278154,-0.43968657,-0.29141605,0.33539483],[0.020392422,0.024581747,0.0031651654,0.040796407,-0.38519448,-0.8635064,0.37892318,0.102256194,-0.09094794,0.21679239,-0.2812365,-0.15923738,-0.108921684,0.6662101,-0.08453101,-0.07277869,0.05620035,-0.016352834],[-0.3585343,1.2613775,0.0038963037,-0.15068118,-0.13595745,0.22841744,-0.5804063,-0.11421715,0.540371,0.38811037,-0.412488,0.33400613,0.15549748,-0.08101292,-0.13149312,-0.3663767,-0.065549724,0.3084776],[0.23774011,0.95270973,0.0014370019,-0.033368304,-0.42406502,0.77913195,-0.5337653,0.07241031,0.044325322,0.3215471,-0.20761405,0.43413407,0.478264,-0.83566636,-0.32521436,0.21832462,-0.10103389,0.15086488],[-0.8515809,-0.001838693,-3.2252197,0.042975638,0.43727648,-0.22219318,0.35821626,0.15869705,-0.42442384,-0.39166257,0.0048108334,0.078742936,0.040681444,-0.3639781,-0.15564561,-0.12332069,0.5021788,-0.055283524],[0.005189595,-0.8111827,0.0013606233,0.50199807,0.3737952,-1.0003718,0.851964,-0.122223474,-0.3087659,-0.2764092,0.34383842,-0.43569988,-0.20424576,0.35416314,0.2666806,0.2474478,-0.25429338,-0.09367016],[0.012469906,-0.51571983,0.0040051304,0.15235668,0.5664555,-1.1568508,0.97973454,0.22787246,0.12199299,0.16332985,-0.17958714,-0.6260466,0.3168435,0.07752037,-0.16694872,-0.05125427,0.54919314,0.07834808]],"activation":"σ"},{"dense_2_W":[[0.42687958,0.35546088,-0.0835482,-0.16971982,0.44030172,-0.1060948,-0.27846086],[0.3972471,-0.26396534,0.60359323,-0.2778684,-0.5613684,-0.27746892,-0.39469868],[-0.2463116,0.42827067,-0.22504425,-0.59708124,-0.3661039,0.63707,0.15119193],[-0.33165976,0.33214015,-0.6223232,-0.38051826,0.030521309,0.08566356,0.44499964],[-0.19122124,-0.08419296,0.65129405,0.6664746,-0.13785547,-0.83451825,-0.1729238],[0.2925262,-0.8603122,0.49935588,0.41965902,0.0442165,-0.05522488,-0.82031214],[0.1410513,-0.08103695,0.25278136,0.37289864,0.25904986,-0.37102434,0.062144414],[0.29021037,0.3428696,-0.6168156,-0.13681921,0.34707314,0.5923309,-0.08615041],[0.4242105,-0.6498356,-0.19368397,0.86813235,0.12725602,-0.058380764,-0.29565084],[0.3024098,-0.06166411,0.3740148,0.6663715,-0.040609878,-0.41137022,-0.7049944],[-0.18053831,-0.37341672,-0.07160507,0.080549926,0.0789703,0.20618889,-0.40184686],[-0.7074698,-0.29236713,0.28588095,-0.20616542,0.13988344,0.09854203,-0.21226078],[0.3260612,0.23354511,0.35486403,0.6984273,-0.24646878,-0.60650444,-0.46223956]],"activation":"σ","dense_2_b":[[0.031995755],[-0.2639717],[0.0073487367],[0.057454802],[-0.040088877],[-0.07751858],[0.015209585],[-0.004185873],[-0.06493244],[-0.010564818],[-0.065297335],[-0.2724362],[0.016460005]]},{"dense_3_W":[[-0.07241538,0.51749754,-0.66165704,-0.6295341,-0.1707448,-0.43621805,0.18211804,-0.03065691,-0.13813734,0.6441604,-0.30329812,0.54201734,0.55464447],[0.19548033,-0.28439224,0.6228154,0.26898032,-0.5306852,-0.60617685,0.33318204,-0.16073118,-0.37244457,-0.5546019,0.17876261,-0.3419583,-0.09833642],[-0.5292195,-0.26595876,-0.27626458,-0.15267096,0.22562627,0.53073275,-0.20250128,-0.67357546,0.26390368,0.25917968,0.29303232,-0.573905,0.6053267]],"activation":"identity","dense_3_b":[[-0.032989413],[0.044406198],[-0.033128925]]},{"dense_4_W":[[0.5753529,-0.8160843,1.1863258]],"dense_4_b":[[-0.037123773]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68367342AA'.json b/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68367342AA'.json deleted file mode 100755 index 4676ef8177..0000000000 --- a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018 b'68367342AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.3758683],[0.8794069],[0.46141535],[0.037675492],[0.88829136],[0.886115],[0.8817511],[0.84581715],[0.8278533],[0.80277216],[0.7799678],[0.03770945],[0.037679393],[0.037663188],[0.03748336],[0.037227985],[0.03666999],[0.03598855]],"model_test_loss":0.006474275607615709,"input_size":18,"current_date_and_time":"2023-08-08_10-12-47","input_mean":[[26.350012],[-0.09385938],[0.041549694],[-0.0030162074],[-0.09805675],[-0.09651579],[-0.09413497],[-0.07463795],[-0.06469781],[-0.05300219],[-0.045351826],[-0.0031147127],[-0.0030688543],[-0.0030160798],[-0.0029022517],[-0.0028611047],[-0.002841013],[-0.0029479503]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09162939],[-0.0024971273],[-0.24881262],[-1.32228],[-0.4374819],[-0.9960854],[-0.32367432]],"dense_1_W":[[0.0013978665,0.5157658,0.057618756,-0.4238105,-0.5857702,0.50526756,-0.3266269,0.012936584,0.3625385,0.11991571,0.0066418285,0.40299493,-0.23047242,0.21920505,-0.4174118,-0.089936666,-0.104478516,0.045391113],[0.045715943,0.04829665,0.030840999,-0.24445257,-0.267954,0.2661487,-0.7767349,0.6312683,0.6088808,-0.05871689,-0.37978205,0.4366248,0.22490036,-0.57898104,0.0108244065,0.28357658,-0.55379957,0.32254124],[0.011607531,0.6717766,-0.07031896,-0.20974216,0.22755674,1.115498,-0.24775673,-0.08535654,-0.2567366,0.009943826,0.21396203,0.22771065,0.110520564,-0.5468987,0.0013472787,0.12118877,0.38788018,-0.5846402],[1.2240443,0.36507532,-0.0076892683,0.1908495,0.10025321,0.8377715,-0.829348,0.010610993,-0.34508568,-0.002731332,0.255436,0.22866087,-0.1078464,0.13727446,-0.16703908,-0.24019064,-0.047107916,0.0975457],[-0.049711026,0.4607915,0.015162587,-0.170386,-0.80058587,0.6337767,-0.053720508,0.19613627,0.17618516,-0.047628276,-0.115387514,-0.010986527,0.14302418,0.016793815,-0.2661772,0.047418084,0.41987264,-0.30581895],[1.1685805,0.011218695,0.007829905,-0.68930507,-0.43452054,-0.6339981,0.60769325,0.28270322,0.07532135,-0.04884226,-0.21931998,-0.008426204,0.04834048,-0.06860812,0.38515458,0.122956015,0.4017405,-0.29282153],[-0.020134322,-0.8001443,-4.5559916,0.18659148,0.70608896,-0.2582699,0.20592918,0.049877867,-0.35152316,0.053292986,0.19451627,-0.7794339,-0.2684154,0.07639334,0.6773159,0.5250616,-0.0034250547,-0.43527722]],"activation":"σ"},{"dense_2_W":[[0.21119271,-1.0255879,-0.16154091,-0.4769789,-0.61767894,0.34280777,0.05404951],[-0.02319971,-0.5616842,-0.29918796,-0.4990605,-0.56629777,0.18677638,0.112850465],[-0.3342754,-0.06275528,-0.16850384,-0.0028333499,-0.7661835,-0.41394717,-0.03308939],[-0.4943371,-0.15990037,0.2436778,0.23711683,-0.41802898,0.472897,0.36362448],[-0.5475525,-0.5687474,0.4426769,-0.5622382,-0.11734036,0.46177107,0.16163152],[-0.26939043,-0.84531426,-0.17959583,-0.20131466,-0.16513735,0.46629128,0.11826833],[-0.66524285,-0.62074107,-0.2418173,-0.6427534,-0.16397402,-0.3407568,0.38450608],[-0.72491395,-0.3333499,-0.01070937,0.06758591,-0.3469214,0.58276814,-0.60413307],[-0.7090462,-0.28402704,-0.29168892,-0.97276664,0.17415757,-0.29785421,0.35881364],[-0.053390227,-0.1611089,-0.8964952,0.26221168,-0.58006567,0.667772,-0.67146504],[0.09106713,0.40570852,0.030234145,0.12706229,0.72801465,-0.7008442,0.033457078],[0.64675695,0.34196526,-0.0063973228,-0.15831146,0.3233861,-0.818193,-0.70464826],[-0.43582126,0.39073256,0.6456649,0.5558599,0.7124559,-0.4439334,0.094163485]],"activation":"σ","dense_2_b":[[0.089445606],[-0.12313768],[-0.06173512],[-0.1068826],[-0.07586955],[0.044505995],[0.046850294],[0.107835546],[-0.07275619],[0.1918601],[-0.15383899],[-0.19150755],[-0.17611705]]},{"dense_3_W":[[-0.26096532,-0.30031928,0.18381803,-0.22780605,0.06046405,0.6438302,0.45061895,0.15275083,0.5594882,-0.23233925,-0.0062613282,-0.37721986,-0.3175804],[0.57467216,0.42339224,0.36510932,0.22639248,-0.0027739918,-0.29680425,0.39515868,0.18335965,0.6245671,0.56803894,-0.58078635,-0.732932,-0.5319626],[-0.20106415,-0.45754662,-0.37109572,0.052946024,-0.08164918,-0.5180276,0.24222454,-0.39028975,-0.37767205,-0.3367975,-0.057989135,0.5503922,0.27205816]],"activation":"identity","dense_3_b":[[-0.037949592],[-0.040613495],[0.0736481]]},{"dense_4_W":[[-0.91081345,-1.2000608,0.3280663]],"dense_4_b":[[0.040748246]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018.json b/selfdrive/car/torque_data/lat_models/JEEP_GRAND_CHEROKEE.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE V6 2018.json rename to selfdrive/car/torque_data/lat_models/JEEP_GRAND_CHEROKEE.json diff --git a/selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019.json b/selfdrive/car/torque_data/lat_models/JEEP_GRAND_CHEROKEE_2019.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/JEEP GRAND CHEROKEE 2019.json rename to selfdrive/car/torque_data/lat_models/JEEP_GRAND_CHEROKEE_2019.json diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.03 57700-CV000 1A19'.json b/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.03 57700-CV000 1A19'.json deleted file mode 100755 index d772752e47..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.03 57700-CV000 1A19'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.6028657],[0.998016],[0.53611773],[0.047976688],[0.9928589],[0.9924185],[0.991688],[0.96648145],[0.9476359],[0.9231466],[0.89530784],[0.047654726],[0.047677517],[0.047703277],[0.04752716],[0.04720977],[0.04657623],[0.045824196]],"model_test_loss":0.0073777767829597,"input_size":18,"current_date_and_time":"2023-08-08_11-03-36","input_mean":[[22.331253],[0.008268598],[-0.0049328315],[-0.016445948],[0.00974977],[0.009845438],[0.008850363],[0.0060875807],[0.005707362],[0.004997126],[0.001550338],[-0.016557517],[-0.016519358],[-0.016480202],[-0.016507305],[-0.016554574],[-0.016674902],[-0.016686343]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.2134058],[-0.4401382],[0.013421209],[-0.34870654],[-0.17111516],[-1.2804115],[1.5166906]],"dense_1_W":[[-0.003492201,-0.7001189,-4.9897428,-0.06689495,0.26876342,0.35482764,0.30641812,-0.21851085,-0.555579,0.24643534,0.8393177,-0.0675409,-0.0201491,-0.020234931,-0.11246266,-0.29563373,0.021233577,0.1581605],[0.01416149,-0.40680584,0.007477288,0.27667442,0.49908307,-0.8357575,0.31320336,0.078352265,-0.120635815,0.19794565,-0.11251097,-0.046342086,-0.14189145,0.031422284,0.12273671,-0.020133087,-0.41442218,0.2202907],[0.006394261,-0.26172528,0.014584929,0.05768383,0.0585847,-0.5514914,0.8517142,-0.24889153,-0.22688049,-0.16613601,0.26893988,-0.74086446,-0.04820193,0.005417286,0.62154377,0.22829771,-0.13376506,-0.03882397],[0.057499748,-0.086839266,-0.0019575898,0.4038879,-0.19230208,0.757238,-0.3092829,0.1257818,0.0051625846,0.057344712,0.007206614,-0.29419062,0.25565282,-0.1575536,-0.10660876,0.022886055,-0.52114695,0.33686352],[-0.04594949,0.0063070045,0.008311233,0.27411845,-0.10505312,0.59662914,-0.1289434,-0.062175047,-0.14703758,0.17578988,0.012138173,0.08942247,0.03361194,-0.5405618,0.01592405,0.21723932,-0.08538327,-0.03150985],[-0.9764623,0.6599259,0.10607622,-0.031322658,-0.25540224,0.593693,-0.8804088,0.257759,0.093271345,-0.016888158,-0.026402805,0.2872013,-0.113752045,-0.52583855,-0.055375155,-0.08507545,-0.29209676,0.3949437],[0.96527904,0.58919865,0.104077555,-0.018589191,-0.21170476,0.5390397,-0.80143183,0.2932772,0.10296324,-0.13822582,0.045123298,0.3152447,0.085109994,-0.72252256,0.008645425,-0.4263549,0.017035658,0.32861862]],"activation":"σ"},{"dense_2_W":[[-0.37199923,-0.12832722,0.1749511,-0.67342365,-0.13077573,0.13716596,-0.31276017],[0.08311641,-0.8226717,-0.732273,0.43065447,0.42091942,-0.23820308,0.46186474],[0.061342355,-0.13367933,0.7275678,-0.5163101,-0.97730047,-0.16040334,-0.39433354],[-0.0016042206,0.23937365,0.7839997,-0.5188498,-0.54760414,-0.75992507,0.20722012],[0.05986252,0.7940592,0.017990412,-0.5053787,0.250168,-0.6725281,-0.35185984],[-0.7115049,-0.0011200714,0.0579297,0.19635859,-0.52030295,-0.37339073,-0.6610869],[-0.18911484,0.5807425,-0.3931502,-0.35992047,0.19167884,0.107894614,-0.35034665],[-0.30906686,0.10427205,-0.1708548,0.64270127,-0.06690356,0.036203638,0.36818498],[-0.43202224,0.11372802,-0.32337222,0.45003918,0.3964415,0.48027653,0.13094209],[-0.19394279,-0.61314553,-0.982793,0.24535689,0.7340253,0.034465324,0.5163571],[-0.08394236,-0.114718884,-1.0960547,-0.13727869,0.5059502,0.4406658,0.71635777],[-0.16832595,-0.03387522,-0.105201766,0.4467705,0.4825295,-0.062805906,-0.23995127],[0.03845694,0.3393674,0.32816932,0.23535535,-0.2891049,-0.26096547,-0.60556257]],"activation":"σ","dense_2_b":[[-0.0046654143],[-0.26616848],[-0.15242769],[0.063154235],[0.06204032],[-0.3036946],[-0.05402751],[-0.11423277],[-0.14205089],[-0.076766774],[-0.13189071],[-0.118149914],[0.022861073]]},{"dense_3_W":[[-0.40607935,-0.36904916,0.37094548,0.46005347,0.35317707,-0.38036,-0.0136696,-0.031072931,-0.4748755,-0.64991397,-0.09883376,-0.51478076,0.4007376],[0.5878066,-0.048418067,0.11663792,0.37321356,0.61102366,0.2959198,0.108360104,-0.11913145,-0.3183053,-0.43023407,-0.4099306,0.11975287,0.29941538],[0.08712033,0.3742091,-0.39980045,-0.22939302,0.5524921,0.33014178,-0.061465893,-0.37761515,0.06954819,-0.040838677,-0.24257697,-0.23456632,0.16012669]],"activation":"identity","dense_3_b":[[0.046470255],[0.030692197],[0.032811448]]},{"dense_4_W":[[-0.89180064,-1.1650615,-0.18752445]],"dense_4_b":[[-0.03583435]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.04 57700-CV000 1B30'.json b/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.04 57700-CV000 1B30'.json deleted file mode 100755 index b17e312325..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.04 57700-CV000 1B30'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.636926],[0.99775106],[0.51730037],[0.04172602],[0.9902031],[0.991702],[0.99406433],[0.98449016],[0.98021054],[0.97221226],[0.9606815],[0.04157153],[0.041613027],[0.04166065],[0.041698292],[0.041637298],[0.04147782],[0.041154478]],"model_test_loss":0.008439864963293076,"input_size":18,"current_date_and_time":"2023-08-08_11-29-58","input_mean":[[23.63399],[-0.070179984],[-0.017329546],[-0.016923679],[-0.06702602],[-0.06750857],[-0.067957565],[-0.07641299],[-0.080450155],[-0.08741072],[-0.08942049],[-0.016724136],[-0.016768401],[-0.01682333],[-0.016932698],[-0.016983371],[-0.017182635],[-0.01732987]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.3281497],[-0.1386229],[0.068819225],[-0.019412158],[-2.451048],[2.45977],[0.072729476]],"dense_1_W":[[-1.0003167,0.059292447,-0.0025035366,-0.07270117,0.03486205,-0.71160764,0.47882712,0.1636013,0.34797484,-0.19271761,-0.08604989,-0.38023552,-0.10472232,-0.03376971,0.4000991,0.3570124,0.33536893,-0.24505846],[0.0052611283,0.84425735,5.585779,-0.021570992,-0.7179723,-0.113942355,-1.1103576,0.15865955,1.2473391,0.06493884,-0.2477255,0.14004384,0.18952657,0.010783735,-0.8468175,0.04784935,0.1129318,0.1958878],[-0.004737935,-0.6588937,0.006123585,0.17500632,0.287176,-0.9833101,0.61836934,-0.025035203,-0.16567795,-0.17453128,0.15334582,-0.41367865,-0.35360122,0.7015716,0.22423786,-0.3394676,-0.035324857,0.023584878],[0.99039614,0.02071242,-0.002529335,0.22897765,0.14088887,-0.9813151,0.72088784,0.18345436,-0.061098445,0.36531118,-0.29483438,-0.48716846,-0.70862526,0.6618173,0.22802202,0.24263938,0.26600027,-0.17759201],[-0.4457454,0.7465454,0.19822481,-0.6893106,-0.33370095,0.08260407,0.112919874,0.64286476,0.47592863,0.36428148,-0.38146886,0.2040808,0.13841604,-0.04391594,0.27622476,-0.19026394,0.16928938,-0.21241508],[0.46304423,0.7735011,0.19910802,-0.52521425,-0.6831936,0.5753077,-0.2356248,0.9027313,0.46573797,0.4141583,-0.48462674,0.341143,0.4956985,-0.6265562,-0.067270085,0.22146614,-0.08455455,-0.10452678],[-0.17997652,-0.048065923,0.0543845,0.7212201,0.35718217,0.16550168,0.57716334,-0.3129087,0.18472067,-0.73616695,-0.7397382,0.020727323,0.18844429,0.37562203,-0.19119298,-0.5826378,-0.62202686,-1.1500102]],"activation":"σ"},{"dense_2_W":[[0.30996957,0.3620612,0.19219857,0.5534441,-1.2349578,-0.41534692,0.35350785],[-0.2175235,-0.029167634,-0.07900721,0.53388363,-0.57290107,0.119387515,-0.16951317],[0.2695079,0.08399006,0.738549,0.2894061,-0.5357801,-0.71563846,0.31262836],[0.38937768,-0.9733951,-0.08894609,-0.013909257,0.24918033,-1.5008242,-0.7839707],[-0.6003588,0.14547037,-0.55455977,-0.48437524,0.39916262,0.56922144,0.22648938],[-0.46998897,0.34172785,-0.30137694,-0.34641954,0.11116893,0.46578008,0.24678849],[-0.78984165,0.46101516,-0.5639303,-1.1220579,1.1517729,-0.4244306,0.31534004],[0.4589919,-0.31986734,0.47596893,0.76536596,-0.051692575,-0.10105569,-0.4216019],[0.0010699058,1.2612101,-1.3807253,-1.1397744,1.6594896,-0.6309603,-0.8039972],[1.2380359,-1.7453684,0.4242525,0.019551069,0.49429622,-1.795323,0.08261984],[0.3972687,-0.8025517,0.60930085,0.07706176,0.076197505,-1.22639,0.18504499],[-0.9094243,-1.7106271,-0.7486791,1.3113708,-1.1184276,0.014299314,-0.34431195],[-0.008385938,0.27393603,0.6410162,0.70163506,-0.66412205,-1.0397469,0.1510303]],"activation":"σ","dense_2_b":[[-0.25120014],[-0.14833862],[-0.2754657],[-0.50557667],[0.13908446],[0.069000565],[-0.07628111],[-0.2187848],[-0.31339166],[-0.4099455],[-0.2503555],[-0.09509195],[-0.39131135]]},{"dense_3_W":[[0.5850583,0.24930371,0.47890794,0.36771303,-0.61603814,-0.48785573,-0.7595788,0.343497,-0.68425894,0.26591393,0.5141339,0.034521252,0.6326022],[-0.15742448,0.05325502,-0.34628916,0.28195977,0.7598076,-0.1799433,0.4802377,-0.044031564,0.3854451,-0.9805936,-0.07348244,0.84516305,-0.49842322],[-0.50455654,0.32130662,0.0916387,-0.09003524,-0.19368353,-0.28112268,0.22840995,0.5315722,0.31819898,-0.25823647,0.23832029,-0.007766277,-0.35535583]],"activation":"identity","dense_3_b":[[-0.10590303],[0.07168751],[-0.014283153]]},{"dense_4_W":[[-0.62888306,0.5515062,0.04721317]],"dense_4_b":[[0.08200853]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.05 57700-CV000 2425'.json b/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.05 57700-CV000 2425'.json deleted file mode 100755 index 5383620d87..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.05 57700-CV000 2425'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.756191],[0.8422167],[0.3935759],[0.03985225],[0.847421],[0.84577143],[0.8438802],[0.8312308],[0.82332045],[0.8139623],[0.8044926],[0.039848723],[0.039851446],[0.039843414],[0.039771948],[0.039651867],[0.03946986],[0.039127663]],"model_test_loss":0.00447295093908906,"input_size":18,"current_date_and_time":"2023-08-08_11-54-31","input_mean":[[21.687302],[0.006407267],[0.018950889],[-0.009187785],[0.005421752],[0.006316563],[0.007847993],[0.013237735],[0.014951903],[0.018369293],[0.020485098],[-0.009148834],[-0.009137076],[-0.009120599],[-0.009176439],[-0.009111171],[-0.008984524],[-0.008785447]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.20498206],[0.14577107],[0.08559532],[-0.36848816],[-0.19730051],[-0.030227017],[-0.2253597]],"dense_1_W":[[2.308543,0.03020248,0.018995002,-0.024404034,0.8007829,-0.5156367,0.10489569,-0.33277398,-0.09787901,0.20294352,0.080392405,-0.31504363,-0.31018522,0.2897744,0.52273995,-0.031090064,0.19173853,-0.22689787],[0.00081780413,0.8643929,3.7596824,0.04694658,-0.97499377,-1.0411439,-1.1665148,0.29043487,1.221662,0.76075923,-0.2100547,0.18282944,0.30418468,-0.4097326,0.0014765597,-0.008321829,0.049456507,-0.028409772],[0.03110457,0.12643631,-0.033637524,0.82713836,0.14466572,-1.1336243,0.21813098,0.0455519,0.22815101,0.16354488,-0.3041193,-0.30829903,-0.19326043,-0.0013841438,-0.11585437,-0.13768283,-0.09550705,0.045170184],[-0.035894755,-0.30930525,-0.024392668,-0.2612936,0.21937297,-0.86915934,0.56173295,0.01745204,0.20141557,-0.32779387,0.061529484,-0.27867725,0.3428134,-0.095910266,0.05310102,0.5960199,0.067442365,-0.3346001],[2.3743505,-0.27000943,-0.024168417,0.15309551,-0.26398262,0.25595742,-0.022308368,-0.039125554,0.19000678,-0.11940631,-0.030037664,0.37605497,-0.33591053,0.050574202,-0.61969125,0.434404,-0.15990326,0.011175081],[-0.0070874724,0.15298845,-0.00084517436,0.2524529,-0.030157164,0.22337195,-0.17864515,0.3122118,0.14113893,-0.0834633,-0.050355904,0.6705104,0.16077328,-0.40681332,-0.06884257,-0.2205331,-0.079806775,-0.28337547],[-0.006012093,0.03713952,0.0051948116,0.14509241,0.31448504,-0.15223765,0.84517163,-0.62974775,-1.0796629,0.020326132,0.12779477,0.07742896,0.16281007,0.89423746,0.21255082,-0.6164101,-0.36238167,0.23721826]],"activation":"σ"},{"dense_2_W":[[-0.08678365,-0.28735358,-0.44816428,-0.67430466,0.49221525,0.5313274,-0.075466506],[0.44214758,0.23506661,-0.07796156,0.14776449,-0.2601569,-0.92744434,0.28036892],[-0.9958226,0.5270989,-0.9116515,-0.4043872,-0.4005815,0.42227224,-0.14791597],[-1.0120796,-0.99568295,0.4510569,0.76626235,-1.3704773,-0.5985419,0.33657166],[-0.1804857,-0.0013589673,-0.24071819,-0.6249834,0.46821326,0.7279164,-0.411145],[0.18040283,0.0071279733,0.62853,0.6653126,0.1514985,-0.036630243,0.4138839],[0.23634094,-0.45010313,0.83803207,0.14591682,-0.47077256,-0.18304086,-0.05127678],[0.4930245,0.24832006,-0.14192279,0.6992845,-0.36574662,-1.0204111,0.3912414],[-0.011458314,0.35960925,0.000741611,-0.6913261,-0.5707353,0.49046513,-0.6306739],[-0.6022925,-0.35062015,-0.29702994,-0.16955367,-0.76008457,-0.11612536,-0.7346027],[-0.52043587,-0.17739458,-0.53521717,-0.75561386,-0.29444557,0.084623955,-0.4924554],[-0.40299603,-0.39608985,0.59452647,0.39619842,-0.681544,-0.9410745,0.25125793],[-0.19426703,0.17029157,-0.7068769,-0.0753074,0.5027616,0.4312823,-0.6993899]],"activation":"σ","dense_2_b":[[0.01738418],[-0.055564888],[-0.11172867],[-0.517177],[0.10449031],[-0.16354589],[-0.02996434],[-0.39060414],[-0.075024545],[-0.30811903],[0.040471796],[-0.15641882],[0.08672954]]},{"dense_3_W":[[-0.35984564,0.46071008,-0.39839146,-0.3249784,-0.0111061195,0.3353518,-0.18329817,0.11267565,-0.12863319,-0.6369906,0.1716676,0.09197707,-0.45575505],[-0.21391304,0.47215983,0.8454924,-0.6340474,0.14945674,0.42495897,-0.47129405,-0.44493976,0.017284637,-0.17222904,0.61577874,-0.025167221,0.5150705],[-0.2882089,0.1130023,-0.5851863,0.5870541,-0.6550108,0.37209293,0.4928965,0.19859159,-0.32288226,0.39181784,-0.39298615,0.5562495,-0.19359553]],"activation":"identity","dense_3_b":[[0.061583135],[0.027594171],[0.048770953]]},{"dense_4_W":[[-0.88079363,0.123071805,-1.1413969]],"dense_4_b":[[-0.05361239]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.06 57700-CV000 2607'.json b/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.06 57700-CV000 2607'.json deleted file mode 100755 index 15385f410f..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA EV6 2022 b'xf1x00CV1 MDPS R 1.00 1.06 57700-CV000 2607'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.371664],[0.8660402],[0.44205353],[0.04006577],[0.8695941],[0.86906177],[0.86788267],[0.8551706],[0.8498503],[0.8475595],[0.84451574],[0.039957225],[0.0399996],[0.040031727],[0.039957136],[0.039866317],[0.039591454],[0.039338887]],"model_test_loss":0.003942334558814764,"input_size":18,"current_date_and_time":"2023-08-08_12-18-48","input_mean":[[24.679834],[-0.0610162],[-0.030723063],[-0.011534694],[-0.052937914],[-0.05447521],[-0.05660855],[-0.067540534],[-0.074050665],[-0.079697154],[-0.08435825],[-0.0114096245],[-0.011442526],[-0.011459501],[-0.011501318],[-0.011486345],[-0.011416641],[-0.011339719]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.0816141],[-0.18171957],[0.44719312],[-0.09176599],[0.3736729],[-0.1810884],[0.12800315]],"dense_1_W":[[-0.0047654295,0.43260875,0.026083717,-0.13993602,-0.56262296,0.23557863,0.2347399,0.2155446,-0.100177564,0.57063645,0.0511386,0.58946824,0.12326792,-0.27978677,-0.34483367,-0.39934745,0.037110258,0.14460585],[0.008695711,-0.11661433,0.063519776,0.11895952,-0.31001577,0.2511811,-0.21447526,0.5321257,0.5065731,-0.103904374,-0.21310645,-0.20680007,0.5116181,0.0080869775,-0.708677,0.11794399,-0.0753133,0.11726266],[0.01728632,-0.5147893,-3.7443237,-0.008262636,0.52203393,0.429946,0.37147424,-0.5823051,-0.6834975,0.38940904,0.3236906,-0.0104796365,-0.044810288,0.52437323,-0.52473974,-0.32590485,0.10339124,0.09157462],[-0.002603426,-0.17195284,0.10924778,-0.077441126,-0.25571346,-1.384354,1.4639283,0.087904915,2.1046076,1.8955059,-1.0389798,-0.030392189,0.28473544,0.12830776,-0.5015701,-0.2827064,0.22205079,-0.32293126],[0.471999,-0.33321312,0.014776426,0.3969741,0.06666081,-0.69879496,0.47338915,0.020157907,-0.435533,0.15537709,-0.08532591,-0.33910295,-0.31417578,0.3437639,0.1030388,-0.1870897,-0.12972718,0.11436254],[0.000637897,0.12112293,0.015960619,-0.32365808,-0.09766896,-0.090567514,0.3855356,-0.2726324,-0.49548095,-0.20762078,0.41708624,0.0070781377,-0.10015481,0.17304403,0.37958065,0.46784183,0.3907835,-0.2139301],[0.44996986,0.1220842,-0.01267547,-0.09012574,-0.17965375,0.73542017,-0.15659401,0.04869948,0.14307545,0.11160313,0.010984089,0.21072775,-0.04606061,0.05491384,-0.4440439,0.32647374,0.19412273,-0.18947527]],"activation":"σ"},{"dense_2_W":[[0.7131255,0.56979114,-0.20163262,-0.76048356,-0.8553241,-0.08986244,0.09411956],[-0.5182983,-0.42607206,-0.1451523,-0.10615285,0.032286465,0.35113242,-0.66459066],[-0.42765474,-0.7001917,0.66741145,-0.17573306,0.3278255,-0.850597,0.24560727],[-0.5889132,-0.8559872,-0.14758717,0.6270137,0.8541969,-0.11721104,-0.7477589],[-0.684439,-0.4758031,-0.026908234,0.817481,0.5295401,0.8627598,-0.7020077],[0.13727106,0.6912117,0.15914854,-0.09929708,-0.47058728,0.41985986,0.46591565],[-0.77461493,-0.48245478,-0.078716494,0.26805362,0.06693142,0.52222615,-0.3683436],[-0.7610143,-0.53920734,1.1778057,0.17035471,1.7079359,0.060867958,0.65265995],[0.5485359,0.21809472,0.089422144,0.18732184,0.13284095,-0.5967669,-0.057103433],[0.5938206,-0.058559667,0.3107985,0.29578283,-0.08403785,-0.4867308,-0.3937628],[0.043648288,0.17193118,0.14474227,-0.38408777,-0.49636945,-0.62368274,0.54162353],[0.44284257,-0.29537362,-0.64413524,-0.2906911,-0.9059539,-0.3265376,-0.47823036],[-1.0017595,-0.69023037,1.7603761,0.15749584,-1.549278,-0.037252687,-2.2732258]],"activation":"σ","dense_2_b":[[0.020199465],[-0.04349766],[-0.35098335],[-0.07552022],[-0.32699242],[0.013798403],[-0.06263833],[0.15603606],[-0.024233129],[-0.0554949],[0.02559489],[0.01943721],[0.043122534]]},{"dense_3_W":[[0.36593956,0.2853892,-0.54242194,-0.042743444,-0.49066496,-0.2595811,-0.05406562,0.006202219,0.27496532,0.35713604,-0.39133155,0.37615958,-0.43270436],[-0.023188023,-0.50453436,0.055650853,-0.14124836,-0.25217998,0.28775543,-0.5941702,-0.69895655,0.12989889,-0.23987368,0.7094374,0.4217381,-0.7861608],[-0.551317,0.49120143,-0.2342702,0.61732894,-0.022938209,-0.44924045,0.13548025,0.32949445,-0.5254622,-0.33368072,-0.47489953,-0.29117772,0.09898376]],"activation":"identity","dense_3_b":[[0.047230996],[0.068798855],[-0.031155106]]},{"dense_4_W":[[0.20761946,0.83402395,-0.8194524]],"dense_4_b":[[0.0384233]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA K5 2021 b'xf1x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101'.json b/selfdrive/car/torque_data/lat_models/KIA K5 2021 b'xf1x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101'.json deleted file mode 100755 index f2947b26a6..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA K5 2021 b'xf1x00DL3 MDPS C 1.00 1.01 56310-L3220 4DLAC101'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.854484],[1.1301922],[0.52762777],[0.03877506],[1.1222172],[1.1249937],[1.1272055],[1.1161014],[1.0981379],[1.0717709],[1.0430657],[0.038641475],[0.038688984],[0.038735364],[0.03873086],[0.03864822],[0.038562547],[0.03838567]],"model_test_loss":0.012177987955510616,"input_size":18,"current_date_and_time":"2023-08-08_13-33-06","input_mean":[[21.915575],[-0.06991629],[0.008433489],[0.007756771],[-0.071591675],[-0.07195356],[-0.07209177],[-0.06747005],[-0.06206288],[-0.055634778],[-0.04844025],[0.0078251595],[0.007823075],[0.007812319],[0.0076907766],[0.00752464],[0.0073143714],[0.007158594]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.6469083],[0.78235936],[0.08529988],[0.17299432],[-0.5838562],[0.1480536],[-2.9458652]],"dense_1_W":[[0.6887408,0.7862894,0.46915615,-0.7615858,0.18839829,0.28929535,-0.49877065,0.5568004,0.91740584,0.35415035,-0.18235375,0.013719181,0.5743932,0.19287096,-0.3434696,-0.024053648,0.064986974,-0.055624507],[0.7481552,0.44785875,-0.39244938,-0.5366956,-0.46786323,-0.1834816,-0.9788827,0.03859454,-0.30279753,-0.08496807,-0.3507284,0.19772953,0.36484724,-0.31819546,0.22478342,0.37129864,-0.10703407,0.08960236],[-0.0018834132,-0.78730613,0.00020844977,0.13114999,-0.22980459,-0.8770316,0.9075459,0.038643394,-0.19233434,0.0454518,-0.097979,-0.58106935,0.1089662,0.51069635,-0.056984548,0.02036188,0.28987607,-0.26365396],[0.8899782,-0.058186773,-0.002375113,-0.22645739,0.46521798,-0.80593467,0.43126416,-0.41846383,0.24639922,0.16433802,-0.10675408,-0.23226354,0.006861831,0.14686735,0.547673,0.004610249,-0.090327084,-0.08441118],[1.2577723,0.41239512,-0.0039192457,0.039716844,-0.14862831,0.2655834,-0.34833747,-0.019234447,-0.16249205,0.07985215,-0.018647766,0.07292356,-0.3869771,0.3235518,-0.2897348,-0.10409623,0.37779024,-0.16593073],[-0.08166623,-1.599451,-5.784969,0.3708807,0.18732668,-0.1005467,0.7795171,-0.76319546,-0.52485704,0.82277596,1.2727301,-0.9839783,-0.13048978,0.18545102,0.13665888,0.013392682,0.037149593,0.32225874],[-0.8011789,1.2479645,0.45739445,-1.1320211,0.014393064,0.8998146,-1.3779738,0.7481604,0.5442367,0.41216576,-0.12928943,0.5111585,0.6192922,-0.19101119,-0.14709279,0.099627435,-0.20379099,0.1167656]],"activation":"σ"},{"dense_2_W":[[-0.39168912,0.12821183,-0.5745629,-0.2955745,-0.32214537,-0.48573247,-0.0049454668],[0.045028664,0.24872321,0.86677504,0.6680555,-0.5444451,-0.44519505,-1.0166295],[-0.6287411,-1.0502021,-0.37122965,-0.1330107,-0.16224831,-0.016187359,-0.22554144],[0.14796557,-0.2989984,-0.99244916,0.122506104,-0.020859987,-0.22429037,-0.38963094],[-0.3986394,0.42711204,-0.84266853,-0.03070883,-0.33096692,-0.56852376,0.6374697],[0.41194984,-0.27822644,-0.97238785,-0.66755277,0.60301566,0.10326954,0.7110429],[-0.43703943,-0.066251904,0.36446202,-0.4253811,0.092789024,0.01931588,-0.1531331],[-2.0546894,-2.0581992,0.060728226,-1.9572034,-1.0979232,1.7699203,-0.25269505],[-0.6677076,-0.65859634,-0.6190105,-0.66367626,0.07593136,-0.723147,-0.792268],[0.11594589,0.028933136,-0.51343495,-0.74736786,0.6151048,-0.40659943,0.320618],[-0.8179273,-0.39457303,0.65922356,0.2230339,-0.1805746,0.24354604,-0.45367607],[0.13779806,0.3070163,-0.083634906,-0.6793103,-0.31604096,-0.2882177,-0.05156203],[-0.5967588,-0.3445199,0.49922496,0.72002596,-0.2383223,-0.07767089,-0.014663982]],"activation":"σ","dense_2_b":[[-0.020715965],[-0.1509274],[-0.22611032],[-0.23432997],[-0.08001996],[0.011014631],[-0.13749276],[-0.13827106],[-0.27956584],[0.020674339],[-0.114044055],[-0.033070605],[-0.067024864]]},{"dense_3_W":[[-0.56229556,0.37780973,-0.28346238,0.006381281,-0.427774,-0.63294375,0.19204108,0.59055233,-0.13668692,-0.71561706,0.49993688,0.2800797,0.37756824],[0.45251364,0.53362393,0.4679781,-0.29337665,-0.3235545,-0.07848005,0.058482118,0.10375023,0.27879906,-0.3273172,0.57563937,-0.4281684,0.54832417],[-0.07654791,0.19594347,0.14752778,0.0811722,0.35966474,-0.45563278,-0.40835533,0.9917353,-0.05505701,-0.18214287,0.28810912,-0.64292353,0.5321835]],"activation":"identity","dense_3_b":[[-0.027110294],[-0.04791606],[-0.03029678]]},{"dense_4_W":[[-0.9615104,-0.5668664,-0.5576843]],"dense_4_b":[[0.032777302]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4000x00 4DEEC105'.json b/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4000x00 4DEEC105'.json deleted file mode 100755 index 31b7512c4b..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4000x00 4DEEC105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.385439],[1.5132291],[0.5865538],[0.05131345],[1.5001018],[1.504909],[1.5081477],[1.4920704],[1.4653914],[1.4241073],[1.3771554],[0.051144965],[0.051199757],[0.051243976],[0.051260624],[0.051153995],[0.050753817],[0.050118044]],"model_test_loss":0.009958313778042793,"input_size":18,"current_date_and_time":"2023-08-08_14-53-23","input_mean":[[20.6522],[0.019880848],[-0.0015674612],[-0.009201578],[0.020643277],[0.020050274],[0.019826038],[0.018546505],[0.019691756],[0.02080321],[0.01971522],[-0.009233499],[-0.009218388],[-0.00920795],[-0.009186053],[-0.009161949],[-0.009261446],[-0.00937544]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.0022040606],[-0.45466518],[3.0495393],[0.1841935],[-0.07598528],[-0.049344935],[-2.8103917]],"dense_1_W":[[-0.043426234,-0.47749293,-0.02466255,0.26999012,0.29533443,-0.85174936,0.46759945,-0.18788536,-0.0090048555,-0.02694799,0.074940585,-0.17094204,0.2226856,-0.06197424,-0.06083671,0.5117093,0.3611478,-0.38309807],[0.0601729,-0.32238936,-0.0061821314,0.048993003,-0.119464226,-1.3493574,1.2128321,-0.24819785,0.09360174,0.017154751,-0.0945332,-0.31525713,-0.2354354,0.57461387,0.36087188,0.13730818,-0.27768645,0.046786904],[1.042279,1.1418763,0.38546368,0.38151142,-0.26414976,0.71848893,-1.2714393,0.41527608,0.8832226,-0.2916028,-0.11199533,0.6145823,-0.26009154,-1.2898295,0.5483713,0.22604805,-0.12541296,-0.10260658],[0.028834756,-0.7402766,0.042994425,0.13127239,0.82102907,-0.27223384,1.2230023,0.047152817,-0.7632143,0.07432769,0.35270634,-0.6807149,-0.39266413,-0.19658811,0.21255049,-0.20994696,0.0052200574,-0.28414842],[-0.03333096,-0.6419931,0.027721735,0.36765352,0.11669098,-1.0186125,0.45446727,0.2501265,0.030704029,-0.33163616,0.05462923,-0.61002415,0.079051115,0.4292307,-0.07177714,-0.19314681,0.12356582,-0.008606654],[0.015638076,-1.2189353,-4.177184,-0.15027538,0.59214276,-0.23344256,0.7318988,0.45370457,-0.88853407,-0.5243129,0.94887865,-0.35619122,-0.30369094,0.002676145,0.34892917,0.4637993,-0.02337859,-0.06700445],[-1.0455103,0.6458623,0.38122165,0.5683208,0.20575817,0.32748055,-0.7285804,0.36887115,0.49960437,-0.09581171,-0.014829534,0.14658736,-0.017480083,-0.75519586,-0.19585466,0.30125234,0.086563274,-0.15215997]],"activation":"σ"},{"dense_2_W":[[0.35791105,-0.14427873,-0.5609901,-0.12562588,0.58622676,-0.07395914,0.06280237],[0.29988632,0.0102157295,-0.4695938,0.1638178,-0.4523483,-0.34046823,-0.16422306],[-0.51069945,-0.63829863,0.4701338,0.068921834,0.11567098,-0.69826823,0.54002196],[-0.79609793,-0.9238868,-0.09042327,-0.31421772,-0.79002506,0.6459851,-1.3542271],[0.22355427,0.4964034,0.26008382,0.16483073,0.51995987,0.2259448,-0.6673576],[0.55433714,0.53631747,-0.24075024,0.49828082,0.21127781,-0.020997947,-0.054750577],[-0.5900872,-0.21735254,-0.0059305774,-0.6136997,-0.5256363,-0.2422479,0.9974833],[-0.16341521,-0.93104196,0.9141925,-0.5388812,-1.0119808,0.5274667,0.69387174],[-0.5459448,-0.6007257,0.129759,0.08534032,-0.6757581,0.08227118,-0.34070605],[-0.7405544,-0.68379045,0.5396067,0.05680183,-0.7028731,0.2363397,0.033819582],[0.6035027,0.40737432,-0.60496193,0.078725085,-0.14720674,0.38410118,-0.4465598],[0.63455087,-0.0047353907,-0.31880525,0.14844397,0.070003085,0.56770957,-0.025018206],[0.44256854,-0.6075469,0.81187916,-0.13535014,-0.39242724,-0.65649754,-0.16534975]],"activation":"σ","dense_2_b":[[-0.09462253],[-0.12638599],[0.058491252],[-0.14447154],[-0.13812666],[-0.1805173],[0.123461604],[0.089515485],[-0.19189687],[0.06357807],[-0.111211635],[-0.15331227],[0.31715086]]},{"dense_3_W":[[0.20542404,0.28171518,-0.15866286,0.11350425,0.4895743,0.3516957,-0.48876178,-0.7698101,-0.42093396,-0.25786847,-0.09865759,0.4434046,0.0078012934],[-0.21756878,0.12013417,0.38058028,0.51441383,-0.5845196,-0.095519304,0.5266495,-0.03282074,-0.25921062,0.4537682,-0.58191466,-0.35777017,0.61608887],[0.5017704,0.21205097,-0.3583318,-0.32390872,0.2300428,-0.023676097,0.39568096,-0.45662916,-0.34641036,0.13468637,0.2221489,-0.5345382,0.43819726]],"activation":"identity","dense_3_b":[[-0.069445506],[0.069069415],[-0.08497246]]},{"dense_4_W":[[-0.87340665,0.89448696,-0.035979144]],"dense_4_b":[[0.06572075]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4100x00 4DEEC105'.json b/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4100x00 4DEEC105'.json deleted file mode 100755 index 825d921373..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020 b'xf1x00DE MDPS C 1.00 1.05 56310Q4100x00 4DEEC105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.397211],[1.1705283],[0.5805502],[0.03463821],[1.170059],[1.1703928],[1.1692861],[1.1415536],[1.1109211],[1.0685993],[1.0272604],[0.034454443],[0.034516428],[0.034570444],[0.03471502],[0.034645453],[0.034350075],[0.03395382]],"model_test_loss":0.00880099181085825,"input_size":18,"current_date_and_time":"2023-08-08_15-18-22","input_mean":[[18.077564],[-0.0021696435],[-0.009493895],[-0.00854008],[0.0008538185],[0.0005043035],[-0.0007781019],[-0.0034785918],[-0.0073397853],[-0.013359681],[-0.020281872],[-0.008589204],[-0.008590469],[-0.008597665],[-0.008717762],[-0.008793198],[-0.008924687],[-0.0091278395]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.14579934],[-0.14519477],[-3.863266],[3.8427587],[0.04578299],[0.26524872],[0.043028243]],"dense_1_W":[[-0.0036881375,-0.7376499,0.04573843,0.29232818,0.15998328,-1.1800053,0.7352752,0.4613827,-0.3654027,-0.05274166,0.008809302,-0.61651105,-0.19563314,0.30206302,0.48970523,0.70374197,-0.13464865,-0.34472147],[0.0448257,0.74444777,3.2913778,-0.3223886,-0.6795882,-0.048044868,-1.4441773,-0.44268838,1.1609985,1.1341279,-0.6441928,0.8005167,-0.016733218,-0.2582139,0.16986738,-0.40873948,-0.0124958,0.2744736],[-1.4770237,1.2707175,0.45410442,0.4337624,-0.21555193,0.30369025,-0.48256037,0.6929506,0.1363345,0.21567695,0.062066473,0.29594067,-0.016186427,-0.10937184,-0.69198745,0.013495664,-0.49616784,0.4540782],[1.4769372,1.6837573,0.44657153,0.3844198,0.055160612,0.5586182,-1.2392403,0.45482898,0.2477672,-0.08027943,0.28896198,0.13463345,-0.13796607,0.4082866,-1.1263032,0.29988325,-0.50733644,0.42053643],[-0.18178491,-0.9996767,0.046967883,-0.20623134,-0.1303795,-1.4485639,1.2343187,-0.1420455,0.15228446,0.3398408,-0.43701938,-0.09172013,0.17285657,-0.29155666,0.23236762,-0.0009749657,0.069472015,0.017742855],[1.9397535,-0.1242461,-0.09390661,0.22746196,0.65666324,-0.017458677,1.3508519,0.7675915,-0.09389921,0.36527961,-0.014139866,-0.10747237,0.61991864,0.2315784,-0.45759675,-0.15266441,-0.6211227,0.3915748],[-0.018558232,0.32297674,0.12868294,-0.767525,0.06287016,-0.07393509,-0.90018725,0.67280954,0.26545826,-0.15014802,-0.2787869,0.10362763,0.010670472,-0.5394097,0.79302734,0.7212029,-0.006213169,-0.43942323]],"activation":"σ"},{"dense_2_W":[[-0.9424259,0.5383402,0.90808415,-0.23045784,-0.757859,-0.16473587,0.23173162],[-0.15289421,0.38641956,-0.17613852,0.17639944,0.20112754,-0.08048493,0.6478715],[-0.3414318,0.026470331,0.50385565,-0.69266576,0.21662991,-0.18625331,-0.6141596],[-0.64374024,0.15664189,0.7064422,0.40667814,-1.746435,-1.2451849,0.22172058],[0.19559817,0.20769882,0.0077794413,-0.63236123,0.5809092,0.55333596,-0.22226444],[-0.06922767,-0.40762365,0.13696685,-0.70997673,0.5166103,0.19697687,-0.35657585],[0.62951344,-0.5005433,-0.6374106,-0.37252572,0.27152944,0.120718695,0.22742479],[-0.6968117,-0.07335819,0.61275095,0.35386997,-0.4375137,0.3337331,0.14570476],[-0.4349244,-0.14802983,0.19549963,0.40037483,-0.7249839,0.20111199,0.65657336],[0.62348944,-0.4536519,-0.17162655,-0.8989549,0.3261032,-0.54278314,-0.5373072],[-0.560637,-0.25253636,-0.021217873,0.12173196,-0.5342579,0.10775077,0.17879365],[-0.13053471,-0.44042438,-0.16759785,0.37813523,-0.47821322,0.32358372,-0.85976815],[0.71070844,-0.48786935,-0.80289835,0.453067,0.36268723,0.4134905,-0.7282149]],"activation":"σ","dense_2_b":[[-0.35494593],[-0.07334628],[-0.24927561],[-0.2947056],[-0.008191638],[0.014220917],[0.045416523],[-0.05121714],[-0.049447175],[-0.03848008],[-0.05180068],[-0.05216243],[0.12374667]]},{"dense_3_W":[[0.047790118,0.27769247,0.5402979,0.43852547,-0.1079715,0.5151454,-0.28413603,0.36645323,0.54276174,0.2656338,-0.01668038,0.35102823,-0.39181972],[-0.29544407,-0.32329983,-0.4288008,-0.20716709,-0.46158203,0.183949,0.49660423,-0.11650807,-0.65825564,0.3827715,-0.5592475,-0.30018342,-0.18621238],[-0.21135932,-0.095152944,0.2985688,-0.35737342,0.48794743,0.52512395,0.48139963,-0.43845367,-0.67661566,0.5103034,0.08317309,0.37826058,0.3123688]],"activation":"identity","dense_3_b":[[-0.020624995],[0.021909116],[-0.0076635494]]},{"dense_4_W":[[0.28056747,-0.27962217,-1.0827732]],"dense_4_b":[[0.0051891515]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2019.json deleted file mode 100755 index 38e5fcf3bd..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.316835],[1.3095051],[1.0337898],[0.036481883],[1.4656641],[1.4189432],[1.3673624],[1.186987],[1.1331091],[1.0980399],[1.0884928],[0.03714614],[0.03689554],[0.03668804],[0.03629855],[0.036578406],[0.036640365],[0.036640473]],"model_test_loss":0.010191518813371658,"input_size":18,"current_date_and_time":"2023-09-02_05-46-53","input_mean":[[15.765028],[0.016704094],[0.8253681],[-0.018551834],[0.0161312],[0.018667452],[0.018879415],[0.011466884],[0.024275666],[0.019936267],[0.025728673],[-0.018568791],[-0.018556552],[-0.018561324],[-0.01832107],[-0.01819993],[-0.018170435],[-0.017576592]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.32030553],[-0.44030616],[-0.148952],[-0.02167373],[-0.19297738],[-0.5169743],[-0.1770638]],"dense_1_W":[[-0.007737738,-0.99422234,-0.034771074,0.12463431,-0.44775382,-0.82441384,0.8120246,0.39558184,-0.08208208,-0.23790717,0.13854492,-0.35261232,0.2457002,0.28888467,0.06925625,0.06105845,-0.14821048,0.107533954],[1.3339429,-0.13082603,-0.019043105,-0.023946976,-0.8637906,-0.60042715,0.86515206,-0.14659251,0.42036998,0.22912209,-0.41044295,-0.3358372,-0.27527428,0.66332656,0.40219405,-0.32527128,-0.013785728,0.036081836],[0.038707253,-0.5486137,-0.020425517,-0.1048983,0.76533777,-0.12729818,-0.39131224,0.1432435,-0.2479908,0.09698657,0.059673753,0.37905008,0.22068103,-0.5984838,-0.021788964,-0.20137078,0.19989464,0.011386371],[-0.0005377785,-1.626023,0.014272335,0.35176843,2.007245,2.9080265,2.833754,-3.6938229,-1.5402598,-0.2808591,0.53739095,-0.05241689,-0.37616622,-0.22666292,0.34943548,-0.22642688,0.671277,-0.53848034],[-0.060603973,-1.7406929,0.044681583,0.30462697,0.81336474,0.3294149,0.94690406,-0.7220944,0.038787086,-0.110932425,0.29978025,0.3340294,0.097162254,-0.65183747,-0.14593266,0.18223895,-0.41430587,0.27231583],[0.6866103,-0.20675205,-0.008971864,-0.08271559,0.51373845,-0.59504503,-0.028739108,-0.01990747,-0.023005802,-0.23189393,0.16085576,-0.050083302,0.2854166,-0.17596366,-0.16408251,0.23354928,0.27060062,-0.20318592],[1.1686878,0.124509655,0.020137059,-0.0041627684,0.70473355,0.21293509,-0.2924701,-0.11603153,-0.26426125,0.0057812296,0.20993786,0.2904828,0.12312651,-0.4460388,-0.06700564,-0.17043492,0.16500446,-0.016062014]],"activation":"σ"},{"dense_2_W":[[-0.4900633,-0.54592615,-0.527382,0.12028304,-0.54894257,0.27355847,0.31364885],[-0.32254124,0.08293343,0.35285667,0.554822,0.10410332,0.5597751,-0.2383367],[-0.24240835,-0.2615861,-0.4423311,-0.5210761,-0.64304876,0.05002648,-0.30079335],[0.3660343,0.25507227,0.2009346,0.20860061,0.50754935,-0.17693439,-0.75036037],[0.017052304,0.2941397,0.48104966,-0.15767454,0.09076614,0.4001092,-0.383107],[0.5902993,0.07642233,0.042343333,0.3176652,0.051399287,0.06696487,-0.8254014],[0.5891686,-0.1186497,0.3283763,-0.2719375,0.4032117,0.4197208,-0.3724789],[-0.68634295,-0.52495784,0.17351876,-0.35263985,0.06430874,0.027971778,0.6754105],[0.20389055,-1.0025079,-0.5531749,-0.13745287,-1.0573874,-0.75676477,-0.5205683],[0.20552444,0.012774647,-0.54596126,-0.8671801,0.06615193,-0.75334895,0.015773846],[-0.33991626,-0.42872685,0.20969433,-0.02223333,-0.8523562,-0.26464137,0.6920498],[0.20529774,0.58902216,0.031505145,-0.1747456,0.41559178,0.5189576,-0.7233773],[-0.009052229,-0.5893052,0.17319442,-0.64532185,-0.79119825,-0.11295332,1.4095422]],"activation":"σ","dense_2_b":[[0.12995131],[-0.034807533],[-0.13722797],[-0.16153306],[-0.04602981],[-0.083130985],[-0.08390648],[0.071044385],[0.08433932],[0.04963225],[0.21911931],[-0.17281601],[0.68126506]]},{"dense_3_W":[[0.5093516,-0.5465462,0.15503123,-0.35234037,0.49185485,0.30204552,-0.5992861,0.0021642335,-0.05107888,0.26263082,-0.18888572,0.12664975,0.13551807],[-0.5860282,-0.09242898,0.1262402,0.32523513,0.379274,0.6664111,-0.3863529,-0.53702825,-0.08325101,-0.26101434,-0.31930283,0.4272874,-0.026482869],[-0.3292326,0.3132907,-0.25563857,0.3411082,0.20792365,0.07308729,0.4294356,-0.6729368,-0.48279455,-0.4198804,-0.2859276,0.60702205,-0.5340056]],"activation":"identity","dense_3_b":[[-0.0040983167],[0.007357109],[0.007665874]]},{"dense_4_W":[[0.24334429,-0.71678704,-1.1551462]],"dense_4_b":[[-0.0067243]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA SELTOS 2021 b'xf1x00SP2 MDPS C 1.00 1.04 56300Q5200 '.json b/selfdrive/car/torque_data/lat_models/KIA SELTOS 2021 b'xf1x00SP2 MDPS C 1.00 1.04 56300Q5200 '.json deleted file mode 100755 index 7a38f06d90..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA SELTOS 2021 b'xf1x00SP2 MDPS C 1.00 1.04 56300Q5200 '.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.5049157],[1.2475282],[0.53859144],[0.048527],[1.2465597],[1.247301],[1.2471614],[1.2284999],[1.2013417],[1.1699766],[1.1366358],[0.04837552],[0.04840895],[0.048440192],[0.0483831],[0.048159745],[0.047685053],[0.047009286]],"model_test_loss":0.0057355728931725025,"input_size":18,"current_date_and_time":"2023-08-08_16-34-39","input_mean":[[22.57612],[0.051288225],[-0.016445091],[-0.009996599],[0.056181632],[0.055123083],[0.054446794],[0.046347804],[0.039804146],[0.03435145],[0.029239772],[-0.010040664],[-0.009997898],[-0.009956628],[-0.009932108],[-0.009981547],[-0.010063302],[-0.0102707045]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0029297848],[1.8960894],[-0.7305671],[-0.6444308],[0.08400337],[-0.044434916],[-2.0828273]],"dense_1_W":[[-0.013393204,-1.2459188,-5.89612,0.48348445,0.71024114,0.761591,0.62751406,-0.5100544,-1.1702846,-0.5760703,0.9551647,-0.38647708,0.02746218,0.30091053,-0.4128432,0.65483654,-0.22607383,-0.17742366],[0.88628805,-0.8472278,-0.16042891,0.12056248,0.8128825,-0.3501976,-0.112867065,-0.14086482,0.22233468,0.18555838,-0.11159323,-0.56888944,-0.008235887,0.28833345,0.2616878,-0.03133189,-0.023425877,-0.10819697],[0.55932784,-0.50783956,0.016862486,0.021586508,-0.052158702,-0.2640505,0.36748064,-0.10141347,0.11880612,-0.01899467,-0.04536525,-0.03297897,-0.48517683,0.29445776,0.30262306,0.15327907,0.21546906,-0.23894748],[0.57508934,0.10616214,-0.02150118,0.15490909,-0.22505246,0.33355552,0.17564031,-0.078227825,0.33327138,-0.21566688,0.049708415,0.46191642,0.18780328,-0.89038825,-0.059960928,-0.12284671,-0.03831184,0.07615082],[0.006142582,-0.41586003,0.28906634,-0.39670786,-0.15463385,0.5797065,-0.07188739,0.0075380234,0.42778745,0.18411557,-0.22944504,-0.24470419,0.035731394,-0.13284975,-0.056895383,0.2658999,0.09685396,-0.004589674],[0.00045123146,-0.30300197,0.024411071,-0.32110432,0.007924963,-0.95534456,0.3975994,0.30021676,0.20445354,-0.2845605,-0.024686944,-0.15269357,0.010459293,0.06211917,-0.14940602,0.09413633,0.12700596,0.20926088],[-0.8864738,-0.91397375,-0.17195456,-0.099857494,0.64577985,-0.28100497,0.023341348,-0.11484865,0.3246616,-0.009700837,-0.04576229,-0.20125109,0.07292384,0.11487104,-0.019341417,0.3695137,-0.4571989,0.14654264]],"activation":"σ"},{"dense_2_W":[[0.16676657,0.044276875,-0.42283165,0.71878445,0.40764466,-1.0148888,-0.33971024],[0.69733125,-0.44017676,0.32185918,-1.5657734,-1.1737024,0.6366674,0.6671088],[-0.022854185,-0.71255684,0.2196965,-0.3687845,0.040978383,0.062146485,-0.22804913],[-0.28942934,-0.23564734,-0.42564517,-0.039671488,0.365399,0.20703237,-0.597828],[0.0347196,-0.07633118,0.58261573,-0.15203993,-0.91041917,0.7339944,0.48777974],[-0.32692164,-0.6838728,-0.25992492,0.6972931,0.53116393,-0.5526861,-0.030371524],[-0.2410249,-0.45013347,0.20631957,-0.15482004,-0.44667387,-0.76256126,-0.19490236],[0.3978247,-0.10121961,-0.5776459,0.7954871,0.22263652,-1.0624558,-0.46528906],[0.2895336,0.9195127,1.048547,-0.32349822,-0.8403002,0.08939599,0.22750446],[-0.41278213,-0.17696421,1.0299006,-0.5467821,-0.47607332,0.9951936,0.687682],[-0.009069157,-0.6828468,-0.22575156,0.52762353,0.37542656,-0.6015784,-0.07695309],[1.2645018,1.0877368,1.2602909,0.12577315,-0.3815145,0.06697079,-0.4439591],[0.28825867,-0.43880102,0.0008854993,-0.21242517,0.37472376,-0.21022174,-0.71526283]],"activation":"σ","dense_2_b":[[-0.0043339795],[-0.7411984],[-0.3235559],[-0.0028266062],[-0.30525705],[0.09933733],[-0.28506866],[-0.12051076],[-0.2798327],[-0.34464663],[0.04831867],[-0.31347185],[-0.0137135675]]},{"dense_3_W":[[0.48027906,-0.34028012,-0.5646587,0.106692836,-0.03532492,0.63961244,0.66511965,0.54406637,0.21516123,-0.17382753,0.376983,-0.55481,-0.113014586],[-0.6947742,0.5437955,-0.26280165,-0.6517489,-0.17782186,-0.09640967,0.45545045,0.11279408,0.322814,-0.40994444,-0.68243754,-0.049466625,0.17386594],[-0.2016882,0.33245435,-0.22961138,-0.045353495,0.5742978,-0.75247186,0.120317265,-0.09858627,0.5166808,0.6125953,-0.088035,0.14460035,-0.23711456]],"activation":"identity","dense_3_b":[[0.04315742],[-0.025058303],[-0.06259806]]},{"dense_4_W":[[0.5995295,-0.25079918,-1.226213]],"dense_4_b":[[0.054296162]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.04 56310R5030x00 4MQDC104'.json b/selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.04 56310R5030x00 4MQDC104'.json deleted file mode 100755 index e58a0a3add..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.04 56310R5030x00 4MQDC104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.828237],[0.97600704],[0.4089475],[0.035214473],[0.9679743],[0.970265],[0.9714391],[0.9529998],[0.93442535],[0.907574],[0.87835944],[0.035107806],[0.035135653],[0.035162415],[0.03512646],[0.0350294],[0.03484094],[0.034691963]],"model_test_loss":0.010908995755016804,"input_size":18,"current_date_and_time":"2023-08-08_17-24-46","input_mean":[[23.668701],[0.043239903],[-0.008454303],[-0.0006616455],[0.05023332],[0.0483886],[0.046359282],[0.042707],[0.038750947],[0.031606093],[0.023638321],[-0.0005428065],[-0.00058967434],[-0.00064167456],[-0.0007974575],[-0.0008222639],[-0.0008730811],[-0.0009429487]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.07139598],[2.2307112],[-0.22793715],[0.028497862],[-1.4758755],[-2.2683609],[1.7139114]],"dense_1_W":[[0.05402334,0.7879195,4.0841537,-0.56412846,-0.06755307,0.16052529,-0.98961514,0.082657665,-0.29167134,0.3808659,-0.24588543,0.27139375,-0.021965634,0.08988655,0.5314556,0.022917956,-0.28474882,0.16892314],[0.040134925,0.9678868,0.2435498,-0.22607546,0.26583675,0.16535611,-0.29292968,-0.06048666,0.3677877,0.12361147,-0.06213637,0.23552014,0.001912692,-0.086550094,-0.35551274,-0.057126056,0.035038613,0.025732724],[-1.2022591,-0.2863651,0.33088538,0.5872443,0.15807754,-0.37816197,0.79342896,-0.52512366,-0.14498816,-0.047592632,0.23991925,-0.3639295,-0.25689954,-0.12431776,0.17954038,0.04690324,0.27545586,-0.3235991],[-0.0032510161,-0.90251637,0.0055037816,-0.046377614,-0.15268828,-0.56092745,0.54981595,0.039801016,-0.04936413,-0.0055981306,-0.071823165,-0.70809287,0.013437283,0.69162565,0.26313534,-0.058428794,0.08031778,-0.09614916],[-1.5630318,0.17789239,0.4537161,-0.0041152863,-0.39420608,-0.15796205,-0.7327813,0.66765463,0.4993053,0.405701,-0.65776676,0.3633854,-0.38824862,-0.53840584,0.27669683,0.48978165,-0.033090215,-0.2082885],[-0.029351536,0.9172641,0.2475216,-0.3134773,0.17839907,0.2644386,-0.063878715,-0.15182072,0.32643992,0.184796,-0.05073872,0.13546649,0.33546865,-0.20729195,-0.36180612,-0.11467291,-0.092137635,0.1431712],[-2.7309752,0.47239518,-0.8031595,-0.45335308,-0.5626998,0.3833318,-0.09541673,-0.21970436,-0.67134327,-0.43375826,0.4113513,0.43214273,0.17258164,0.00038695108,-0.27933037,0.2652092,-0.11726535,0.14931515]],"activation":"σ"},{"dense_2_W":[[0.18113254,0.2362841,0.23913723,0.4250595,0.41874975,-0.14176264,0.07982823],[1.2559026,-0.04362239,-1.9165045,-3.4750113,2.4915068,3.245088,0.7472181],[0.21553496,-0.15909076,0.1990112,0.06815371,0.40578955,-0.74799186,-0.40865952],[-1.270139,-0.5704174,0.013024697,-0.17953704,-0.36550337,-0.51389843,-1.1189383],[-0.4607257,-0.24294525,0.30119574,0.51511997,-0.5896765,-0.38873392,0.4903248],[0.27587494,1.3980604,0.41343182,-0.55864316,0.13226879,0.41889343,-0.025503036],[-0.11382582,-0.72006303,0.31443623,0.47339836,-0.05456861,-0.45569026,-0.44168296],[-0.14633095,-0.86015487,0.18689813,-0.007913177,-0.68155503,0.0981196,-0.20697698],[0.21121454,0.07270005,-0.47414,0.14561962,-0.47502828,-0.058896564,-0.30503902],[1.5235077,4.3672147,-1.9797657,-2.1577153,0.08651692,0.56285816,0.7441386],[-0.35447982,-0.2280675,0.2248906,0.69576144,-0.19720139,-0.035972144,0.23887096],[0.5307749,0.8708496,-0.9982855,0.06719293,0.5508931,-0.3601659,1.1098136],[0.41608205,-0.9552457,-0.7181348,0.54820853,-0.20942546,-0.0229672,-0.61255497]],"activation":"σ","dense_2_b":[[-0.09698142],[-1.4033747],[-0.07078607],[-0.105896965],[-0.032276735],[0.039644904],[-0.049273986],[-0.123684354],[-0.19865851],[-1.3548915],[-0.040826697],[-0.2473369],[-0.1898357]]},{"dense_3_W":[[-0.07364597,-0.28819343,0.33614686,-0.11555612,0.54371834,0.06078414,0.25967473,0.16326325,0.052277688,-0.2328434,-0.1264749,-0.36707604,0.6011789],[-0.4987282,0.21116212,-0.041836318,-0.45521593,-0.2570767,0.5502648,-0.13099706,-0.33858767,-0.0388845,0.24381347,-0.45033324,-0.28740764,0.032078497],[-0.360317,0.73834044,-0.30889666,0.7047129,0.37393212,0.31944397,-0.13176474,0.18058318,-0.22899523,0.7277826,-0.43414494,-0.6223405,0.1327134]],"activation":"identity","dense_3_b":[[-0.07107471],[0.075273246],[0.038589373]]},{"dense_4_W":[[-0.73965013,0.41693646,0.8098712]],"dense_4_b":[[0.070436954]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.05 56310P4030x00 4MQHC105'.json b/selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.05 56310P4030x00 4MQHC105'.json deleted file mode 100755 index da245a1a09..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN b'xf1x00MQ4 MDPS C 1.00 1.05 56310P4030x00 4MQHC105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.360649],[0.8416322],[0.33437338],[0.04986401],[0.8348178],[0.83668405],[0.8381006],[0.8281648],[0.8175133],[0.80145794],[0.7849904],[0.04949942],[0.0495519],[0.04959984],[0.049575604],[0.049440794],[0.049178783],[0.048773665]],"model_test_loss":0.011909223161637783,"input_size":18,"current_date_and_time":"2023-08-08_19-02-44","input_mean":[[18.798538],[0.060060456],[0.0042254925],[-0.01005732],[0.061129835],[0.06208465],[0.06287847],[0.05924524],[0.053896163],[0.050247815],[0.048835788],[-0.010078115],[-0.010027372],[-0.009984768],[-0.010235178],[-0.010460788],[-0.010615164],[-0.010720316]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.3711772],[4.0384655],[-0.60371107],[-0.021517932],[0.059795618],[0.014027763],[0.6545455]],"dense_1_W":[[-1.7019469,0.01004788,1.2882278,-0.38348064,0.12244237,1.0539651,0.010641099,0.41091317,0.3839485,0.36134282,-0.18248878,0.036194474,0.5019625,-0.4913562,-0.25413185,-0.011724185,0.1496672,0.11843239],[1.7626301,0.23605797,1.3201638,-1.0663824,0.2729441,0.6596989,-0.081463575,0.61732155,0.33063596,0.53841823,-0.3461883,0.6325652,0.09249081,-0.21124457,-0.2544897,0.28014565,-0.013723431,0.19491264],[0.27358976,-0.88453114,-0.03890136,0.48175734,-0.016419638,-0.97174513,0.2863007,0.3938403,0.11718968,0.18793224,-0.29152203,-0.6642347,0.14523181,0.30439466,0.17772515,0.17078802,-0.075555354,0.038167004],[0.04198796,-0.43382403,1.6559426,0.09345928,0.6753657,-0.4891842,0.44554886,0.011966843,-0.26713324,-0.09224718,0.20697893,-0.8472049,0.14456306,0.44531605,0.005752212,0.19066374,0.34522521,-0.41704535],[-0.3430911,-0.33624044,-0.03918591,0.4145386,-0.37784162,-0.32403097,-0.3204265,0.19870447,0.10699937,0.0043252283,-0.15599932,0.11689893,-0.06691096,2.8774783e-5,0.07241905,-0.3570826,0.23487402,0.17241248],[0.02902531,0.22444873,2.0474432,-0.046874467,-0.318975,0.12265587,-0.33706895,0.3610506,0.22912423,0.44967905,-0.6113972,0.63183457,-0.12738343,-0.534021,-0.06903115,0.026587073,0.024522554,0.063068636],[0.0050931163,-0.5446937,0.1994072,-0.9001721,1.0302886,0.49093354,1.1983348,1.1123027,0.4812851,0.057845764,-0.39551273,-0.40197656,0.018871471,0.021246241,0.06228036,-0.3096515,-0.12146903,-0.37020501]],"activation":"σ"},{"dense_2_W":[[-0.35032728,-0.5031512,0.20565645,0.5048391,0.5721213,-0.75960577,0.41200778],[-0.083224565,-0.4266255,0.3613455,-0.31832695,0.7508301,-0.42364982,-0.041131567],[-0.19479334,0.13154602,-0.49550515,-0.057689346,0.25966644,0.019963862,-0.30955124],[0.56296927,-0.2241234,-0.74579465,-0.19006501,-0.5774306,0.5061718,-0.4157748],[-0.18207398,0.74063724,-0.43985197,-0.60961854,-0.63657373,0.98453957,-0.2611528],[-0.08481909,-0.17079473,-0.9215012,-0.28457326,-0.108750716,0.5557871,-0.24374656],[0.28946897,-0.2658649,-0.17986174,0.7817012,-0.03662516,-0.15243457,0.65582645],[0.06432835,0.035722017,0.24966948,0.1820806,-0.34214944,0.04920283,0.10240223],[-0.106335714,-0.43905434,-0.99428046,-0.5975757,-0.6509662,0.8275932,0.12634481],[1.0581882,-0.3677934,-0.9597405,-1.0668633,-0.7719651,1.0440427,0.07109511],[0.57484365,-0.48430628,0.32345054,0.79538834,0.54478437,0.47041076,-0.14143173],[-0.35414475,-0.41750684,0.8834586,0.2510105,0.15189533,-0.17024374,0.30005693],[0.45395577,0.93997616,-0.9476304,-0.6193973,-0.8066399,0.6195946,-0.048480663]],"activation":"σ","dense_2_b":[[-0.10116813],[-0.14295042],[-0.0813808],[-0.002537517],[0.23133247],[-0.06090244],[-0.012912041],[-0.31398782],[0.026570017],[0.100405954],[0.024308678],[0.013686816],[0.16338688]]},{"dense_3_W":[[0.67018026,0.45342138,0.2517602,-0.7161156,-0.45907423,-0.30567223,0.6014191,-0.2725562,-0.45720404,-0.52766263,0.22907431,0.38704422,-0.6652359],[-0.43428063,0.278939,0.07284501,0.58099675,0.534265,0.408692,0.2663524,-0.13852553,0.70378095,0.12224407,-0.06698436,-0.7304552,0.043905403],[0.49885213,0.35949433,-0.28865784,-0.4043822,-0.032159276,-0.4398066,-0.1666352,0.3646978,0.109651156,-0.052056532,0.2463666,0.16612957,0.099209264]],"activation":"identity","dense_3_b":[[0.0218462],[-0.042534254],[0.01341708]]},{"dense_4_W":[[-0.94743174,0.5062643,-0.579337]],"dense_4_b":[[-0.02170465]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA SPORTAGE 5TH GEN.json b/selfdrive/car/torque_data/lat_models/KIA SPORTAGE 5TH GEN.json deleted file mode 100755 index 69e710e228..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA SPORTAGE 5TH GEN.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.271582],[1.2324897],[0.6433989],[0.04141489],[1.2489065],[1.2435695],[1.2356619],[1.172688],[1.1162171],[1.0433639],[0.9707198],[0.04149849],[0.041483577],[0.04144006],[0.041163605],[0.04088149],[0.040357973],[0.039594423]],"model_test_loss":0.008056153543293476,"input_size":18,"current_date_and_time":"2023-09-02_08-29-22","input_mean":[[18.359726],[-0.037949927],[0.5234115],[-0.008337179],[-0.04552693],[-0.04569026],[-0.04552523],[-0.039857816],[-0.033734176],[-0.024680167],[-0.015604315],[-0.008196234],[-0.008305338],[-0.00844266],[-0.0089836335],[-0.009296811],[-0.009439258],[-0.009452471]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.94973767],[-2.433663],[-0.034619235],[-0.077283],[-2.7017562],[-0.09339245],[-0.6244862]],"dense_1_W":[[0.80034006,1.0705961,0.000825829,-0.09964225,0.40290698,0.47271788,-0.30613136,0.9018622,0.00026438956,0.09919525,-2.150913,0.49553874,-0.3608581,-0.1313319,-0.4082762,0.09144183,0.0788233,0.34741214],[-2.3832078,0.71298873,-0.005020484,-0.17478089,1.0590492,-0.31795993,-1.1199154,-0.5731978,-0.0998752,-0.25876248,0.21498705,-0.14916337,0.33611503,0.25201452,-0.13425598,-0.23907493,0.0071402895,0.17116584],[-0.07616245,-0.34612796,-0.011475999,-0.072679855,0.58056265,-0.395393,-0.27633327,-1.8887899,-0.6015088,0.49371734,1.9656835,0.19998965,0.0057602297,0.13962367,0.12470687,-0.18640584,-0.023864588,-0.19377947],[0.010883457,0.6855033,-0.0010638234,-0.24550597,0.015826495,-0.35939503,0.53073984,0.3727611,-0.5348426,-0.44873196,0.39434654,-0.17992191,0.4207321,-0.22305717,0.23088501,-0.09521394,-0.11022331,0.06272074],[-2.3750079,0.02318054,0.005723935,0.4172705,-0.6483569,0.11516915,0.21627235,0.8689977,-0.097739585,-0.17518516,0.080854654,-0.5044023,-0.23945011,0.5778991,-0.19969985,-0.05412506,-0.018118298,-0.047388777],[0.034274723,-0.57860583,-0.0072152913,0.24105103,-2.9188197,-2.175338,-1.1614898,3.7702558,2.6517565,0.844019,-0.7422007,0.3744097,0.13847013,-0.2812754,-0.75471646,0.14402452,0.31923193,-0.22577274],[0.6020792,-0.93845457,0.0032515822,0.29181626,-0.71029466,-0.23251307,0.4013084,-0.9979102,0.07712134,0.010485791,1.9087931,-0.24826817,0.05725912,0.07313231,0.22776487,-0.03669609,-0.074751236,-0.3001132]],"activation":"σ"},{"dense_2_W":[[0.41379273,-1.5534699,-0.061251666,0.9784582,-0.31017292,0.5312373,-0.30788672],[-0.8307559,-0.5997123,-0.10822264,-0.16534962,-0.92172116,-1.0821096,0.27836254],[-0.04996724,0.016284576,0.15466881,-1.2067809,-1.0948375,-0.033628576,0.46014366],[-0.23169208,0.75857294,-0.95120645,-0.9115383,0.30752045,-0.28777564,0.08635593],[-0.39187977,0.5864086,-0.6104791,-0.4405727,-0.5313213,0.30406076,0.062464662],[0.34800822,0.8006306,-0.2674241,0.30921367,1.2659222,0.5549054,-0.80455273],[0.52084416,0.28339612,0.35776538,0.61953413,0.5954671,0.35080484,-0.4923708],[0.6637605,-0.90991306,1.2823876,-0.31609806,-0.17648666,0.84696317,0.4531972],[0.18129082,-0.1456923,0.860548,0.9921053,0.10297215,-0.23329806,-0.703881],[-0.6871936,-0.35452083,0.16561241,0.52725476,0.30145702,0.095435195,-0.031700533],[-1.037031,-0.12172777,-0.37805697,0.9377832,1.6396,1.0745027,-0.81819445],[0.4548168,-0.14163275,0.34056768,0.24697062,0.20977701,-0.09230414,-0.4355987],[-0.4384788,0.08605435,-0.4810871,-0.79529417,-0.68544877,0.46262282,0.39435223]],"activation":"σ","dense_2_b":[[-0.48680034],[0.068014495],[0.04869933],[0.2673811],[0.15607266],[-0.048658077],[-0.26778942],[-0.18545923],[-0.28900617],[-0.2309299],[-0.33494246],[-0.16927081],[0.20434596]]},{"dense_3_W":[[0.3822013,-0.4389438,-0.41882336,-1.0697446,-0.36492467,0.11356586,0.35364708,0.65464646,0.21121821,0.11611892,0.44234788,0.32605755,-0.81655335],[-0.4098758,0.73658663,-0.137919,0.9484474,0.6109782,-0.055106185,-0.0077281683,0.19195211,-0.24094999,0.010442004,-0.6749704,0.28052664,0.024752859],[-0.25375482,-0.2737522,0.2542901,-0.19734219,0.17325146,0.15619496,-0.18796492,-0.107151814,0.055576775,0.52131623,-0.14911918,0.16789204,-0.67280823]],"activation":"identity","dense_3_b":[[-0.123436764],[0.06764906],[-0.048735052]]},{"dense_4_W":[[1.3109156,-0.35272652,0.104447454]],"dense_4_b":[[-0.1077713]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503'.json deleted file mode 100755 index 2dc670357d..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5300 4C2CL503'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.1329846],[1.0240825],[0.55357367],[0.032864623],[1.0280122],[1.0259764],[1.0244912],[1.0091227],[0.99859416],[0.99492943],[0.99062693],[0.03290333],[0.03287097],[0.03284539],[0.03274356],[0.03259516],[0.03226275],[0.031924404]],"model_test_loss":0.0039173574186861515,"input_size":18,"current_date_and_time":"2023-08-08_21-06-15","input_mean":[[17.373055],[-0.121487565],[0.004857097],[-0.0043323576],[-0.122308314],[-0.12176135],[-0.12166673],[-0.12044618],[-0.11866407],[-0.11413705],[-0.11999074],[-0.0043443115],[-0.0043463064],[-0.0043407544],[-0.0043205405],[-0.004334937],[-0.004431707],[-0.0045705433]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.15578866],[-0.121010795],[2.607187],[0.024626328],[-0.2870057],[-1.3427569],[-0.17659523]],"dense_1_W":[[-0.0033034484,-0.052573163,0.22313437,-0.4994298,0.23290847,0.23589677,0.24603657,-0.08493268,-0.17096585,0.21070172,0.14998867,-0.12246095,-0.27713594,0.266521,0.15202883,-0.5736784,-0.7178588,-0.22354351],[-0.033423953,0.48308042,4.3161335,-0.13211238,-0.22973481,-0.2271183,-0.17018077,-0.080117166,0.23103811,-0.06745466,-0.22646382,-0.14490494,-0.44278416,0.23661947,0.76887465,-0.16852573,-0.29098848,0.19946156],[0.8961271,-0.47064975,0.49676007,-0.5249683,0.1959607,0.82731485,-0.08854316,0.487867,-0.09237197,0.09834567,0.050139025,0.031087723,-0.018046698,0.23961507,0.48042274,-0.050623044,-0.061986376,-0.09952346],[-0.0008700511,-0.16591707,0.14862742,-0.07141854,-0.5259756,0.843034,-0.30464283,0.47228673,0.47462964,-0.019866813,-0.20559688,-0.12733686,-0.3478062,0.6510686,-0.49144772,-0.57306224,-0.30681828,-0.07526166],[-0.871296,-0.1437896,0.5101226,0.24243414,0.23617809,-0.778845,0.66372377,0.8925617,0.811687,-0.4287381,-0.18957064,0.00992578,-0.08970741,0.320578,-0.4153779,-0.30179247,0.32845688,-0.09843358],[-0.56676364,0.10569009,0.32999828,0.031681255,0.019788198,0.49837622,-0.1160794,0.06925489,0.10766315,-0.06880369,0.07340804,0.4267022,-0.24849682,-0.16590549,-0.19864106,0.101786755,0.19663657,-0.15131107],[0.016626861,-0.24604829,-0.008103917,0.4317491,0.09287087,0.963533,-0.42994773,0.15286058,-0.10805577,-0.01726937,0.1516635,0.12822759,-0.06660257,-0.07250721,-0.49660203,0.03619374,-0.09870995,0.12891567]],"activation":"σ"},{"dense_2_W":[[0.35354838,0.08248845,-0.2643721,0.028969606,-0.16676016,-0.8305304,-0.3016516],[-0.22521318,0.3866312,0.4977837,0.076887876,-0.71179044,0.6780423,0.50716233],[0.46899542,-0.24904732,0.14908811,-0.89964503,0.46441752,-0.70685565,-0.22258599],[0.11673758,-0.67375845,-0.84481615,-0.048750993,0.20950693,-0.4879097,0.16695245],[0.13204935,-0.24652998,-0.33666334,0.89801437,0.33655748,0.5779938,-0.14154734],[-0.5384168,0.014923374,0.29242253,0.00864887,-0.09533511,0.30288514,0.830687],[-0.5773432,-0.32536963,-0.42681998,-0.23757271,-0.17945053,0.15035582,0.0041262284],[0.34518933,-0.32978058,-0.21651018,-0.5379371,0.34204122,-0.32106385,-0.6527221],[-0.42277348,0.16665061,0.3108687,-0.28702435,-0.5732586,0.75958574,0.86309266],[0.015375347,0.19915505,-0.42266467,-1.0245055,-0.05351699,-0.6963474,0.14833081],[0.23518765,0.3833349,0.13227822,-0.584967,0.30398777,-0.93099904,-0.5175701],[0.06394686,-0.43986523,-0.12684605,-0.8447283,0.6266354,0.04569117,-0.8361707],[0.49337465,0.33293915,-0.96844876,-0.4276928,-0.6929566,-0.28569952,-0.14265089]],"activation":"σ","dense_2_b":[[-0.024476556],[-0.11499582],[0.022631852],[-0.009896085],[-0.014204676],[-0.043049544],[-0.30805475],[0.025720058],[-0.107878506],[0.009352697],[-0.04004397],[-0.022493577],[-0.01955864]]},{"dense_3_W":[[-0.57439166,0.5246423,-0.19036132,-0.40068084,0.5114071,0.46818924,0.3444213,-0.7027561,0.40878892,-0.3749757,-0.6299576,0.32576016,-0.16117278],[0.4093721,-0.3366498,-0.52919716,-0.008743298,-0.08526943,0.6047717,-0.1464253,-0.6356685,0.27361497,-0.6559057,-0.636247,-0.10396182,-0.087822154],[-0.0016937943,-0.6977227,0.6259379,0.64517385,-0.23953342,-0.55496264,0.22454576,-0.4191411,0.0044411933,0.005649371,0.58461046,0.60280037,0.57034343]],"activation":"identity","dense_3_b":[[0.011864344],[0.06484405],[-0.028621858]]},{"dense_4_W":[[0.63415956,0.3032611,-1.0295273]],"dense_4_b":[[0.026569296]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503'.json deleted file mode 100755 index 8d8208b0f0..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022 b'xf1x00CK MDPS R 1.00 5.03 57700-J5380 4C2VR503'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.766022],[0.5533229],[0.2856296],[0.033792395],[0.5389918],[0.54306436],[0.54760325],[0.55337805],[0.55737114],[0.5617065],[0.5625296],[0.03348953],[0.033542342],[0.033610392],[0.033808257],[0.033930898],[0.034050055],[0.034098357]],"model_test_loss":0.0027918475680053234,"input_size":18,"current_date_and_time":"2023-08-08_21-31-03","input_mean":[[21.389719],[0.0015681498],[-0.0053915554],[-0.002413832],[0.0013884547],[0.0015199955],[0.0016545503],[-0.0005008584],[-2.2193064e-5],[0.003740185],[0.0043427483],[-0.0020289146],[-0.0020741888],[-0.0021126948],[-0.0021486785],[-0.0021773984],[-0.0021409069],[-0.002074085]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.005023801],[-0.11859596],[-0.083387464],[2.9536428],[-3.17796],[0.013405252],[0.29147854]],"dense_1_W":[[-0.0033325052,0.6876983,-0.07805519,-0.19289164,0.65789926,-1.3244646,-0.020963509,-0.37362412,0.13077013,-0.40126017,0.35083288,-0.46714717,-0.6626373,-0.3469128,1.4830853,0.5011229,0.28441152,-0.4636832],[0.3598699,-0.64306945,2.2225964,0.4161311,0.41669363,-1.0839597,0.92909795,-0.95103395,-0.5053492,0.12075414,1.4680102,-0.2333293,-0.24382429,0.008533065,-0.19225878,0.18216391,0.11589113,-0.20803492],[0.20756045,2.033753,2.1817362,-0.9258632,-0.0874673,-0.5312963,-2.7698588,-0.14382717,0.5049645,0.37967896,0.4239767,0.7745002,-0.13785833,-0.38348323,0.5186508,-0.078807354,0.21235526,-0.11610479],[1.4961438,-0.3139877,0.28255,0.26589444,-0.61779964,1.0510086,-0.6857809,0.25174332,0.8591813,0.0057339612,0.012607628,0.16490415,-0.06531447,-0.11422419,-0.04204824,-0.2578638,-0.073865555,0.12349488],[-1.5165002,-0.0548487,0.28816897,-0.44763196,-0.85135686,1.1610124,-0.761776,0.5293456,0.32867563,0.25241977,-0.027216699,0.032018177,0.37777507,0.1571353,-0.21763782,0.32281792,-0.48416787,0.24708028],[-0.0059207403,0.75648165,0.00349558,-0.6363216,-0.2229793,-1.8046044,-0.11476358,0.26718977,0.025075352,0.8795477,-0.95764613,1.086634,0.044866603,-0.14078698,-0.16995233,-0.6281635,-0.20085551,0.6414435],[-0.003071575,0.12751202,-0.011326043,-0.020205589,-0.36886206,0.30381098,-0.34500697,0.18834841,-0.24861936,-1.2992047,0.863031,-1.9390234,-1.3683192,-0.63276744,-1.2014979,9.656866e-5,0.09690952,-1.0078585]],"activation":"σ"},{"dense_2_W":[[0.39662704,0.48374733,-0.29005706,0.07393947,-0.42477635,0.2564262,-0.42727342],[0.21152999,0.061012335,-0.7423783,-0.5523955,-0.39889368,0.38016352,0.54106915],[0.68259335,0.47207102,-0.8016757,-0.12860833,-0.49738726,0.6516305,0.014673964],[0.47920755,-0.107558385,0.04683691,-0.006397021,-0.44672456,-0.18994014,-0.46220642],[-0.30933115,-0.46241206,-0.063971646,-0.63298374,0.16368231,0.45431167,0.069120824],[0.13341828,0.12734184,0.23883563,-0.30482867,0.6489039,0.54735976,0.3412583],[0.12302853,0.066058725,-0.73864675,-1.1300348,0.62163764,0.53437996,-0.48281124],[0.20568475,-0.00066856324,-0.23245256,-0.07801379,-0.051070046,0.18588813,-0.42292082],[-0.75646293,-0.43007204,-0.013988241,0.65225786,0.47503433,-0.5898269,0.097233206],[0.4212197,0.27158758,-0.03540538,-0.8047878,0.059127036,0.35010928,-0.7840495],[-0.74006635,-0.7154454,0.26572984,0.67159295,0.33328587,-0.29086044,0.44390428],[-0.26889247,-0.01841652,-0.12786053,0.7110297,0.9222276,-0.13066176,-0.4141216],[-0.13986242,-0.16117467,0.5941917,-0.43290535,0.29161388,-0.7472561,-0.6601617]],"activation":"σ","dense_2_b":[[-0.10558703],[-0.086225174],[-0.024091406],[-0.06185179],[-0.1395063],[0.0145245325],[-0.14875814],[-0.06766006],[0.15597098],[-0.31839365],[0.027026298],[0.028820656],[-0.21016255]]},{"dense_3_W":[[-0.231988,-0.5889274,-0.1283931,0.20118165,-0.3871818,0.6120688,-0.5323036,0.09410525,-0.37467438,-0.33146307,0.18340798,0.30552286,0.5499228],[0.38446704,0.16326652,0.51952577,-0.2927903,0.28178582,-0.28718108,-0.019530099,0.15835221,0.12750727,0.4528022,-0.37826803,-0.32343772,0.41362897],[-0.07056111,-0.5892277,-0.6703741,-0.48694804,0.19810483,0.2863676,-0.40396088,-0.33865243,0.5503839,0.37918863,0.62173796,0.26518953,0.3827839]],"activation":"identity","dense_3_b":[[0.068464704],[-0.059921235],[0.04597432]]},{"dense_4_W":[[0.1415478,-0.47448632,0.58617306]],"dense_4_b":[[0.04461211]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.04 57700-J5420 4C4VL104'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.04 57700-J5420 4C4VL104'.json deleted file mode 100755 index d83cf8beb0..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.04 57700-J5420 4C4VL104'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.1246],[0.9034975],[0.48962846],[0.03529078],[0.8946102],[0.8961149],[0.89784646],[0.8950175],[0.88876706],[0.87975305],[0.86753106],[0.035175696],[0.035196],[0.03522797],[0.035351437],[0.035319105],[0.035140432],[0.034972258]],"model_test_loss":0.00436203321442008,"input_size":18,"current_date_and_time":"2023-08-08_22-21-02","input_mean":[[23.931408],[-0.13063739],[-0.0062418687],[-0.010867324],[-0.13015318],[-0.13073899],[-0.13138658],[-0.12890545],[-0.126041],[-0.12821095],[-0.12799272],[-0.010868597],[-0.010878354],[-0.010887906],[-0.010903779],[-0.010916722],[-0.011080605],[-0.011242595]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.1994641],[-0.07004483],[0.04915275],[0.83877975],[0.13017571],[-1.118901],[-2.8877945]],"dense_1_W":[[0.7289999,-0.5943847,-2.0439968,0.1408729,0.014804936,-0.33637556,0.6747208,-0.031742137,-0.1290714,-0.25518748,0.66278976,-0.9197349,0.2682647,0.546328,0.183721,0.025967568,-0.26059458,-0.0011381623],[1.41076,-0.98072547,-0.009269284,0.10443673,0.2938804,0.11221869,0.023663813,-0.06939159,-0.12669353,0.1424146,0.008126474,0.2754397,0.27598444,-0.34879938,-0.3349643,-0.2994688,0.12687577,0.18874463],[-0.027532505,-0.13840102,-0.00062686426,0.08105477,0.09020943,0.84446275,-0.33102164,0.1570382,-0.040472265,-0.041165356,0.11451907,-0.17574714,0.45523196,-0.45946833,-0.24832533,0.28354466,-0.39972436,0.14596395],[0.66988164,-0.24064808,1.7260609e-5,-0.26275954,0.17384419,-0.66181016,0.7648268,-0.19273083,-0.16069436,0.009835958,0.0616284,-0.6692072,0.19462675,0.5278246,0.2114967,0.26900306,-0.14592189,-0.11368748],[0.11565289,-0.0024831272,-0.0010179644,-0.14267418,0.16810471,-0.91123056,0.27969635,-8.086505e-5,-0.17184173,0.050572287,-0.026562115,0.06282069,-0.10155926,0.18597111,-0.29300997,0.30992374,-0.074498996,0.022345124],[-0.5783355,-0.5027382,-1.9156728,0.34726906,-0.037399657,-0.6643333,1.2222189,-0.09885066,-0.38930404,-0.31581903,0.7669719,-0.7148593,-0.22047392,0.79417294,0.10776789,-0.27856073,-0.040653545,-0.017878184],[-1.0912887,-1.4251192,-0.0131444745,0.22531693,0.86903757,-0.95501935,0.8628306,0.45285952,-0.35062796,-0.31220162,0.3204548,-0.38606355,-0.23453595,0.6793242,0.079120405,-0.5386359,0.07823436,0.10280147]],"activation":"σ"},{"dense_2_W":[[-0.25574526,-0.3905968,-0.12767315,0.63553566,0.47872183,0.3867656,-0.10150367],[-0.473101,-0.020838056,-0.07608826,-0.56385255,-0.42035136,-0.4738983,0.13273646],[-0.6361896,-0.44256058,0.04147736,0.18567401,-0.7560507,0.050679706,-0.29739967],[0.20478374,0.4391665,0.79290694,-0.77543974,-1.0579494,0.37044573,-0.8896225],[-0.24755138,0.51200044,0.3236799,-0.7383176,-0.9946837,0.61080724,-0.7761964],[-0.13916887,0.51012295,0.66491944,-0.13200557,-0.38854194,-0.084789805,-0.5896282],[0.8047527,-0.44165358,-0.54248846,-0.17254305,0.20149636,-0.100210406,0.2344219],[0.14421801,0.559272,0.97542876,-0.56136894,-0.044083755,-0.3763456,-1.0293499],[-0.3186897,0.246195,-0.54825604,0.7406943,0.06757733,0.32055023,0.5683255],[-0.6583612,0.06683394,0.36377707,-0.8377172,-0.20560446,0.017155979,0.25158632],[-0.2456164,0.44221503,0.3131527,-0.74782497,-0.2063776,-0.65555835,0.4115904],[-0.012511154,-0.41900334,0.076221436,-0.30040342,-0.14252718,-0.6142689,-0.06536472],[-0.25791836,0.03984432,-0.79253113,-0.08203707,0.73551714,0.45526472,0.046143852]],"activation":"σ","dense_2_b":[[-0.05287782],[0.014592212],[-0.2794043],[-0.146621],[-0.024146877],[-0.08312265],[0.0064267763],[-0.028975371],[-0.06253404],[-0.07943845],[-0.15185589],[-0.1090268],[-0.09112515]]},{"dense_3_W":[[0.27280647,-0.35127035,0.3050531,-0.7444606,-0.48179445,0.3789633,-0.25849003,-0.7030355,0.39771867,-0.39718223,0.3331106,0.47105515,0.47934374],[0.6726295,0.0630439,0.33165845,0.23258673,-0.7143303,-0.5131551,-0.27799842,-0.20236474,0.49068013,-0.21187434,-0.18124661,0.3935689,0.58411384],[0.08724511,-0.577467,-0.12056874,-0.40466517,-0.2821864,-0.29668784,0.5748119,-0.19402814,0.33314952,-0.35929132,-0.119962655,-0.44145095,0.39621937]],"activation":"identity","dense_3_b":[[-0.034004413],[0.04665063],[0.09105554]]},{"dense_4_W":[[-0.16068545,-0.31246737,-1.0885646]],"dense_4_b":[[-0.084667206]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5220 4C2VL106'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5220 4C2VL106'.json deleted file mode 100755 index d092bd2a9a..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5220 4C2VL106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.5646715],[0.6694641],[0.44737],[0.026886152],[0.6618878],[0.663675],[0.6667225],[0.66845155],[0.66961575],[0.6750626],[0.67718285],[0.02651441],[0.026632387],[0.026751718],[0.027223678],[0.027500574],[0.027766436],[0.027753508]],"model_test_loss":0.0021724598482251167,"input_size":18,"current_date_and_time":"2023-08-08_22-46-54","input_mean":[[26.029737],[-0.12229291],[-0.00878866],[-0.017934654],[-0.11821583],[-0.11995477],[-0.12079329],[-0.1245332],[-0.12938891],[-0.1290596],[-0.12787117],[-0.017873093],[-0.017926747],[-0.017972697],[-0.018089544],[-0.018230878],[-0.018407188],[-0.018459646]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.36057478],[-0.16445863],[3.0447748],[-0.022469003],[-0.6659535],[0.22373353],[-3.3467278]],"dense_1_W":[[-0.2376849,0.38567924,-0.38532612,-0.36708954,0.5690472,-0.2458212,0.07751702,0.2212711,-0.46712497,-0.6651113,0.29152408,-0.08464707,-0.018103926,-0.24177329,0.7310908,-0.058990337,-0.030694641,-0.11854629],[-0.0009913361,-0.077025376,-0.0065500247,0.046067335,-0.049254794,-0.9076616,-0.0003211376,0.14927548,0.15986459,0.24684179,-0.38523427,-0.22149515,0.0073642987,0.11100769,-0.09587406,0.30423173,0.025807435,0.13052529],[0.4883289,0.30375436,-0.3209597,0.13514149,0.10009362,-0.5936262,-0.22444941,-0.5819263,-0.34365678,0.076933436,0.21189494,-0.28389084,0.15581718,0.038204152,0.13983965,-0.040451385,0.29750612,-0.2481491],[-0.0014382814,-0.13296318,2.1798,0.10981343,0.6367385,-0.13009104,-0.9085796,0.6248629,0.5663407,-0.34945607,-0.026286183,-0.09252589,0.32709804,-0.5283437,0.06888198,0.34782213,-0.0396639,-0.15430778],[-0.9994939,0.6315036,-0.39675602,0.10514331,0.31768408,-0.28510046,-0.07353569,0.50522256,-0.25331956,0.31126252,0.05213495,-0.62016946,-0.14337428,-0.5253215,0.36232558,-0.39571983,-0.51797396,-1.1316494],[0.22178838,0.65085924,0.38133407,0.45604607,-0.14068341,-1.0306925,0.30833307,-0.18152203,-0.11089663,0.14951013,0.20940769,-0.18067391,-0.058062352,-0.21344402,0.2434591,0.2801642,-0.2628211,-0.070006035],[-0.5233583,0.20665656,-0.3384473,0.57583076,0.21660234,-0.94515306,0.1279248,-0.9392442,-0.08341735,0.21010256,0.09249825,-0.3514638,-0.11611042,-0.052045938,0.30880475,0.03110251,-0.06850783,-0.12792635]],"activation":"σ"},{"dense_2_W":[[0.6317959,0.6705066,0.20417199,0.21395814,0.10470223,0.14087297,-0.12592584],[0.08588891,-0.081240855,0.5760022,-0.22544949,-0.54510444,0.23245768,0.046276238],[-0.23795508,0.006579916,-0.9301286,-0.43157038,-0.09368898,-0.5191553,-1.0032965],[0.19750868,-0.0020027894,-0.33918998,0.1652486,0.17350669,-0.22918618,-0.3234288],[-0.40517142,-0.044377446,-0.7739969,-0.5347441,0.010773094,0.4562043,-0.7532082],[-0.04751407,0.86060613,-0.27241683,-0.10298587,-0.272535,0.35024813,0.59923714],[-0.010178873,-0.37041524,0.23013395,-0.109916255,0.29119843,0.0144743025,-0.61659116],[-0.40173405,-0.7648917,-0.6105268,0.308084,0.3153847,-0.49524066,0.04767403],[0.34532696,-0.43309987,-0.3433278,-0.1705872,-0.14465691,-0.22976112,-0.2721868],[-0.2980317,0.22856045,-0.27896377,0.14522254,-0.23149188,-0.20256028,-0.7814072],[-0.42373073,0.24569665,-0.9021987,0.44055524,0.0935608,-0.39574504,-0.36532554],[0.4243805,0.6297723,-0.28280917,-0.7076218,0.3524698,-0.013303791,0.6177503],[0.2468454,0.41776308,0.8151066,-0.42162442,0.018570265,-0.22239894,0.3231103]],"activation":"σ","dense_2_b":[[-0.026862532],[-0.14978711],[-0.005214749],[-0.07263994],[-0.08199721],[-0.045804795],[-0.0866205],[-0.06230838],[-0.07474814],[-0.05142401],[-0.07595316],[-0.18088594],[-0.2217942]]},{"dense_3_W":[[0.4388805,0.08923334,0.15111509,-0.17938077,-0.47965288,0.3093158,-0.08968161,-0.30242828,-0.5312799,-0.31545746,-0.6203474,0.31204218,0.09222002],[0.6803294,0.07273466,-0.66237503,-0.3718425,0.5460477,0.036861733,-0.56628793,-0.24408782,-0.33143753,-0.58106333,-0.13587737,0.29482222,0.0920682],[0.13532409,0.10077603,0.13572003,0.31044018,0.5533716,-0.27005956,-0.5925635,-0.2709091,0.1561405,0.20917125,0.27186853,0.25998002,-0.21802285]],"activation":"identity","dense_3_b":[[0.048612285],[0.05009564],[-0.057215467]]},{"dense_4_W":[[-1.0191514,-0.7887438,0.3675588]],"dense_4_b":[[-0.044860546]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5420 4C4VL106'.json b/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5420 4C4VL106'.json deleted file mode 100755 index 1fecceac92..0000000000 --- a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018 b'xf1x00CK MDPS R 1.00 1.06 57700-J5420 4C4VL106'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.501248],[0.66097784],[0.39463165],[0.033822067],[0.6530338],[0.6543088],[0.65753746],[0.6521385],[0.65343094],[0.6497655],[0.64884734],[0.033726152],[0.03373755],[0.033731945],[0.03357754],[0.033446345],[0.033136833],[0.033040747]],"model_test_loss":0.005525775719434023,"input_size":18,"current_date_and_time":"2023-08-08_23-11-12","input_mean":[[29.792126],[-0.04522217],[0.021310413],[-0.0061475663],[-0.042909686],[-0.04259835],[-0.041554518],[-0.03512602],[-0.022554956],[-0.014822821],[-0.010136456],[-0.006064173],[-0.0060414663],[-0.006004127],[-0.005759402],[-0.005674136],[-0.005454047],[-0.0052154707]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.22852585],[1.3894823],[0.122581],[1.568894],[-0.24534363],[-0.081348546],[-0.062656134]],"dense_1_W":[[0.013982386,0.33132157,-2.8375375,-0.2577825,1.5605328,-0.44175422,1.4673861,0.30788234,-0.8293273,-0.35149613,-0.20746693,-0.2756051,0.19700375,0.56104803,-0.22943902,-0.9442609,0.29700294,0.33738524],[-0.7498267,-0.6624498,-0.04035213,0.64772356,0.22239381,0.752236,0.7376311,0.22121955,-0.68275774,-0.31479657,0.5766379,1.1977735,0.23543899,-0.03235867,-1.2889259,-0.5574388,-0.38497743,0.22112268],[0.0009815576,-0.42306572,0.3711868,0.32548174,-0.6101839,-0.07870281,-0.6290229,1.9477028,1.6681696,-0.12739149,-0.51679254,0.08266713,-0.13435598,-0.860949,0.19675814,-0.040138233,-0.25093862,-0.4040983],[-0.6976788,0.25720024,0.0430806,0.3727656,-0.017078696,-0.7331152,-0.580502,0.19809097,0.21536557,0.19312605,-0.34806177,-0.7567413,-0.37611556,-0.52824664,0.42451826,0.5508943,0.23928273,0.03949534],[-0.0014112287,0.0859497,-0.6420441,0.250335,-0.79082257,0.26661268,-0.060180947,0.01820874,-0.537458,-0.52666235,-0.65162635,0.5239975,0.1635141,-0.46365562,-0.10242774,0.7817764,0.06101124,0.6259446],[0.00052573474,0.8818668,0.010850059,0.47755244,-0.89471304,0.77187765,0.29030934,-0.61783034,-0.51367205,0.24970502,0.19460167,0.5136466,0.047820516,-0.5154373,-0.59959394,-0.4312206,0.19824192,0.24100806],[0.0010626772,2.6087165,-0.4629497,0.6686539,-1.1897037,-0.84694195,0.7046186,-1.2559808,-0.6581498,-0.23632167,0.63437265,-0.9454196,0.3392225,0.8520271,-0.0974469,-0.7927253,-0.193067,0.31566033]],"activation":"σ"},{"dense_2_W":[[-0.1513031,-0.93051434,-0.44909996,0.3317688,-0.4884435,-0.67838585,0.36971784],[0.35191703,-0.048789192,0.450275,-0.039996978,-0.20984387,0.5479376,-0.6852263],[-0.12902059,0.37265527,0.117599756,-0.5375113,0.20516054,0.87671304,-1.022533],[0.2674715,-0.007845689,-0.46048212,0.40396458,-0.2595625,-1.1184877,0.9535189],[-0.09281683,-0.718375,-0.5129304,0.29733542,-0.34454262,-0.65599316,0.31568497],[-0.40095973,0.17952402,-0.92779064,-0.5870983,-0.632861,-0.69213766,0.52468324],[-0.040474832,0.059520535,-1.0331043,0.04681406,-0.19046701,-0.5846261,0.25040108],[-0.27255413,0.27288094,-0.50989443,-0.3859617,-0.533083,-1.1661375,0.29892063],[-0.3460965,0.14177947,0.19027938,-0.369559,0.14183414,1.0526645,-0.33656517],[-0.17344117,-0.5123712,0.048518293,-0.69904965,-0.5825566,-0.75061584,0.3186972],[-0.6285899,-0.07304559,0.1665746,-0.12463482,-0.07659766,-0.5974891,-0.490175],[0.58759695,-0.7291639,-0.010515633,0.49339303,-0.17044984,-1.4153128,0.3785607],[0.44372615,0.21508391,-0.5312156,0.004264401,-0.71482986,-1.0418825,0.7020857]],"activation":"σ","dense_2_b":[[0.08850905],[-0.24293129],[-0.15789112],[0.17704202],[0.24606779],[-0.11684559],[0.029992603],[-0.024114225],[-0.09106879],[-0.3028866],[-0.14801322],[0.24917996],[-0.050585084]]},{"dense_3_W":[[0.21220079,0.05355472,-0.63798493,0.04563667,0.4423918,0.0664141,0.6139182,0.38336623,-0.76794696,-0.22829553,0.27020785,0.57621443,-0.1627959],[-0.16809194,0.27078873,-0.5811216,0.09835563,0.20550297,0.42691118,-0.17207801,0.2604539,-0.49177387,0.26957557,-0.43846667,0.29487315,0.57365525],[0.26274177,-0.48716888,-0.8324663,0.5967428,0.5331667,0.0806274,0.32409737,0.18292934,-0.39461344,-0.02578827,0.13157013,0.17259999,0.15921797]],"activation":"identity","dense_3_b":[[-0.101195484],[-0.051826347],[-0.04482993]]},{"dense_4_W":[[-0.1355761,-0.1400903,-0.5103199]],"dense_4_b":[[0.037658684]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/KIA CEED INTRO ED 2019.json b/selfdrive/car/torque_data/lat_models/KIA_CEED.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA CEED INTRO ED 2019.json rename to selfdrive/car/torque_data/lat_models/KIA_CEED.json diff --git a/selfdrive/car/torque_data/lat_models/KIA EV6 2022.json b/selfdrive/car/torque_data/lat_models/KIA_EV6.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA EV6 2022.json rename to selfdrive/car/torque_data/lat_models/KIA_EV6.json diff --git a/selfdrive/car/torque_data/lat_models/KIA K5 2021.json b/selfdrive/car/torque_data/lat_models/KIA_K5_2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA K5 2021.json rename to selfdrive/car/torque_data/lat_models/KIA_K5_2021.json diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020.json b/selfdrive/car/torque_data/lat_models/KIA_NIRO_EV.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA NIRO EV 2020.json rename to selfdrive/car/torque_data/lat_models/KIA_NIRO_EV.json diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2021.json b/selfdrive/car/torque_data/lat_models/KIA_NIRO_HEV_2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2021.json rename to selfdrive/car/torque_data/lat_models/KIA_NIRO_HEV_2021.json diff --git a/selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2ND GEN.json b/selfdrive/car/torque_data/lat_models/KIA_NIRO_HEV_2ND_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA NIRO HYBRID 2ND GEN.json rename to selfdrive/car/torque_data/lat_models/KIA_NIRO_HEV_2ND_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/KIA OPTIMA 4TH GEN FACELIFT.json b/selfdrive/car/torque_data/lat_models/KIA_OPTIMA_G4_FL.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA OPTIMA 4TH GEN FACELIFT.json rename to selfdrive/car/torque_data/lat_models/KIA_OPTIMA_G4_FL.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SELTOS 2021.json b/selfdrive/car/torque_data/lat_models/KIA_SELTOS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SELTOS 2021.json rename to selfdrive/car/torque_data/lat_models/KIA_SELTOS.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO GT LINE 2018.json b/selfdrive/car/torque_data/lat_models/KIA_SORENTO.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SORENTO GT LINE 2018.json rename to selfdrive/car/torque_data/lat_models/KIA_SORENTO.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN.json b/selfdrive/car/torque_data/lat_models/KIA_SORENTO_4TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SORENTO 4TH GEN.json rename to selfdrive/car/torque_data/lat_models/KIA_SORENTO_4TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN.json b/selfdrive/car/torque_data/lat_models/KIA_SORENTO_HEV_4TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SORENTO PLUG-IN HYBRID 4TH GEN.json rename to selfdrive/car/torque_data/lat_models/KIA_SORENTO_HEV_4TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/KIA SPORTAGE HYBRID 5TH GEN.json b/selfdrive/car/torque_data/lat_models/KIA_SPORTAGE_5TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA SPORTAGE HYBRID 5TH GEN.json rename to selfdrive/car/torque_data/lat_models/KIA_SPORTAGE_5TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018.json b/selfdrive/car/torque_data/lat_models/KIA_STINGER.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA STINGER GT2 2018.json rename to selfdrive/car/torque_data/lat_models/KIA_STINGER.json diff --git a/selfdrive/car/torque_data/lat_models/KIA STINGER 2022.json b/selfdrive/car/torque_data/lat_models/KIA_STINGER_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/KIA STINGER 2022.json rename to selfdrive/car/torque_data/lat_models/KIA_STINGER_2022.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33252x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33252x00x00x00x00x00x00'.json deleted file mode 100755 index e26a3cc055..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33252x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.4440565],[1.0028862],[0.36267638],[0.043678306],[0.99411225],[0.9974919],[0.99982977],[0.99254435],[0.979976],[0.95886236],[0.93553513],[0.043576345],[0.043595448],[0.043623183],[0.04364424],[0.043546103],[0.0433696],[0.0430985]],"model_test_loss":0.008524268865585327,"input_size":18,"current_date_and_time":"2023-08-09_00-29-37","input_mean":[[24.4086],[-0.0049972953],[0.0014472222],[-0.011187174],[-0.0048188227],[-0.0048300573],[-0.004904814],[-0.0039606136],[-0.0010262493],[0.0019202619],[0.004503857],[-0.011211575],[-0.011217863],[-0.011226438],[-0.011296215],[-0.011372426],[-0.011467264],[-0.011505676]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.9125192],[-0.13636686],[0.03213368],[-0.31655693],[0.113999754],[2.0803509],[-0.14560352]],"dense_1_W":[[-0.95836014,0.21151903,0.22434151,-0.002453981,0.13014187,0.5596393,-0.16869491,0.077085264,0.14677656,0.18345413,0.3242226,0.081019655,0.31809556,-0.38337004,-0.1310791,0.091724716,-0.5161398,0.25401837],[-0.14619967,0.5092507,0.0018193424,-0.21825372,-0.6449165,0.92955756,-0.13284698,0.06275948,-0.08579267,0.35583824,-0.18346414,0.69240427,-0.16283554,-0.18422249,-0.4282623,-0.027244156,0.02582024,0.1427941],[1.0047165,0.015293248,-0.02223404,0.052268773,-0.41808492,0.386935,-0.42386678,-0.5135216,-0.24958232,-0.5126944,0.43498564,0.06511655,0.37023535,-0.114505425,-0.434018,0.116916806,0.0014085828,0.17056656],[-0.06596466,1.2519224,4.74866,0.11355789,-0.51302266,0.28445745,-0.3053417,0.36204198,0.647499,-0.60584915,-1.0571691,0.32952857,-0.0777627,0.3500026,-0.4212409,0.12553304,-0.213272,-0.122726746],[0.03182641,-0.04754851,0.0029030219,0.11716655,-0.2078027,1.1533194,-0.8695852,0.119884744,-0.13354245,0.10176885,-0.00028662398,0.17332709,0.30320284,-0.038923513,-0.54227114,-0.296703,-0.06784862,0.34063476],[0.79970616,0.43940097,0.1962523,-0.118129455,-0.41660714,0.8126276,-0.6059025,0.39716172,0.52851135,0.2263594,-0.08056667,0.2966726,-0.277799,-0.5333231,0.38141567,0.33619776,-0.037727766,-0.2941527],[-0.10851895,0.8244319,0.011763683,-0.3026351,-0.49091163,0.84520894,-0.45440027,0.18291348,0.3710321,-0.5599674,0.15607528,0.6427925,0.29607928,-0.6419731,-0.39483508,0.15418234,0.043094926,0.031589415]],"activation":"σ"},{"dense_2_W":[[0.090692595,-0.4490544,0.24625836,-0.28497836,-0.109338924,-0.17009985,-0.4655793],[-0.669885,-0.61082786,-0.7925282,-0.20993824,-0.09015391,-0.2284157,0.15029445],[-0.44977325,-0.7235435,-0.36254668,-0.009851951,-0.1750803,-0.81676334,-0.23792371],[-0.2912695,-0.7815833,0.59908646,-0.25272,0.3039248,0.45951632,-0.4202785],[-0.38828993,-0.35401246,0.038314883,-0.47171852,0.44466084,0.3610528,0.35880306],[-0.054223396,-0.16728099,-1.057462,-0.61807907,-0.5963022,-0.87659144,-0.45062214],[-0.71182984,0.4919117,0.7364119,0.81453204,0.5218261,0.27536118,0.6695429],[-0.29577672,-0.26198146,-0.54313695,0.18035722,0.05070786,-0.31965226,0.13927855],[0.21813929,0.77980363,-0.26194462,-0.55060804,-0.27208176,0.4345995,0.8768538],[0.020967001,0.74533176,-0.30123144,-0.015122309,0.6550382,-0.28115028,0.10651019],[-0.16647351,-0.4178918,0.0001960198,-0.22321661,-0.60688865,0.119590364,-0.3315932],[-0.35213155,-0.464748,0.48835987,-0.05246687,-0.2060589,0.046264112,-0.5531751],[-0.2018665,-0.063097775,-0.8816539,-0.6065871,-0.92965955,-0.6128336,0.014582347]],"activation":"σ","dense_2_b":[[-0.06833847],[0.012058566],[0.1310296],[0.107997425],[-0.09987967],[0.143086],[-0.116671406],[-0.290171],[0.030431822],[-0.029693417],[0.08782878],[0.045630615],[-0.1426334]]},{"dense_3_W":[[-0.328282,0.23894995,0.5074013,0.16549413,0.1285143,-0.13915035,-0.42390114,-0.55725336,-0.66650647,-0.22075084,0.6307297,-0.21100862,0.16000639],[0.13250639,0.52014196,-0.043805785,0.3813022,0.5189094,0.79271615,0.17715289,0.54481244,-0.60536987,-0.60951567,0.16811334,0.21930675,0.5196005],[0.12788317,0.67415655,0.75158405,0.47136194,-0.47586355,0.5831669,-0.61521083,0.016530482,-0.19323698,-0.15085855,0.6299936,0.32262608,-0.11284211]],"activation":"identity","dense_3_b":[[-0.00085244136],[-0.018760033],[-0.008874107]]},{"dense_4_W":[[-0.7199532,-0.7991476,-1.1705709]],"dense_4_b":[[0.008561696]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33690x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33690x00x00x00x00x00x00'.json deleted file mode 100755 index 51117292a5..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33690x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.680412],[0.85285246],[0.3884425],[0.03205119],[0.8500491],[0.85049105],[0.8514502],[0.8458795],[0.8377078],[0.82015127],[0.8038297],[0.031919472],[0.03195958],[0.03199403],[0.03202506],[0.03193417],[0.03161889],[0.031273898]],"model_test_loss":0.009339340031147003,"input_size":18,"current_date_and_time":"2023-08-09_01-20-38","input_mean":[[24.875648],[0.0041736388],[0.010556495],[-0.0046896804],[-0.0006003252],[0.0007327586],[0.0016012463],[0.0060975295],[0.006737074],[0.0062413993],[0.0063207992],[-0.0047094855],[-0.004715502],[-0.0047238604],[-0.004803993],[-0.0049048723],[-0.005078436],[-0.0051641]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.17949091],[-3.3968902],[-0.07593549],[0.5466097],[0.03951519],[-0.00081275025],[-0.2818511]],"dense_1_W":[[0.03091709,-1.3157804,-5.490474,0.2759644,1.2174463,0.13602142,0.30531374,-0.5896565,-1.0454189,0.024137963,1.2799596,-0.5758251,-0.67036736,-0.10264167,1.023584,-0.022457464,0.0423572,-0.072023876],[-1.5988137,-0.4146702,-0.038053937,0.63521147,0.58526903,-0.3437994,0.22620016,0.08106555,-0.7296988,-0.448912,-0.47618243,-0.71913254,0.12589867,0.8123822,-0.8396519,-0.6090673,-0.2687799,0.8079711],[-0.017673936,-0.20331055,-0.0016520993,-0.20215373,0.5373215,-0.8593722,0.20908187,0.03162978,-0.35333672,0.28399038,-0.056258224,-0.83239245,0.2361236,0.645981,0.21572426,0.23369376,0.030962478,-0.20426486],[0.6789347,-0.81145126,-0.007111559,0.050477408,0.7655705,-0.961523,0.547529,0.29283896,0.11744454,-0.23781727,-0.49012998,-0.77257276,0.14991538,0.8663245,-0.47725388,-0.17021804,0.22196974,0.09640378],[-0.023541855,-0.037035666,0.55035615,-0.4223085,-0.3162554,1.0634682,-0.31260857,0.38816622,0.5183418,0.00963337,-0.9862806,0.35859644,-0.107738346,-0.23407808,-0.29413855,-0.43096134,0.33290064,0.27480224],[-0.008280398,0.5080252,-0.0030781063,-0.24516527,-0.076359816,1.3229189,-0.40155405,-0.6557982,-0.084914856,0.34833226,0.048928127,0.06514959,0.33998683,-0.17689575,0.01783814,0.2977825,-0.10754876,-0.10063827],[1.4288968,0.108082466,-0.031209342,-0.06544005,-0.39778545,0.56522495,0.20475589,0.061119992,-1.1141357,-0.5437865,-0.2889625,0.3729891,0.55635136,-0.78631455,-0.120706834,-0.44492543,-0.4325845,0.863979]],"activation":"σ"},{"dense_2_W":[[-0.30310643,-0.12873378,0.39852074,0.46089283,-0.061163615,-0.47244763,0.08307709],[0.063253105,-0.0028390735,0.6435178,0.021038773,-0.24314678,-0.30235827,0.201086],[-0.4110213,-0.15217133,-0.47424644,-0.5498248,-0.40863478,-0.03644606,-0.165162],[-1.0989958,1.0549769,-0.81128615,-0.29547232,-0.11975506,0.7134397,-0.58516175],[-0.19868451,0.50366116,0.31972986,0.55210483,-0.34068644,0.11577465,0.32061067],[-0.22519416,0.26882055,0.6880949,0.3129291,0.34909117,-0.63557214,-0.45552465],[-0.90025496,0.63476175,-0.5909716,-0.7426136,0.48243678,0.16065429,-0.2919061],[-0.40407148,-0.5999356,-0.45084292,-0.50555605,0.49569342,0.78641695,0.6107878],[0.19533251,-0.18449633,-1.2098444,-1.1110471,0.83463633,0.6744162,0.47429064],[0.2519356,-0.2709652,-0.43452793,0.16501693,-0.1434805,-0.164745,-0.55715173],[0.5556845,-0.7147965,-0.7962351,-0.9492054,0.45981735,0.48979762,0.5166068],[-0.81657475,-0.76384026,-0.46112433,-0.4948062,0.8747664,0.9776133,0.7079956],[-0.20226195,-0.2591615,0.63573545,-0.01795919,-0.082302935,-0.42891976,0.26436207]],"activation":"σ","dense_2_b":[[-0.047301266],[-0.016725123],[-0.049676552],[-0.07829081],[-0.08770606],[0.0036026512],[0.084506735],[0.109670915],[0.11299696],[-0.022765491],[-0.008457604],[0.32036614],[0.0072946316]]},{"dense_3_W":[[-0.31729496,0.12889174,0.4225155,0.31061146,0.24402286,-0.10446856,-0.48671034,0.3845978,0.2660345,0.3093137,0.44116616,0.38984168,-0.3460159],[0.0358234,0.31940135,-0.21071792,-0.5266989,0.4593207,0.17332634,-0.66819376,-0.58671886,0.024372714,0.10640016,0.038679607,-0.11834236,0.5630265],[0.10535604,0.40837932,0.53625077,0.50682795,-0.11473014,0.5603721,0.14725567,0.080817915,-0.60673153,0.3120416,-0.47885686,-0.3498024,-0.46723753]],"activation":"identity","dense_3_b":[[-0.09867763],[0.05700437],[0.053955115]]},{"dense_4_W":[[0.45426035,-1.1652403,-0.79250604]],"dense_4_b":[[-0.060487706]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33721x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33721x00x00x00x00x00x00'.json deleted file mode 100755 index c2836f44b7..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019 b'8965B33721x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.344813],[1.0432545],[0.40825117],[0.03865216],[1.0351241],[1.0378826],[1.0401973],[1.0332909],[1.0210356],[0.99993485],[0.97768444],[0.03855244],[0.0385832],[0.038604163],[0.038570847],[0.038460117],[0.038177595],[0.037886962]],"model_test_loss":0.007136368192732334,"input_size":18,"current_date_and_time":"2023-08-09_01-47-26","input_mean":[[23.442703],[0.0035179595],[0.00408823],[0.012855675],[0.0033001432],[0.0034371077],[0.0034639447],[0.0074803857],[0.012283631],[0.018361822],[0.021030566],[0.01292293],[0.012896148],[0.012869411],[0.012853285],[0.012912567],[0.013085337],[0.013110078]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.9161396],[-0.22788599],[2.968902],[-0.009821155],[-0.18505585],[0.32007432],[-0.014948483]],"dense_1_W":[[-1.0511566,-0.29206184,0.8199831,-0.15576178,-0.38916576,1.1162808,-0.5011398,1.0977064,-0.5836164,0.16133548,-0.053778384,0.4155293,0.19529353,-1.2087135,0.5919332,0.53749675,-0.08758931,-0.2511601],[-0.09181765,0.33316463,-0.78092057,0.0865392,0.3381008,-0.6151113,0.3660635,-0.72633314,-0.6142182,0.0048095123,0.37035215,0.12880829,-0.23413754,0.5010518,-0.5957484,-0.16287656,-0.04932468,0.26007095],[1.0044367,0.35445923,0.78647244,-0.32049915,0.06494051,0.12055531,-0.22746965,0.26814324,0.05199458,-0.037158065,-0.03201108,-0.14750965,0.3159122,-0.053600136,0.2906058,0.037501868,-0.01485947,-0.0680036],[-0.0018256758,-0.39913148,-0.0054692593,-0.47800386,0.4134914,-1.2333674,0.23680426,0.23282804,0.3836774,-0.06254318,-0.22074893,-0.4077003,0.09583857,0.025910378,0.62602794,0.43462366,-0.12558399,-0.17822921],[-0.0047321627,0.55899805,-0.00081870187,-0.25419536,-0.3257252,1.1633046,-0.39042598,-0.20668344,-0.21059605,-0.006790498,0.18107124,0.15924998,0.02389586,-0.06371585,-0.44330505,0.36899558,-0.3173842,0.09592921],[0.095295206,-0.08933727,0.59179264,0.40638387,0.5824425,-0.25730613,0.7851391,-0.4444533,-0.6680196,-0.08562278,0.53340226,-0.57082343,-0.17787477,0.7951686,-0.13043731,-0.13890404,-0.28527093,0.17461915],[0.034483686,-0.7067752,-4.019811,0.037841592,1.0770723,-0.28922594,0.22808869,-0.094380274,-0.6669433,-0.2657373,0.5791061,-0.7896833,-0.3886935,-0.19634429,0.7110262,0.7885148,-0.027897676,-0.19876951]],"activation":"σ"},{"dense_2_W":[[-0.20400774,-0.22307488,0.83168095,-0.99375516,1.4662783,-0.54265076,-0.15802172],[-0.12194149,0.3057387,-0.25224084,0.86720455,-0.6698733,0.3360012,-0.292734],[0.37222654,0.122192845,-0.57808757,0.31621838,-1.051521,-0.18741105,0.18480313],[0.41065305,0.56189334,-0.65107477,0.33912212,-1.1690532,0.32877356,0.27887678],[0.58805436,-0.3522203,-0.8155676,-0.47617933,-0.42864746,-1.1024536,-0.7342275],[-0.28316686,0.42155153,0.1351553,0.00020168634,-0.39858565,-0.038997397,-0.0620207],[-0.2676193,0.5867359,0.34214348,0.46678424,-0.9861758,0.19793625,0.35967037],[0.26571375,0.49524286,-0.6020044,-0.31548288,0.0521101,-0.50098413,0.02061019],[-0.35134986,0.5898171,-0.8887333,0.49588937,-0.2849531,-0.15621391,0.39262283],[0.11367938,-0.035091795,0.20310073,-0.29153082,0.5581006,-0.1919044,-0.28208742],[2.092034,-0.5602147,-0.42445743,-1.403385,0.8866187,-1.2998788,-0.3509462],[-0.010185507,-0.2035467,0.33422557,0.7748165,-0.65113765,0.4648428,0.25325134],[-0.07438275,-0.06233438,1.0291604,-0.95668316,1.2571595,-0.65489537,-0.20861064]],"activation":"σ","dense_2_b":[[0.09113021],[0.04578328],[-0.29403162],[-0.2192368],[-0.28878424],[-0.11772192],[0.008928186],[-0.10850013],[-0.18696937],[-0.114522],[0.1894073],[-0.0047073704],[0.20806429]]},{"dense_3_W":[[0.69607276,-0.25463992,0.19224781,-0.64511865,0.27775756,0.4589496,-0.7449188,0.41997963,-0.12018125,0.4897476,0.9306085,-0.10257274,0.84184134],[-0.64124787,0.752149,-0.2837551,0.29449946,0.26526523,0.30954522,0.2830915,0.5043165,-0.16997944,-0.43304175,-0.694841,0.057517774,0.09658051],[-0.03208746,-0.26029688,-0.74573,-0.1032463,0.13831443,-0.64660555,-0.21513747,-0.40704614,-0.48390958,-0.06794522,0.12341715,-0.26635003,0.78502613]],"activation":"identity","dense_3_b":[[-0.09851486],[0.03344719],[-0.047249585]]},{"dense_4_W":[[0.797171,-0.25833753,0.61133206]],"dense_4_b":[[-0.06307325]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33252x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33252x00x00x00x00x00x00'.json deleted file mode 100755 index 0a80cfd0df..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33252x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.8285],[1.1188737],[0.47342262],[0.05126763],[1.1050262],[1.1092741],[1.1127472],[1.0983341],[1.0797789],[1.0525575],[1.0272892],[0.050943088],[0.05100398],[0.051071826],[0.050979707],[0.050723284],[0.050214104],[0.049760416]],"model_test_loss":0.008092939853668213,"input_size":18,"current_date_and_time":"2023-08-09_03-05-40","input_mean":[[22.832628],[-0.048477665],[-0.0015699231],[-0.010172784],[-0.044837113],[-0.045658123],[-0.04680434],[-0.045073368],[-0.043960348],[-0.039256155],[-0.03613124],[-0.01008188],[-0.010097768],[-0.010119672],[-0.01006197],[-0.009999101],[-0.009887467],[-0.0099477405]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.15260588],[-3.2536018],[0.043962248],[-0.090603456],[3.5123594],[0.029381314],[0.24542183]],"dense_1_W":[[-0.018435279,1.2527711,4.230789,0.018031234,-1.4346001,-0.15953755,0.061720558,0.35755047,0.37375236,0.58350205,-0.88426137,0.59743536,-0.10547891,-0.33643883,0.21758044,-0.13492396,-0.36006564,0.20787364],[-1.5682247,-0.035563767,0.19118826,-0.43019408,0.14057355,1.0501944,-0.82073975,-0.14322114,-0.08808569,-0.013670676,0.67794806,0.5938818,-0.4189539,-0.5114651,0.5719749,0.39641926,-0.06207111,-0.38755944],[0.18513687,-0.71987325,-0.011965726,0.018532543,0.258614,-0.97279245,0.59959203,-0.22303152,-0.17081428,0.23112038,-0.04976506,-0.05941518,-0.5961051,0.20494816,0.33866015,0.023431057,-0.02673853,-0.027390076],[-0.0032866031,-0.46916834,-0.03375909,0.22316715,0.33248055,-1.0202448,0.7034391,-0.2351044,-0.13222691,-0.14861125,0.23242648,-0.035604436,-0.32533994,0.19433749,0.29952523,0.31940687,0.045100812,-0.16624303],[1.7107601,0.027855793,0.2056705,-0.48186287,-0.19466202,1.5228227,-1.2701944,0.4916286,-0.15901598,-0.4066886,0.8435757,0.29054174,-0.1801262,-0.5044365,0.6704808,0.3633137,0.21051206,-0.6159748],[-0.031839076,0.52859527,0.016463235,-0.66599137,-0.79132366,1.1579964,-0.58045477,0.13249406,0.4277288,-0.09080096,-0.18318327,1.2263923,0.5539931,-0.8813475,-0.576685,-0.13317113,0.06021947,0.3146238],[0.9673127,0.39608166,-0.02511569,-0.0046267007,-0.64154017,0.57387704,-0.346695,-0.9827318,-0.61006016,-0.05364682,0.4217874,0.039297163,0.57102877,-0.43577328,-0.42087564,-0.10482892,-0.18938681,0.42926088]],"activation":"σ"},{"dense_2_W":[[0.41543797,1.1738479,-1.0748413,-0.68251723,-0.23535445,-0.014745399,-0.074383706],[0.42731732,-0.5514982,0.074961975,0.59009844,-0.3027509,-0.5616325,-0.28420764],[0.11749416,0.3126048,-0.5657671,-0.26303276,0.39180964,0.77518344,0.33590633],[-0.14604264,-0.6352743,0.2253331,0.58631027,-0.3192098,0.20994529,0.007633578],[0.3937283,-0.078028925,-0.5664736,-0.124979004,0.48761243,0.3210194,0.07755378],[0.27684122,0.7713517,-0.31364554,-0.5921977,-0.18462463,0.47987497,-0.61615944],[0.29768473,0.41583326,-0.9713817,-0.35854688,0.09248492,0.31493294,0.040650316],[-0.112342775,-0.1878338,0.5448513,0.7486996,-0.56119305,-0.5220495,-0.5096629],[0.19718203,0.4135663,-0.28367767,-0.1573982,-0.19590908,0.104961894,-0.49705368],[0.77046275,-0.19075769,-0.46065587,-0.13512029,0.47356725,0.38181776,0.71995],[-0.18105839,-0.55663234,0.33512706,0.016357377,-0.55092573,-0.17190884,0.08964193],[0.31455922,0.20463717,0.033571117,0.43436614,-0.41633865,0.19258104,0.33313715],[0.08064332,-0.68228775,0.7010398,0.24371538,0.22882102,-0.54400474,-0.08356227]],"activation":"σ","dense_2_b":[[-0.43676507],[-0.006130799],[-0.15402001],[0.026011059],[-0.12692562],[-0.43001604],[-0.33370367],[0.05327725],[-0.13920946],[-0.041543793],[0.06294844],[0.038047582],[-0.014338484]]},{"dense_3_W":[[-0.5613603,-0.17332096,-0.1882884,0.18131785,0.23258103,-0.44985455,0.1740991,-0.45171297,0.35409343,0.20938201,0.22257555,-0.12860954,0.31328893],[-0.2600292,0.064422175,-0.56568885,0.34872493,-0.014263635,-0.0898774,0.34932417,-0.04355818,0.33161792,-0.4384388,0.21339151,0.4251023,0.3974905],[-0.6470215,0.23639736,-0.59931415,0.20245089,-0.12388959,-0.57567924,-0.40078935,0.7244318,-0.4283423,-0.62795776,0.66424334,0.4475859,0.5476653]],"activation":"identity","dense_3_b":[[-0.025201272],[0.023392009],[0.030334707]]},{"dense_4_W":[[0.7327956,-0.77316505,-1.070442]],"dense_4_b":[[-0.028413372]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33590x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33590x00x00x00x00x00x00'.json deleted file mode 100755 index 3d325cc48d..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33590x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.4012003],[0.9084744],[0.3989995],[0.04316203],[0.9050049],[0.9055595],[0.90684354],[0.90098166],[0.89330155],[0.8834002],[0.872413],[0.04302624],[0.0430567],[0.04308886],[0.043104757],[0.043008905],[0.042880133],[0.042604897]],"model_test_loss":0.008806328289210796,"input_size":18,"current_date_and_time":"2023-08-09_03-30-27","input_mean":[[21.916237],[0.0112053035],[0.010207012],[-0.0057604206],[0.008076623],[0.008825207],[0.009262305],[0.015784515],[0.02193309],[0.029440241],[0.03471279],[-0.0059500956],[-0.0059324577],[-0.0059074587],[-0.005736568],[-0.005659438],[-0.005594903],[-0.005524908]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.113812774],[0.3718239],[-0.35734212],[-0.06904639],[1.668204],[-0.10319402],[1.6449547]],"dense_1_W":[[0.0018752348,1.2200488,-0.0005085679,-0.23384064,-0.9084212,1.2045864,-0.25443128,-0.13910054,-0.11256105,0.2179745,-0.08867826,0.16488013,0.35168028,-0.41050524,-0.1787089,0.43994418,-0.023817252,-0.08793733],[-0.04312678,0.43942824,0.11929371,-0.043850373,0.66910386,0.82385707,-1.033506,-0.08680779,0.37272778,0.28918013,0.2645954,-0.54255456,-0.44501963,-0.69097805,-0.45430678,-0.16467454,-1.2062163,-0.99093336],[0.06042321,1.267067,-0.12690838,-0.019565715,-0.8008834,1.6967841,-2.0936992,-0.73309845,-0.57475215,-0.97032815,0.53988296,0.0694317,0.19901374,-0.14523467,2.1987944,1.229183,0.41753313,0.53431153],[-0.005792214,1.6355677,3.5869675,-0.10959287,-2.1918557,-0.3136515,0.09652676,0.25249338,1.2399355,0.40560603,-1.0075005,0.6674059,0.023685906,-0.21504764,-0.5677693,-0.24701545,0.07742603,0.32459712],[0.9218543,-0.52115893,0.6683122,-0.49547228,-0.24380639,2.4874837,-1.3078512,0.50638986,-0.0022452448,0.18564974,-0.75149935,0.63630646,0.5417998,-0.47571868,-0.15869981,-0.19382617,-0.10689215,0.2615386],[0.0010884085,-0.07797116,-0.0022833152,-0.39120084,-0.54005134,2.2633855,-1.2395691,0.12394578,0.00030362024,0.113682985,-9.3380804e-5,0.9033568,0.15587245,-0.3935733,-0.43733695,-0.7241415,0.28267393,0.3301238],[0.8352049,-0.1388708,-0.62930346,0.028555281,0.0054504126,-1.2476301,0.70772225,-0.15140262,-0.14464574,0.05757089,0.6135008,-0.12531146,-0.37553704,0.107572205,0.24616258,0.23056793,-0.0013457185,-0.12736495]],"activation":"σ"},{"dense_2_W":[[0.08851535,0.6167409,0.05891007,0.5029618,-0.24713053,0.92836577,0.004156225],[-0.52199286,-0.36050865,-0.34034714,0.061794642,-0.109552786,-0.6266087,-0.31169102],[-0.7092186,-0.6801971,-0.26420647,0.39295742,0.05788309,-0.20119189,0.14084439],[-0.913237,-0.04797298,-0.48572946,-0.4032914,-0.7313818,0.1410581,-0.65766007],[0.6392394,0.24680118,-0.33827496,0.19102065,-0.08179918,0.7670678,-0.85375905],[0.8877098,-0.51691145,0.18935633,0.81099534,-0.6835733,0.80652905,-1.7127429],[0.26195377,-0.3456285,-0.71416736,-0.26705638,0.22344078,-0.27062252,-0.74219775],[0.1864041,-0.4139672,0.72243375,0.9860188,0.8927306,0.20730978,-0.0032860562],[0.029019173,0.7799921,-0.2924467,0.3229736,0.47412586,0.4905737,-0.71431655],[-0.9057719,-0.34483552,-0.6339002,0.44039795,-0.0815456,-0.6209059,-0.35469422],[-0.7642978,-0.21761882,-0.520907,0.38787058,-0.4754871,-0.47818175,0.5515306],[-0.45161492,-0.341044,-0.13645881,-0.65541065,-0.56910133,-0.19134521,-0.15136522],[0.8295409,0.03669771,0.38553452,0.446268,-0.31960988,0.7838232,0.068201065]],"activation":"σ","dense_2_b":[[-0.26521447],[0.122462295],[0.078140855],[-0.01945191],[-0.5003525],[-0.746069],[-0.45675567],[-0.3471183],[-0.29891852],[-0.21655038],[0.10162625],[0.14103983],[-0.29887974]]},{"dense_3_W":[[0.33197686,0.62199056,0.4247967,0.44158882,-0.12146235,-0.3375973,-0.44318354,0.0066761184,-0.13157894,-0.3443774,-0.44290087,-0.4360939,-0.33858845],[-0.4692612,0.46826863,0.054673724,0.283901,-0.01885255,0.2757358,0.31324366,0.4469478,0.3509845,-0.09880974,0.26294768,0.55622286,0.2389067],[-0.18467896,0.5184241,0.67473835,0.17306642,-0.28510845,-0.4426461,-0.046053376,-0.4500548,-0.50170314,0.26636368,0.60352683,0.80709,-0.5185129]],"activation":"identity","dense_3_b":[[0.08293219],[0.03822249],[0.060750734]]},{"dense_4_W":[[-0.12425623,-0.45378837,-1.2967176]],"dense_4_b":[[-0.056304324]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33690x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33690x00x00x00x00x00x00'.json deleted file mode 100755 index d6d0089b3b..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33690x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.15974],[1.045871],[0.3754209],[0.049849007],[1.0412234],[1.042158],[1.0431666],[1.0308688],[1.0145941],[0.9937998],[0.9695306],[0.049699858],[0.049720936],[0.049743976],[0.049645588],[0.049436506],[0.04910737],[0.048739962]],"model_test_loss":0.007239425089210272,"input_size":18,"current_date_and_time":"2023-08-09_03-55-25","input_mean":[[24.619316],[0.008315056],[-0.002209118],[-0.0009603967],[0.009455924],[0.009065263],[0.008578662],[0.008924362],[0.010585633],[0.012140301],[0.013719992],[-0.0010016458],[-0.000992241],[-0.0009847628],[-0.0009990969],[-0.0010099016],[-0.001055779],[-0.0010218886]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.01751012],[-2.792658],[-0.0036304477],[0.23906733],[-0.67204577],[2.824586],[0.020084955]],"dense_1_W":[[-0.0013722869,0.22783591,-0.010999781,-0.7420795,-0.5004164,0.8528246,-0.40537062,-0.3579778,0.20538606,-0.06207938,0.037892103,0.16028564,0.39440292,-0.47795537,-0.4981077,0.40456992,0.21351387,0.69398695],[-1.0907546,-0.37810156,0.5256466,-0.06323017,-0.28386277,0.40039942,-0.5656102,0.8704236,0.7594878,0.08758965,-0.2850435,-0.19939376,0.24667862,-0.5915887,0.7124935,0.33228317,0.40017298,-0.76232785],[-0.0022229636,-0.3566666,-0.0003173761,-0.2331804,0.32406712,-1.133683,0.29599214,0.07946594,0.19223347,0.10109193,-0.21318913,-0.4314191,-0.42940962,-0.059293773,0.96213984,0.3274362,-0.051667612,-0.10392697],[-0.17001934,0.31136727,0.00019800797,-0.39408368,-0.3893838,0.79402786,-0.490016,0.24215008,0.092356876,0.15550926,-0.18264957,0.2104772,0.2055425,-0.6079279,-0.100256115,0.35539958,-0.22659436,0.038026005],[0.5023145,0.415188,0.00086236314,-0.12141318,-0.3487774,0.5604944,0.29927528,-0.12137407,-0.20653158,-0.15300342,0.23502706,0.29839256,-0.15043968,-0.32693824,-0.2807662,0.010725707,-0.37295666,0.29116592],[1.1302519,0.29944658,0.5366313,-0.11482564,-0.48424527,-0.06633996,-0.12468005,0.48905316,0.53044945,0.3081709,-0.33819312,-0.054454595,-0.13536377,-0.1478465,0.49783385,0.4558332,0.22333856,-0.6476589],[0.019672142,-1.1385515,-2.8618698,0.5519799,0.5598079,-0.19218405,0.6098082,-0.34360152,-0.7758295,0.28531215,0.9757375,-0.13217533,-0.31033158,0.45779207,-0.3197823,-0.21947153,-0.24169978,0.12113089]],"activation":"σ"},{"dense_2_W":[[0.55490434,-0.06586316,-1.7488526,1.0742077,-0.26382893,0.5936367,-0.048338335],[0.22041039,-0.07157286,-1.3535683,0.9498899,0.59100443,0.13426219,0.1314393],[0.060050584,-0.37686986,0.93393904,-0.8473732,-0.8137314,0.3513347,0.13401532],[0.031560004,-0.67102486,-0.4638209,-0.16865264,0.19910118,-0.0022606154,0.014461398],[-0.26292112,-0.8773706,-0.27558997,-0.98985237,0.115747504,0.15425104,-0.32170153],[0.3645839,0.23929603,-1.0847621,0.7692537,0.053893678,0.29140672,-0.55564046],[-0.29527074,-0.8282215,0.6947013,-0.34474802,0.33731544,-0.47208363,-0.2703771],[0.10967559,-0.45384485,1.1605363,-1.1405638,-0.16794126,0.009725002,0.25623515],[-0.47460532,0.014810191,-0.049116056,-0.103007615,-0.7748003,0.020772532,0.164838],[-0.23443891,0.22693226,0.8323869,-0.5907415,-0.18859898,-0.5243307,0.024510408],[0.35138795,-0.71696883,0.6208494,-0.21413626,-0.30234987,-0.19566858,0.203605],[0.29550865,-0.5253764,0.44364005,-0.15027097,-0.52989537,-0.6267321,0.56808716],[-0.16024043,0.7365189,-0.48886365,-0.01982367,0.4768797,-0.4950252,-0.5998298]],"activation":"σ","dense_2_b":[[-0.28562254],[-0.28906816],[-0.004571446],[-0.16752788],[-0.11627307],[-0.17883891],[-0.08537872],[0.15237623],[-0.16480568],[-0.032770704],[0.038674396],[0.07090385],[-0.14601162]]},{"dense_3_W":[[0.6690154,0.071317546,-0.10587343,0.4107949,-0.19921759,0.026011487,0.083912425,-0.68911606,0.29841265,0.040238436,-0.19996041,-0.055458866,0.08188202],[0.8015601,0.021846859,-0.5534128,0.6944063,0.11055347,-0.0645739,-0.38998172,0.34884468,-0.06341523,-0.43967232,-0.49337965,-0.21307902,-0.22756565],[0.45879635,0.8307091,-0.22719614,-0.40354267,-0.23650342,0.8461611,-0.037451327,-0.43379617,-0.20254998,-0.5837768,-0.53370506,-0.6808303,0.31557706]],"activation":"identity","dense_3_b":[[-0.057544097],[0.14032708],[0.144235]]},{"dense_4_W":[[0.14295731,0.35312867,0.8483934]],"dense_4_b":[[0.13570417]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33721x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33721x00x00x00x00x00x00'.json deleted file mode 100755 index 8ad70e4908..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019 b'8965B33721x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.935237],[1.1821631],[0.40853298],[0.042256694],[1.1741917],[1.1772016],[1.179894],[1.1685648],[1.1510983],[1.1243435],[1.0962706],[0.042120658],[0.042167474],[0.04220416],[0.04219818],[0.042086348],[0.04190632],[0.041555516]],"model_test_loss":0.00865387637168169,"input_size":18,"current_date_and_time":"2023-08-09_04-21-28","input_mean":[[23.898808],[-0.061529078],[-0.0012386319],[-0.0038458514],[-0.05761159],[-0.058545504],[-0.058786135],[-0.0583106],[-0.05796732],[-0.055892948],[-0.055688474],[-0.0037394448],[-0.003766136],[-0.0037952624],[-0.004012165],[-0.0041559814],[-0.004327924],[-0.004494689]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.04631648],[-0.06555636],[-0.27339923],[1.8481191],[-1.92371],[-0.07156656],[-0.097226106]],"dense_1_W":[[0.007923849,-0.33078587,0.032207586,0.18164907,0.23387666,-0.6738162,0.24611568,-0.37660727,0.110470906,-0.2237764,0.11238094,-0.31033733,0.20521657,0.43043175,0.14618683,0.4109157,-0.045097392,-0.018656284],[0.0059264796,-1.4818896,-3.214948,0.72709614,1.4496776,-0.11549172,0.05585469,0.067367174,-0.5819717,-0.3143236,0.77938473,0.07448307,-0.5458307,-0.06897672,-0.307255,0.16108052,0.27242532,-0.31170502],[-0.029176371,-0.20550303,-0.011238303,0.40422836,0.651665,-1.205251,0.51314026,-0.06254734,-0.11725389,-0.004469061,0.057605438,-0.16204368,-0.20271099,-0.023192484,-0.09425388,0.12548377,0.16910473,-0.18110643],[0.913644,-0.22446877,-0.21192145,-0.35401252,0.32936195,-0.61308485,0.41242036,-0.054412857,-0.02144861,-0.7086938,0.46699503,-0.004493464,0.0013601056,0.81566185,-0.3642738,-0.123768955,-0.16624025,0.25355738],[-0.8782031,-0.4412915,-0.21091951,0.22394417,0.46380237,-0.52400494,0.51977473,-0.3934778,-0.035707317,-0.24971296,0.28146827,-0.033155452,-0.19057514,0.6566132,-0.22685449,-0.43057168,-0.40194762,0.46104968],[-0.009924806,0.34001565,0.008358892,0.17911334,-0.2556001,1.0795789,-0.789162,0.09035937,0.12697068,-0.20735092,0.08643546,0.22710793,0.63394094,-0.51461715,-0.55570894,-0.44454226,0.11515733,0.27629676],[-0.010439776,0.4010142,-0.008085905,0.10725627,-0.02110396,1.1806133,-0.8606922,-0.046847433,0.20864236,-0.11985588,0.0857068,0.15260428,0.2444861,-0.03642649,-0.59779644,0.32445312,-0.30190656,0.18685275]],"activation":"σ"},{"dense_2_W":[[-0.52392507,-0.053534046,-0.13596098,0.18724343,-0.7713173,0.71427715,0.7350986],[0.103605255,0.41991144,0.39895838,0.5297367,0.19954357,-0.07358835,-0.3800046],[-0.13534087,-0.07954504,-0.7891074,-1.04155,0.031840924,0.41851434,0.057672217],[0.18972358,0.53236634,0.6439358,0.110999696,-0.29787117,-0.5545026,-0.57896006],[0.46418715,0.073028445,0.16890584,0.31551063,0.44200546,-0.26141322,-0.8365631],[0.12976393,-0.42719504,-0.051802225,-0.9134454,-0.3056411,0.13355789,0.07198249],[-0.63852465,0.2367602,-0.17162862,0.09097974,-0.52287674,-0.110359624,0.25404847],[0.5456408,0.06541811,0.044041876,-0.079029,-0.19681188,-0.21370907,-0.32052663],[0.09726532,-0.21465707,0.609168,0.0588532,0.20782056,-0.029063694,-0.6592013],[0.014375357,-0.883838,0.1768969,-0.9506456,0.25958836,-0.26901084,-0.1747859],[-0.35349178,-0.045510672,-0.17568451,-0.18829311,-0.38173485,0.728441,0.254347],[0.10186036,-0.28966042,-0.20384645,-0.1784742,-0.72974414,0.7239003,0.84594786],[-0.13665237,-0.15572082,-0.23385355,0.24481148,-0.43725377,-0.0049998006,-0.47707897]],"activation":"σ","dense_2_b":[[0.058335815],[-0.08154515],[-0.10210349],[-0.017691245],[-0.09656311],[-0.11049739],[-0.0880714],[-0.0022098408],[0.0071529862],[-0.1155999],[0.015483792],[0.025640251],[-0.042404395]]},{"dense_3_W":[[-0.12712753,0.21623728,0.28793716,0.1288633,0.64396095,0.3019295,0.46078098,0.57720184,0.17094983,-0.29401407,-0.25292718,-0.6778351,-0.41588908],[-0.22999658,0.09658766,-0.6467794,0.43180892,0.09925922,-0.5388918,-0.21273088,0.39167225,0.42423695,-0.09006673,-0.5738687,-0.0685332,0.021032669],[-0.32774815,0.556063,0.13476838,0.33248642,0.581253,-0.13394178,-0.5767492,-0.31769308,0.14392637,-0.24081674,-0.4971341,-0.698404,0.42863867]],"activation":"identity","dense_3_b":[[0.012507354],[0.022687975],[0.023133183]]},{"dense_4_W":[[-0.598664,-0.94400805,-0.8493222]],"dense_4_b":[[-0.019668857]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019.json deleted file mode 100755 index 1f72524957..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS ES HYBRID 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.264645],[1.3075382],[0.44552016],[0.05060625],[1.2979935],[1.3015733],[1.3041736],[1.2848994],[1.2584554],[1.2216989],[1.1856711],[0.0503414],[0.050400995],[0.050465323],[0.050478272],[0.050248075],[0.04985913],[0.049460884]],"model_test_loss":0.0099137919023633,"input_size":18,"current_date_and_time":"2023-08-09_02-40-24","input_mean":[[23.043215],[-0.03371662],[0.0018890268],[-0.0067125894],[-0.031319],[-0.031593338],[-0.031663474],[-0.028725801],[-0.027785186],[-0.025144741],[-0.02163734],[-0.0065818275],[-0.0066027185],[-0.0066283992],[-0.0066961027],[-0.0067884526],[-0.006846654],[-0.006944263]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.22580747],[-0.259433],[0.15566492],[0.089529224],[-2.3941963],[1.9521749],[0.06790461]],"dense_1_W":[[0.077735715,0.5491028,0.031780783,0.061651852,-0.069661885,0.5064926,-0.63392377,-0.0062182117,0.39679298,-0.26671922,0.048575882,0.5175869,0.57268655,-0.72039944,-0.31672445,-0.682284,0.17552397,0.30148625],[-0.0033005108,1.3755544,2.9333427,-0.05311045,-1.6043663,0.119831525,-0.5092124,0.2000376,0.7576132,0.73848486,-0.8814628,0.3480808,0.3585077,-0.4351482,-0.43040854,0.005097866,0.15632282,0.105506845],[-0.12613682,0.053123258,-0.011962454,-0.31154743,-0.2879405,0.78129184,-0.3477709,0.11016321,-0.397643,0.29684106,-0.08335899,0.0011086084,0.101133905,0.14986652,0.10471807,0.088165864,-0.22822371,0.123035155],[-0.005890634,-0.5132265,0.02232674,0.038106803,0.26947373,-1.2872188,0.6846012,-0.06600805,0.23923853,-0.29101142,0.04426992,-0.41297558,0.27426517,0.054011345,0.22521552,-0.360118,0.13597938,0.0095917815],[-1.3102455,0.18389338,0.037292566,-0.4504437,-0.38227966,0.32267326,-0.41582158,0.34839186,0.41863716,-0.19948383,0.033166535,0.11101668,-0.17950892,0.03513152,0.5583567,-0.21783155,0.24341545,-0.21313481],[1.28462,-0.29303363,0.03239438,-0.07798496,0.47706926,0.26473632,-0.61586124,-0.015281519,0.34897882,-0.07400412,0.17125309,-0.11961657,-0.23919915,-0.15667392,0.09201665,0.82350713,0.0330319,-0.45983887],[0.008501559,0.4151316,0.24970283,-0.1932585,-0.3999573,0.7981322,0.08446922,0.43549573,0.42775178,-0.35798648,-0.25701943,0.6345054,-0.10344621,-0.4299825,-0.776323,-0.3758547,-0.5269095,0.2744096]],"activation":"σ"},{"dense_2_W":[[-0.42842335,0.05620099,-0.41398174,0.0075187576,-0.65040445,0.043987595,-0.7884258],[-0.21810047,-0.52364224,-0.24926645,1.5748769,-1.0048369,0.6784754,-0.17087893],[-1.0974892,-1.1205297,-0.52288646,-0.4585741,0.8355013,-0.86901873,0.08091025],[0.19924684,-1.6000783,-0.5017675,-0.6335594,0.81060636,-1.6753666,0.0042119725],[-0.6766826,0.035237,-0.5353934,0.8407999,-0.06624779,-0.5392324,-0.3999412],[0.83403057,-0.38959885,0.15132989,-0.74285805,0.81045157,0.045238588,0.057127055],[0.95894325,0.36917272,0.7675816,-0.8249631,-0.34739387,0.8758971,-0.17811485],[0.44207436,-0.13875146,-0.17526102,-0.48803738,0.8165408,-0.08225913,0.5292656],[-0.28129107,0.20525171,-0.7332951,-0.1858197,-1.0882939,-0.50657177,-0.48805308],[-0.7845191,-0.29932752,-0.3210797,0.7842274,0.120213665,-0.36830777,-0.4480391],[-0.4418548,-1.008012,-0.7143584,-0.03555356,0.6086784,-0.7865452,-0.24040942],[-0.14839058,-0.32335532,-0.67143065,0.41939855,-0.535096,-0.68048733,0.21396716],[-0.76420903,0.36155707,-0.16971277,0.82980686,-0.45884535,-0.16401686,-0.6478219]],"activation":"σ","dense_2_b":[[0.12145026],[0.4703432],[-0.17840025],[-0.04283482],[-0.062148705],[-0.016880652],[-0.028769262],[-0.25934026],[-0.3588194],[0.076413475],[-0.092342615],[0.0006822613],[-0.045883182]]},{"dense_3_W":[[-0.45874047,-0.6988261,-0.31221494,-0.6035287,-0.28207257,0.38988772,0.83404875,0.6202294,0.09104912,-0.2267445,-0.38150835,-0.57334363,-0.1794997],[-0.40566936,-0.5168596,-0.5243848,-0.11845207,0.35303384,-0.10472868,0.7140052,0.47152635,0.16413036,0.1380713,-0.43810734,-0.47773978,-0.4005078],[-0.44185263,-0.6747273,0.061594818,-0.0121055255,-0.28526518,0.7952212,0.69975144,-0.06553925,-0.3437621,-0.53210264,-0.114378266,-0.53271616,-0.10757975]],"activation":"identity","dense_3_b":[[0.09586072],[0.047312237],[0.13191016]]},{"dense_4_W":[[0.9993152,0.24272008,0.6070091]],"dense_4_b":[[0.08831376]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53271x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53271x00x00x00x00x00x00'.json deleted file mode 100755 index 2754e4d694..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53271x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.653599],[1.0475699],[0.507353],[0.0511427],[1.0465056],[1.0461539],[1.0466276],[1.0435494],[1.0403829],[1.034095],[1.0267593],[0.05091882],[0.050985433],[0.05104327],[0.051194124],[0.051185224],[0.050950732],[0.0506017]],"model_test_loss":0.002317079808562994,"input_size":18,"current_date_and_time":"2023-08-09_05-35-31","input_mean":[[24.87495],[-0.022877222],[0.03129203],[-0.005471257],[-0.033396523],[-0.030427122],[-0.026651071],[-0.015034059],[-0.0059272125],[0.004262375],[0.010118156],[-0.0058831],[-0.005736906],[-0.005597743],[-0.0052517094],[-0.0050170966],[-0.004636833],[-0.0044273734]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0750014],[-0.69738495],[-0.057568032],[-0.8138096],[0.8422802],[0.00422568],[-0.025037726]],"dense_1_W":[[-0.92567337,-0.4179756,-2.364189,-0.37799117,0.359521,-0.23128231,0.16912965,0.15324992,-0.29314092,0.35514003,0.1113519,0.18702953,-0.22939733,0.39211923,-0.19355458,-0.14666928,0.2541103,-0.015037065],[-0.26681975,0.19461927,-0.02443796,-0.19870783,0.015366757,-0.83895224,0.50951827,-0.046161894,-0.26054674,-0.10241932,0.09262357,0.32455042,-0.35291085,0.4337215,-0.047874916,-0.070374765,-0.19080578,0.16888785],[-0.0450405,0.3024657,-0.020173237,-0.18040816,-0.6210729,0.668985,-0.1294948,0.102294534,0.027441807,0.19392844,-0.15024275,0.2724876,0.30017278,-0.8359932,-0.09295618,0.5128679,-0.025930675,-0.08442807],[-0.9385832,0.38830346,2.4171264,-0.072888754,-0.6450525,-0.0052705472,-0.2073176,0.37481403,0.5322297,-0.016934434,-0.6272646,-0.011407112,0.2999659,-0.056183133,-0.17157498,0.16704822,-0.00995726,-0.016760994],[0.41495678,-0.36016837,-0.044468425,0.699604,0.12629355,-0.9168069,0.42850283,0.077245876,0.3887621,0.0388322,-0.26400945,-0.4751828,-0.018784745,-0.17013955,0.21044336,0.14742237,-0.257179,-0.07762288],[-0.0029706263,-0.27664563,0.20847207,0.26354775,0.20674135,1.0040307,0.04915213,-0.13483308,-0.15825804,-0.057579137,-0.0058719614,0.7015616,0.5505965,-0.08130265,-1.0528653,-0.55547035,-0.94390494,0.61734366],[0.017797226,-0.38827214,0.011275224,0.4138954,0.15614575,-0.6526553,0.3634799,0.23701335,-0.198492,0.14194344,-0.071847096,-0.3582882,-0.39685383,0.5765013,-0.12813473,0.23526756,-0.30017313,0.05643834]],"activation":"σ"},{"dense_2_W":[[0.11522227,-0.50041586,0.7625706,0.12953083,-0.84721595,0.26854208,-0.78707874],[-0.26998946,0.9135468,-0.5267852,-0.47694728,0.26567996,-0.4057614,0.44248503],[0.3397881,0.241825,-0.22745344,-0.43884552,-0.31017342,-0.48791227,0.624083],[-0.23961566,-0.61447287,0.7523344,-0.1524797,-0.034522954,0.80298376,-0.74258584],[-0.20403866,-0.45207465,0.2864171,0.585039,-0.43790713,0.049314383,-0.691187],[-0.37280735,-0.9096017,0.79407877,0.06587302,0.13932212,0.7276438,-0.16217615],[0.042196184,0.80028385,-0.6367271,-0.046625376,0.25419405,-0.8610059,0.36960703],[0.09347458,0.43240634,-0.8759679,0.1721286,0.5472644,-0.0896131,0.6584737],[0.34702182,-0.17617214,-0.37235767,-0.0058014165,0.6870974,-0.38691258,0.28578055],[0.027087606,-0.38712898,-0.5076633,-0.047688764,0.16426884,-0.32992855,-0.16210902],[0.05157716,-0.47973877,0.12872508,0.22652198,0.093843356,0.47721627,-0.70800775],[0.13196792,0.70168835,-0.728704,-0.507929,-0.3850781,-0.2150298,0.13088666],[-0.12113243,-0.341827,0.24893352,-0.064033784,-0.024845326,-0.21256083,-0.37305534]],"activation":"σ","dense_2_b":[[-0.040676095],[-0.04934049],[-0.13523409],[0.032700114],[0.04797525],[0.012522698],[-0.053262446],[-0.14503641],[-0.07796666],[-0.3327117],[-0.06517155],[-0.29661015],[-0.043684535]]},{"dense_3_W":[[-0.39554232,0.50275403,0.46011072,-0.26603845,-0.6258986,-0.18898715,0.350607,0.6611593,0.36714667,-0.03429704,-0.38445738,-0.42724767,-0.415385],[-0.12109516,-0.0026784122,-0.33396584,-0.4921449,0.025638519,-0.26242292,0.57392186,0.6282738,-0.31419235,-0.15783457,0.29055953,-0.11300429,-0.31670427],[-0.27667677,0.12075474,-0.13275498,-0.71421945,-0.30053577,-0.46803996,0.68881786,0.33228284,0.24152169,0.09559637,-0.0023924343,0.56565654,0.16803065]],"activation":"identity","dense_3_b":[[-0.027746597],[0.20316003],[-0.029442076]]},{"dense_4_W":[[-0.45957002,-0.04833828,-0.58646995]],"dense_4_b":[[0.02725393]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53280x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53280x00x00x00x00x00x00'.json deleted file mode 100755 index a54f55a3cc..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53280x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5803027],[0.8603793],[0.4513569],[0.029105911],[0.8487619],[0.8510528],[0.8550627],[0.8484798],[0.83925754],[0.832451],[0.8223531],[0.028991073],[0.02902925],[0.029061288],[0.029074881],[0.02896926],[0.028916502],[0.02890444]],"model_test_loss":0.0030515140388160944,"input_size":18,"current_date_and_time":"2023-08-09_06-00-13","input_mean":[[30.979578],[0.022293376],[0.02019513],[0.016653037],[0.016664432],[0.017896485],[0.020654846],[0.027760973],[0.031163529],[0.030931678],[0.0288627],[0.01662461],[0.016658263],[0.016681287],[0.01674288],[0.016692968],[0.016676333],[0.016725713]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.024255],[-0.25703537],[0.066896215],[-0.077876054],[-1.1755685],[0.053735092],[-1.813157]],"dense_1_W":[[-0.27897373,0.6238509,-0.20489661,0.1433003,-0.44274482,-0.46238834,0.08278444,-0.12610668,-0.28404528,-0.08119373,0.11206268,-0.011977598,-0.08802816,0.35872343,-0.44637114,0.09940686,-0.098998114,0.087747104],[-0.077062964,0.3174407,0.08627412,-0.2621875,-0.39889467,0.75071305,-0.02536695,-0.11606417,-0.44491976,0.27360457,0.01498593,0.5227387,0.3463404,-0.38459015,-0.5227802,0.03605743,0.0087138405,0.20318434],[-0.04407056,0.6402981,2.5346818,-0.0052747075,-0.51173216,0.33047506,-0.53520495,0.59467864,-0.2947999,-0.36928508,-0.72547835,0.23617381,0.28750753,-0.41744986,0.010572497,0.10425088,0.1149194,-0.28841314],[-0.0036573706,0.22945316,-0.0073808106,0.06309982,-0.40813765,1.0437207,-0.39680403,-0.092092186,0.14273745,-0.1925738,0.11202375,0.5490815,0.34099597,-0.39302826,-0.64261353,-0.06269388,-0.08197236,0.13292448],[-0.42824522,-0.25304925,-0.16903412,-0.23054327,0.46596405,-0.5538919,0.0059226677,-0.4401322,0.076376624,0.08189739,0.06873566,-0.26616675,-0.16517103,0.4085307,0.3613046,0.17234507,-0.08328618,-0.148345],[0.011475744,-0.28661492,0.033517,-0.1035912,0.32961515,-0.2715907,-0.105986364,0.09126555,-0.22195859,-0.2122366,0.19187194,0.29742795,-0.20964493,0.0700461,0.13138907,-0.2559807,0.38601238,-0.18372318],[-0.5847607,0.0017109648,0.25774232,-0.2373588,-0.2924784,0.9778526,-0.45161787,0.49743965,0.23385304,0.0501783,-0.2576654,0.08772852,0.2509274,-0.3904387,-0.055983637,0.24153244,0.21497074,-0.16889808]],"activation":"σ"},{"dense_2_W":[[0.2696645,0.09097578,0.2661085,0.008203172,0.58712953,0.008232839,-0.38130957],[-0.44034633,0.2513559,0.05034199,-0.7566649,-0.5055022,0.28274307,-0.18962547],[0.35309595,-0.52410984,-0.2166621,-0.51837164,0.51281035,0.6052604,-0.13995785],[-0.37981346,0.28354916,-0.22428422,0.09537504,-0.6703727,0.09452615,0.34979334],[-0.1286504,0.4058662,0.06990852,0.2916711,-0.2246424,-0.031917993,0.05038822],[0.11269455,0.27946022,-0.013186193,0.57915336,-0.779333,0.11132818,-0.08520752],[-0.5124887,-0.39176804,0.32016045,0.38343418,0.072306104,-0.21488254,0.15051393],[-0.25066197,-0.099142715,0.3025643,0.1498029,-0.22075655,0.08285247,0.16742654],[-0.0027565423,-0.54777265,-0.33877024,-0.45952037,-0.17979734,-0.24340412,-0.24863824],[-0.39911193,0.0050099217,-0.21278913,0.64141303,0.24979603,-0.12581906,0.60516745],[-0.1935344,-0.11531806,-0.5091185,0.23634945,0.17247137,0.32147193,-0.16084859],[-0.118722916,0.26619238,-0.45988715,0.38617563,0.24613833,0.50531286,-0.6070944],[-0.31973958,0.569741,0.28206736,0.307348,-0.2108575,-0.49773324,-0.17307866]],"activation":"σ","dense_2_b":[[-0.0266998],[-0.030578468],[0.010926638],[-0.12699191],[-0.18184385],[-0.09752178],[-0.01733428],[-0.027403263],[0.02766463],[-0.06362805],[0.004015615],[-0.04242502],[-0.022493202]]},{"dense_3_W":[[-0.12600064,-0.633004,0.16414349,-0.04648247,-0.20951967,-0.12900907,0.45063862,0.103525355,-0.68074024,0.55499035,0.41209528,-0.42067012,0.39265448],[0.3260821,0.57643926,0.61910576,-9.839889e-6,-0.01744337,-0.48366365,0.29486895,0.09513366,0.1914889,-0.5954007,0.3020512,-0.16881369,-0.49208182],[0.10530183,0.49050504,-0.5989605,0.26496586,0.1901535,-0.4129085,0.31638667,0.10397078,-0.11685577,0.56756043,-0.17770557,-0.29197764,0.2562083]],"activation":"identity","dense_3_b":[[-0.123790324],[0.014918573],[-0.018756263]]},{"dense_4_W":[[0.02038734,-1.2047465,0.8046749]],"dense_4_b":[[-0.016778698]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53281x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53281x00x00x00x00x00x00'.json deleted file mode 100755 index c94650159d..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018 b'8965B53281x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.684907],[0.9460035],[0.33342025],[0.043801006],[0.943236],[0.9438911],[0.9439055],[0.9338765],[0.9230702],[0.90794885],[0.8921319],[0.04381569],[0.043804597],[0.043778293],[0.04356958],[0.043327603],[0.042924862],[0.042455677]],"model_test_loss":0.00282586133107543,"input_size":18,"current_date_and_time":"2023-08-09_06-25-49","input_mean":[[29.41278],[-0.009032724],[-0.0021492816],[0.004332889],[-0.00860808],[-0.00887388],[-0.010132152],[-0.0102206785],[-0.00937236],[-0.0074595967],[-0.005152443],[0.004347949],[0.004330746],[0.0043104156],[0.0040981416],[0.0039356602],[0.0037958957],[0.0036709488]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.09501388],[0.8404856],[0.7934484],[-0.066568784],[-0.31608787],[-0.109698914],[-0.12751737]],"dense_1_W":[[0.0011169801,-0.018726321,0.0015862584,0.17112947,-0.5446971,0.5853068,-0.3039678,0.4737596,0.21017975,-0.23414794,-0.07348194,0.98195386,-0.14195174,-0.10654367,-0.34493265,0.20805775,-0.4868443,-0.23417883],[0.9548257,-0.46348402,-0.29633194,0.18528488,0.40596813,-0.824306,0.30642077,-0.007846376,0.033617396,-0.23929001,0.1453222,-0.35812417,-0.22854868,0.39195415,0.49922717,0.7028648,0.50149786,-0.86416316],[0.97592115,0.007649104,0.3003986,-0.33777642,-0.13973069,0.46592122,0.03299811,0.19446975,0.067927755,0.1478205,-0.13307863,-0.11891002,-0.47453943,-0.19565998,0.54486775,-0.04400889,-0.35464677,0.13683307],[0.0047029937,0.14668527,-0.005069146,0.24684682,-0.614384,1.0910827,-0.094034076,-0.19462726,0.28000307,-0.42661187,0.2321289,-0.064942434,-0.42558447,-0.39662802,-1.0747879,0.06939005,0.2870679,1.3147138],[0.016900972,0.39719796,-0.0023543735,-0.0913586,-0.27493247,0.90382856,-0.43656674,0.011338879,-0.26157647,0.2745171,-0.04499426,0.9156245,0.18295021,-0.9320426,-0.07365104,-0.19892058,0.16344132,-0.0042856243],[-0.011051511,-0.78559583,-3.1862526,-0.13295761,0.65890294,-0.68599087,-0.12433693,0.08657334,-0.41985497,0.47015917,0.5829991,-0.71003574,-0.34596688,-0.17925437,0.41965798,0.31952843,0.61812705,0.09319992],[0.014576556,-0.18765137,-0.001399782,-0.12696555,0.0890215,-0.64548665,0.17923205,0.14201109,-0.30869052,0.19999632,-0.092428885,-0.6353419,0.07439351,0.80051905,0.04906582,-0.1398521,-0.2728979,0.2945558]],"activation":"σ"},{"dense_2_W":[[-0.6210588,0.45552707,-0.25218815,-0.17052735,-0.28304043,-0.3500373,0.014205802],[0.33707482,-1.3240942,-0.6408793,0.8307369,-0.10797842,-1.2964274,-1.3836163],[-0.33217075,-0.43026388,-0.12341792,-0.41299066,0.2880537,0.083734885,0.1641773],[0.35629743,-0.4401899,0.1567848,0.30102292,1.318357,0.048755936,-1.2286369],[-0.12527834,-0.23215155,0.56640136,0.3483607,0.8943009,-0.039557446,-0.9478881],[-0.57511246,-0.2275013,0.23487775,0.46695858,0.37859124,-0.17711872,0.26375052],[0.63963145,-0.45322925,-0.54017925,-0.3060082,0.12730126,-0.6374732,-0.018194102],[-0.5951409,-0.08423941,-0.0051530325,-0.53952223,-0.6064661,0.23082048,0.39190525],[-0.3667256,0.008534655,0.4268871,0.34291455,-0.6101535,0.21997947,0.25764218],[-0.11584076,0.5873763,-0.63031334,0.2047302,-0.08922794,-0.18342617,0.6476465],[0.07069251,-0.45771497,0.12435426,0.04750334,1.8602587,0.24760254,-1.2554413],[0.33669302,0.4188555,-0.46464103,-0.048415337,0.05759297,0.3541,-0.13896422],[0.511148,0.23681977,0.36551967,0.35152832,0.792135,-0.31216228,-0.83162516]],"activation":"σ","dense_2_b":[[0.08171513],[-0.1163031],[-0.0041464856],[-0.21284437],[-0.06291548],[-0.047316123],[-0.13749899],[0.047459695],[-0.03701015],[0.045251872],[-0.29556692],[-0.00961862],[-0.029000068]]},{"dense_3_W":[[0.12327876,-0.048812684,0.6152893,0.21222751,0.18817006,-0.3728164,0.270455,0.4454563,-0.11968707,0.59693485,-0.06342227,0.34730113,-0.57901394],[-0.4065829,-0.04221764,0.020975756,0.42464995,0.34640458,0.4587765,0.20783032,-0.86228454,-0.72097176,0.101609,0.16048418,0.48934665,0.49102414],[-0.29578757,0.22049302,-0.14916682,0.33021316,0.40887907,-0.35374218,0.4427254,-0.24567138,0.15444578,-0.63093376,0.25220618,-0.3500056,0.50111896]],"activation":"identity","dense_3_b":[[0.016075611],[-0.12729394],[-0.029249111]]},{"dense_4_W":[[-0.2641593,0.3333745,0.8707298]],"dense_4_b":[[-0.031108981]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78060x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78060x00x00x00x00x00x00'.json deleted file mode 100755 index 4f170fb088..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78060x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5523615],[0.9379796],[0.45997825],[0.04207175],[0.93919086],[0.93780416],[0.93652314],[0.91719604],[0.9034866],[0.88726455],[0.87291807],[0.041934993],[0.04192026],[0.04190248],[0.04164398],[0.04141029],[0.04100794],[0.040568497]],"model_test_loss":0.009954309090971947,"input_size":18,"current_date_and_time":"2023-08-09_07-16-58","input_mean":[[23.397924],[-0.035182085],[-0.008444157],[-0.009997125],[-0.033629764],[-0.035007965],[-0.036390144],[-0.03466254],[-0.03890593],[-0.043926965],[-0.046389326],[-0.0101134945],[-0.010121674],[-0.010125806],[-0.010022554],[-0.010067445],[-0.01014944],[-0.01027719]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.11680644],[-0.051436793],[0.113495305],[-0.01763076],[-0.2807573],[-0.120603226],[-0.2764257]],"dense_1_W":[[-0.0065118936,0.56794316,-0.032589998,-0.50918645,-0.060956616,0.9810513,-0.4785043,-0.008406265,-0.25840858,-0.030046064,0.2434936,0.28673422,0.075997785,-0.024465384,0.08006076,0.0716426,0.28245556,-0.24962135],[-0.023541331,0.8734935,5.699426,0.19145805,-0.5681911,0.014759005,-0.56469446,0.1186507,1.0214005,0.043286715,-0.4702243,1.222705,0.19846615,-0.15771359,-0.5883803,-0.39430845,-1.0096143,0.27339858],[0.45483243,-0.49536738,0.072315626,-0.011725951,0.086452276,-0.66168356,0.45572364,-0.23768657,-0.18117812,0.05266754,-0.04890949,-0.38048756,0.16300593,0.13775355,-0.15970619,-0.3038916,0.6219313,0.1968499],[0.0054552057,-0.093241274,-0.34040582,0.12216264,0.037718106,-0.46982464,1.1711069,-0.35518944,-0.51062614,-0.24715386,0.38451096,-0.40132213,-0.30608684,0.052601833,0.74853015,0.23053922,-0.2007082,-0.23960419],[-0.8520971,0.24116111,-0.089963615,0.15706292,0.20338425,-0.37373862,0.75903034,0.090791985,0.17018794,0.37343842,-0.17452653,-0.66951627,0.18461663,0.5859271,0.29183576,-0.0037389225,-0.4057764,-0.47674724],[0.012710134,0.435232,0.03543807,-0.036046702,-0.75405264,1.3212848,-0.5093719,-0.08682382,0.04233904,0.07034154,-0.097755805,0.7234229,-0.13957694,-0.57484436,-0.054068033,0.07991787,-0.05443112,0.05077546],[0.0065418757,-0.6116693,0.025854474,-0.16136944,-0.16720891,-1.043264,0.4933813,0.224038,-0.3168288,-0.026011353,-0.05957108,0.23472212,0.37794927,0.2708049,0.15880762,0.61977124,0.012229787,-0.19856346]],"activation":"σ"},{"dense_2_W":[[0.03146408,-0.13779452,0.75000536,-0.11498503,0.039698552,-0.40190673,0.7709186],[0.37171277,0.22650109,-0.19030742,-0.073141806,-0.20702402,0.33066395,-0.45444292],[-1.1190504,0.69764763,0.5377285,0.8013254,-0.18115376,-1.2980549,0.25413626],[0.5416716,-0.31991583,0.14092752,-0.44703355,-0.55331653,0.51895857,-0.710503],[0.49094778,0.14815535,-0.32600418,-0.63197994,-0.5370441,-0.083100855,-0.49352166],[-0.23559721,-0.54140323,0.78799313,0.8764922,0.39852077,-0.28144458,-0.1821518],[0.1500585,-0.32034987,-0.84529537,-0.41722593,-0.05029655,0.6604846,0.10658351],[-0.42256495,-0.089720786,0.876472,-0.08991852,0.4667296,-0.97803175,0.5145723],[-0.27449653,-0.47807348,0.61057085,0.6598581,0.28521484,-0.8254127,0.06432298],[-0.382518,-0.21356484,0.25773606,0.5809972,-0.015983999,-0.84368616,0.5800405],[0.5958008,0.37813,-0.42608508,-0.27179977,-0.4507597,0.28317532,-0.16438048],[-1.1322341,-0.49540442,0.17639433,0.08400206,0.59758526,-1.2232964,0.34022707],[0.018905511,0.3392843,-0.59598386,-0.44822788,-0.29109383,0.74419224,0.015790993]],"activation":"σ","dense_2_b":[[-0.025122445],[-0.08817167],[-0.18689576],[-0.15509543],[0.008846949],[-0.18207294],[-0.09901433],[-0.17813578],[-0.14573547],[-0.19155172],[-0.052382644],[-0.32253534],[-0.07473206]]},{"dense_3_W":[[-0.68304485,0.5767948,-0.17764251,0.33225822,0.2699078,-0.49734563,0.49882662,0.18162656,-0.21204075,0.08684376,0.52946407,-0.059715066,0.45340413],[-0.07762768,-0.11692675,0.5170938,0.048767503,-0.60837173,-0.004813306,0.16917212,0.70467114,-0.026616994,0.24883772,-0.50158614,0.36716226,-0.30068868],[0.10084016,-0.039664295,-0.31447792,-0.15362875,0.42048535,-0.38715878,0.07678511,-0.1563305,0.6452277,0.7573569,-0.5292506,0.28040695,-0.584425]],"activation":"identity","dense_3_b":[[-0.06316189],[0.050863322],[0.07035302]]},{"dense_4_W":[[0.79278344,-0.8832224,-0.20445246]],"dense_4_b":[[-0.054674253]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78080x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78080x00x00x00x00x00x00'.json deleted file mode 100755 index 309a6385f1..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018 b'8965B78080x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.7839713],[1.01453],[0.37487027],[0.036252256],[1.0074129],[1.0092586],[1.0114115],[1.0015283],[0.98707575],[0.9704761],[0.950582],[0.036038164],[0.036066703],[0.036101792],[0.036004264],[0.03577164],[0.03552027],[0.035136368]],"model_test_loss":0.005577164702117443,"input_size":18,"current_date_and_time":"2023-08-09_07-41-58","input_mean":[[26.561443],[-0.023815667],[0.010739189],[-0.013143686],[-0.026596677],[-0.024625478],[-0.023937158],[-0.020562654],[-0.018135259],[-0.018355336],[-0.021212468],[-0.013303214],[-0.013247967],[-0.013189033],[-0.013033623],[-0.012982845],[-0.012978024],[-0.0131039135]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.13472757],[-0.15373966],[-0.7054918],[0.0122620305],[-0.012871696],[-0.6218862],[0.036611043]],"dense_1_W":[[0.0034895893,-0.47329506,0.048285536,-0.074473254,0.3115557,-0.3702869,-0.22337489,-0.13975431,0.07517197,-0.24788152,0.01133247,0.096064724,0.07818763,0.2744151,0.1163445,0.08449597,0.11816498,-0.26796773],[-0.004053826,-0.2886099,0.007515931,-0.025261926,0.32493144,-0.54980326,-0.07815613,0.15308669,0.061913893,-0.0115428185,-0.104860805,-0.057970896,-0.102305494,0.38515946,-0.1713107,-0.03404761,-0.03721952,0.12314234],[0.32897007,0.02719031,0.006045787,-0.08623162,0.13007438,-0.5118012,0.48433113,-0.41582802,-0.120004706,-0.059094574,0.19850364,-0.72324777,0.09925934,0.13738394,0.55857325,-0.26578882,0.49354708,-0.24867299],[-0.0038880499,0.5191673,0.03414573,-0.25369272,-0.09369488,0.24986927,-0.44367638,0.24794495,0.10878251,-0.20875268,-0.00077913585,-0.00861606,0.2156449,0.116771065,-0.34864375,-0.025460653,0.20020796,0.0094880555],[0.03297434,0.026964193,-0.0009992104,0.16138399,0.23900521,-0.6232881,0.46326053,-0.27336964,0.074755706,-0.32827288,0.19562325,-0.47716168,-0.28450158,0.20518361,0.31182727,0.0014464655,0.114448994,-0.046351667],[0.29541498,-0.29648054,-0.00310848,0.52299774,-0.23534268,0.5741889,-0.123190366,0.26139322,0.10665974,0.1556051,-0.21010089,0.54775834,-0.3700308,-0.11212184,-0.4132441,-0.10879409,-0.008064727,-0.016256012],[0.0030948827,0.79608256,2.278605,0.073915124,-0.66955596,0.36016646,-0.2946711,-0.103818454,0.2748215,-0.3307413,-0.17108576,0.1856803,-0.14653331,-0.020247102,-0.4317631,0.20638601,0.020172743,0.16087113]],"activation":"σ"},{"dense_2_W":[[0.2784572,0.69297725,0.057563815,-0.71975124,0.6817395,0.30981833,-0.65247726],[0.49075776,0.42235997,-0.52229685,-0.7887346,0.51224124,-0.8081051,-0.5901962],[-0.5116851,-0.43084118,-0.255523,0.55842716,-0.73646706,-0.16906197,0.2810972],[0.4290504,0.11835542,0.09274147,-0.1294142,0.1156738,-0.5795711,-0.5911007],[0.52670825,0.17968906,0.5746221,-0.73111415,0.027278474,-0.71742743,0.10865298],[-0.63077503,-0.62192583,0.07450403,0.5630963,-0.4184549,0.6239278,-0.24081348],[-0.18570104,-0.09546027,-0.23013546,0.7691375,-0.7116309,0.59218144,0.51251227],[0.43361178,0.27859798,0.024286874,-0.40649956,0.13969101,-0.1732319,-0.20539345],[-0.31913874,-0.5736788,-1.0150186,0.61656374,-0.11421175,-0.05631541,0.41142127],[0.14283133,0.002449735,0.32700986,-1.0358429,0.54168445,-0.84849554,0.20175509],[-0.09336197,0.516962,0.6102334,-0.6526487,0.6995893,-0.43362787,-0.16046062],[-0.44804078,-0.5110132,-0.7325886,0.0035943415,-0.2756613,-0.2935251,0.20282711],[-0.086241946,-0.7803644,-0.51779443,0.59950584,-0.25105664,0.49625984,-0.13718586]],"activation":"σ","dense_2_b":[[-0.046400562],[-0.2743444],[0.101535104],[-0.12776503],[-0.18889363],[0.18883984],[-0.035363212],[-0.32065263],[-0.1838859],[-0.17174399],[-0.12857278],[-0.15375665],[0.13183501]]},{"dense_3_W":[[-0.51021737,-0.011125954,0.22268747,0.62723666,0.5020427,0.2123506,-0.44933605,-0.49467763,0.67046887,-0.21754947,-0.15336846,-0.4072764,0.040200777],[-0.64956605,-0.24969986,0.34987608,-0.56477535,-0.3730418,0.5834431,0.3829126,-0.09269529,0.22655901,-0.17133151,-0.56455123,0.23502398,0.81564665],[0.35202488,0.2378389,-0.59673995,-0.6565647,0.26492116,-0.07214567,0.33713487,-0.1934846,0.13139229,0.6117809,-0.5184132,0.45279473,0.10368968]],"activation":"identity","dense_3_b":[[0.071363665],[0.0600199],[-0.092375375]]},{"dense_4_W":[[0.006432696,1.1171645,-0.07490736]],"dense_4_b":[[0.05727158]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2020 b'8965B78120x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX 2020 b'8965B78120x00x00x00x00x00x00'.json deleted file mode 100755 index bf661cf881..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX 2020 b'8965B78120x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.146646],[1.0861496],[0.37736702],[0.041793752],[1.0729182],[1.0773717],[1.0815437],[1.0802093],[1.0698869],[1.0521225],[1.033094],[0.041741546],[0.04175913],[0.04176615],[0.04171372],[0.041648354],[0.041466083],[0.041214902]],"model_test_loss":0.007158362772315741,"input_size":18,"current_date_and_time":"2023-08-09_08-32-56","input_mean":[[24.87129],[0.0040199133],[-0.012174124],[-0.007803845],[0.008421226],[0.007382176],[0.0064237905],[0.0022175014],[0.0023437915],[0.00084140577],[0.0007466427],[-0.0077374396],[-0.0077325962],[-0.0077279285],[-0.0077621834],[-0.0077370647],[-0.0077854996],[-0.00790058]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.02440857],[0.30775324],[-0.38804558],[1.3022306],[-0.083552],[0.017909346],[1.0338217]],"dense_1_W":[[-0.018503293,-0.58764344,0.02424212,0.29838094,0.07453753,-0.31939444,0.71456915,-0.57316875,0.28442377,0.045891594,-0.09102808,-0.3166445,-0.21457,0.15771346,0.21041498,0.014606669,0.09654,-0.20440961],[0.11308228,0.36093086,0.0081503345,-0.15093833,-0.40928927,0.5281348,-0.3136049,-0.01366254,0.32156047,-0.01478815,-0.09433961,0.0589882,0.46570504,-0.08343458,-0.4513174,-0.23909375,0.32555535,0.03498277],[0.012934308,-0.807455,-5.4857802,-0.22414753,0.739661,0.35657424,0.100581415,-0.54639435,-0.54661614,-0.44405246,1.0174531,-0.23915811,0.018980676,0.3152944,0.16779307,0.06588091,-0.15882106,0.0069539533],[0.43364748,0.21731022,0.1509351,0.24937709,-0.266339,0.93301386,-0.77076274,0.03864835,0.16453606,-0.049564537,0.042268448,0.26538175,-0.3747379,-0.26633552,-0.1627539,0.4571696,-0.15453127,-0.052892048],[0.003844223,-0.30206564,0.007838732,0.44173336,0.16904438,-0.8539721,0.24912493,0.23093201,-0.30098426,-0.053782903,0.19755876,-0.8577459,0.08343516,0.19395697,0.13223626,0.15016438,-0.1095013,0.23785642],[0.13072594,-0.5031704,-0.008023158,-0.082815915,0.23274036,-0.3975246,0.06762822,0.28228945,-0.088360794,0.13266067,-0.15510467,0.14137018,-0.36540613,0.122993015,0.1820403,0.043875482,0.1807256,-0.17738947],[0.4567794,-0.4016854,-0.14515655,0.11580799,0.37104917,-0.80235296,0.84958047,-0.40907645,0.22014396,-0.29004142,0.14125343,-0.4521938,0.25444683,0.05556736,0.05717658,-0.0057016616,0.2562742,-0.2375869]],"activation":"σ"},{"dense_2_W":[[-0.48313946,-0.39628115,-0.11249228,0.2369702,-0.95594436,-0.016989736,-0.24979061],[-0.04802805,0.23703022,-0.2522654,0.8781721,-0.27487224,-0.32336324,-0.84614146],[-0.75498384,-0.02555702,-0.26924992,0.3685581,0.17157069,-1.1919085,-1.3296491],[0.24518122,-0.41801304,-1.3408265,-0.3844284,-0.43864518,-0.68599224,-1.1400452],[-0.7564912,0.5270413,0.5286734,0.07109369,-0.96531475,-0.43521672,-0.09374951],[-0.84034276,0.22120611,-0.4787729,-0.106007226,-0.423205,-0.35648152,-0.9256408],[0.12945794,-0.29220057,-0.1778261,-0.2368211,0.97371066,0.4675753,-0.24584447],[-0.3716841,0.90940213,0.02815187,0.45479253,-0.27149537,-0.50198483,-0.22473548],[-0.66260093,0.75476915,-0.03105298,0.57964265,-0.81710166,-0.061508402,0.17633282],[1.0140518,-0.72448766,-2.0274432,-0.70543754,0.20180465,-0.8068022,-1.4245642],[0.7672933,-0.52256364,0.1798329,-0.08854827,0.09783098,0.5402585,0.5772625],[0.6664194,-0.0006749223,-0.30461577,-1.0251858,0.48331183,-0.11165713,0.72331625],[0.94857574,-1.0158324,0.27272424,-1.608812,0.12564772,0.20672992,-0.026206829]],"activation":"σ","dense_2_b":[[-0.21546994],[0.036408603],[-0.099371314],[-0.22597122],[-0.15818553],[-0.13797529],[-0.049458597],[0.04860044],[0.277023],[0.074395016],[-0.16951285],[-0.06529862],[-0.2778253]]},{"dense_3_W":[[-0.18387982,0.8886978,0.66043097,0.7504068,0.36590803,0.12719806,-0.71894497,0.5354477,0.77389723,0.69074714,-0.70785916,-0.18604858,-0.7207551],[0.33382007,0.50233775,0.79906523,-0.17690791,0.2123564,0.48021612,-0.28027645,0.6302492,0.70902044,0.4347561,-0.8021013,-0.728156,-0.61748165],[-0.5456827,-0.0074385586,0.27454564,0.19413206,0.2291002,0.30727038,-0.49753815,0.2708291,-0.55447114,0.14861229,0.24177633,0.45634028,-0.15501119]],"activation":"identity","dense_3_b":[[-0.20096046],[-0.16594656],[0.02119976]]},{"dense_4_W":[[0.65935874,0.49205348,0.008652598]],"dense_4_b":[[-0.14721861]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78060x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78060x00x00x00x00x00x00'.json deleted file mode 100755 index 43c8600aff..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78060x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.571262],[0.9866572],[0.44786832],[0.030994067],[0.98464835],[0.98554516],[0.9865821],[0.96593],[0.9504797],[0.92728204],[0.904809],[0.03096524],[0.030987293],[0.03100753],[0.030929225],[0.030893764],[0.030828128],[0.030683307]],"model_test_loss":0.007625925354659557,"input_size":18,"current_date_and_time":"2023-08-09_09-24-50","input_mean":[[21.981443],[-0.03410452],[-0.0042907107],[-0.010875239],[-0.034431927],[-0.034863934],[-0.034671817],[-0.035121698],[-0.034416344],[-0.033750016],[-0.03282395],[-0.011034662],[-0.010998612],[-0.01096597],[-0.01084258],[-0.010833595],[-0.010883476],[-0.010945559]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.75581545],[0.11879905],[-0.6501629],[-0.022731934],[-0.0029385677],[0.26847437],[-0.0017951597]],"dense_1_W":[[0.2516616,0.39057118,0.00022413803,0.063490085,-0.42193273,1.2512321,-0.600658,-0.10923261,0.31011167,-0.16468239,0.044944312,-0.11299465,0.09586187,-0.100811586,0.20447883,-0.23340297,0.096681945,-0.039790932],[0.021704927,-0.20683353,-0.03011313,-0.15637654,0.15294304,-0.49757507,0.28674713,-0.023688028,-0.3239314,0.10428786,0.053708497,-0.42767534,-0.24340263,0.6549382,0.066411644,0.34770808,0.13055065,-0.306452],[-0.22692491,0.3703906,-0.0047728727,-0.3158897,-0.3546027,0.7207767,-0.24876097,0.27380067,-0.24621023,0.24137513,-0.1049461,-0.13480167,0.72030693,-0.4477213,-0.017713917,0.39679456,-0.254984,0.04286245],[1.057311,0.04657839,-0.056031335,-0.098100096,0.04250412,-0.36376515,0.7487397,0.15540043,0.18684135,-0.09664429,-0.05738495,-0.17933905,0.3892038,-0.05849292,0.41884843,-0.11726217,-0.16056898,0.086423434],[-0.012506045,-0.59728193,0.045439012,0.2765916,-0.23399554,-0.46535358,0.2761762,-0.1671016,0.07206194,0.28501,-0.26103756,-0.21281493,-0.080912635,0.2563691,-0.07951293,-0.12668297,-0.11916628,0.13779652],[1.0182611,0.027373608,0.05301419,-0.2813371,-0.39408943,0.3335591,-0.24602611,-0.68556553,0.085850835,0.47405693,-0.23440285,0.4555455,0.31906822,-0.8772108,-0.119383216,0.02932853,0.36750838,-0.16070719],[-0.004662744,-1.1186787,-3.4395354,0.24383633,0.50660896,0.01470808,0.7312308,0.3490615,-0.53634375,-0.56201684,0.45341375,-0.64736515,-0.83393633,0.5130379,0.6360629,-0.013693679,0.14626765,-0.010980777]],"activation":"σ"},{"dense_2_W":[[-0.9355151,-0.023498436,-0.7968888,0.31088433,0.7671889,-0.9731516,0.41286936],[0.52685624,-0.8809834,0.80358076,-0.8165037,-0.896308,0.29132918,0.23919983],[-0.46378753,0.1493763,-0.8195766,-0.80706054,0.2181272,0.08533837,-0.47286823],[-0.929153,0.6981678,-0.7250342,-0.21020086,0.57452005,-0.7235436,0.05653503],[0.18721063,-0.921323,0.9797812,-0.8922341,-0.38992167,-0.42454776,-0.8229087],[-0.80549794,0.48562962,-0.67541397,0.33862114,0.67381793,-0.24850826,-0.030231507],[-1.2585708,1.0969089,-0.8206399,0.19675127,0.14951561,-1.1598734,0.3381644],[0.1852816,-1.1352712,0.8965919,-0.97538066,-0.94872093,0.31611708,-0.38623008],[0.17095518,-0.9345781,0.8144248,-0.068343334,-1.051506,-0.70048666,0.13564703],[0.7746455,-0.26728967,0.53744304,-0.11955244,-0.53616977,0.46801162,-0.38597685],[-1.4234841,0.045931406,-0.7355768,-0.37909967,0.10869067,-0.44514802,0.63276064],[-0.9319143,0.24633782,-0.652142,0.048897915,0.03313439,-0.6740785,0.42693377],[-0.13351214,-1.0613108,-1.04803,-0.58857614,-0.7700214,-0.926666,-0.035181627]],"activation":"σ","dense_2_b":[[-0.3801605],[-0.13295135],[-0.39476892],[-0.17900646],[-0.10525445],[-0.27975556],[-0.22018868],[-0.02276822],[-0.21814801],[-0.048818234],[-0.32378197],[-0.34881616],[-0.5472454]]},{"dense_3_W":[[0.15212612,-0.7641529,0.084815554,0.03359007,-0.21354504,0.12747967,0.4120128,-0.21778765,-0.04332278,0.13283496,-0.25436175,0.38143668,-0.021156475],[-0.29871544,0.06072304,-0.18974409,-0.787422,0.5630134,-0.3311209,-0.38903987,0.6408349,0.36237547,0.66097933,-0.5393427,0.12618305,-0.01849426],[-0.27246246,0.47302738,0.31806195,-0.094901696,0.6957061,-0.47511533,-0.95053864,1.0960633,0.36602244,-0.18240735,-0.64022654,-0.38033855,0.034928925]],"activation":"identity","dense_3_b":[[0.04440576],[-0.04094681],[0.07032833]]},{"dense_4_W":[[-0.38054875,0.8218665,0.48242453]],"dense_4_b":[[-0.029091563]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78080x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78080x00x00x00x00x00x00'.json deleted file mode 100755 index 0d1263e2f9..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78080x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.765739],[0.94667494],[0.3616158],[0.03295844],[0.94349825],[0.94473606],[0.9459934],[0.93809646],[0.9294505],[0.9191347],[0.909892],[0.032861285],[0.032873545],[0.032887414],[0.03284168],[0.03278519],[0.032662667],[0.032455098]],"model_test_loss":0.00579620897769928,"input_size":18,"current_date_and_time":"2023-08-09_09-50-03","input_mean":[[26.929195],[0.025196731],[-0.012881554],[-0.010710338],[0.026543096],[0.026043745],[0.024963912],[0.020803003],[0.02182621],[0.021567121],[0.021462854],[-0.01068755],[-0.010679269],[-0.010679149],[-0.010794701],[-0.010869973],[-0.011037343],[-0.0112071205]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.44354764],[-0.7657953],[0.018021787],[-1.0539906],[-0.009620201],[0.6071759],[-1.4219347]],"dense_1_W":[[-0.14379139,-0.30779734,-0.011025622,0.052611172,0.557827,-0.4541853,0.054443758,-0.43811756,0.04116236,-0.065442,0.17522809,0.28900382,-0.30594754,0.03927426,0.10508941,-0.28021297,0.257097,-0.036213793],[0.9893257,-0.5675847,-0.014914029,-0.17742264,0.32900116,-0.73124397,0.13309838,0.13541694,0.116568185,0.20272915,-0.20234105,-0.17204566,-0.38287598,0.6434185,0.0064828196,0.1567134,-0.17254141,0.04431351],[0.17694262,0.110742696,-0.0072636493,-0.30341333,0.75194615,-0.3262881,-0.03383622,-0.6425869,-0.3143724,-0.1566403,0.4531637,-0.5161109,0.3051894,0.06773472,0.57514226,0.38881442,-0.24892426,-0.15087128],[0.6424904,0.08595462,0.017552882,-0.11244444,-0.0012405494,0.7457563,-0.16368888,-0.036026936,0.0022191536,0.013409932,0.04517947,0.5781084,-0.040897,-0.3180909,-0.26591027,0.22652127,-0.15628065,0.10445975],[-0.0072668577,0.8202856,2.617024,-0.2824348,-0.97013533,0.60666716,-0.6603529,0.07703543,0.7071423,0.31937075,-0.6525571,0.18346174,0.41531911,-0.38626656,-0.22641395,-0.33223557,-0.057725884,0.37739605],[-1.0272679,-0.3728853,-0.010129326,-0.12533276,-0.037398476,-0.42292497,0.38740557,0.026151482,0.066494055,-0.20116358,0.08494257,-0.56133485,-0.23647791,0.46512464,0.4194588,0.00095449237,0.40787858,-0.43964177],[0.47435406,-0.3580759,-0.016430117,0.4333006,-0.03563075,-0.3228895,0.2759132,-0.2764072,-0.08593015,0.08139821,0.03733085,-0.49198797,-0.3483896,0.08270213,0.55244505,0.034020998,-0.19379029,-0.08319991]],"activation":"σ"},{"dense_2_W":[[0.62931764,0.5971392,-0.27920744,-0.09625446,-0.2520517,0.15220097,0.4757284],[-0.06810498,-0.16192971,-0.67571473,0.77427846,0.7111675,-0.5092023,-0.5899211],[-0.12662062,-0.43264922,-0.42270333,1.0279697,0.9585099,-0.2272264,-0.8349456],[0.6851959,0.3806427,0.23734182,-0.32216796,-0.031175314,-0.31848902,0.7827528],[0.7574823,-0.016572893,0.13931036,-0.058099292,-0.27628875,0.32055375,0.8826999],[-0.44577265,-0.51336366,-0.17647457,-0.29222834,-0.403649,-0.5358206,-0.22588949],[0.8276441,0.69618565,0.28485808,-0.66541606,-0.55220205,-0.09244421,0.22509284],[-0.017253404,-0.61689866,-0.43271235,0.9186229,-0.06328271,-0.62504864,-0.02206981],[-0.24327579,-0.2601557,-0.7008787,0.5407824,-0.07432113,-0.6142975,-0.14885205],[0.2805065,0.4750363,-0.51714677,-0.8662437,-0.5432591,0.17315364,0.2283728],[0.07518284,-0.06419793,-0.058394507,0.0030758125,-0.45961043,0.096795864,-0.88641495],[0.40107206,0.83659804,0.60401416,-0.17886135,-0.18380448,0.026554653,0.42531914],[-0.5561093,-0.81054825,0.02538599,0.37181157,0.11950624,-0.48669273,-0.1697464]],"activation":"σ","dense_2_b":[[-0.15892611],[0.25231406],[0.21843024],[-0.11113979],[-0.32132435],[-0.13616537],[-0.033621266],[0.121211156],[0.11654428],[-0.2573873],[-0.17534298],[-0.35013044],[-0.10002702]]},{"dense_3_W":[[0.38975736,0.95184344,0.46049997,-0.036776196,-0.59762466,0.77046573,-0.6417351,0.2455277,0.38605514,-0.22826484,0.4754016,-0.20180263,0.72369117],[-0.34123415,0.52516204,-0.39218587,-0.2495947,-0.49277434,-0.24826856,0.08814419,0.57656366,-0.027706323,0.70304173,-0.46806642,-0.3219581,0.3978641],[0.6244901,-0.03226933,-0.593904,0.34863296,-0.08907449,-0.01563905,0.0118533475,-0.57811826,-0.56102645,0.41259542,0.020354345,0.6811666,0.4265405]],"activation":"identity","dense_3_b":[[-0.07089868],[-0.011698629],[0.01570641]]},{"dense_4_W":[[0.491706,0.3488659,-0.4674428]],"dense_4_b":[[-0.02980553]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78100x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78100x00x00x00x00x00x00'.json deleted file mode 100755 index 8b5278a2f4..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018 b'8965B78100x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.339225],[0.66194373],[0.31205928],[0.024341436],[0.6674081],[0.66513306],[0.66231716],[0.63895327],[0.6226761],[0.6013514],[0.58303964],[0.024373248],[0.024379227],[0.0243759],[0.024252327],[0.024022032],[0.023766125],[0.023506766]],"model_test_loss":0.0085480697453022,"input_size":18,"current_date_and_time":"2023-08-09_10-15-22","input_mean":[[15.308053],[0.026956981],[0.012521076],[0.008223056],[0.022762844],[0.024105612],[0.025292715],[0.029286988],[0.03120046],[0.03498811],[0.03913229],[0.0080815395],[0.008096857],[0.008109519],[0.008077261],[0.008023134],[0.007986101],[0.007946235]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.5486839],[-0.004182566],[0.70444334],[-1.2786864],[1.4237925],[-2.3157184],[-0.19027016]],"dense_1_W":[[2.3501394,-0.25705758,-0.07988189,-0.4290957,0.4012017,-0.49507633,0.68234736,0.19331971,-0.17918207,-0.2851441,0.014464558,-0.27997214,0.057441402,0.21785,0.4626131,0.25091216,-0.14428633,-0.11459715],[0.003891034,0.4025592,2.048489,0.2223581,-0.3264602,0.2324849,-0.31729513,0.026396394,0.39784166,0.28578123,-0.6775234,0.5099526,0.19664104,-0.78575885,-0.31198698,0.06568886,-0.11406481,0.18468915],[-0.029596832,0.37486562,0.0014446818,-0.018797278,-0.18172906,0.00620379,0.24613884,-0.0092346985,0.3056447,-0.2428616,-0.5551724,0.26058063,0.3762853,-0.10942015,0.62718093,0.25591257,0.54290694,0.44276074],[-0.04114054,-0.20652032,0.0009401521,0.14549057,0.18316638,-1.1457938,0.16571473,-0.040683154,0.01334905,-0.018335016,-0.076690406,-0.6794025,0.07434657,0.50387204,0.17088206,-0.09142393,-0.020549657,-0.07973338],[2.3122618,0.0072796457,0.07924426,0.55116,-0.27173284,-0.21541947,0.10083326,-0.17866814,0.34227166,0.083340704,0.03105569,-0.12183439,-0.2974347,-0.19256411,0.279966,0.003367294,-0.2737957,0.04101335],[-0.07023867,0.57056046,-2.7999631e-5,-0.164115,-0.2467486,1.2809415,-0.2786617,-0.043639272,0.18761483,-0.088788636,0.08548801,0.5136481,-0.2621358,-0.25907272,-0.018350206,0.2105986,-0.08260793,0.031995647],[0.0007746239,0.57527333,-0.0020729017,-0.49926147,-0.33753145,0.5631315,-0.70021117,-0.113007955,0.029500647,-0.06764356,0.15615635,0.0883909,0.25133765,-0.19060083,0.016509565,-0.061984852,-0.073395506,-0.1258471]],"activation":"σ"},{"dense_2_W":[[-0.28617162,-0.8748424,-0.3045525,1.0268904,-0.692021,0.54420674,-0.5599996],[0.08057282,0.21628964,-0.4089967,-0.18864584,0.47374418,0.4785689,0.5501896],[-0.48260906,0.24998908,-0.40376288,-0.8485313,0.76005214,0.18822819,0.6730072],[-0.5493484,0.74067533,0.5290222,-0.74589324,0.21366102,0.9318854,-0.32034856],[-0.37596846,-0.13169625,0.46739164,-0.86299413,0.24203786,0.5865028,0.42028916],[2.4739633,-0.036862414,-0.65760493,2.6289167,1.6200708,-1.7124206,-1.2274244],[0.51397264,-0.8629164,0.085178815,1.0408322,-0.055253804,-0.6733212,-0.20133649],[-0.69732106,0.12842987,0.41530445,-0.387307,-0.089540526,0.19835305,0.81477255],[-0.20419389,0.3284613,-0.09723707,0.5140212,-1.157376,-0.84693354,-0.74240136],[0.8758132,-0.15793347,-0.09718561,0.8709293,0.040350463,-1.1266917,-0.5584791],[-1.6498971,0.27860475,-0.44611832,2.437586,-2.1081448,-2.2837684,-0.871032],[-0.78162026,-0.79014534,-0.5790472,2.1518378,-1.4926344,-0.24358809,-0.6452897],[-0.46411687,0.6652152,-0.44766068,-0.18919358,0.32152855,0.16063835,0.5126533]],"activation":"σ","dense_2_b":[[-0.075753756],[-0.14393337],[-0.138848],[-0.06541741],[-0.08361248],[0.9521424],[0.19756864],[-0.17231311],[0.12727004],[0.23659523],[-0.27445894],[0.07138053],[-0.083465844]]},{"dense_3_W":[[0.4272615,-0.49210763,0.38295087,-0.41412348,0.2860867,-0.4020542,0.4103019,0.41672885,0.21858406,0.3664715,-0.13791886,0.3195822,-0.22315404],[0.27507186,0.4673776,-0.42973244,0.44775274,-0.1259053,-0.2956321,-0.009527084,-0.08753577,-0.109627016,-0.08309372,-0.027477503,0.13203609,-0.26320615],[-0.20693302,0.15525103,0.5645003,0.18120688,0.6252794,-0.7330898,-0.26089343,0.61918086,-0.43114677,-0.6229183,-0.7104607,-0.4226231,0.54074675]],"activation":"identity","dense_3_b":[[-0.087035514],[0.0670505],[0.079935245]]},{"dense_4_W":[[0.0027248666,0.14787766,1.2931683]],"dense_4_b":[[0.07440508]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018.json deleted file mode 100755 index 16bd3503fd..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS NX HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.585601],[1.0769356],[0.4152277],[0.032089308],[1.0751251],[1.0764067],[1.076593],[1.0550125],[1.0351758],[1.0109047],[0.9867031],[0.032038312],[0.032060873],[0.03208132],[0.031983834],[0.03192507],[0.031825032],[0.03163297]],"model_test_loss":0.009431030601263046,"input_size":18,"current_date_and_time":"2023-08-09_08-59-32","input_mean":[[23.35191],[0.014709264],[-0.007846618],[-0.0073924493],[0.015706308],[0.01488224],[0.014164865],[0.01273958],[0.011578967],[0.010703318],[0.011319831],[-0.0074810195],[-0.0074531967],[-0.0074234046],[-0.0073149926],[-0.0072922925],[-0.0073944805],[-0.007550104]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.010489621],[-3.390052],[-0.27632216],[0.06388101],[-0.0023289998],[-0.5310449],[-3.7337463]],"dense_1_W":[[0.044022243,-0.9602262,0.023165302,0.23139995,0.40745816,-1.3215717,1.0053997,0.00058070425,-0.18163256,-0.11781253,0.109620206,-0.12967418,-0.5115588,0.37036052,0.051331975,0.19479781,-0.042822767,-0.08214719],[-1.3167536,0.9873784,0.12040588,0.1293769,-0.2311463,0.4298457,-0.42706266,0.021210633,0.3404923,0.21219859,0.22471832,0.08838383,0.29760027,-0.88747275,-0.0634611,0.10965482,0.47251707,-0.43532783],[-0.39206186,-0.13839394,0.0042735203,-0.32981926,0.20854518,0.60123193,0.06244858,0.075630054,-0.19788578,-0.0059076576,0.21052705,-0.005142829,0.37731835,-0.00039926043,0.029549208,0.1704483,0.040654548,-0.09829513],[0.033498857,-1.03267,-3.2917075,0.1436397,0.40437415,-0.07208642,0.4386376,-0.016019847,-0.41353783,-0.27417776,0.8748351,-0.8393321,-0.08226523,0.15535136,0.46795392,0.21382397,-0.14780073,0.08567079],[0.0075990325,0.3534574,0.017199304,0.1619128,-0.69365615,1.2924689,-0.63552207,0.10506459,0.12512617,-0.0582667,-0.06807627,0.43178403,0.4894852,-0.95637363,-0.25379786,-0.043963056,-0.3546822,0.3529367],[-1.0046507,-0.16842256,0.0057131224,0.04903764,0.66925514,-0.5714975,0.6537934,-0.19450375,0.62123895,0.15355848,-0.16622919,-0.10328739,-0.1587315,0.50108814,0.16457188,-0.16681637,-0.098925866,0.036512375],[-1.3783246,-0.82125074,-0.12702073,0.13462974,0.22287484,-0.4129491,0.21670008,0.12311822,-0.4235394,-0.3596955,-0.1640687,-0.28299794,-0.16758752,0.8536019,-0.066162966,-0.194256,-0.39008158,0.4202336]],"activation":"σ"},{"dense_2_W":[[-0.5063604,-0.4741062,-0.5781108,-0.5322161,-0.59136206,0.16058896,0.058547825],[0.8868212,-0.45694777,-0.20642655,-0.3002692,-0.58157927,0.25157875,0.6711802],[0.795214,-0.86609215,-0.3717794,-0.069523655,-1.109417,0.53392845,0.6741648],[-0.03295086,0.33387217,-0.09837575,-0.2690749,0.4300655,0.030849602,-0.69364756],[-0.054043226,-0.055589274,0.45605162,-0.6619817,0.1327919,-0.11879317,-0.048832323],[0.74532807,-0.4380021,-0.4157702,0.5167606,-0.2990743,0.2512731,-0.18856232],[0.05154261,0.456311,0.4568838,-0.0567244,-0.2747546,0.36871868,-0.062383007],[1.1826025,-0.92312306,-0.4721928,-0.1572826,-1.11019,0.43225694,1.1563685],[-0.108299814,0.027349837,-0.7674503,0.5352721,-0.89908135,0.3278036,0.7806216],[-0.5583551,0.2056205,0.08362692,-0.5434645,0.5470751,-0.3124283,0.08043123],[0.45070142,-0.57115096,-0.2245427,-0.045519225,-0.6893506,0.037161164,-0.23384157],[0.1461993,0.41832474,0.4386533,-0.20438145,0.48432893,-0.052871887,-0.021635566],[-0.6163875,0.38114646,-0.23866823,0.25583425,0.60170585,-0.25978467,-0.12486062]],"activation":"σ","dense_2_b":[[-0.2458712],[-0.06637249],[-0.013759815],[0.03347602],[0.018802742],[-0.08192537],[-0.010520929],[-0.037358187],[-0.13399647],[0.06693022],[-0.26994675],[-0.093340464],[-0.041655704]]},{"dense_3_W":[[0.49996868,-0.373681,-0.51962894,0.62675476,-0.31773674,-0.59978634,0.6219736,0.050350633,0.33989727,0.5896998,0.3858415,-0.5429359,0.4819143],[-0.12461631,-0.17281315,-0.3340952,0.4874769,0.0636714,-0.042632986,0.44136724,0.02729029,-0.454583,0.48858696,-0.10563923,-0.28252137,-0.075173035],[-0.23492163,-0.40539813,-0.23685107,0.21184611,0.55601394,-0.3081886,0.2426802,-0.6480087,-0.5652243,-0.013350206,-0.33100715,0.58174974,0.016825484]],"activation":"identity","dense_3_b":[[0.038624156],[0.041515328],[0.04800828]]},{"dense_4_W":[[0.6152052,0.6204614,1.1353754]],"dense_4_b":[[0.04677127]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E011x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E011x00x00x00x00x00x00'.json deleted file mode 100755 index 5595dd0b52..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E011x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.497126],[0.7899638],[0.44968936],[0.040003814],[0.790069],[0.78973264],[0.7899307],[0.7765341],[0.7670328],[0.758676],[0.7496478],[0.039959125],[0.03996849],[0.039961126],[0.039813876],[0.039652888],[0.03946854],[0.039514165]],"model_test_loss":0.019624391570687294,"input_size":18,"current_date_and_time":"2023-08-09_11-08-09","input_mean":[[24.399408],[0.032711282],[0.0115032485],[-0.00525594],[0.030166635],[0.029666992],[0.029536955],[0.035590276],[0.03622483],[0.039915655],[0.042751476],[-0.005364839],[-0.005367187],[-0.0053584483],[-0.0053036655],[-0.0054080314],[-0.0055061234],[-0.00556505]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.6610016],[0.151701],[0.009707743],[-0.26353267],[-2.1897213],[-0.07288661],[-0.11378308]],"dense_1_W":[[0.7202683,-1.4521006,-0.36892205,-0.27287668,0.5218362,-0.9888661,0.7682538,-0.22947517,-0.0722589,0.04581978,0.17252716,0.20101401,0.2203343,0.5318873,0.16461913,-0.10408441,-0.046259586,-0.0836677],[0.0017382947,0.73556834,1.6531876,-0.23093462,0.20005266,0.42430395,-0.5890132,0.49725816,0.5355405,-0.10126484,-1.4101623,0.7921084,0.1510884,-0.73259395,0.084286,-0.4520055,0.11672066,0.25221756],[-0.015996123,0.6276854,0.052092206,-0.36424366,-0.07230438,-1.2923295,0.7504581,0.09663407,-0.18611723,-0.120635055,0.015938537,-0.37530875,0.2885642,-0.059331078,0.08137963,0.20130512,-0.021207044,0.046624325],[-0.012034361,-1.4192638,-5.2265596,0.2612958,4.1413407,2.314966,2.3661003,-1.5783347,-5.9282966,-2.0653381,1.9981527,-2.0700922,-0.5770653,0.38979787,1.1890407,0.48308054,1.4855419,-1.1318967],[-0.7691148,-1.4111314,-0.36992973,-0.56459725,0.38714254,-0.3826238,0.5399009,-0.63972545,0.04428801,-0.21149153,0.40715024,-0.2787244,0.7013386,0.6029106,0.50310415,-0.23025295,0.11826784,-0.23212224],[-0.006358524,0.69335353,0.02794763,0.3399404,-0.59244144,0.7978909,-0.6742573,0.063028805,-0.1886972,-0.104276046,0.08210134,0.7829205,-0.17847379,-0.42135885,-1.1342844,0.29648486,-0.25651482,0.43940562],[0.006844428,0.990331,0.011878585,0.54291165,-0.19225447,-1.9755626,0.30564827,-0.07925933,0.31555137,-0.15508366,-0.27373806,-0.18496017,-0.4336757,0.18401355,-0.26887777,-0.010644886,-0.10060476,0.2263297]],"activation":"σ"},{"dense_2_W":[[0.36306933,0.3977938,0.22641855,0.7298922,-0.27546063,-0.10226779,0.034273352],[0.08656265,-0.48553008,0.55096817,-0.048100367,0.53174394,-0.83036834,0.56428534],[-0.24495511,0.33051565,-0.12894641,-0.26901788,0.3568392,-0.52020496,-0.11631975],[0.37262198,-1.0897073,-0.45251986,0.30015078,-0.5788583,-0.06598383,-0.6937122],[-0.4771023,-0.2963909,0.20836869,-0.4795101,0.028140526,0.91956437,-0.6256226],[-0.035516877,0.4190135,-0.27137184,-0.76606,-0.10609275,1.59395,-0.753493],[-0.47961858,0.030423556,-0.071964465,0.21260998,0.027962271,0.08736105,0.0015122219],[0.44915485,-0.49171802,0.5426616,0.38728034,-0.04750208,-0.24676758,0.32686082],[0.014905465,-0.09540689,-0.39694756,-0.07622363,0.43361604,0.061137225,0.7645907],[0.2848,-0.07338248,-0.6300479,0.32704386,-0.45459402,-0.4455886,-0.20302792],[-0.14017946,0.19692336,-0.5500081,0.43361938,-0.79839504,0.14536503,-0.5962689],[-0.35142824,0.22747609,-0.5308471,-0.3816653,-0.14133443,0.7790726,-0.46167746],[0.033977807,-0.47663027,0.21505095,0.060140327,0.50756395,-0.46516722,0.5984394]],"activation":"σ","dense_2_b":[[-0.08834933],[-0.17998597],[-0.098719954],[-0.07162819],[0.18823287],[0.25482836],[-0.23286653],[-0.13847035],[-0.1420269],[-0.16621625],[0.107665256],[0.27800032],[-0.2690747]]},{"dense_3_W":[[0.31680772,-0.04880554,0.41232827,-0.5364121,-0.18391071,-0.19796918,0.4786881,0.3846168,0.53205895,0.21274851,-0.69326276,-0.359501,-0.47516134],[-0.21317686,0.22660097,-0.36739162,0.16952656,-0.485056,-0.033075597,0.113461725,0.47104463,-0.29169482,-0.12948655,0.38925797,-0.826083,0.6325188],[0.34189993,0.43732288,0.26165158,-0.18155214,-0.54409766,-0.19873665,-0.28346628,0.5721446,0.5639601,-0.036017355,-0.4653392,-0.79315287,0.1872007]],"activation":"identity","dense_3_b":[[-0.064026974],[-0.056641966],[-0.060960032]]},{"dense_4_W":[[-0.5811463,-0.62689096,-1.1673242]],"dense_4_b":[[0.05718782]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E012x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E012x00x00x00x00x00x00'.json deleted file mode 100755 index be3b6fb7c3..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B0E012x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.178389],[1.1035752],[0.4662704],[0.046207998],[1.1074592],[1.1067053],[1.1053001],[1.0732423],[1.0499698],[1.0244768],[1.0014167],[0.046057243],[0.04609966],[0.046142098],[0.04609972],[0.04592567],[0.045645263],[0.04529655]],"model_test_loss":0.01661650463938713,"input_size":18,"current_date_and_time":"2023-08-09_11-33-54","input_mean":[[24.113503],[0.026555553],[0.007805312],[0.0024834524],[0.025088156],[0.025798468],[0.026386062],[0.029757109],[0.030439591],[0.031094952],[0.03309283],[0.0025249124],[0.0025172262],[0.0025013706],[0.0023470775],[0.0021061723],[0.0018476403],[0.0016275451]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.04851935],[0.18912777],[-1.3116255],[-0.7472734],[1.5802238],[0.0032274537],[0.9271875]],"dense_1_W":[[-0.013812765,0.23587815,-0.88323635,0.4553478,-0.10918498,-1.4469972,1.0692941,-0.79699284,-0.6479312,0.06861249,1.1115149,-1.0295787,0.39040166,0.82937765,-0.28262046,-0.2515571,-0.27617222,0.80472493],[0.025999622,0.5356352,5.958624,-0.7345606,-2.8084228,-1.6167558,-2.1773086,0.74087584,4.05941,2.2720666,-0.5007629,1.8292586,0.73168993,-0.13792978,-1.0049746,-0.78412616,-0.32696438,0.1599063],[-0.68668175,1.2465404,0.0007119129,0.18416734,-0.17395344,1.1581551,0.3491509,0.015340899,-0.243164,0.3337365,0.0059605897,0.25817114,-0.012701957,-0.54250956,0.06875178,0.047875002,0.03650471,-0.042195074],[-1.4012998,0.15385582,0.00326918,0.23495099,1.1849846,-0.16899009,1.0280719,0.93690526,-0.14206767,-0.20286582,0.26880294,-0.5328709,-0.18946564,0.41029063,0.27763805,-0.22111964,0.04954255,-0.10736989],[0.7175712,1.2868648,-0.0006277978,0.26892963,0.06477711,0.9932033,0.34392086,-0.009526572,-0.22756432,0.25638282,0.08036479,0.50691277,-0.3837951,-0.49345502,0.054468766,0.033681694,0.08291686,-0.058626775],[-0.0014453949,0.14246415,-0.0014614231,0.21303391,-0.21408749,-1.5569146,1.0463302,-0.008707946,0.012354692,0.32674435,-0.3785094,-0.749308,-0.17875636,0.80370486,0.19241858,0.15964696,0.4008355,-0.4595413],[1.471798,0.053307597,0.0039579137,0.09766114,1.1792371,-0.15318848,1.1508945,0.9567271,-0.14996085,-0.31087992,0.346843,-0.35862166,0.021058438,0.12184848,0.20475146,0.04533049,-0.30174068,0.07555196]],"activation":"σ"},{"dense_2_W":[[-0.23688912,-0.29926342,-0.4236539,0.58860856,-0.35607925,0.62337095,-0.15733019],[-0.7429034,0.5418817,0.3976327,0.45379984,0.050487727,-0.19394211,-1.0679561],[-0.009215472,0.29501885,-0.70378315,0.044839945,-0.49085298,0.20003374,-0.35764387],[-0.19541922,-0.11391505,-0.20030189,0.0048329923,0.02828999,0.42400816,0.6403727],[0.08312188,0.31799898,-0.69704294,0.20299889,-0.2131362,0.44351074,0.098965526],[-0.3986167,0.18717383,0.62129164,-0.094000615,0.41735825,-0.50520986,-0.9462763],[0.19806273,-0.06787933,-0.59105605,0.36845544,-0.6435648,0.73989093,0.32647932],[-0.2055667,0.1422158,-0.43421987,0.20636247,-0.23087944,0.31787756,0.51859593],[-0.31988147,-1.4222198,-0.24275048,-1.1502436,-0.3906249,-0.6949595,0.47081533],[-0.32937595,0.38923815,0.8274464,-0.7638735,0.61449593,-0.20162378,0.33241272],[0.29764244,-0.8901207,-0.13424192,0.5848652,-0.61154383,-0.24175633,-0.35554945],[-0.4612609,0.10317978,0.24854125,0.13317706,0.54670334,-0.4810212,-0.74941343],[0.3080491,0.65429133,0.38162977,-0.8621924,0.78468126,0.30853254,0.40593398]],"activation":"σ","dense_2_b":[[-0.02144118],[-0.09335769],[-0.007059764],[-0.033586107],[-0.030305251],[-0.08470452],[-0.024528615],[-0.006754011],[-0.14906617],[0.07473883],[-0.25525466],[-0.049658544],[0.023403395]]},{"dense_3_W":[[0.6513854,-0.2971271,-0.10133595,0.06157518,0.5964825,-0.29642156,0.7061594,0.4733872,0.32888836,-0.55521995,0.50460774,-0.52282894,-0.6185102],[-0.23496525,0.37275878,-0.6667091,-0.39924023,-0.48301923,0.67697704,-0.6308714,-0.21922909,0.6176243,0.618389,0.0014676229,0.6497615,0.38443524],[-0.46734017,0.14557028,-0.28965655,0.39367342,0.04646032,-0.04165071,0.31603992,0.060060974,0.45381856,0.088807814,0.39907733,0.529591,-0.50600004]],"activation":"identity","dense_3_b":[[0.011306823],[-0.013359737],[-0.020531746]]},{"dense_4_W":[[-1.1962153,1.1962668,0.4678314]],"dense_4_b":[[-0.013093974]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48111x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48111x00x00x00x00x00x00'.json deleted file mode 100755 index 048b08551b..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48111x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.985375],[0.8484357],[0.40301353],[0.04616213],[0.84518045],[0.8455486],[0.8450366],[0.8306985],[0.8178662],[0.80961376],[0.7968393],[0.046044145],[0.046038657],[0.046025593],[0.045820486],[0.045615625],[0.045437485],[0.045231733]],"model_test_loss":0.011326421983540058,"input_size":18,"current_date_and_time":"2023-08-09_12-24-28","input_mean":[[22.471128],[-0.018951578],[0.010878803],[-0.0010533921],[-0.023024717],[-0.022267114],[-0.021230936],[-0.016909447],[-0.015211554],[-0.015772311],[-0.016099963],[-0.0011461969],[-0.0011510055],[-0.0011510034],[-0.0011011333],[-0.001083126],[-0.0011312175],[-0.0012207358]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.19449084],[0.23200378],[-2.1795752],[-0.06908683],[0.5561456],[0.74490666],[-1.4101259]],"dense_1_W":[[-0.03025444,-0.037244402,0.005869636,-0.11142137,0.30302644,1.9381279,-0.8191624,0.022108948,0.8009985,0.029354382,-0.08832442,0.72894895,0.3668595,-0.9385649,-0.2852418,-0.09583186,0.5544937,-0.21227281],[0.034946375,1.0261317,7.126802,-0.2404806,-1.1685041,-0.83051986,-0.4426787,0.6152297,1.1656748,0.80329746,-0.77668273,1.9598135,1.321885,-0.57261515,-1.2246871,-0.99875146,-0.9846027,0.7683447],[-0.42501846,0.98335177,0.0086295735,-0.38849956,-0.34183657,0.78103524,-0.3070697,0.041614834,0.010777993,0.16069779,-0.06382278,0.45972434,0.47352612,-0.8080994,-0.014047953,0.2616601,0.027314788,-0.023172976],[-0.002096383,0.42063478,-0.36391065,0.6753022,-0.427858,-1.5044448,1.4863667,-0.71073186,-0.30100074,0.20311977,0.043464664,-0.9429159,0.0748356,0.59035534,0.45266464,0.36573637,0.05602837,0.03608384],[1.132687,-1.1144317,0.022769302,-0.08955206,1.1042536,-0.5798501,0.5345062,1.2229115,1.1052201,0.23315747,-0.6132077,-0.11451021,-0.14781699,0.7205005,-0.5105502,-0.1375905,0.41816053,-0.13178313],[1.3072513,0.8143477,-0.02883156,0.032059945,-0.65769833,0.49218857,-1.0619043,-1.3068818,-0.7583709,-0.18983535,0.5098667,0.04548321,0.37096432,-0.49653402,-0.043797195,0.09462603,-0.117622316,0.09393342],[-0.36528334,-0.94333136,-0.00709332,0.11895063,0.4062324,-1.077606,0.63532376,-0.055628367,0.052410383,-0.17590849,0.052673202,-0.49115044,-0.166243,0.67629623,0.12474157,-0.26558882,-0.013086577,0.016891709]],"activation":"σ"},{"dense_2_W":[[-0.90425926,-0.3100587,-0.15216517,0.27145946,0.23597465,-0.330885,0.64773345],[0.98487633,1.1788161,1.4274528,-0.13287292,-1.942367,-1.2299767,-1.614185],[-0.23527108,-0.52527946,-0.22783957,0.94517636,0.804941,-0.40320855,0.18958431],[0.12163566,0.02718684,0.47783875,-0.95925164,-0.94627064,0.6247853,-0.8608685],[-0.94498646,-0.5125671,-0.29173845,-0.15166761,-0.8053367,-0.99756163,1.0966812],[-0.5952867,-1.0380365,-0.10330609,0.035324153,-1.1042368,-0.7014133,0.9698015],[-0.21240786,-0.23053433,-0.6369077,0.33950132,0.5255738,0.096905194,0.30876234],[0.5140029,-0.5269255,0.64448845,-0.7638766,0.0040237093,-0.020735802,-0.6104091],[1.2667329,0.045856774,0.7070585,-0.61856055,0.13016993,0.6576462,-0.6267828],[-0.17739317,0.37307802,-0.8725243,0.771662,0.049805034,-0.42982677,0.11095653],[-0.90507495,-0.25394666,-0.58229274,0.2684394,-0.50432193,-0.4329303,0.6245469],[0.77078027,-0.15400788,0.24913049,-0.8615302,-0.69670194,0.18226497,-0.8975012],[0.02397529,0.2646033,0.4380282,-0.15443936,-0.5261358,-0.52393633,-0.07421209]],"activation":"σ","dense_2_b":[[-0.09594069],[-0.6905126],[-0.074888185],[-0.037054244],[-0.12587616],[-0.27787346],[-0.057617527],[-0.01407181],[0.06147024],[-0.1516328],[-0.23781396],[0.075564094],[-0.19739097]]},{"dense_3_W":[[-0.36719826,0.2605464,-0.2282825,-0.15726866,-0.12012483,-0.31160554,0.17342465,0.33086634,0.38206747,0.18828884,-0.18907732,-0.01786273,-0.20533668],[-0.3468706,0.04522057,-0.072850615,0.605361,-0.6474378,-0.20503408,-0.0733508,0.12105218,-0.1717388,0.40598574,-0.18865044,0.4131868,0.19802985],[-0.6461299,0.69321644,-0.33386546,0.07647153,-0.42154786,-0.29778567,-0.3956274,0.23928347,0.59340984,-0.42163405,-0.052262533,0.2998,0.020345777]],"activation":"identity","dense_3_b":[[-0.0809652],[0.059218273],[0.06971658]]},{"dense_4_W":[[0.0938981,0.6363041,1.3952843]],"dense_4_b":[[0.06310906]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48112x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48112x00x00x00x00x00x00'.json deleted file mode 100755 index aca9bda063..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016 b'8965B48112x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.513149],[0.9541818],[0.39656356],[0.046623718],[0.95074844],[0.950698],[0.95102835],[0.93498194],[0.92150253],[0.903537],[0.8869439],[0.046458315],[0.04645999],[0.046444196],[0.046160106],[0.04587233],[0.045259684],[0.044569284]],"model_test_loss":0.01733686961233616,"input_size":18,"current_date_and_time":"2023-08-09_12-49-35","input_mean":[[26.078451],[0.027438534],[0.0011958503],[-0.009430026],[0.024858253],[0.025092505],[0.025384951],[0.025721082],[0.027182773],[0.029522264],[0.029206349],[-0.009677318],[-0.009641802],[-0.009610473],[-0.009555977],[-0.009597703],[-0.00965417],[-0.009817797]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.1336756],[0.10344256],[0.30574226],[-1.0487646],[-0.14843734],[-0.028830774],[-0.43900487]],"dense_1_W":[[0.43604448,-0.5605264,0.012901217,0.022648716,-0.05411717,-0.52825683,0.976321,0.11842187,-0.5259775,-0.37925148,0.42006952,-0.84167475,-0.055660117,0.1304136,0.6104034,0.28378442,0.6410333,-0.76094],[0.4276094,0.15709533,-0.0169772,0.3044572,0.3100376,1.003849,-1.018638,0.02647807,0.1272281,-0.00826707,0.0850446,0.4799849,0.019232752,-0.39135626,-0.3757945,-0.61405283,-0.018439129,0.32969815],[0.007824015,-0.058601394,-0.105257824,-0.1341512,0.3888203,-0.28831708,0.48457155,-0.3913913,-0.40673906,-0.28273785,0.5328434,-0.33710465,0.0991382,0.6627208,-0.25941357,-0.16797468,0.1989,-0.016353317],[-0.21427123,0.86771905,6.534022,-0.6548552,-1.5710703,-1.0742532,-1.4654069,0.8514165,1.9961716,1.223437,-0.7285998,1.2758242,0.9320656,0.30135366,-0.34027484,-0.70199484,-0.7621133,-0.16112399],[0.085645236,0.7888055,0.00027891068,-0.39420474,-0.06814435,0.8111238,-0.8712305,-0.176747,0.01755771,-0.16584563,0.15874274,0.7242339,0.42814922,-0.7291331,-0.23838085,-0.005654039,0.31353015,-0.056190874],[0.695166,0.49490714,3.372351,-0.13590972,-0.9212608,-0.3051697,-0.50663286,0.20426105,0.7320531,0.55699635,-0.14507566,0.92698795,0.23466231,0.1211082,-0.4500127,-0.08752919,-0.47848958,-0.068858966],[-0.41407767,0.60256696,-0.012946635,-0.32264197,0.19446182,0.36647174,-0.5412527,0.036333155,-0.060324162,0.0108162025,0.08161502,0.40417644,-0.037009377,-0.21295482,-0.41150248,0.4401551,-0.18975988,0.027621428]],"activation":"σ"},{"dense_2_W":[[0.19137855,-0.59557676,0.28804228,0.32442906,-0.5375224,-0.20337382,-0.6008916],[-0.11394542,-2.0737066,-0.5354913,-1.3426789,-0.6801209,-0.27107587,-0.15083465],[0.29361624,0.1699438,0.7419668,-0.36620173,-0.8206793,0.00073572167,-0.4464687],[0.6434301,-0.4445039,-0.14719622,0.23853825,-0.286252,-0.24195918,-0.83651835],[-0.012359924,0.43869573,0.06229189,0.60834336,0.32198146,-0.24622436,-0.06080808],[-0.6786453,-0.13937657,-0.19309613,0.013606689,0.5540887,0.5298669,-0.05196762],[-0.013185264,0.5033074,0.31203073,0.047127012,-0.2498416,0.50795144,0.5977538],[0.8437041,-0.44398957,0.7342129,-0.45426455,-0.2659502,-0.31482774,-0.16570877],[0.34602955,-0.7132226,0.38534385,0.6092949,-1.3994591,1.1248631,-1.353814],[-0.08515577,0.5915542,-0.25632793,0.4754705,0.7452592,-0.18179281,0.12182859],[-0.049042016,-0.110786006,0.64409393,0.14546494,-0.9643141,0.29006732,-0.72953105],[-0.59469205,0.6471949,-0.26527888,0.23997271,-0.09655182,0.0051637134,0.52177334],[-1.4906286,-1.1227882,0.56706303,-2.809029,-0.85157853,-1.0621608,0.9694465]],"activation":"σ","dense_2_b":[[0.008693504],[0.15823685],[0.0637331],[-0.013258514],[0.0015104315],[-0.018139329],[-0.027512403],[0.10828464],[0.017622454],[-0.06617764],[-0.046749223],[-0.070872046],[0.3779424]]},{"dense_3_W":[[0.65443593,0.3343104,0.012527355,0.36417776,-0.28863862,-0.5988752,0.23106381,0.004670684,-0.122015595,0.28513318,0.60385746,-0.5160076,0.67743444],[0.627146,0.32316205,0.38000792,-0.027986798,0.116916984,-0.61325556,-0.4528739,0.25507253,-0.13200486,-0.60309863,0.20832081,0.25238237,0.15479685],[0.28230017,0.1581272,0.5597084,0.41742852,-0.5948192,-0.03049473,-0.3455425,0.30141747,0.7191692,-0.5980131,0.36263385,-0.5719517,0.45230243]],"activation":"identity","dense_3_b":[[-0.047069583],[-0.02659484],[-0.031588677]]},{"dense_4_W":[[-0.54359066,-0.6082866,-1.0533628]],"dense_4_b":[[0.03228879]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2016.json deleted file mode 100755 index 8121234c29..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2016.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.430978],[1.1379495],[0.45858315],[0.048554417],[1.1417856],[1.1416621],[1.1402241],[1.103209],[1.0752802],[1.0438159],[1.015414],[0.048459742],[0.048481967],[0.048495647],[0.048316676],[0.048084732],[0.0477648],[0.047343533]],"model_test_loss":0.017764510586857796,"input_size":18,"current_date_and_time":"2023-08-09_10-41-53","input_mean":[[24.381577],[0.05514361],[0.013313259],[0.0006179983],[0.051813576],[0.05245275],[0.05269495],[0.057216838],[0.0603638],[0.0627208],[0.06460416],[0.00054358447],[0.00054860266],[0.0005474048],[0.00047689374],[0.00043869138],[0.00029944416],[8.212836e-5]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.26622558],[2.9497008],[1.813058],[-0.025023121],[-2.0630577],[-0.10530793],[-1.0611445]],"dense_1_W":[[0.025534231,-1.1805913,-6.9120297,0.4762668,1.141532,1.194718,0.6604293,-0.30574933,-2.2145832,-1.1851851,1.0677514,-2.5831132,-0.71438986,0.58066684,0.89023423,1.3890202,0.6341061,-0.24130233],[1.2830616,1.4180796,0.013817758,-0.66995686,0.36852577,0.42192948,-0.13681625,0.50336146,0.33836475,0.33387825,-0.03252644,0.36973232,0.3118444,-0.560369,-0.010612995,0.080320194,-0.013821916,0.09603328],[1.6039705,-1.0465006,-0.021859074,0.4317561,-0.3821928,-0.9248917,0.1911275,-1.008013,-0.21806867,-0.30369827,-0.012168507,-0.2818822,0.308418,-0.016223406,0.421061,-0.42053384,0.026600147,0.016264306],[-0.14462262,-0.7510906,0.0010378277,0.6862586,0.075593695,-1.3630501,0.78086907,-0.21945457,-0.29287562,0.12408464,-0.20034757,-0.6130181,-0.15015851,0.22744867,0.22026828,0.18415438,-0.18599446,-0.15435989],[-0.17025296,-3.2277153,0.028557282,-0.73297334,-0.56138515,-0.84773684,-0.0022175754,-0.58208245,-1.1386961,-1.4433861,-2.14009,0.19586197,0.39540797,-0.052566983,0.20787114,0.28620672,-1.2643102,0.7919278],[-0.0032478468,-0.5915213,-0.09130981,-0.15959802,-0.07250981,-1.233284,1.4387474,-0.018223405,0.01532253,-0.12527408,0.120767094,-0.48614782,-0.20340073,0.60070837,0.51384115,0.028175151,0.28134152,-0.22379196],[-1.2310994,0.35107216,-0.009768715,0.108554766,-1.4150821,0.24119836,-0.5592179,-0.3124385,-0.37922817,-0.35682285,-0.040580634,0.032491393,-0.24726222,-0.29392195,0.278081,0.7974623,0.24596404,-0.6094582]],"activation":"σ"},{"dense_2_W":[[-0.26285568,-1.1060537,-2.942825,-0.67371356,-3.5155258,0.46508044,0.39250213],[0.040603336,-0.4580863,-0.05867417,-0.17467877,-0.12807631,-0.16877379,-0.6004097],[-0.21166655,-0.5113058,0.65276754,-0.4754752,-0.13656586,-1.194988,0.8539784],[-0.15373452,-0.6933606,-0.7155214,-0.5996274,-1.0520024,-0.60170096,0.32668498],[0.6738468,-0.15951255,-0.17071065,0.041958928,-0.11103761,0.902966,-0.58521444],[0.8874169,-1.2575809,-0.82644594,0.67518294,-0.18607567,0.31737596,-0.23714398],[-0.3840576,0.024641534,-0.7565307,-0.88211155,-0.28571716,-0.29910767,0.24023683],[-0.058167692,0.17876865,0.4777526,-0.94331837,0.4652216,-0.43854114,-0.53990954],[0.23073974,-2.1207473,-0.6605163,-0.2945441,-4.001501,-0.2752776,1.7681032],[-0.70948744,-0.7407854,0.42118362,0.6708104,0.32626638,1.098384,0.24783559],[0.043585002,0.27145508,0.6032944,-0.8032509,-0.06791304,-0.73068494,0.27683318],[-0.6658628,0.7501746,-0.3240815,-1.147417,0.3406268,-0.6849644,0.568758],[-0.1976796,-0.02303728,-0.765593,-0.41832325,-0.46337137,-0.65529525,0.04229715]],"activation":"σ","dense_2_b":[[-0.079793036],[-0.2289362],[-0.090767354],[-0.23192126],[-0.066803485],[-0.2459263],[-0.112346604],[-0.05293226],[-0.35880116],[0.007642163],[-0.040404778],[-0.03216628],[-0.21668698]]},{"dense_3_W":[[-1.3067548,0.53903705,-1.0720602,0.45293874,0.44038934,0.445163,-0.057403624,-0.12081309,-0.8046321,0.2472878,-0.6329288,-0.80141,0.25300354],[-0.7013012,-0.33519942,-0.22784245,-0.31578028,0.35543197,0.58259434,-0.18224044,-0.19449191,-0.00866361,0.76322716,-0.5559447,-0.5042247,-0.082718976],[-0.2083438,-0.3291305,0.049302626,0.35232225,-0.56150305,-0.15463752,0.2730324,0.19683221,0.6830847,-0.035634395,-0.005636273,-0.06266247,0.16106449]],"activation":"identity","dense_3_b":[[-0.049557555],[0.068597704],[-0.039742917]]},{"dense_4_W":[[-0.55702186,-1.4275403,0.36695966]],"dense_4_b":[[-0.06800569]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2020 b'8965B48271x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2020 b'8965B48271x00x00x00x00x00x00'.json deleted file mode 100755 index 9acad7b27f..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2020 b'8965B48271x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.790511],[1.2051258],[0.486362],[0.046329346],[1.2025905],[1.2045679],[1.2048204],[1.1782552],[1.1522838],[1.114516],[1.0752699],[0.046031546],[0.0461143],[0.04619555],[0.0463639],[0.046436474],[0.046342947],[0.046053313]],"model_test_loss":0.01846417412161827,"input_size":18,"current_date_and_time":"2023-08-09_14-07-28","input_mean":[[23.297014],[-0.07091814],[-0.006433463],[-0.015964804],[-0.06944786],[-0.07049861],[-0.07169086],[-0.0725157],[-0.07295393],[-0.07059761],[-0.06671325],[-0.015837615],[-0.015886428],[-0.015935564],[-0.016081078],[-0.016197832],[-0.016277002],[-0.016316837]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.8718482],[0.043485954],[0.1334148],[0.04062672],[0.1371059],[0.47959167],[0.41457915]],"dense_1_W":[[0.302712,-0.64061826,0.00021023012,0.1270872,0.47509173,-0.88803416,0.07212928,0.042023487,-0.2701141,-0.11028586,0.14805569,-0.3301233,-0.030141128,0.110137366,0.24910642,0.022822332,-0.13628617,-0.02734447],[-0.0112305805,-0.062110696,0.9048815,-0.30518687,0.37704608,0.54086095,-0.36482716,0.78454524,0.09202176,0.124826275,-0.60082704,0.23958081,0.013718426,-0.59773356,-0.04289131,0.24219033,0.07552512,-0.14155541],[0.0095520355,-1.5135527,-7.146096,0.046556793,1.0016626,0.26657087,0.49129936,0.1192361,-1.3478962,-0.57923305,0.8990769,-1.2713641,-0.1449253,0.33309865,0.29299238,0.8477045,0.34352547,-0.26439115],[1.3360776,0.43069306,0.0033850432,0.13868013,0.12317294,-0.71958536,0.09370431,0.69450635,0.7858797,-0.061516054,-0.44013515,-0.36443138,-0.11492549,0.2905127,0.29464763,0.27047387,-0.009484421,-0.16326639],[-0.072193325,0.6810033,-0.0006428534,-0.17535646,-0.3925088,0.9478185,-0.4810887,0.14695391,0.22799563,-0.0067853555,-0.09267938,0.15300772,0.25419602,-0.25394833,-0.25696975,0.27363688,0.04384659,-0.047923796],[0.31465146,0.3511552,0.0015588161,0.2902856,-0.19568959,1.1875578,-0.8330673,0.016947713,0.26301575,-0.019239245,-0.031921107,0.33852276,-0.28278407,0.082128964,-0.28737378,-0.18144135,-0.28193912,0.35517663],[1.4577928,0.18897557,-0.0022648247,-0.5178223,-0.29067862,0.51650524,-0.51629674,-0.7847042,-0.3747238,0.10482232,0.20073019,0.57185805,0.13230741,-0.48319355,-0.041621983,-0.16511591,0.05802408,0.06077849]],"activation":"σ"},{"dense_2_W":[[0.09112419,0.3933311,-0.07912346,-0.16376911,-1.3840766,-1.13499,0.39429682],[-0.25075546,-0.139813,-0.10178927,-0.5902748,-0.03242446,0.10067222,0.17554912],[0.32162717,-0.26907963,0.4562144,-0.17545085,-0.8203269,-0.3948726,-0.48715237],[0.2058124,-0.26949823,-0.26260903,0.66973966,-0.8223285,-0.43544468,-0.20690836],[0.0921255,0.6398792,-0.4644536,0.43992248,0.66456866,-0.29228744,0.681274],[-0.701462,0.3418935,-0.30925137,-0.4308913,0.61918205,0.41725752,0.19738914],[1.0032815,-0.1373689,0.13509746,0.55519915,-0.66466725,-1.5082299,-0.6796551],[0.9098266,-0.6253603,0.9275299,1.3693849,-0.7913963,-0.12439643,0.2529121],[0.14551386,-0.302949,-0.6236385,0.38303864,-0.2522383,-1.0035355,0.37006238],[-0.6432663,0.26386604,0.11475341,-0.24213178,0.4122344,0.568145,-0.18189429],[-0.07105171,-0.6555986,0.7464795,-0.31800714,-0.6183989,-0.829439,-0.80282366],[-0.11153934,-0.00981713,-0.027943783,-0.25458655,0.29322457,-0.07820042,-0.009418274],[-0.08382857,-0.53568757,0.30139825,0.19761209,-0.21205801,0.19351888,-0.18371148]],"activation":"σ","dense_2_b":[[-0.1493231],[-0.00402506],[-0.037446134],[0.063946806],[0.047605712],[-0.063797615],[0.22099188],[0.028348964],[-0.08109348],[-0.016280346],[-0.046104338],[-0.038503833],[-0.014590311]]},{"dense_3_W":[[-0.23360372,-0.4386488,0.5417654,0.6029812,-0.102774434,-0.533376,-0.10394323,-0.3564222,0.6374826,-0.4906818,0.459046,0.38168675,-0.19220887],[-0.25327396,0.34030682,-0.5780689,-0.10341296,0.44794607,0.15350609,-0.51224583,-0.5694763,-0.3856984,0.60207605,0.124467865,0.37996173,0.4741996],[-0.65099394,-0.1436866,-0.34031066,-0.44880912,0.5899,0.31723353,-0.23588851,-0.50561076,0.28370628,-0.30152458,-0.38816845,0.047665782,-0.070512585]],"activation":"identity","dense_3_b":[[-0.023715347],[0.026487991],[0.03818343]]},{"dense_4_W":[[-0.68857694,1.0650787,0.9217563]],"dense_4_b":[[0.029519804]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX 2020.json b/selfdrive/car/torque_data/lat_models/LEXUS RX 2020.json deleted file mode 100755 index 554ac5ac3d..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX 2020.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.812706],[1.2046702],[0.48371235],[0.046686843],[1.1999358],[1.2024622],[1.2033786],[1.181801],[1.1561146],[1.1195389],[1.0815737],[0.04636314],[0.04644517],[0.046534877],[0.04676031],[0.046842918],[0.046764217],[0.04643078]],"model_test_loss":0.019136762246489525,"input_size":18,"current_date_and_time":"2023-08-09_13-16-19","input_mean":[[23.225687],[-0.071597725],[-0.006403737],[-0.014869247],[-0.07103227],[-0.07217188],[-0.07275048],[-0.074461505],[-0.07488792],[-0.07229588],[-0.068321556],[-0.01480668],[-0.014833956],[-0.014870731],[-0.0150201935],[-0.015132994],[-0.0152152665],[-0.015241827]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.1922611],[0.94190425],[-1.8803643],[1.8052227],[-0.0708761],[-0.15278636],[0.03023423]],"dense_1_W":[[1.552201,-0.3393357,-0.27431434,-0.43802527,-0.3741866,-0.08110382,-0.6744256,-0.32662967,0.117568575,-0.07447189,0.0011381231,0.0149186775,-0.026234545,0.27035344,-0.22903343,0.21218765,-0.13117951,0.1787165],[1.5157571,-0.01751974,0.2628785,0.10242989,0.8160844,0.033813257,0.5027697,0.25837898,0.026799573,0.033179637,0.04939591,-0.1756206,0.17158255,0.082036525,0.26975772,-0.24218568,0.03992314,-0.101497844],[-0.6898828,0.3296126,0.2381383,0.38712546,0.0020844117,0.3836064,0.045370143,0.13722278,0.10226575,0.38099837,-0.24260375,0.29536518,-0.25331467,-0.46099368,0.0860768,0.3208733,-0.048293054,-0.1899293],[0.72579914,0.0024951876,0.24405375,0.072388135,0.5108625,0.6879625,-0.768285,0.4665226,0.40248188,-0.088189945,-0.03153826,-0.12015286,-0.12880835,0.038919933,0.18531369,0.19858767,0.4032525,-0.49639243],[-0.006907261,1.1555037,5.512076,0.011916408,-1.3611755,0.047472972,0.4679199,0.18809648,0.8807568,0.79814273,-1.2557139,0.693036,-0.17998734,0.17353718,-0.72927487,-0.6196344,-0.10912921,0.36026958],[-0.0008086146,-0.6703738,-0.04672321,0.051983077,0.5071199,-1.3758855,1.051845,-0.13139765,0.10653976,0.16576192,-0.11845737,-0.29320416,-0.44305497,0.47334316,0.6171071,0.13699032,-0.11988301,-0.15529875],[-0.010062327,-0.4213587,-0.033820994,0.24619605,-0.107379094,-0.7219596,0.05261352,0.16658644,-0.5604586,-0.06510145,0.1325112,-0.3156187,-0.45383725,0.44158942,-0.100481614,0.15328817,0.27649054,-0.21409012]],"activation":"σ"},{"dense_2_W":[[0.09448425,0.3760177,-0.15260221,-0.40807378,-0.43990996,0.5492166,0.721128],[-0.72103924,-0.54227215,0.037051897,-0.30457422,-0.89297354,0.68800735,0.22008589],[0.28751957,-0.72327036,0.58277506,0.28192317,-0.026689565,-0.9505252,-0.50040275],[0.4725355,-0.62869906,-0.034366626,-0.08867052,0.33788702,-0.9937069,-0.8205744],[0.70781505,-0.1194498,0.69015354,0.60684264,-0.15911719,-1.1402134,-0.77705395],[-0.11801999,-0.90623593,-0.35348848,-0.13936913,0.27008694,-0.6951836,-0.85475653],[0.053964566,0.19979686,-0.6263667,-0.6289394,-0.1642748,0.97348315,0.6938839],[-0.057833552,0.25785288,0.33920816,-0.40871015,-0.19964917,-0.35569403,0.08428918],[-0.35905418,-1.1179031,1.069501,0.20561393,0.34141743,-0.50298977,-1.1658801],[0.5924804,0.05359343,-0.74364394,-0.542707,-0.7528103,-0.89056516,-0.49965763],[-0.17235844,0.009363647,0.14541583,-0.6132933,-0.4071755,0.72789896,0.4605604],[-0.037599627,-0.65237206,0.21704821,0.6360923,0.31922218,-1.1261895,-0.5370619],[-1.4063736,-0.410196,-0.4618791,-0.8892677,-0.7377025,0.60982996,1.0650238]],"activation":"σ","dense_2_b":[[-0.05620989],[-0.060037877],[-0.04623755],[0.015519294],[0.0995001],[-0.3057865],[-0.029583905],[-0.18218923],[-0.09876781],[-0.36697587],[-0.078949876],[-0.047403064],[0.027366562]]},{"dense_3_W":[[0.35254586,0.089774035,-0.44079193,-0.56373316,-0.6380692,0.019918533,0.78052264,-0.3596739,-0.64493376,-0.09652632,0.17468911,-0.6748918,0.8599969],[-0.5039963,-0.54529995,0.42020872,0.42345285,0.77461576,-0.18526357,-0.66473806,-0.3536843,0.8206677,0.08182418,-0.13014542,-0.14203,0.34024766],[0.24226099,-0.58680654,0.10851144,-0.08556077,0.54436725,0.29506567,-0.5938133,-0.20851049,0.33693817,0.085123494,-0.47413915,0.37861294,-0.23017392]],"activation":"identity","dense_3_b":[[0.06330438],[-0.025818001],[-0.030472636]]},{"dense_4_W":[[-0.7522928,0.38205072,0.60193]],"dense_4_b":[[-0.038911503]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B0E012x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B0E012x00x00x00x00x00x00'.json deleted file mode 100755 index ffbba4f215..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B0E012x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.858131],[1.0081798],[0.42891374],[0.04033326],[1.0039434],[1.0047058],[1.0057864],[0.9871899],[0.96912324],[0.9463845],[0.91797376],[0.040223543],[0.040249895],[0.040269017],[0.040249255],[0.040179927],[0.039965343],[0.039587643]],"model_test_loss":0.012978884391486645,"input_size":18,"current_date_and_time":"2023-08-09_15-22-40","input_mean":[[25.53512],[-0.057664793],[0.006972764],[0.0020606092],[-0.057454415],[-0.057828046],[-0.058313288],[-0.05210109],[-0.04723263],[-0.04305777],[-0.037324708],[0.0020332797],[0.0020444782],[0.0020467127],[0.0020990318],[0.0021205018],[0.0021155798],[0.002061087]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.9451743],[-2.0738995],[-0.061819293],[-1.8539776],[0.11293126],[0.8801313],[-0.34697428]],"dense_1_W":[[-1.3579488,-0.14123936,-0.018169187,0.2567915,0.2472419,-0.407651,0.44249314,0.404622,0.041434586,0.16605115,-0.18061078,-0.18744762,-0.007931179,0.06848994,0.23897268,-0.12570733,0.15255798,-0.054657888],[-0.5138878,0.7540569,0.01823065,-0.30429357,0.105593584,0.6283228,-0.88449097,0.35527444,0.34103888,-0.08124087,-0.12751521,-0.12272718,0.40023044,0.078568466,0.094270095,-0.24328744,0.22644232,-0.02296254],[0.01880253,0.041950032,0.025469717,0.41977495,-0.01845549,0.7469875,-0.5836401,-0.0023528198,0.06800503,0.048917662,-0.033807367,0.3940383,-0.3420582,0.048574876,-0.73250633,-0.3168187,0.19207624,0.14923036],[-0.5069683,-0.7299225,-0.017133389,0.27239755,0.09518913,-0.6464978,0.5669755,-0.22607638,-0.22541493,-0.05590562,0.15980408,-0.26756075,-0.22189523,0.26979044,-0.19004701,0.08372643,0.042589996,-0.106104],[0.003376271,0.99690795,5.194685,-0.08252821,-1.2339424,-1.278542,-0.95400864,0.22764781,2.1331182,1.0682175,-0.5518043,1.1603253,0.1512765,0.09291671,0.060322978,-0.39886457,-0.8555216,-0.31327197],[1.3195114,0.097568,-0.016457167,0.18425311,0.22003257,-0.49077654,0.6284053,-0.02067786,0.18970595,-0.003833334,-0.053493172,-0.3488455,-0.04374197,0.48894325,0.33779547,-0.61585546,0.335012,-0.015417546],[-0.05744463,1.1883487,-0.20707692,-0.32463714,0.8947988,0.5895385,0.09502346,0.2980289,-0.086293384,0.6502581,0.027666133,0.28947368,0.13124675,-0.7183947,0.23811169,0.54866403,-0.09458978,-0.1836273]],"activation":"σ"},{"dense_2_W":[[0.61253756,-1.1365101,-0.29902524,0.9798833,-0.2917683,0.59114116,-0.4712067],[0.52844095,-0.86928684,-0.78100795,0.8103875,-0.41248968,0.6061389,0.095086515],[-1.1287509,-1.1174941,-0.2299692,-0.5305931,-1.6240323,0.899128,-0.95204324],[-0.17106694,-0.65125066,-1.1487548,1.3049239,-0.03965821,0.7915052,0.23665957],[-0.1951633,0.736451,-0.018969562,-0.54605484,0.40702567,-0.7090892,0.14927544],[-0.43511096,1.3270646,0.090805426,-1.0105572,-0.117792316,-0.44068936,0.6473223],[0.52573407,-0.4151988,-0.7318552,1.1034199,-0.35240525,-0.29688236,-0.5681273],[0.8565392,-0.28433335,-0.68133914,1.1850481,-1.0075815,-0.13676727,-0.12454539],[-0.42941204,1.0876211,0.8470857,-0.7139818,0.4409865,-0.8451851,-0.2075387],[-0.58658993,1.1041594,0.80485415,-0.3956205,0.23861384,-0.6500841,-0.012711808],[-0.44264716,1.2002516,0.9671141,-0.777456,0.17264067,-0.8688163,-0.12924784],[0.83560413,-0.37854236,-0.9930072,0.970375,-0.09642324,-0.28791323,-1.1921409],[0.2517275,-0.98617977,-0.6023062,1.2428936,0.12169115,0.42175332,-0.4277408]],"activation":"σ","dense_2_b":[[-0.00045856892],[-0.13278121],[-0.38624468],[-0.009671737],[-0.11906116],[-0.098297276],[-0.10887506],[-0.17448516],[-0.11598807],[-0.1596173],[-0.09860622],[-0.26982278],[0.063321225]]},{"dense_3_W":[[-0.59850806,-0.55752456,0.21218449,-0.6224379,0.31959382,0.70844734,-0.67447245,-0.53966963,0.8812389,0.6643036,0.88396746,-0.3286644,-0.46220767],[-0.6034193,-0.5671035,0.73748684,-0.51771855,0.25666666,0.5623304,-0.5781052,0.20079169,-0.14487052,0.38135555,0.48326564,-0.115334585,0.1118099],[-0.3604728,-0.15291758,0.09415789,-0.1948471,0.6609959,0.6682593,-0.5599815,0.018269831,0.07930072,-0.060835414,0.57257175,-0.2622459,-0.668998]],"activation":"identity","dense_3_b":[[0.034600537],[0.1429371],[0.05962403]]},{"dense_4_W":[[0.8548602,0.121467695,0.28002813]],"dense_4_b":[[0.009385257]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48102x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48102x00x00x00x00x00x00'.json deleted file mode 100755 index 2986dbb0f5..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48102x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8977513],[0.68954486],[0.4139147],[0.030382803],[0.69193476],[0.69048476],[0.68913734],[0.6806858],[0.6777796],[0.67110157],[0.6681313],[0.030303426],[0.030323956],[0.030338047],[0.030418577],[0.030385923],[0.030345106],[0.030242294]],"model_test_loss":0.012908237986266613,"input_size":18,"current_date_and_time":"2023-08-09_15-48-43","input_mean":[[23.19783],[0.03271446],[0.025837483],[-0.011847352],[0.026097897],[0.02815446],[0.03049293],[0.041018687],[0.044047516],[0.044604685],[0.0430235],[-0.01190559],[-0.011907151],[-0.011900433],[-0.011840576],[-0.011839805],[-0.011870837],[-0.011916283]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.070281],[-2.4973028],[1.3214084],[-2.4905453],[-0.052674435],[-1.0832871],[0.5832555]],"dense_1_W":[[-1.782736,0.38585284,-0.08545495,0.4048967,-0.2801542,-0.13097851,-1.0943906,-0.27965558,0.29071763,-0.1403219,-0.10031121,0.19426891,-0.5468137,-0.5553437,0.3665551,0.53392786,-0.272529,-0.12062517],[-1.217346,1.0300412,0.00075295696,0.22974275,-0.012137472,0.65442824,-0.40739405,-0.16076401,0.26733837,-0.05870503,0.14761084,0.053736396,0.095834024,-0.21273386,-0.33324143,0.12504764,-0.15672976,0.07386392],[1.0505023,2.1441545,6.541688,-0.21625133,-1.9480888,-0.570705,-1.6117417,0.95555365,1.6392485,-0.043550003,-0.036482707,0.42250034,0.20424727,-0.1673073,0.22605596,-0.013399118,-1.0146956,0.16446613],[-1.2516127,-1.0277461,-0.0049578804,0.030769175,0.043333333,-0.8858235,0.54669535,0.13188538,-0.095215924,0.012589365,-0.18010837,-0.30505812,0.5021825,-0.31425828,0.38749072,-0.22350626,-0.05114633,0.08698958],[0.0035146833,0.3828884,0.055803537,-0.2754486,-0.3728101,1.3081414,-1.0317568,0.29426,0.10069639,0.089421265,-0.16310905,0.4280105,0.44955868,-0.30968818,-0.6182345,0.111985266,0.117390126,0.0961805],[-1.0358554,1.2746156,7.393638,-1.1811066,-1.6412053,-0.5476179,-1.172681,0.36368853,1.9390265,0.47966236,-0.11466104,0.56276196,0.5378139,-0.06509055,0.35610762,0.26768783,-1.025618,0.03889093],[1.7004466,0.20178793,-0.087380014,0.27393892,-0.51528084,0.27506933,-0.92300934,-0.37298542,0.03233947,0.030535467,-0.07243149,-0.23616593,0.1807038,-0.07146105,-0.17994934,0.1573161,-0.3682807,0.24465875]],"activation":"σ"},{"dense_2_W":[[-1.0014797,0.13553746,0.22278486,-0.399194,-0.527964,0.115432225,-0.60008395],[0.24153942,-0.031119501,-0.51762193,0.6818596,-0.97653997,-0.52417797,-0.25938374],[-0.5205759,-0.63843703,0.18108721,0.5189804,-0.839813,0.10334479,-0.100626364],[0.525222,0.54790866,0.33529684,-0.8107151,0.20456313,-0.30038992,0.41534916],[-0.35009837,-0.37109253,0.34654424,-0.23345965,-0.90483,-0.12241629,-0.3237933],[-0.28656074,0.5365135,-0.19887519,-0.4632808,0.5597225,0.58351445,0.5293639],[-0.06900586,-0.63779444,1.5707409,-1.1598672,0.1615726,1.5663954,1.0012243],[0.5492712,0.70519316,-0.4818449,-0.7936975,0.98074996,0.12498996,-0.13810375],[0.0056431335,-0.43114427,-0.09032395,0.506023,-0.7993859,-0.21588661,-0.07299588],[0.67064244,0.49529698,0.18830942,-0.7618566,0.73772794,-0.3761758,-0.46270788],[0.5728761,-0.06610756,-0.2067,0.24439229,1.0658774,0.022089032,-0.10871751],[-0.3089939,-0.46645024,-0.06367501,-0.6681549,-1.2519213,0.6221667,0.10172743],[0.09857253,-1.1578652,0.08043016,0.43568343,-0.8444561,0.28122354,-0.16943873]],"activation":"σ","dense_2_b":[[-0.09551276],[0.26105896],[0.22863466],[-0.23741141],[0.17701647],[-0.17702891],[-0.25717747],[-0.36781237],[0.19594961],[-0.14985447],[-0.24570842],[-0.05177276],[0.061600402]]},{"dense_3_W":[[-0.22265823,-0.45556778,0.17281826,-0.14696541,-0.5590243,-0.42801765,-0.17338079,-0.10080969,0.36018917,0.17413813,0.06440728,0.56492454,0.22878975],[0.16702455,0.83242625,0.3850462,-0.33998582,0.5892735,-0.33413044,-0.55653554,-0.54551136,0.60024905,-0.15473615,-0.633992,0.31632444,0.7458124],[0.30883184,-0.23770918,-0.17857468,-0.58323413,-0.5130921,-0.059556685,0.38129666,0.58364826,0.1521082,-0.17372313,0.2868733,-0.23405342,-0.07776656]],"activation":"identity","dense_3_b":[[0.055418704],[0.0787763],[0.036709785]]},{"dense_4_W":[[0.005051283,-1.2674674,0.09997759]],"dense_4_b":[[-0.07513949]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48112x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48112x00x00x00x00x00x00'.json deleted file mode 100755 index bd2c176bb7..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017 b'8965B48112x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.672505],[0.97997594],[0.48896867],[0.036406606],[0.9879945],[0.98470104],[0.9816876],[0.9598457],[0.9478727],[0.9382326],[0.9277363],[0.036488507],[0.036457427],[0.036408816],[0.036040876],[0.035670046],[0.035212148],[0.034712877]],"model_test_loss":0.013047197833657265,"input_size":18,"current_date_and_time":"2023-08-09_16-38-38","input_mean":[[26.06892],[-0.032476645],[0.01847185],[0.008156076],[-0.03514416],[-0.03364282],[-0.03196355],[-0.0248437],[-0.023279596],[-0.017502444],[-0.018172378],[0.008091517],[0.008101025],[0.008103796],[0.00808531],[0.008018075],[0.0077868756],[0.007642417]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.0938547],[-1.5377342],[0.11164253],[-1.3607982],[-0.001633297],[0.28943086],[-0.017152473]],"dense_1_W":[[-2.6134133,0.1072478,-0.038407013,-0.55906427,-0.54777765,0.53895926,-0.26524103,0.15754877,0.0075992765,0.11399316,0.060622185,0.04282183,-0.9743834,-1.0467935,-0.030679928,0.2015473,-0.170534,0.72894627],[-0.4446471,-0.6120142,0.0009793217,0.28336817,0.028145306,-1.2111511,0.52227914,-0.02825454,-0.021248085,-0.09601412,-0.050700705,0.004752271,-0.20404592,0.27143523,-0.5377922,-0.22390097,0.28489593,0.043314826],[-0.013865213,-0.42944995,0.0024095853,0.33657116,-0.17577003,-1.3745159,0.96880376,0.08447174,-0.18238825,-0.11932599,-0.00020815701,-0.72243226,0.27775034,0.31180686,-0.02206438,0.043953754,0.0844208,0.16568054],[-0.37105855,0.68786305,-0.00039992417,0.18125659,-0.23189458,1.2473199,-0.55478483,0.04226533,0.08798957,-0.0069234855,0.058259994,0.7714291,-0.383511,-0.9248507,0.36679336,0.15952906,0.12819786,-0.2177665],[0.013770035,0.33806401,0.00094282354,0.17861775,-0.23762894,1.1728739,-1.2293357,0.07470985,-0.08396865,0.14319621,-0.040008016,0.5050906,0.26662126,-0.6125382,-0.6498126,-0.17428778,-0.17383261,0.46036986],[0.0077164564,1.5451698,7.429268,0.31939277,-2.2427018,-1.5543389,-2.5262957,1.1669385,3.063373,1.1486622,-0.49699086,1.9423336,1.13846,-0.5957547,-1.5996556,-0.34185794,-0.6949594,0.12978563],[-0.042126972,-0.29461217,-1.4955524,0.45490184,-0.033281934,-0.6029691,0.3394342,-0.30512628,-0.15046905,-0.14568257,0.8093577,-0.8086997,-0.15785371,0.51180923,0.26197797,-0.17697093,0.12429469,-0.21264184]],"activation":"σ"},{"dense_2_W":[[-0.5995437,-0.3603585,-0.20216258,0.08936401,-0.49370512,-0.54119444,0.28133863],[-0.58552414,0.81165653,0.91113776,-0.79454756,0.22261482,-0.21558377,0.10684496],[-0.4171185,-0.568881,0.43534383,0.0026570433,0.21137409,0.25033414,-0.29121745],[-0.36481413,-0.9939236,0.05604151,-0.35338676,0.9317966,1.4149865,-0.54362875],[0.54199463,-0.6108903,-1.0630567,0.39385843,0.7272977,0.33584854,-0.31977272],[0.24222183,-0.15256006,0.60300756,-0.4242564,-0.46528172,-0.34210142,-0.3140277],[0.09832237,-0.16391051,-1.2382702,1.0045747,0.8160615,0.110929355,0.02551595],[0.02746031,-0.19373654,-0.2355057,0.24359266,0.5353504,-0.22755131,0.2656299],[-1.1224236,-0.3300643,-0.407043,-0.353378,0.65846336,-1.0422004,0.09945112],[-0.18847044,-0.886505,-0.16673878,0.5101195,1.0061107,0.11062626,-0.050155606],[0.3335287,0.11981937,0.29632357,-0.13577487,-0.0740185,-0.02512637,0.44026503],[-0.10581189,0.38680208,0.5723,-0.26251873,-0.27632186,-0.5749631,0.35630655],[-0.16280471,-0.25712195,0.53059477,-0.66531825,-0.66056573,0.0900753,0.48065072]],"activation":"σ","dense_2_b":[[-0.2385691],[0.12793182],[-0.10159543],[0.25047785],[-0.23729679],[0.024322221],[-0.18446803],[-0.07810453],[-0.41927636],[-0.016799252],[-0.053551592],[0.055111423],[0.04165242]]},{"dense_3_W":[[-0.059520952,-0.5622691,0.45825937,0.39820474,0.13583045,-0.32961982,0.015958305,0.3244693,0.4253685,0.23013696,-0.54041684,-0.40731147,-0.30158764],[0.09375583,-0.0017320638,-0.39634547,0.24657139,0.5715864,-0.140639,0.52030236,0.553719,-0.18884522,0.516919,-0.1633942,-0.6434239,-0.5723449],[0.029367253,-0.6095855,-0.5169094,0.41468775,0.1923313,0.57539755,0.39066675,0.48482603,-0.5734151,-0.060352806,0.33851054,-0.28380212,-0.28927657]],"activation":"identity","dense_3_b":[[-0.022509072],[-0.026452657],[-0.0094871335]]},{"dense_4_W":[[0.83508223,0.90878975,0.025333464]],"dense_4_b":[[-0.026976062]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020 b'8965B48271x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020 b'8965B48271x00x00x00x00x00x00'.json deleted file mode 100755 index 3f7bdb166c..0000000000 --- a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020 b'8965B48271x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.316072],[0.9590723],[0.36351156],[0.0441653],[0.9523992],[0.954041],[0.9552573],[0.9414871],[0.92725456],[0.9035007],[0.8794774],[0.044077154],[0.044106334],[0.044123128],[0.04409188],[0.04404384],[0.04385866],[0.043682296]],"model_test_loss":0.01662302203476429,"input_size":18,"current_date_and_time":"2023-08-09_17-54-54","input_mean":[[24.043165],[0.030592984],[0.008662194],[-0.009329172],[0.030800642],[0.030898405],[0.031143442],[0.032330383],[0.031538412],[0.030825427],[0.032572977],[-0.00929861],[-0.00929033],[-0.009281115],[-0.009265514],[-0.009250021],[-0.009282802],[-0.009329454]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.026120635],[1.9416399],[0.60815054],[0.25644714],[0.3952565],[0.17582616],[-0.19558431]],"dense_1_W":[[3.335223,-0.14903972,0.017792625,0.44585547,-0.17456532,-0.3629251,0.34922808,0.67767817,0.15890893,0.31689033,-0.45744747,-0.78738886,-0.15512607,0.31531373,0.13215774,0.08615877,0.7029011,-0.66872466],[0.33444184,0.3865422,0.033097874,-0.10416669,-0.13609071,0.37232438,0.041280344,0.3434424,-0.06693412,0.37225628,-0.31096882,0.6194188,0.019381195,-0.81112,-0.11371732,0.12016824,0.15621446,-0.051286366],[0.32034597,-0.5460983,-0.022756906,0.24789928,0.08965753,-0.78998137,0.8077627,-0.25334057,0.30262712,-0.57730323,0.31271738,-0.413183,0.26481584,0.20591393,-0.2825443,0.048321266,0.037722778,-0.02604145],[-0.001096885,0.877505,4.375584,-0.21056944,-1.4921321,0.30686256,-0.07281465,-0.23879132,1.7749463,0.65912414,-1.1899405,0.7710069,0.51181823,-0.3327569,-0.69171345,-0.14890115,-0.16795291,-0.058986213],[3.0410533,0.37130952,-0.014436474,2.9947143e-5,-0.20359561,0.08057991,-0.4799077,-0.21630915,0.02990563,0.44693226,-0.31517798,0.34675393,-0.35125488,0.04655145,0.0073511093,-0.02863017,-0.3938378,0.28197953],[-0.02691242,-0.27878886,-0.025484474,0.11147362,0.010308179,-0.70408285,0.24386121,-0.26564816,-0.09767933,0.54513925,-0.30042544,-0.70545626,0.19622594,0.4065873,0.2987727,0.13130112,-0.16078812,-0.09777715],[-0.045214858,-0.3631571,-0.036500983,-0.11810798,0.45778593,-1.060346,1.0526772,0.031578775,-0.59605724,-0.36440456,0.511626,-0.73647,0.015697645,0.37303218,0.7600099,-0.21960646,0.16917647,-0.29108718]],"activation":"σ"},{"dense_2_W":[[-0.35218585,0.14308812,-0.57519746,0.31768999,0.17070374,-0.3732793,-0.48790818],[-0.34943467,-0.60227203,-0.4166511,-0.112191014,-0.04813801,-0.32272428,-0.032062355],[0.16224292,0.1755412,-0.6478811,-0.387053,0.63158387,-0.72614723,-0.8409673],[0.03339276,0.5439781,-0.7387804,-0.08449288,0.11998959,-0.18540213,-0.2549742],[-0.27214608,0.19542813,-0.13491894,-0.38912305,0.19247393,-0.8167929,-0.35544467],[-1.5148702,-0.19982053,-0.4914989,1.1792556,-0.88855046,-1.1474198,-0.6109534],[0.43902197,-0.2789942,-0.12047118,-0.30758274,-0.41768637,0.5652369,-0.0692086],[0.41314223,-0.50518227,0.5529299,-0.5850712,-0.14101315,0.15159719,0.4114286],[-0.013627578,-0.103289954,-0.45013615,0.4243168,-0.04401468,-0.6160927,-0.43941525],[-0.11910079,-0.30987215,0.2152533,0.38692838,-0.30739278,0.0892118,-0.04579046],[-0.44247296,1.0036645,0.045824107,0.4684638,0.7781144,-0.6853828,-0.62459666],[0.10554759,-0.05212664,0.4570351,-0.031150939,0.12591816,0.81590295,0.060838416],[0.4397581,-0.34536296,0.10181044,-0.39205134,-0.38584864,0.4655003,0.29053125]],"activation":"σ","dense_2_b":[[0.056989435],[-0.06921607],[0.05528886],[-0.010666541],[-0.2541545],[-0.019204568],[-0.021566926],[-0.043972496],[0.023812661],[-0.0577136],[0.13183823],[-0.033985566],[-0.05114418]]},{"dense_3_W":[[0.53362375,-0.31393358,0.77158445,0.42364752,0.27630767,0.6144512,-0.45349428,-0.63806015,0.28949618,-0.34986678,0.30039573,-0.56956017,-0.5325901],[0.25773355,-0.5742002,-0.18550177,-0.2709638,-0.43932548,0.4737292,0.486204,-0.49685073,0.22938772,0.07413067,0.3179722,-0.38822258,-0.021123026],[0.2324419,-0.27651238,-0.7168737,-0.4830318,0.29606512,0.303249,-0.074232936,0.09739446,-0.6291083,-0.49824134,-0.56967014,0.36437067,0.6702277]],"activation":"identity","dense_3_b":[[0.008113352],[0.044839732],[0.00069537724]]},{"dense_4_W":[[1.2693222,0.03663439,-0.6965769]],"dense_4_b":[[0.0059736283]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/LEXUS ES 2019.json b/selfdrive/car/torque_data/lat_models/LEXUS_ES_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS ES 2019.json rename to selfdrive/car/torque_data/lat_models/LEXUS_ES_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS IS 2018.json b/selfdrive/car/torque_data/lat_models/LEXUS_IS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS IS 2018.json rename to selfdrive/car/torque_data/lat_models/LEXUS_IS.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2018.json b/selfdrive/car/torque_data/lat_models/LEXUS_NX.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS NX 2018.json rename to selfdrive/car/torque_data/lat_models/LEXUS_NX.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS NX 2020.json b/selfdrive/car/torque_data/lat_models/LEXUS_NX_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS NX 2020.json rename to selfdrive/car/torque_data/lat_models/LEXUS_NX_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017.json b/selfdrive/car/torque_data/lat_models/LEXUS_RX.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2017.json rename to selfdrive/car/torque_data/lat_models/LEXUS_RX.json diff --git a/selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020.json b/selfdrive/car/torque_data/lat_models/LEXUS_RX_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/LEXUS RX HYBRID 2020.json rename to selfdrive/car/torque_data/lat_models/LEXUS_RX_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022 b'KSD5-3210X-C-00x00x00x00x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022 b'KSD5-3210X-C-00x00x00x00x00x00x00x00x00x00'.json deleted file mode 100755 index 7e79feb6d1..0000000000 --- a/selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022 b'KSD5-3210X-C-00x00x00x00x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.853387],[1.1592323],[0.5035471],[0.04757312],[1.1533973],[1.1566302],[1.1592906],[1.124919],[1.097695],[1.0662291],[1.031133],[0.04736746],[0.04742848],[0.047484897],[0.047564015],[0.047558986],[0.047428854],[0.04712477]],"model_test_loss":0.01737847924232483,"input_size":18,"current_date_and_time":"2023-08-09_18-49-11","input_mean":[[23.514374],[0.01205051],[-0.007076305],[-0.010646906],[0.013812598],[0.013436532],[0.01327746],[0.010840775],[0.010276086],[0.008101413],[0.0081624],[-0.010648332],[-0.010639621],[-0.010631156],[-0.010660867],[-0.0107276775],[-0.01080371],[-0.010883885]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.44225207],[-0.08251625],[-0.09139792],[-0.17654161],[-1.2058073],[-0.18010782],[-1.0617452]],"dense_1_W":[[0.81515855,0.19847405,-0.16027977,0.2605701,0.5020647,0.6416506,-0.74194986,0.2395706,0.008035103,-0.54028624,-0.68319666,-0.11733088,0.30929378,-0.57654405,-0.11921764,-0.07856754,0.36212778,-0.21245824],[-0.003413831,-0.88659906,-1.5215017e-5,0.2659344,0.66569483,-1.4612998,0.502116,-0.023383126,0.27923653,0.22036943,-0.24609998,-0.16959597,0.047625005,-0.4744547,0.54592556,-0.07476282,-0.057982,-0.0049017775],[-0.0071781585,1.3938068,5.4535723,-0.42513278,-1.0321593,-0.9752934,-0.7584714,0.67374307,1.2021991,0.6324794,-0.48040524,0.6027366,0.034736745,0.218859,0.021496648,-0.23673749,-0.3517566,0.1679437],[-0.7695569,0.26124287,-0.15884998,-0.08147379,-0.10981094,0.6529741,-0.19342661,0.43262586,-0.26433924,-0.30309507,-0.86631536,0.13160278,-0.033320703,-0.14629383,-0.047781195,0.07316912,-0.17327231,0.101880364],[-0.5631856,-0.42516446,0.13529952,-0.18435624,-0.1343596,0.2858478,-1.1791672,0.07787927,0.9311218,0.68779874,0.080623545,0.085128896,-0.26469198,0.19951835,0.5323622,-0.09537051,-0.2584652,0.101225466],[0.0015933844,-0.159882,0.00029708236,-0.26148286,-0.43383598,-0.5543793,0.9337357,-0.36895335,0.39094746,0.05787086,-0.24165697,-0.2886184,0.3548747,-0.29055887,0.74826497,0.10615606,0.20682812,-0.32921875],[-0.5261344,0.52323943,-0.13088919,-0.008910816,-0.21776229,-0.46300754,1.8696176,-0.20582403,-1.1688477,-0.6119323,-0.04257218,0.013339775,-0.043501914,0.2700189,-0.39648747,-0.0074166763,-0.10004616,0.16081381]],"activation":"σ"},{"dense_2_W":[[-0.5157362,0.9631259,-0.6171437,-0.63063097,-0.4735463,0.3908077,1.1676315],[-0.17338198,-0.23641111,-0.47618997,-0.8813003,0.06709429,0.39402965,-0.4519197],[0.059771042,-0.5551666,-0.1077192,0.09842683,-0.42055693,-1.128195,-0.056298535],[0.54656047,-1.1881918,-0.06123479,0.3539518,0.86083883,-0.22125135,-0.7932267],[0.43361214,-0.8142263,0.23757508,0.094281524,0.57598335,-0.29057238,-0.61107886],[-0.41463575,1.0157188,0.028030625,-0.78584176,-0.49250048,0.8294643,0.7266427],[-0.9193553,0.7055807,-0.585519,-0.31935224,-0.3264894,0.4916916,1.2605145],[0.22281124,-0.9272137,0.3690255,0.1680717,0.87741905,-1.0792515,0.07280114],[-0.0030278699,-1.4448571,0.16294147,0.63729775,0.4577902,-0.3729355,-0.14417095],[-0.7692859,0.9571105,-0.05139316,-0.5226682,-0.9362267,0.6496911,1.0343727],[-0.17001544,-0.5700911,0.4439341,0.087172486,0.5646342,-1.0282485,-0.018494168],[0.41095787,-0.8497653,-0.5612039,0.3726814,0.65113074,-0.5311523,-0.5471418],[-0.45295602,0.33931798,0.095446564,-0.54154277,-1.0325888,0.38092053,1.145116]],"activation":"σ","dense_2_b":[[-0.3186452],[-0.288119],[-0.38380378],[0.12766144],[-0.10716348],[-0.14310987],[-0.34722012],[-0.018767025],[-0.2038077],[-0.18889567],[0.07034628],[0.012997789],[-0.1260928]]},{"dense_3_W":[[-0.6318957,0.48257327,0.1136089,0.51249325,-0.49085104,-0.46579233,-0.32575548,0.69841176,-0.13590871,-0.48699,0.39608002,0.74255526,-0.28925848],[0.0032501454,0.12569621,-0.004480495,-0.45128265,-0.2787252,0.55744016,0.7084973,-0.52268666,-0.20164965,0.6661134,-0.37891406,-0.20163451,0.32705396],[0.5388942,-0.22452125,-0.35520035,0.22645302,-0.40178102,0.70361614,-0.22213759,-0.8835455,-0.56852955,0.671603,-0.407134,-0.011616957,0.27316284]],"activation":"identity","dense_3_b":[[-0.002264159],[-0.1245649],[-0.077148765]]},{"dense_4_W":[[0.3225791,-0.9383285,-0.49840775]],"dense_4_b":[[0.11291003]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021 b'TC3M-3210X-A-00x00x00x00x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021 b'TC3M-3210X-A-00x00x00x00x00x00x00x00x00x00'.json deleted file mode 100755 index 3c68fce4ea..0000000000 --- a/selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021 b'TC3M-3210X-A-00x00x00x00x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.1361938],[1.0207393],[0.46784142],[0.044281065],[1.0135106],[1.0156862],[1.0179193],[0.99846673],[0.9808455],[0.95554197],[0.93192744],[0.044129286],[0.044156313],[0.044183984],[0.044230428],[0.044231635],[0.04403099],[0.043691065]],"model_test_loss":0.015346277505159378,"input_size":18,"current_date_and_time":"2023-08-09_19-39-22","input_mean":[[26.720535],[0.05398475],[0.018588284],[-0.0071310536],[0.04973699],[0.051148783],[0.05272367],[0.059138265],[0.05985436],[0.061450966],[0.061546516],[-0.007231824],[-0.00721414],[-0.007194777],[-0.0072021107],[-0.007212742],[-0.007267123],[-0.007447193]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.07717255],[0.27171892],[-1.2506876],[-0.016007472],[-0.015063482],[-0.040170796],[-1.3193151]],"dense_1_W":[[-0.00046635105,0.23848942,0.0075265327,0.63944364,0.1347048,0.47492328,-0.37915337,0.41173533,-0.12487092,-0.29509735,0.12250014,0.45845526,-0.054787334,-0.5933447,-0.42548034,-0.45802563,-0.43666455,0.4965784],[0.0028189807,0.9642001,6.3449173,0.27022457,-1.2672639,-0.31867704,-1.0117996,0.016185766,1.29451,1.0355864,-0.5214663,0.12862188,0.3666462,-0.44845012,0.0503311,-0.55411357,-0.0335223,0.22428314],[-0.47832125,1.0210371,0.0025497465,-0.37653345,-0.3742908,0.41137654,-0.88231635,0.07470647,-0.13826749,0.077677675,0.14215057,0.4993727,0.23369971,-0.41651008,-0.20243475,0.10337624,0.048701506,0.0058387266],[-0.010898832,0.9759092,0.78411144,0.13314718,0.7009455,-0.24671309,1.0518397,-0.8327215,-1.1135107,-0.9663988,0.37700438,0.242799,0.26452747,0.23343697,-0.0026173661,-0.60242945,-0.27355608,-0.0491],[-0.010772643,-0.5600224,0.763155,0.30147272,0.78109336,0.837608,-1.0615004,0.5927615,0.50307256,-0.23107275,-0.9367593,0.56559885,0.300443,-0.50897396,-0.2478554,-0.058721192,-0.103559576,-0.29454744],[-0.0016055347,-0.30018213,0.007459824,0.09456597,-0.24748099,-1.0068074,0.22400783,0.22705272,0.46885622,0.7039897,-0.7698514,-0.67375356,0.1720363,0.25146246,0.05736602,0.07285658,-0.13567634,0.09812689],[-0.4724937,-1.0677936,-0.0013191341,0.3016288,0.3043617,-0.546663,0.9942631,0.047015384,0.33232743,-0.22391738,-0.16955799,-0.44435427,0.088968895,0.2033616,-0.024262402,-0.21804309,0.2939665,-0.10468075]],"activation":"σ"},{"dense_2_W":[[-0.02815128,-0.15404527,0.48134676,-0.2045751,0.45873386,-0.9992201,-0.4732975],[-0.81980515,-0.14103535,-0.7424751,0.32967785,-0.43455988,0.42265758,1.1696832],[0.17993073,0.36625385,1.2360194,-0.7851182,0.58637094,-0.9563679,-0.6327467],[-0.80701834,-0.46103284,-0.38886464,0.26659998,-0.25459498,0.27860713,1.0151616],[-0.26352298,-0.27474797,-0.71573704,0.5585518,-0.2905977,0.35913047,0.5679929],[-0.040301513,-0.41732746,0.12182226,0.23108034,-0.84193206,-0.024594149,-0.28726375],[-0.37716445,-0.017540926,-0.7418782,0.67433614,-0.4516054,0.43178025,-0.06261839],[-0.14396086,0.20600641,-0.6750777,0.64446765,-0.9558452,0.41428146,0.09141522],[0.8223245,-0.051082235,0.52545285,-0.6711533,0.26996845,-0.093948975,-1.0486971],[-0.30826652,-0.180534,-0.19349286,-0.20159452,-0.15312585,0.3642725,0.52487767],[0.75069547,0.0020414179,0.33697206,-0.7357639,0.5642956,-0.73201805,-0.15238681],[0.7387959,-0.04430659,0.5192625,-0.5607489,0.7265771,-0.6451385,-0.68313706],[0.017428305,-0.34786505,-0.16648427,0.16268884,-0.6232374,0.32126054,0.8016188]],"activation":"σ","dense_2_b":[[-0.009145167],[0.07557344],[-0.19250816],[-0.049706537],[-0.10579298],[-0.23372805],[-0.22532278],[-0.12664817],[-0.03729099],[-0.123311765],[0.025257772],[-0.1679509],[-0.08767181]]},{"dense_3_W":[[-0.71948236,0.20356402,0.3145974,0.13516659,0.52638,-0.29817042,0.498107,-0.010514032,0.18771078,0.013163666,-0.7712328,-0.4116291,0.3748885],[-0.64847153,0.23644143,-0.4865116,0.47148782,0.41150305,-0.12364886,-0.3837079,0.32072318,-0.022468964,0.55944085,-0.6452794,0.29679397,-0.124723144],[0.32205322,0.8586511,-0.8641501,0.16287574,0.18229792,0.4021785,-0.042451933,0.47848225,-0.5249389,0.13250944,-0.4461431,-0.25520405,0.1984305]],"activation":"identity","dense_3_b":[[-0.07424013],[-0.058659244],[-0.08360579]]},{"dense_4_W":[[-0.8438062,-0.24870598,-1.0960536]],"dense_4_b":[[0.073657714]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022.json b/selfdrive/car/torque_data/lat_models/MAZDA_CX5_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/MAZDA CX-5 2022.json rename to selfdrive/car/torque_data/lat_models/MAZDA_CX5_2022.json diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021.json b/selfdrive/car/torque_data/lat_models/MAZDA_CX9 2021.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/MAZDA CX-9 2021.json rename to selfdrive/car/torque_data/lat_models/MAZDA_CX9 2021.json diff --git a/selfdrive/car/torque_data/lat_models/MAZDA CX-9.json b/selfdrive/car/torque_data/lat_models/MAZDA_CX9.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/MAZDA CX-9.json rename to selfdrive/car/torque_data/lat_models/MAZDA_CX9.json diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68273275AG'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68273275AG'.json deleted file mode 100755 index 376ff90932..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68273275AG'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.9210873],[1.1622182],[0.43444356],[0.05239421],[1.162601],[1.1617966],[1.1600338],[1.1373105],[1.1218978],[1.1002257],[1.0747715],[0.052226104],[0.052260432],[0.052283283],[0.052092496],[0.051803872],[0.051247757],[0.050530057]],"model_test_loss":0.013745146803557873,"input_size":18,"current_date_and_time":"2023-08-10_01-43-24","input_mean":[[23.540874],[0.039472643],[0.019381158],[0.010939346],[0.032198854],[0.03392217],[0.035938434],[0.04118405],[0.046537373],[0.049447913],[0.051183026],[0.010808573],[0.010828554],[0.010842155],[0.010789978],[0.01078458],[0.010702423],[0.010645217]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.3592632],[0.24013901],[0.02950762],[0.007981313],[0.16977344],[1.0341699],[0.067953564]],"dense_1_W":[[-0.29443944,-0.86964434,-0.0030668834,0.34641737,-0.052413613,0.25383303,0.39592203,-0.37595648,-0.09712996,-0.067028016,-0.15717228,-0.30866244,-0.31660882,0.03619487,0.36077827,0.14766766,-0.08112562,-0.16371004],[-1.0683546,-0.4225962,-0.0066022496,-0.4033901,0.46962708,-0.44821528,0.38007107,-0.35131562,-0.19155227,0.32398295,0.044747997,-0.17824192,0.5510669,-0.0595588,0.35617167,0.4413747,-0.034901265,0.04095095],[0.0008612147,0.3940898,-0.006288894,-0.55062485,0.5392667,0.33954364,-0.48541492,-0.16118298,-0.09376398,0.10986033,0.12394796,0.9228157,-0.45805627,0.11727515,-0.022528082,0.06427372,-0.0030711165,0.04155096],[1.0198417,-0.35909548,-0.006616111,-0.59779114,-0.31270605,-0.14032304,0.9551273,-0.2675044,-0.24046354,0.032812644,0.16535293,0.012905942,-0.11244921,0.6141845,0.098029315,0.584352,0.23467723,-0.16135265],[-0.0028723876,0.29212356,3.77251,-0.04027425,-0.7930384,-0.98414063,-1.0553377,-0.016249495,0.87524354,1.4566501,0.4455834,0.31893766,0.3175888,-0.23782718,0.70991355,-0.03134838,-0.38082367,-0.7664585],[0.23746029,-0.524643,-0.0032641755,0.016509473,0.14262381,-0.52993554,0.7516659,-0.27583307,-0.28979933,-0.025237296,-0.11929308,-0.61843383,-0.04413926,0.3603565,0.9432264,-0.51941097,-0.17327741,0.033388518],[0.022823358,0.3032578,0.0024921081,-0.1483726,0.3248898,0.11600146,-0.2852234,-0.16650069,0.113197386,0.11354485,0.004953061,0.29692334,0.16251172,-0.60039353,0.059377182,0.0968991,-0.17315012,0.034780342]],"activation":"σ"},{"dense_2_W":[[-0.10226482,-0.4129552,-0.011484651,-0.8094231,-0.007036115,0.068016745,0.30800965],[0.51679516,-0.0140688205,-0.85121125,-0.09242818,0.41688886,0.7517409,-0.64519745],[0.35164565,0.392633,-0.101708815,0.6600604,-0.51135594,-0.24759813,-0.7536511],[-0.46807855,0.22016473,0.8009246,-1.2497194,0.8632494,-1.2237775,0.2705352],[0.12294014,0.28189301,-0.82049996,0.42017826,0.31424674,0.5031236,-1.0273964],[0.031432822,-0.62932956,0.22953837,-0.49194145,0.15946166,-0.07545127,0.25037768],[-0.36138535,-1.1441826,0.8748997,0.30837125,1.1008774,-0.039432786,0.5913679],[0.6354077,0.27034265,-0.8441376,-0.3852919,-0.7068959,0.5080131,-0.106792346],[-0.1320543,-0.8137172,0.9680676,-1.2771759,0.39580464,-0.6290615,1.3455303],[-0.50728315,0.35654846,0.08924023,-0.60484344,0.574961,-1.1762985,-0.0043168655],[0.14633264,-0.041424304,-1.0337647,-0.3997866,-0.016652329,0.07367241,-0.07422297],[0.4978552,0.4680909,-0.8531208,-0.009683,0.09626235,0.60354567,-0.8143497],[-0.7302568,-0.7541932,1.0414218,-0.31683722,0.71962583,-0.09527239,0.5987053]],"activation":"σ","dense_2_b":[[-0.08878189],[0.012890921],[0.044211157],[-0.4465577],[-0.062322337],[-0.0074243415],[0.15457644],[-0.07897435],[-0.08090508],[-0.22858685],[-0.27673057],[-0.07622174],[0.058422644]]},{"dense_3_W":[[0.050709836,-0.03184132,0.44536084,0.092137754,0.3236647,0.18253805,-0.07791841,-0.20872086,0.09598713,-0.2740574,0.10335441,-0.28594363,-0.25284308],[-0.39783764,0.72701114,0.3897124,-0.78861535,0.6352359,0.42759028,-0.2990431,0.056067392,-1.2246326,0.31149596,0.4554911,0.13868588,-0.4529365],[0.027524881,-0.48940495,-0.44448495,0.46868488,-0.57126254,0.57925117,0.31945515,-0.66192514,0.5332039,0.21860516,0.000447623,-0.37591594,0.49015212]],"activation":"identity","dense_3_b":[[0.0158691],[0.023787307],[-0.030451657]]},{"dense_4_W":[[-0.11161881,-0.3257279,1.0980971]],"dense_4_b":[[-0.03284489]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68466110AB'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68466110AB'.json deleted file mode 100755 index cc62373968..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68466110AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.0463657],[0.9747688],[0.3453712],[0.03803554],[0.9690691],[0.97106147],[0.97251296],[0.9614686],[0.94826],[0.92959803],[0.9101179],[0.037928607],[0.037951168],[0.03796943],[0.03788738],[0.03772722],[0.03745093],[0.037048396]],"model_test_loss":0.017076648771762848,"input_size":18,"current_date_and_time":"2023-08-10_02-58-26","input_mean":[[27.871407],[-0.025981303],[-0.0066066827],[-0.005477946],[-0.021529026],[-0.021929484],[-0.022823982],[-0.023858318],[-0.025280826],[-0.029299965],[-0.032219402],[-0.005470874],[-0.0054753814],[-0.0054821577],[-0.0055401647],[-0.0056055295],[-0.0057070768],[-0.0058246236]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.4266238],[-0.3416357],[2.5780525],[-2.5398123],[-1.5365838],[-0.15346667],[0.017754281]],"dense_1_W":[[-1.0982449,0.20722441,0.013749752,0.07489929,0.41551197,0.004341639,0.0048132003,0.00025495235,-0.18475117,0.08220013,0.0560664,0.82137764,0.495301,-0.63355666,-0.47019786,-0.04666432,-0.25567988,0.04631287],[-0.012575525,1.013855,6.6538153,0.0006221404,-1.0208796,-0.513264,-1.0584702,0.4347041,0.50328493,0.99720603,-0.41704744,0.9781865,0.078827344,-0.22583015,0.3788141,0.114769615,-0.8264082,-0.4377368],[0.82146376,-1.1214737,-0.038538903,0.129783,0.16356055,0.04583769,0.09611903,-0.25096208,-0.45288768,0.033663888,0.2989499,-0.27392572,0.05673563,0.29652318,-0.17211635,0.37968886,-0.0377033,-0.17876798],[-0.78663635,-1.252811,-0.03569057,-0.024772601,0.1393824,-0.16137758,0.63462764,-0.56116915,-0.25827187,-0.035541687,0.32233778,-0.49389195,0.107298866,0.5767397,0.15331157,-0.009262639,0.056745403,-0.17108874],[1.075038,0.63599974,0.013103103,-0.13239852,0.2721682,0.215895,-0.43340504,-0.2561609,0.08369225,0.09600925,-0.031108124,0.9223862,0.037735846,-0.24475971,-0.11832876,-0.24068235,-0.2104002,0.018788245],[-0.012586371,0.8092677,-0.005002185,-0.0010346456,-0.19357827,0.4030301,-0.41376656,-0.014812962,-0.14178266,-0.15467277,0.16577497,0.46197078,0.28108403,-0.72031033,-0.2485265,0.044038273,0.20874186,-0.06851787],[-0.01091231,0.993412,0.026124477,0.3239028,0.502026,0.68568456,1.7555947,0.8855259,-1.2782414,-2.011024,-1.1780066,-0.7251421,0.3048075,0.79791856,0.25945005,-0.80709416,-0.24202144,0.24123403]],"activation":"σ"},{"dense_2_W":[[0.8615375,-0.37836078,0.059902865,-0.610202,0.60982454,-0.05805709,0.3699734],[0.11572612,0.48987415,0.2018818,-1.1636332,0.5043109,0.53963894,0.019587068],[-0.82412773,-0.5432425,0.86591834,1.4440024,-0.50299263,0.0073020295,0.33265102],[-0.937952,0.34060618,0.28250477,1.2533687,-0.24819559,-1.102934,0.4194565],[0.0850848,-1.4026527,0.18256377,1.2569317,-1.3412946,-0.51787454,0.60327196],[-0.49207494,0.006521548,-0.84601384,-0.063308366,-0.2913924,-0.5534405,-0.36416996],[-1.1227055,0.6364929,0.40246958,0.3539726,-0.71709025,-0.5450521,0.116008334],[-0.3193431,-0.12110501,0.44127515,0.29223323,-0.5647738,-0.5818968,0.104559764],[0.19634451,-0.11687351,-0.52581316,0.14469767,0.26439536,-0.25766855,-0.5510215],[-0.05923424,0.28980356,-0.14158152,0.43791518,-0.732061,-1.0311065,0.41942894],[0.7570111,0.53114414,-1.135714,-0.26154417,-0.21490821,0.23511015,-0.73162705],[-0.060524873,0.09525046,-0.9220807,-0.09318619,0.486466,0.85145307,-0.22442955],[-0.5580914,-0.055617023,1.4159099,0.7312611,-0.9474024,-0.42224932,0.1571235]],"activation":"σ","dense_2_b":[[-0.051363647],[-0.12564756],[0.057266533],[-0.20513932],[-0.5409964],[-0.26110366],[-0.17036414],[0.04884298],[-0.2544224],[-0.0654127],[-0.11066689],[0.043957688],[0.111824796]]},{"dense_3_W":[[0.4754135,-0.13027504,-0.70067513,-0.68032104,-0.2434314,-0.49364966,0.0809345,0.3409165,-0.35128537,0.5138682,0.24348976,0.12398042,0.07979309],[-0.3433468,0.24112704,-0.5154696,-0.14498284,-0.22987618,0.22425546,-0.03564995,-0.48462275,0.40817538,-0.0020781446,0.6011458,0.6723392,-0.47040144],[0.5232041,0.45503825,0.087453336,-0.20923337,-0.4118531,0.15931882,-0.49080586,-0.22813377,0.13799725,-0.5762673,0.56595653,0.68413365,-0.7339804]],"activation":"identity","dense_3_b":[[0.04150388],[0.051177654],[0.041261487]]},{"dense_4_W":[[0.5853262,0.47804958,0.9168704]],"dense_4_b":[[0.043468688]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469901AA'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469901AA'.json deleted file mode 100755 index 6e24c14c4d..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469901AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.33825],[1.1453629],[0.43486407],[0.046197876],[1.1367582],[1.1400605],[1.1420996],[1.1326395],[1.1184355],[1.1011796],[1.079299],[0.045960896],[0.046014525],[0.046063952],[0.046127878],[0.0460219],[0.045729626],[0.045291778]],"model_test_loss":0.021876206621527672,"input_size":18,"current_date_and_time":"2023-08-10_03-24-19","input_mean":[[27.181211],[-0.033823926],[0.008755515],[-0.0075790784],[-0.032792553],[-0.032709006],[-0.032333635],[-0.02890779],[-0.02326324],[-0.016518341],[-0.010042243],[-0.007586642],[-0.00755887],[-0.0075379773],[-0.007499133],[-0.0074144034],[-0.0072887978],[-0.007148881]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.046337597],[0.050293937],[1.8881503],[0.59185153],[0.8542854],[0.19480373],[1.5334643]],"dense_1_W":[[-0.008669442,-0.50197583,0.0013483413,0.07478634,-0.12987828,-0.42372242,0.451127,-0.21957916,-0.17928472,-0.0133529585,0.06471939,-0.61344665,-0.28108978,0.61214054,0.25012782,0.10078239,0.11161439,-0.16625455],[0.019537883,-0.25616175,0.0026798896,-0.47914556,-0.117883034,-0.5943702,0.47449878,0.02374437,-0.25907964,0.0004787899,0.041058734,-0.62058383,0.37889734,0.56780803,-0.12320269,0.24227172,0.05977054,-0.088733785],[0.9617319,0.5921454,0.08454962,-0.024177684,-0.33587864,0.7352508,-0.7387421,0.39873427,0.21945651,0.05807639,-0.2851063,0.16848388,-0.5095711,-0.648206,0.22489141,0.2630374,-0.10781773,0.05692585],[0.6508581,-0.034968324,-0.0046116984,0.042830404,0.2208985,-0.25876033,0.70590264,0.11468684,1.3392336,-0.462859,-0.19124633,-0.49964252,-0.112543315,0.23059364,0.22540659,0.8281614,-0.30613214,-0.41558707],[0.630478,0.72845036,-0.0040414827,-0.42815435,0.09451815,0.98280245,-0.5989212,0.11570024,0.012325331,-0.067932405,0.11440747,0.027836803,0.35311875,0.12638386,-0.23782413,0.35590366,-0.07542629,-0.12907898],[0.02959114,0.17071922,4.48706,-0.005770228,-1.3331827,-1.5406686,-1.4772613,-0.8343799,2.3675978,2.120532,0.66988176,0.90546036,0.2781295,-0.40613997,0.25572512,0.8060402,-0.9505193,-0.8492369],[0.9206642,-0.5364798,-0.08010512,0.04452516,0.0843251,-0.4182482,0.5212545,-0.20747036,-0.2660874,-0.06005273,0.2478061,-0.095565975,0.18786341,0.72273916,-0.19318765,0.028641535,-0.036184557,-0.10096181]],"activation":"σ"},{"dense_2_W":[[0.38142607,0.042492785,-0.77607405,-0.52826,-0.8402416,-0.63555807,0.26845828],[-0.36448377,0.013470403,-0.7751532,-0.62089664,-0.0025020323,-0.43518564,-0.032616902],[-0.51269734,-0.90651554,0.15344314,-0.97433233,0.13745055,0.95539695,-1.3348669],[-0.29381657,-0.72915894,0.1849723,-0.6422532,0.6542673,-0.23613134,-0.41772324],[0.98330545,0.1279324,0.07058928,-0.120830305,-0.6904588,0.43327442,-0.01615229],[-1.1281452,-0.7857186,0.7657339,-0.6405541,0.15110444,0.3140745,-0.77677655],[-0.10084952,-0.22716746,1.1716565,-0.091143146,1.0249162,1.0087454,-0.28616652],[-1.1938478,-0.12939769,-0.26710513,-0.8057877,0.28079078,0.6419189,-0.73595464],[-1.1646985,-0.43413186,0.16684091,-0.72566366,0.39882493,0.5024153,-0.07758079],[-1.0085496,-0.07076024,-0.20896135,-0.65417224,-0.2732086,-0.113864146,-0.6265197],[-1.1994962,-0.8906176,-0.33401784,-1.0209608,0.37494394,0.8777499,0.0017000877],[0.64241505,0.62737906,-0.6886972,-0.18807864,-0.07910444,0.48681334,-0.09631596],[0.8916427,0.6068368,-0.7540836,0.6216169,-0.3300996,-0.31663188,0.3107477]],"activation":"σ","dense_2_b":[[-0.13178545],[-0.15170422],[0.16972616],[0.02054858],[-0.06958599],[0.123835176],[0.06601367],[0.0011560497],[-0.0824041],[-0.1551787],[-0.07204721],[-0.0050074253],[-0.13309194]]},{"dense_3_W":[[-0.26774383,0.069543615,0.6138564,-0.19084257,-0.054911274,0.68343407,0.6239501,0.41537902,0.5271345,0.11967227,0.032000795,-0.057378754,-0.49043247],[-0.06432742,-0.7016147,0.10944263,-0.1354464,-0.13193382,-0.070864916,0.037493527,-0.88318646,0.12056807,0.35320503,-0.6730902,0.5864121,0.25374225],[-0.7003238,-0.21708901,0.26239115,0.7095383,-0.6740586,0.19532588,0.15621354,0.44259292,0.37482294,0.12022154,0.4868753,-0.46856374,-0.68130004]],"activation":"identity","dense_3_b":[[-0.056218784],[-0.079843864],[-0.01837998]]},{"dense_4_W":[[0.6685718,-0.15755904,1.0103254]],"dense_4_b":[[-0.027803186]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469904AA'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469904AA'.json deleted file mode 100755 index fba85d85ca..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68469904AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.154286],[0.76042634],[0.3701081],[0.034407996],[0.7532322],[0.755637],[0.7579886],[0.7569121],[0.7567644],[0.75660825],[0.75161266],[0.034349248],[0.034364954],[0.034366276],[0.034332108],[0.03430826],[0.034186568],[0.033984024]],"model_test_loss":0.010220293886959553,"input_size":18,"current_date_and_time":"2023-08-10_03-48-50","input_mean":[[26.29757],[0.21858484],[-0.00041749518],[0.015462894],[0.21635525],[0.2165749],[0.21686907],[0.21543358],[0.21598789],[0.21505341],[0.21361327],[0.015312114],[0.01533278],[0.015349211],[0.015250495],[0.015165519],[0.014907059],[0.014465246]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.5426987],[0.12417949],[-1.4781233],[-0.028249433],[0.20633578],[-0.13907257],[0.72390795]],"dense_1_W":[[-1.1175315,-0.07495566,0.02891214,0.19389996,-0.45027134,0.13735463,-0.6250549,0.85820234,0.59452385,0.042644564,-0.27779862,0.13595949,-0.09487241,-0.10740118,0.17391424,-0.38815653,-0.27959245,0.3287145],[-0.0005434315,0.7250965,-0.001302344,-0.052765388,0.10030851,0.33485708,-0.21132289,-0.115699075,-0.12958458,-0.18765004,0.22767502,0.3379646,0.17437504,-0.35456493,-0.18415342,0.1511127,-0.023203105,-0.03965679],[-1.095963,0.10147642,-0.028861295,-0.45387205,0.49530742,-0.11415999,0.055746414,-0.2760433,-0.46584845,-0.20907946,0.19582038,0.14730005,-0.041585524,0.4082932,-0.3926017,0.2602935,0.29690772,-0.18358155],[0.0038369219,0.37911403,-0.0045367144,-0.23510593,0.094250835,0.34022862,-0.2284937,-0.13612238,0.27017567,-0.33356893,0.14501272,0.4917901,0.03173992,-0.1809757,-0.032653864,-0.33173367,0.115388945,-0.28278348],[-0.003918218,-0.43321767,0.0073618796,0.5832146,0.45349523,0.29272223,0.3733469,0.47134906,-0.83762276,-0.85482854,0.09775691,0.017050214,-0.01622581,0.47676057,-0.03653979,-0.34529078,-0.30939806,0.26684877],[-0.017790653,0.697322,-6.3714147,0.46992886,0.8733624,0.17037292,0.6718011,0.47720847,-0.32684425,-1.1077062,-1.3093247,-0.6193358,-0.10829769,0.15212813,0.27934057,-0.50214195,-0.5461845,0.43900922],[0.51826936,0.12391658,0.051776137,0.072040915,-0.3065168,0.027357819,-0.37797117,-0.17238732,-0.353872,-0.31592342,0.29717565,0.38155913,-0.3906893,-0.14551696,0.22231571,-0.15257306,0.20485455,1.0147902]],"activation":"σ"},{"dense_2_W":[[0.32709605,1.1362737,-0.17482026,-0.046062417,-0.51949316,0.17334434,-0.2578324],[-0.15792392,-0.9065706,0.30352244,-0.48481166,0.3429801,-0.02744591,-0.19637136],[0.91549116,0.3893739,-0.13849072,0.090474464,-0.4911054,-0.309263,-0.51762164],[-0.4134321,-0.7770418,0.8557953,-0.3741374,0.751485,-0.051834386,-0.51904815],[-0.4399301,-0.61924434,0.6309824,-0.35251677,0.66121125,0.2404353,-0.23494475],[0.086413786,0.6363439,-0.41028103,1.0290276,0.047232375,-0.40705454,-0.4344609],[0.9350081,-1.4516156,0.7794276,-0.565611,-0.6901311,0.41864678,-1.1327723],[-0.8245831,-0.8406043,0.08613439,0.052566387,0.6732224,0.28659236,0.16209623],[-0.20109951,1.205864,0.6048377,0.7521136,0.44900057,0.3182956,-0.281427],[0.8864913,0.30494544,-0.53948045,0.63693535,-0.5898942,-0.17208202,0.16690974],[-0.5475406,-0.7371354,0.4504668,-0.5240461,0.34616926,0.32284823,0.44203338],[0.12659965,0.09303629,0.014360431,0.11488345,0.17780194,0.13185121,0.030691903],[-0.29399133,-1.1127974,0.42915276,-0.2730042,0.13696739,-0.2734059,-0.30105415]],"activation":"σ","dense_2_b":[[-0.095232666],[-0.12903397],[-0.16596866],[0.10246624],[-0.03857397],[-0.073855616],[-0.2992988],[0.2189761],[-0.1223435],[-0.1884392],[0.18001069],[-0.08254514],[-0.029937575]]},{"dense_3_W":[[0.26818132,-0.25044084,0.027241506,-0.19964801,0.56580776,0.22428977,-0.43430313,0.67310864,-0.6071206,-0.75302726,0.5696926,-0.25766462,0.02067551],[-0.5776643,0.3400569,-0.1890818,0.5839983,0.35982898,-0.75322586,0.5884296,0.4361948,-0.04064355,-0.82264584,0.77007246,-0.028092124,0.30400428],[-0.565468,-0.022219652,-0.61670506,0.17880899,0.33762756,0.25232822,-0.6182462,0.07745964,-0.14152253,0.07606692,0.43158156,0.40247133,-0.14412662]],"activation":"identity","dense_3_b":[[-0.02423033],[-0.05393112],[-0.025509434]]},{"dense_4_W":[[-0.25194114,-0.987808,-0.020282954]],"dense_4_b":[[0.045462962]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68522583AA'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68522583AA'.json deleted file mode 100755 index 372c112a42..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68522583AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.100081],[0.7303489],[0.40821353],[0.033808213],[0.72612214],[0.72782314],[0.7296681],[0.7202953],[0.7148411],[0.7080344],[0.7024381],[0.03380297],[0.033810258],[0.03380648],[0.033657998],[0.03346423],[0.033204034],[0.03290225]],"model_test_loss":0.027830945327878,"input_size":18,"current_date_and_time":"2023-08-10_04-40-02","input_mean":[[26.731352],[-0.01177522],[-0.004391138],[-0.011022535],[-0.008092633],[-0.008825226],[-0.0103097875],[-0.0098579945],[-0.0067649335],[-0.0050272304],[-0.0049507814],[-0.0109223435],[-0.010953117],[-0.010988373],[-0.010941988],[-0.010961072],[-0.010930893],[-0.010915838]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.1745371],[0.9457931],[-1.2435032],[-1.0458435],[-0.1081323],[0.035753693],[-0.02165228]],"dense_1_W":[[0.16186859,-0.09768836,-4.7846518,-0.15079269,2.5244157,1.6883308,1.5134919,-0.89384186,-3.5332396,-0.6423725,-0.296458,-1.1548986,0.15355624,0.5327785,0.6254284,-0.37240118,-0.04440246,0.32268947],[2.0046134,0.53838843,3.4404945,-0.1141708,-1.1936749,-0.76779556,-0.97976905,-0.29515216,0.7165664,0.17453694,1.4159857,0.19968158,-0.324134,0.020139258,0.36342832,0.07758869,-0.21961124,-0.24075823],[-0.8806507,-0.36592105,-0.1603686,0.019333879,0.7319277,-0.018883258,-0.007104287,-0.4886063,-0.5159273,-0.25874293,0.71235996,-0.08952812,0.39945298,0.44347215,-0.71560186,-0.11375067,0.1372514,0.08856255],[-0.8596358,0.4530633,0.15744632,0.6229328,-0.19767399,0.50342345,-0.48811507,-0.012905224,0.035012916,0.10218181,-0.18411104,-0.14965416,0.28510785,-0.20222001,-0.84866565,-0.21149859,0.06309471,0.2692289],[0.00787326,0.17291375,0.02989127,0.33595058,0.097436145,-0.8344158,0.12299558,-0.056537054,0.063804835,0.102107935,-0.1609201,-0.4358222,0.17648806,-0.15191726,0.27956975,-0.26774335,0.21951361,0.14714526],[0.0013040424,0.0146544995,-0.034251958,-0.017003387,0.48911396,0.7778323,-0.6013927,-0.24220061,-0.1423357,-0.07045295,0.32420683,0.2770749,0.17541865,-0.6925609,0.13146631,-0.09090916,0.21767132,-0.08619563],[-0.0013283036,-0.76572543,-0.021439318,-0.07231562,0.33608717,-0.9519956,0.80349934,0.13154784,0.053906552,-0.0063607194,-0.05806696,-0.48233724,0.030579537,0.24628532,0.1421058,-0.049592685,0.37368706,-0.28366596]],"activation":"σ"},{"dense_2_W":[[-0.11426035,-0.4633911,0.5931024,-0.13167584,0.3877006,-0.8240802,0.4996165],[-0.6506094,-0.043036364,-0.63225603,0.09525037,-0.0013785976,0.30910346,0.09042436],[-0.111270815,-0.037402347,0.42292774,-0.5026528,-0.06920168,-0.5414584,-0.14867242],[0.62404346,-0.21483791,0.5609062,-0.58235985,0.1793472,-0.63125086,0.14775465],[0.39018965,0.30572656,0.19105321,0.120262615,-0.39587906,-0.3727809,0.19191758],[-0.43854353,-0.4174901,0.2537852,0.023853898,-0.6724934,-0.03747815,-0.44509795],[-0.59352624,0.107269265,-0.10295583,-0.05914811,-0.46114132,0.91326886,-0.28330517],[-0.6905027,-0.06767795,-0.20643814,0.2871444,-0.7398764,0.40445343,-0.16377075],[-0.19539294,-0.33604875,0.30735624,-0.3262871,0.6336829,-0.9044841,0.7461942],[-0.076478384,0.0081171375,-0.45632637,0.25862965,-0.033632897,0.95767784,-0.9119975],[-0.6780045,-0.5742568,-0.19451007,0.9155922,-0.2558469,0.7328771,-0.9628025],[0.10786977,-0.3863365,0.52240795,-0.4421973,0.7063569,-0.8783838,0.16820244],[0.043110512,-0.36765873,0.07240629,0.37819213,-0.38525218,0.62788934,-0.6130581]],"activation":"σ","dense_2_b":[[-0.1541479],[-0.0021927624],[-0.07528638],[-0.08054171],[-0.072549514],[-0.034027867],[0.12834808],[-0.10132512],[-0.065889865],[0.047784895],[0.03540158],[-0.04747654],[-0.065598845]]},{"dense_3_W":[[0.71479976,-0.3480489,0.110358596,0.32083592,0.24253292,-0.28188017,-0.5622667,0.011309102,0.6315449,-0.43116945,-0.5399975,0.29667172,-0.4142423],[0.19218774,-0.09594727,-0.10361748,0.10555191,-0.09383906,-0.56986606,0.03129942,-0.07917779,0.33813822,-0.41512942,-0.36388016,0.6792136,-0.223361],[0.34802097,0.07021865,-0.36761415,-0.12873147,-0.05381047,0.11233469,0.49716663,0.4738285,0.29140377,-0.2302745,-0.18917024,-0.5822452,-0.35502756]],"activation":"identity","dense_3_b":[[0.039899256],[0.044181313],[-0.031747688]]},{"dense_4_W":[[-1.0547942,-0.97846806,0.263912]],"dense_4_b":[[-0.039440837]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552788AA'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552788AA'.json deleted file mode 100755 index 6a3c858682..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552788AA'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.868239],[0.75070703],[0.34816617],[0.034229066],[0.74701726],[0.74780625],[0.74831426],[0.746065],[0.74128854],[0.7355061],[0.72421074],[0.03417469],[0.03418928],[0.034195792],[0.03400789],[0.033847637],[0.033606727],[0.03322697]],"model_test_loss":0.008458372205495834,"input_size":18,"current_date_and_time":"2023-08-10_05-30-40","input_mean":[[29.99863],[0.20272265],[-0.025704622],[0.008401776],[0.21002854],[0.20785059],[0.205384],[0.19537038],[0.18984987],[0.18505052],[0.1809265],[0.008209475],[0.008253665],[0.008296503],[0.008406267],[0.008323119],[0.0081936885],[0.007896792]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.2260764],[0.6165127],[0.2977843],[-0.14787921],[-0.9168285],[-0.12295077],[-0.09766494]],"dense_1_W":[[1.065022,-0.05936225,0.0022720068,0.08219392,-0.8567543,0.111217014,0.54122514,-0.2706693,-0.15036803,0.25742987,-0.08767648,-0.34830713,-0.027404225,-0.4185975,0.35305434,0.3575998,0.14072141,0.2625152],[0.15924072,0.593216,0.00052627287,-0.1057818,-0.36246762,0.28154594,-0.3878058,0.041176394,0.20087384,-0.038753517,0.042374074,0.48755527,0.036274087,-0.6767191,0.12023098,0.19956696,-0.13944839,0.03492848],[0.26169267,-0.59497786,-0.001051651,-0.324159,0.33932126,0.09371173,0.11345156,-0.016827654,-0.40026185,-0.100701384,0.15730438,-0.13552007,-0.1270308,0.4102569,0.28058168,0.12271481,-0.24961802,0.05837292],[-0.033944216,-0.29202187,0.00077848736,-0.114458814,-0.5727945,0.060648486,0.61588925,-0.11821368,0.11814919,-0.052538417,-0.13625127,-0.7172482,0.51400244,0.333069,-0.10085215,0.11445696,0.17483449,-0.20612186],[0.87344337,0.26699117,0.0022017667,0.28822276,0.37948754,-0.05094396,-0.41495946,0.40114012,-0.0048360685,-0.0020655768,-0.11235444,0.6665909,0.047259506,-0.11638346,-0.71936154,-0.22467732,-0.19744919,-0.10152469],[-0.107145384,-1.0915395,-6.141535,0.70560014,0.4831924,1.1330324,0.95880973,-0.5413501,-0.5439982,-0.9502495,0.21910736,-0.7986927,-0.226854,0.97576135,0.2663551,-0.53631556,-0.1967203,0.27619123],[0.014165441,0.4128995,-0.0009244823,0.15947568,0.20772904,-0.27174422,0.23572557,-0.68967,0.117952354,-0.32811052,-0.07497509,-0.07766617,-0.1715381,0.10645008,0.13909376,0.09034561,-0.076432556,-0.0002952288]],"activation":"σ"},{"dense_2_W":[[-0.11342565,-0.2809018,-0.05111502,0.22586785,-0.046716776,-0.035705794,0.6600342],[-0.18827938,0.9972883,-0.072743565,-0.61405253,0.7193729,-0.41576892,-0.104350396],[-0.3556824,0.66933596,-0.10034228,-0.36175656,0.80487776,-0.048805095,-0.6517391],[-0.0029814816,0.037780087,0.4565041,0.57524407,-0.61115396,0.00441405,-0.3738763],[-0.2594761,0.31262296,-0.09214641,-0.002778288,-0.00446783,0.19304605,0.54612243],[-0.28130808,-0.3503751,0.5588698,0.616398,-0.49632117,-0.41926727,0.7246912],[0.19776937,-0.29551616,-0.80695623,-1.1329869,0.094373874,0.6795281,-0.74388427],[-0.8445154,0.94859,-0.08256833,-0.4775403,0.04127346,0.10181072,-0.6063285],[-0.85923886,0.39777043,-0.36597455,-0.06115376,-0.044814575,-0.2704239,-0.4685487],[-1.1660684,0.25082108,-0.7324697,0.2520158,-1.2055342,-1.5113032,-0.13736865],[0.4879582,-0.67548096,0.3822733,-0.05974599,-0.4401489,0.06402922,-0.13399549],[-0.41230774,-0.33770072,0.6218817,0.5027607,-0.201837,-0.21050662,0.1802105],[-0.17762303,0.13510232,0.5571139,0.447668,-0.12594385,-0.07661345,0.27156433]],"activation":"σ","dense_2_b":[[-0.036336433],[0.23029093],[0.055804957],[-0.042286173],[-0.009081475],[0.06398727],[-0.23855366],[-0.03628939],[-0.059604287],[0.011632554],[0.008110043],[-0.00869093],[-0.060943495]]},{"dense_3_W":[[-0.35496664,0.23448576,0.5805028,-0.4621804,-0.5448057,-0.60412884,-0.11938377,0.13103668,0.5007172,0.321409,0.34096,-0.40516585,-0.017715745],[0.36484855,0.40388605,0.44538534,-0.056106996,-0.292742,0.19839688,0.2952001,-0.43382752,0.5743617,-0.051075302,-0.21471448,0.14332166,0.2699585],[-0.2499691,0.68792695,0.57182634,0.20412138,0.10965183,-0.7152176,0.39847228,0.60519606,-0.0041895057,0.82069314,-0.5085393,-0.22828765,-0.30936882]],"activation":"identity","dense_3_b":[[-0.014063893],[-0.06281853],[-0.02118316]]},{"dense_4_W":[[0.7967157,0.21090265,1.0282162]],"dense_4_b":[[-0.01977677]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552791AB'.json b/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552791AB'.json deleted file mode 100755 index 97d661e070..0000000000 --- a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN b'68552791AB'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.327477],[0.83636034],[0.35854557],[0.03027954],[0.8322574],[0.8326431],[0.8336623],[0.8205453],[0.8127496],[0.8029663],[0.7927199],[0.030091072],[0.030136604],[0.030175311],[0.030065328],[0.02983974],[0.029646473],[0.029447762]],"model_test_loss":0.014091002754867077,"input_size":18,"current_date_and_time":"2023-08-10_06-46-47","input_mean":[[30.319626],[-0.08276231],[0.005369592],[0.004473744],[-0.08501025],[-0.084354036],[-0.08372337],[-0.082539454],[-0.081338175],[-0.07844728],[-0.074738294],[0.0042737313],[0.0043124184],[0.0043546893],[0.004361203],[0.0043273983],[0.0043060128],[0.004311133]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.35763365],[-1.3521506],[-0.016218545],[-0.059472244],[-0.6437557],[-1.6056265],[0.12085991]],"dense_1_W":[[0.87513417,-0.49436525,0.001526756,0.007689951,0.105178826,-0.7741091,0.389623,0.30006444,-0.030422192,0.10987545,-0.14698596,0.18236087,-0.29306155,0.38676205,-0.33443922,0.039674185,0.33462492,0.22763555],[-0.36546978,-0.40689582,2.668961e-5,0.02264227,0.05264314,-0.024173336,0.4129403,-0.48889917,-0.012633747,-0.10086103,-0.20651652,-0.32730335,-0.29228786,0.3802635,0.3812668,0.4096499,-0.3554582,-0.11867983],[-0.0013656212,-0.48252577,-0.0009152643,0.2006504,0.14096452,-0.6883657,0.5257372,0.07914371,-0.047559284,-0.19422947,0.058318842,-0.44962868,0.28549084,0.012210312,-0.064143956,-0.0011885081,-0.015983405,0.013072292],[-0.0026489464,0.5069076,1.9415842,-0.15803127,-0.43643364,-0.22442625,-1.1007931,0.72446126,0.6154824,0.30189446,0.05599185,0.30916336,-0.42455056,-0.12520063,0.21027873,-0.04347085,0.32625684,-0.19425716],[0.9294821,0.54150075,-0.0014356759,0.098655105,0.17580858,0.3025255,-0.4274019,0.063312046,-0.056220684,-0.19399443,0.15516913,0.15510176,-0.17118718,-0.12277757,-0.15992972,0.1450927,-0.30511072,-0.21360834],[-0.38354275,0.5149199,0.00057220226,-0.19913933,0.113392256,0.16671515,-0.8061363,0.12808692,0.49387446,-0.045991942,0.21927999,0.46965662,-0.16261269,0.10389701,-0.14170384,-0.65069014,0.22400732,0.25261372],[-0.002354059,-0.7396432,0.0020271204,0.45820466,-0.25027558,-0.94205016,0.6306626,0.48574498,-0.2435183,-0.0036713302,-0.101162255,-0.15816127,0.22204119,0.070377395,-0.33187887,0.02354076,0.015245039,0.21813555]],"activation":"σ"},{"dense_2_W":[[-0.39639628,0.133772,-0.45599017,-0.12503287,0.6173994,-0.1820395,-0.10319031],[0.52661186,0.6336824,0.38281307,-0.27256545,-0.11690951,-0.31991315,0.35685524],[-0.3293337,-0.0649368,-0.71211916,-0.01983682,-0.04604264,0.21905379,0.22640918],[-0.13469312,-0.3821376,0.38459212,-0.9789118,-0.59137386,-0.69679177,-0.46103966],[-0.3486451,-0.30294892,0.20108142,0.033686325,0.20845367,-0.15991163,0.16748387],[-0.5856937,-0.43619728,0.027885517,0.10118421,0.29912174,0.16026014,-0.145594],[0.5430804,0.85552984,0.428548,-0.4006437,-0.4890019,-0.48459867,0.3640567],[0.05403504,0.021867719,0.0033385737,-0.40292013,0.5227002,-0.3627125,-0.039094802],[-0.40562767,1.3550378,0.45764822,-0.619266,-1.8762536,-0.93922824,0.09558092],[-0.36202994,-0.6913235,-0.7093955,0.21246669,0.16837499,0.5995575,0.14070001],[0.36312523,0.43244222,0.028741337,0.028756998,-0.41653222,-0.8163697,0.50980633],[-0.33022994,0.76520115,0.5691923,-0.50416476,-0.23335694,-0.47498608,0.39545852],[-0.1516905,-0.15376274,-0.5148544,0.33134565,-0.1089893,0.73183095,-0.6926165]],"activation":"σ","dense_2_b":[[0.07102355],[-0.12229542],[0.019641167],[-0.29842442],[0.010732347],[-0.22115242],[-0.14720376],[-0.03818797],[-0.65264404],[-0.054308396],[-0.0794121],[-0.37990314],[-0.015795233]]},{"dense_3_W":[[-0.17495315,0.6230324,-0.2510061,0.2996151,0.20122245,0.16665521,-0.5264948,-0.12510355,0.58361983,-0.035939705,0.39780724,-0.49274892,-0.13300937],[0.19338629,-0.14241812,0.38995105,-0.24322313,0.103984654,0.67614037,-0.59531045,-0.3055774,0.2720826,0.49907777,-0.348274,-0.4995533,0.62145895],[-0.4343396,0.46093857,-0.6372687,-0.59232146,-0.37132394,0.42294338,0.64938694,-0.38425207,0.43624443,0.01882502,0.60109246,0.43596882,-0.4406191]],"activation":"identity","dense_3_b":[[-0.04878774],[0.05141081],[-0.054991424]]},{"dense_4_W":[[-0.57082623,1.0047814,-0.8701593]],"dense_4_b":[[0.05418028]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN.json b/selfdrive/car/torque_data/lat_models/RAM_1500_5TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/RAM 1500 5TH GEN.json rename to selfdrive/car/torque_data/lat_models/RAM_1500_5TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/RAM HD 5TH GEN.json b/selfdrive/car/torque_data/lat_models/RAM_HD_5TH_GEN.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/RAM HD 5TH GEN.json rename to selfdrive/car/torque_data/lat_models/RAM_HD_5TH_GEN.json diff --git a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820527T6070405'.json b/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820527T6070405'.json deleted file mode 100755 index 09703241a2..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820527T6070405'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.822513],[0.7748963],[0.45073962],[0.028469948],[0.7594248],[0.7647172],[0.7702192],[0.76471704],[0.7589174],[0.7535919],[0.7483726],[0.02835351],[0.028382754],[0.02841451],[0.028416976],[0.028403616],[0.02836127],[0.028289525]],"model_test_loss":0.005644185468554497,"input_size":18,"current_date_and_time":"2023-08-10_09-20-08","input_mean":[[21.586409],[-0.0068980567],[-0.009099182],[-0.012765147],[-0.003074515],[-0.0043314965],[-0.0054138857],[-0.00872431],[-0.008043755],[-0.007268204],[-0.008552191],[-0.012878481],[-0.012848849],[-0.012813383],[-0.012694143],[-0.012824441],[-0.012981006],[-0.013215528]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.559899],[0.061946217],[-1.1318369],[-0.15356188],[-0.11130223],[-1.6501099],[0.72932065]],"dense_1_W":[[1.2257729,-0.21475899,-0.21481141,-0.06141821,-0.32331187,0.34948754,-0.45195353,-0.7936406,-0.2963517,0.075721286,0.16471535,0.3187927,0.026701737,-0.12669133,-0.19016542,-0.21420473,-0.03571252,0.24129197],[-0.0037353956,1.1463906,-0.032696437,0.08411021,-0.45902684,0.47184968,-0.049507096,0.48809394,0.6835621,-0.15164956,-0.2564982,-0.13430756,-0.05483595,-0.10893071,0.14104505,-0.15664752,0.14854911,-0.14124799],[-0.5031497,0.5740853,0.13468973,-0.07342075,0.22242497,0.5158128,-0.49981844,0.13897888,0.05672014,0.012715707,0.039177578,0.15471649,-0.13522737,0.18366553,-0.012791789,-0.20473395,0.17170367,-0.028233869],[-0.0030404613,-0.23232347,-0.051857546,-0.08527703,0.5234089,-1.2333686,0.76485693,-0.14326906,0.036368743,0.053107988,-0.030047482,-0.16562696,0.020687701,0.39415163,0.3789338,-0.36305478,0.031212157,0.050091427],[-0.00634946,0.2520326,-2.9768014,0.45517653,-0.44722444,-0.4035937,0.13028944,-0.25888947,-0.60737526,0.18608572,0.7329467,-0.059370834,0.17232452,-0.3012327,-0.63019043,0.29433328,0.35139483,-0.2806337],[-0.72473496,-0.41749117,-0.15656829,0.24190299,-0.14515589,-0.86861235,0.59240955,-0.26769835,-0.025524082,-0.033400673,-0.0374126,-0.012645718,-0.2529195,0.034257527,-0.11211495,-0.07982842,0.20105368,-0.08527751],[1.3300412,0.21610664,0.21324499,-0.047655277,0.30579573,-0.16403562,0.3423395,0.5994678,0.36008987,-0.104190245,-0.12160565,-0.28337744,-0.3201555,0.46343824,0.2363151,0.3774341,-0.27325517,-0.117115274]],"activation":"σ"},{"dense_2_W":[[0.89337134,0.06212176,0.69424486,-1.1258126,-0.41406798,-0.03324763,-0.8690317],[0.45488375,0.9383094,0.7518038,-0.23470305,-0.3165762,-1.0129137,-0.03375848],[-0.31297848,-0.49257454,-0.9567864,0.8079615,0.031627808,0.47916612,0.3070335],[0.16672489,-0.57691675,0.05825881,0.7295758,-0.48249677,0.8452979,-0.0969158],[-0.78628397,0.23688492,1.0961475,-0.21738441,-0.89421016,-0.75636774,-0.74580187],[-0.77340865,-0.19145031,0.8292296,0.08286966,-1.4438053,-0.20321132,-1.5541686],[1.4181628,0.6372049,1.5007821,-0.7996564,-0.8494127,-0.7805535,0.40175954],[-0.5131002,-0.28726596,-0.7685454,0.82989246,-0.3419074,0.9553502,0.20237355],[-0.028016198,0.6447288,0.70404804,-0.9766476,-0.08476289,-1.1437272,-0.59247833],[-0.04841889,-0.17168015,-1.1055567,0.8258706,-0.11265719,0.14096239,0.44926792],[-0.7357998,-0.46887338,-0.5601688,0.18314798,-0.3938517,0.6898303,0.30288145],[-0.91847914,-0.9485166,-0.36430508,0.18779275,0.10875428,0.7242329,0.20822012],[0.9209807,-0.09816239,0.44547236,-1.0485634,-0.72605056,0.12374904,-0.86046124]],"activation":"σ","dense_2_b":[[-0.13824841],[-0.037492033],[0.009199112],[-0.032276437],[-0.19626792],[-0.35359505],[0.104143284],[0.13742983],[-0.02941952],[-0.082949385],[-0.0472394],[-0.13388354],[-0.030517787]]},{"dense_3_W":[[-0.50135684,-0.6265797,0.37889096,0.23949896,-0.28617254,-0.80253077,-0.78707784,0.76118404,-0.6785741,0.6882018,-0.12380857,0.76802224,0.35342324],[-0.65878934,-0.25308114,0.5803435,0.40448022,-0.5880374,-0.10790633,-0.61491644,0.7250317,-0.50604415,-0.16505781,0.6877505,0.31448555,-0.26105368],[-0.30674505,0.52787536,-0.73549473,0.4655279,0.70805156,0.37356392,-0.22046967,-0.53852963,0.295031,-0.6098088,0.40994385,-0.40091082,0.61514527]],"activation":"identity","dense_3_b":[[0.037118178],[0.025729012],[-0.0008306772]]},{"dense_4_W":[[-0.45146888,-0.6571699,0.3420233]],"dense_4_b":[[-0.017946098]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G500'.json b/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G500'.json deleted file mode 100755 index 040727ee92..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G500'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.170632],[0.5570021],[0.32616535],[0.036937848],[0.5544301],[0.55469906],[0.55466586],[0.54358166],[0.53542227],[0.5261058],[0.52150166],[0.036922906],[0.036903005],[0.036881007],[0.036733527],[0.03662628],[0.0365955],[0.036601096]],"model_test_loss":0.011051010340452194,"input_size":18,"current_date_and_time":"2023-08-10_09-45-15","input_mean":[[21.523685],[0.005822485],[0.017957574],[-0.0105598625],[0.0046025654],[0.006011144],[0.0077467156],[0.01335771],[0.019210018],[0.024844872],[0.029322863],[-0.010329333],[-0.010309703],[-0.010285427],[-0.010262218],[-0.010182764],[-0.010136091],[-0.01018172]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.8376012],[0.79891944],[0.27328137],[-0.049832694],[0.1671762],[0.77761924],[0.080337375]],"dense_1_W":[[0.061794475,0.615098,-0.45199832,-0.89162534,0.14803112,-0.3359411,1.216409,-0.30902275,-0.46318957,0.15326177,0.5617341,-0.79835445,-0.41347325,-0.11659805,-0.5467362,-0.07835621,-0.23650429,0.081196256],[0.6269029,0.6299682,0.00862801,-0.28406104,-0.40516195,0.34416673,-0.05962201,0.12889835,-0.118009314,-0.006291829,-0.015252909,0.4089935,-0.14335842,-0.44551474,0.32767174,-0.07098034,0.08289599,-0.05129482],[2.873063,-0.39785758,-0.06460063,0.5302846,-0.54400563,-0.32484847,-0.74205005,0.15385602,0.2992983,-0.14630033,-0.20480666,0.5095823,0.26476872,-0.21809368,-0.38910902,-0.36676934,0.13174173,0.21983561],[0.061674196,0.40320727,-0.005555039,-0.012705039,-0.44866937,0.76068926,-0.53796315,-0.019318009,-0.011975164,0.49870455,-0.34061676,0.10459906,-0.10904486,-0.43353584,-0.16262761,0.19058083,0.45760906,-0.37183845],[0.061266888,0.49422592,-2.2183287,-0.2156109,-0.4867127,-0.22925144,0.71946245,-0.42894575,-0.5862933,-0.4373623,1.1160414,0.12841341,-0.36759555,0.023551682,0.07593063,0.50553346,0.03556044,-0.25252578],[0.74545926,-0.32704693,-0.008650265,0.02720982,-0.01538259,-0.82613665,0.5189707,0.14880055,0.040636804,0.12673292,-0.19592556,-0.262724,-0.07316436,0.3629183,0.25224432,-0.09442609,0.19599767,-0.1895605],[0.008984444,-0.8195131,-0.0010790422,0.45667002,0.27273402,-0.70226806,0.18335287,0.106715776,-0.11851017,0.8999131,-0.59194285,-0.27304903,-0.5033789,0.045519818,-0.23001073,0.25903532,0.51413286,-0.51565295]],"activation":"σ"},{"dense_2_W":[[-0.17816369,-0.4823508,-0.19070831,0.3857896,-0.5818765,-0.5350052,-0.750577],[-0.04763508,-0.32846496,-0.28990135,-0.5891694,-0.40825295,0.6042029,0.80569786],[-0.31981805,-0.048176482,-0.6725098,-0.0116866045,-0.7275763,-0.6111508,-0.5524373],[0.8248028,-3.5739028,0.45623106,-1.4498163,0.16980822,-0.20465934,1.124565],[-0.43001968,0.0030000166,-0.078488536,0.76254296,-0.45105755,-0.65158,0.25315326],[0.28314695,-0.2640387,-0.010856731,0.6712196,-0.42694327,-0.7123847,-0.51776206],[-0.08497496,-0.2769552,0.3038657,-1.5984288,-0.94830346,0.76130813,-0.5299745],[-0.13139525,-0.14840417,0.13429053,-0.9094941,0.006232065,-0.209775,0.01644083],[-0.27333236,0.36955395,0.06687941,0.8257492,-0.4901239,-0.8291871,-0.66357756],[-0.25540715,-0.4607236,-0.46596804,-0.80555916,0.07256802,0.75021,0.38117334],[-0.47401762,-0.25782427,-0.48962656,-0.95336634,0.078216136,0.7174792,-0.33049294],[0.53245556,-3.517823,-0.40500528,-1.7386801,2.6048553,-1.0151122,0.45161602],[-0.25264537,-0.55914116,-0.60352135,-0.4744699,0.39310023,0.123256855,0.5423338]],"activation":"σ","dense_2_b":[[0.02130018],[0.03923013],[0.0066096364],[-0.10651471],[-0.02452014],[-0.026465867],[-0.19940089],[-0.33655235],[-0.008171532],[0.14014752],[-0.24019146],[-0.028391115],[-0.08230956]]},{"dense_3_W":[[-0.69569725,0.45874256,-0.28139538,-0.15990418,0.33506617,-0.048326474,0.42024234,0.12925243,-0.30243614,0.646346,-0.046070546,0.755795,-0.38833755],[0.27728352,-0.4111872,0.5240284,-0.023659706,0.40603057,0.42206782,0.19779211,0.20356862,0.623484,-0.61507636,-0.103538364,-0.3267671,-0.52325946],[-0.10045345,0.4899018,-0.33766255,0.53569114,-0.43111655,-0.3958533,0.6952763,0.29030153,-0.5106717,0.21320766,0.12684761,-0.031848744,-0.15174294]],"activation":"identity","dense_3_b":[[-0.1256119],[0.056057606],[-0.06149789]]},{"dense_4_W":[[-0.4201209,0.91140276,-0.7814627]],"dense_4_b":[[0.059609402]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G600'.json b/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G600'.json deleted file mode 100755 index f5a288fa5c..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567T600G600'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.978942],[0.6101572],[0.41588354],[0.03231331],[0.60168684],[0.6050097],[0.60834473],[0.58961505],[0.57773924],[0.56671244],[0.5566466],[0.032140717],[0.032189563],[0.032246154],[0.032141175],[0.0321322],[0.032021564],[0.031848647]],"model_test_loss":0.011636423878371716,"input_size":18,"current_date_and_time":"2023-08-10_10-11-28","input_mean":[[19.614794],[-0.106306285],[0.01432459],[-0.024576934],[-0.10741898],[-0.106938824],[-0.106123485],[-0.099019445],[-0.093359515],[-0.09050246],[-0.08906652],[-0.024685377],[-0.02465698],[-0.024623092],[-0.024553658],[-0.024545813],[-0.02454542],[-0.02470256]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.69355416],[2.4732628],[-1.3702826],[-0.11549802],[-3.2115526],[-0.4695894],[1.7158915]],"dense_1_W":[[-0.09712236,0.70359236,0.029870417,-0.32686847,0.41420302,1.2504632,-0.16431941,1.2449944,0.8515324,0.1591466,-0.47704843,0.42924815,-0.3310643,-0.32485127,0.4103194,0.14313804,0.27483824,-0.3073054],[1.9112779,-2.012766,1.1709712,-0.12909168,0.92364335,1.5146329,-1.5916656,0.3833729,0.68214667,0.8704969,-0.7785849,0.20670438,-0.0054348283,-0.6571034,0.59524465,0.25777373,-0.13047084,-0.13789715],[-0.35545897,0.74289757,0.0010395766,-0.4791203,-0.17787026,0.69020367,-0.2601107,0.35769174,0.03863855,-0.17375207,0.06826012,0.4671819,0.2501633,-0.30800718,-0.009430912,-0.123984225,-0.17020024,0.27680448],[-0.012191877,-0.46145502,3.9199607,0.20028035,0.6080922,1.1058863,-1.2070769,1.5072201,0.40595236,0.57759535,-1.5408669,0.43732843,-0.37236336,-0.17954569,-0.64967644,-0.065201126,0.5412813,-0.12528999],[-2.0663908,-1.4909488,1.3023357,-0.53967714,0.24725075,1.0423123,-0.69051623,0.5551958,0.6623838,0.41527644,-0.6491754,0.6272475,-0.13575684,-0.4233404,-0.0887856,0.60994846,0.2752093,-0.32854816],[-0.28226903,-1.5632701,0.038757235,-0.01621774,1.8377037,-0.7989218,0.74388874,2.3336496,0.76146716,0.1356443,-0.5690615,-0.30151263,-0.21605678,0.47128358,0.29254648,0.062264904,0.07035633,-0.18515895],[0.56221074,1.1516801,0.0010512201,-0.8426568,-1.0685285,1.9994211,-0.8278666,0.5958917,0.074260615,-0.4739713,0.17006992,0.6652615,0.05565689,-0.0064310133,-0.0893498,-0.17889997,0.13203734,0.14932431]],"activation":"σ"},{"dense_2_W":[[0.50028837,-1.064031,0.90041625,0.47736132,0.90677744,-0.90660274,0.13473313],[0.5786526,-0.17570329,1.1356779,-0.316433,-0.18528749,0.074578024,0.07604858],[-0.5514635,0.12420603,-0.9303746,0.07806514,0.043209217,0.44727743,-0.3354667],[-0.97645247,-0.8832375,0.33142787,-0.8761601,0.562086,0.28258607,-0.7472652],[-0.012420426,0.10160729,0.9597554,-0.54730177,0.92053396,-0.76612854,0.1645351],[-0.05629443,-0.6274549,-0.5702288,-0.47625864,0.007329011,-0.00937992,-0.27663508],[-0.39911163,-0.47183767,-0.26182827,-0.5910186,0.24520285,0.8801795,-0.7366388],[1.183774,0.38708115,0.95070434,-0.27969792,-0.647032,-0.06648758,0.63079244],[-0.92506593,-0.43120384,-1.1437249,0.3507138,0.048965972,0.2929897,0.023275621],[0.065495975,-0.7477936,-0.49741834,-0.43279028,-0.4596529,0.5749685,0.10943722],[-0.26667404,0.1566403,-0.56995285,0.18439355,0.006458198,0.0508498,-0.6114961],[0.07948333,0.6847074,-0.94002885,0.18541375,-0.5421211,0.40665948,-0.54692215],[-0.45402494,0.73848003,-0.42449367,1.1125244,1.3159411,-0.5954729,-0.3588103]],"activation":"σ","dense_2_b":[[-0.6029877],[-0.059801936],[0.04953782],[0.036911793],[-0.211757],[0.055112183],[0.07609173],[-0.14383955],[-0.064524055],[-0.18153428],[-0.24345446],[-0.07112296],[-0.13606189]]},{"dense_3_W":[[0.014554647,0.094213516,-0.67582,-0.6185381,0.2408976,-0.10117373,-0.69420695,0.073527485,-0.32116425,0.22428901,-0.08845355,-0.14691015,0.21477464],[-0.8124889,-0.4184272,0.58543867,0.62858254,-0.21226135,0.3507662,0.030289248,-0.5906286,0.029745838,0.5918081,0.020885047,0.24012372,-0.18108715],[-0.5155024,-0.053247117,0.26342782,-0.14311959,-0.32982498,0.58627313,0.5567257,-0.2194575,0.4445848,-0.44104552,0.24620505,0.69306016,-0.55217963]],"activation":"identity","dense_3_b":[[0.059930358],[-0.027894666],[0.031020114]]},{"dense_4_W":[[1.1718056,-0.8948126,-0.15244067]],"dense_4_b":[[0.05171624]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521T00403A1'.json b/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521T00403A1'.json deleted file mode 100755 index 011cf806ea..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521T00403A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.092253],[0.8257708],[0.45484608],[0.028356912],[0.8140217],[0.81918985],[0.82255614],[0.8102244],[0.7955667],[0.77078706],[0.7444314],[0.028424477],[0.028405886],[0.028365526],[0.02817091],[0.028066315],[0.02797186],[0.027903816]],"model_test_loss":0.008641937747597694,"input_size":18,"current_date_and_time":"2023-08-10_11-28-48","input_mean":[[22.111403],[-0.020468052],[0.00260176],[0.017814223],[-0.019568035],[-0.019937012],[-0.02050278],[-0.017664416],[-0.015589151],[-0.013915732],[-0.0077555873],[0.017904663],[0.01790113],[0.017888824],[0.018040547],[0.01814623],[0.0184057],[0.01856536]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.8901903],[-0.7438429],[-0.6122344],[-0.2412558],[0.8543316],[-0.3185247],[1.8399776]],"dense_1_W":[[1.1625189,0.40039057,-0.0025008812,-0.41890216,0.16774665,1.3301513,-1.05835,-0.43560216,-0.29536605,-0.29428786,0.5059595,0.15214878,0.3311833,-0.1092579,-0.12995712,-0.2121695,-0.25328377,0.34366265],[-0.2108492,1.8213944,-0.0037650513,-0.4443187,-0.9336769,0.5478224,-0.17455208,-0.13268296,0.30928424,0.40694132,-0.46156526,0.110320315,0.2874757,0.1347806,0.08251065,-0.11447139,-0.15634517,0.11815532],[-0.39651474,0.2910717,-1.0581565,-0.39096954,-0.84142905,-0.6921981,1.3464824,-0.6867708,-0.22886333,0.3074725,-0.056309637,0.3235317,0.21882245,0.5208447,-0.23176116,-0.3196763,-0.3908853,0.4924444],[0.023868388,0.93133456,6.693503,0.1693899,-0.6633739,-0.0019848838,-0.81877935,0.98811,0.14710788,0.8430833,-0.9749285,-0.027155153,0.3262936,-0.36924264,-0.38995093,-0.27307773,0.2114907,0.10148348],[0.41686654,1.3670295,0.0021478476,0.057002787,-0.14275764,-0.056658525,0.024400754,-0.086303845,0.66810167,-0.03742678,-0.23496434,0.30531916,0.17594281,-0.22570042,-0.13516694,-0.38421035,0.20677494,0.019969082],[1.0289154,-0.64804214,-0.0014387759,0.42662656,0.14895122,-0.58820724,0.22127119,0.34592313,0.31323263,0.24369654,-0.36650044,0.03182343,0.10101775,-0.264594,0.10111715,-0.0765178,-0.1477554,0.11140398],[0.5695519,1.808156,-1.253366,0.49105036,-1.9823967,-1.4973999,2.9290652,-1.7067322,-0.6763123,0.7516668,-0.19734581,0.3499678,-0.111037284,-0.2012088,-0.07701846,-0.0106067145,-0.5977169,0.38696328]],"activation":"σ"},{"dense_2_W":[[0.012349895,-0.081942245,0.24179463,0.25615865,-0.3466578,0.20768717,0.20456062],[-0.34042543,-0.95279694,0.40695366,-0.15362829,-0.15595287,0.58774436,0.04863392],[1.3811588,1.5968466,-1.302473,0.5022756,1.007051,0.15855049,-0.41123948],[0.5894904,0.29552183,-0.088070914,-0.05923328,0.14361995,-0.48715538,-0.15394852],[0.6696779,0.8154732,0.08090532,-0.067599624,0.30964845,-0.4651497,-0.98328984],[1.048996,1.7286566,-0.8740424,0.68472356,0.6781938,-1.3097667,-0.841068],[-0.5152714,-0.8245123,0.51846474,-0.19924398,-0.9657816,-0.46467522,-0.2969826],[0.5162466,-1.3718777,-0.81976885,0.5777913,-1.1951425,0.52725565,-1.5065942],[-0.6157756,-0.64146185,0.28268078,0.11798595,-0.19853584,0.59471726,0.19424395],[-0.51709485,-0.27288422,0.44598293,-0.50114965,-0.4821885,0.1842942,-0.13447413],[0.30716494,0.5455412,0.2820038,0.42298153,-0.16316639,-0.67882645,-0.80919987],[0.20057538,-0.6075936,0.021517077,0.0058594905,-0.4455176,0.8283304,-0.04153079],[-0.5672435,-0.55653644,0.9335801,-1.064612,-0.98080814,-1.6662495,-0.7125999]],"activation":"σ","dense_2_b":[[-0.04758697],[0.103950314],[-0.21034029],[-0.1759661],[-0.14534564],[-0.4014301],[-0.07821672],[-0.34081164],[-0.09482991],[-0.00027300368],[-0.3289372],[0.22015864],[-0.12635086]]},{"dense_3_W":[[0.08841069,-0.7012008,-0.27067128,-0.22566004,0.42384112,0.537129,0.3303587,-0.202971,-0.10006057,0.25611818,0.3373171,-0.31684256,0.22898418],[-0.20768598,0.04598255,0.601375,0.29420632,0.33671921,0.5732239,-0.68677086,-0.5184719,-0.42104113,-0.5277463,0.5918677,-0.5941145,-0.60128295],[0.22220895,-0.21446738,-0.119648,-0.22185299,0.34326845,0.40759936,-0.04515529,-0.16942169,-0.40177232,0.38087803,0.14435387,-0.41597226,-0.17067248]],"activation":"identity","dense_3_b":[[-0.03592224],[-0.03948418],[0.031077854]]},{"dense_4_W":[[0.37178338,0.77815956,0.08979673]],"dense_4_b":[[-0.04114462]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516A00604A1'.json b/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516A00604A1'.json deleted file mode 100755 index 3ce7297d91..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN b'xf1x875Q0909144R xf1x891061xf1x82x0516A00604A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.290525],[0.82917035],[0.45113942],[0.041450657],[0.808434],[0.81629485],[0.82408255],[0.80830437],[0.795252],[0.78207934],[0.75818783],[0.041417964],[0.04143028],[0.041436702],[0.04143413],[0.041470982],[0.041412164],[0.041415334]],"model_test_loss":0.009140637703239918,"input_size":18,"current_date_and_time":"2023-08-10_11-55-29","input_mean":[[21.323723],[0.03325226],[-0.0033735863],[-0.0014594422],[0.031559683],[0.031856444],[0.03170563],[0.030355902],[0.029319406],[0.029543923],[0.028728634],[-0.0014694724],[-0.0014749364],[-0.0014824574],[-0.0015196581],[-0.0014603077],[-0.0013572131],[-0.001339693]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.56922615],[0.041300163],[-1.254721],[-0.03413835],[-1.6554084],[-0.17410408],[-0.61522776]],"dense_1_W":[[1.0540022,0.32624736,-0.00025852903,-0.04124151,0.22274004,1.4750109,-1.0787313,-0.99540067,-0.21925406,0.2080301,0.2912927,-0.14616714,-0.25007066,0.20059223,-0.13467374,-0.0125623,-0.09478596,0.01950804],[-0.009923938,-0.8645872,-7.849316,0.710686,0.36944547,0.15362212,0.93729883,0.06761643,-0.86989343,-0.44896173,0.77435964,-0.17029198,-0.030723508,-0.21656048,-0.28410506,-0.06316728,0.2806839,-0.2605462],[-0.22319421,1.3061746,-0.0011745724,0.087363705,-0.25787622,0.4865888,-0.5896333,0.6109107,-0.22302917,-0.10719543,0.017179906,0.39940724,-0.05673451,0.004958241,-0.6851484,0.37105274,-0.19090329,0.16849352],[-0.00035891216,-0.08626613,0.7303526,-0.68880993,0.22034171,0.9209459,-0.9556948,0.24309121,0.3545939,-0.0061660036,-0.62081426,0.31249496,0.24340105,-0.7395673,0.9197471,0.015660668,0.32094327,-0.3404047],[-0.28631234,-1.2720017,0.0011188913,-0.2188701,0.4519371,-0.4818437,0.28755167,-0.6112673,0.016787104,0.31543645,-0.056267515,-0.013484296,-0.31466198,-0.011283184,0.7387095,-0.08435522,-0.17678128,-0.018290224],[0.0018439082,-2.029053,0.008057842,0.5382048,0.2763366,-0.38902655,0.37340102,-0.40996662,-0.72045624,-0.2956851,0.42397067,0.25387588,-0.2772578,0.2145016,0.18141706,0.32736105,-0.10156828,0.018716993],[1.0636653,0.48715422,-0.0015376196,0.06604384,0.097244695,-1.8101829,0.46069503,0.8842625,0.013887742,-0.037064083,-0.32184562,-0.029657703,-0.070020884,0.14429364,-0.09371257,0.57893306,0.1488897,-0.2923841]],"activation":"σ"},{"dense_2_W":[[0.7879515,-0.46467248,1.0794638,0.7671335,-0.037539307,-0.652591,-0.44380203],[0.33411276,-0.23360157,0.31899008,0.79018146,-0.8197005,-0.58276,-0.74289805],[0.024688005,-0.13412961,-0.04840187,-0.8028189,0.66260815,0.03016398,0.039253287],[-0.018770358,-0.40480068,-0.46193084,-0.3494696,0.14812449,-0.6306497,-0.5127451],[-0.16712199,0.83740616,0.36462277,-0.13354221,-0.23577684,0.30791536,-0.43564942],[0.6434626,-0.8392937,1.6532009,0.7021095,-1.2320117,-1.1602876,-0.48219097],[0.6646111,0.21732892,0.49050468,-0.043008015,0.15137905,-0.48478547,-0.7212236],[0.11034068,-0.25311738,0.92781943,0.45044476,-0.9269697,-0.19231662,-0.4140086],[-0.7476244,-1.0192593,-0.04007068,0.5831176,-0.26690418,0.002005247,-1.3112344],[-0.5888374,0.08341635,-0.115199275,-0.922099,0.46274543,-0.19802791,-0.35727945],[-0.46942028,-0.17014697,-0.69315624,-0.0143117765,0.60911614,-0.15416178,0.62788534],[-0.84331405,0.302827,-0.99390453,-0.7173678,0.94187963,0.43155667,0.8959295],[-0.7744463,0.28774765,-1.1058409,-0.44697827,1.1843737,0.58229053,0.52381843]],"activation":"σ","dense_2_b":[[-0.0032762832],[0.09442419],[-0.22760114],[-0.14811619],[-0.021788245],[0.3878685],[-0.08048255],[-0.012592701],[-0.31711572],[-0.11638991],[0.0040142215],[0.04542833],[-0.013753473]]},{"dense_3_W":[[0.28196597,0.22568545,-0.030387998,-0.18586706,-0.16660844,0.5718057,0.15152381,0.44033635,0.2491916,-0.37710536,-0.65969247,-0.5834342,-0.57187986],[-0.628642,-0.025283614,-0.596149,0.47220096,-0.15986364,0.097276665,0.09287301,-0.3092298,-0.31016326,0.29485568,0.55567294,0.20108289,0.51474637],[-0.26703876,-0.70533663,0.45624056,-0.48600736,-0.64598805,-0.038812235,-0.69938004,0.40345365,0.2961252,0.4420242,0.5804485,0.38022405,-0.23318103]],"activation":"identity","dense_3_b":[[0.049912658],[-0.018233176],[-0.024009932]]},{"dense_4_W":[[0.8335982,-0.14927465,-0.36007002]],"dense_4_b":[[0.041336924]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143K xf1x892033xf1x820514UZ070203'.json b/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143K xf1x892033xf1x820514UZ070203'.json deleted file mode 100755 index da7a4077ac..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143K xf1x892033xf1x820514UZ070203'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[11.043713],[0.70319986],[0.5343478],[0.026934588],[0.6932889],[0.6982947],[0.70214796],[0.6804861],[0.6649965],[0.6459059],[0.6288712],[0.02683069],[0.026860924],[0.026891591],[0.026939137],[0.026965177],[0.027052335],[0.027131638]],"model_test_loss":0.007857225835323334,"input_size":18,"current_date_and_time":"2023-08-10_12-47-08","input_mean":[[22.51676],[0.0007204448],[0.013955519],[-0.007230524],[-0.0025695318],[-0.0022219676],[-0.0015167582],[0.006477074],[0.012144769],[0.0140706785],[0.014874495],[-0.0073296432],[-0.007318436],[-0.007308196],[-0.0074638575],[-0.007604219],[-0.007796417],[-0.007880043]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.15176187],[1.7611258],[0.08499729],[1.2638843],[-1.0145266],[1.1479009],[0.019360576]],"dense_1_W":[[0.002253989,-3.1604483,2.767584,-0.8068704,2.3291543,2.6853511,-1.0791886,0.007758601,-0.49927247,0.57279307,-0.27753213,0.6716626,-0.06696021,-0.76052266,0.6966655,0.7008176,-0.40914094,-0.1446268],[0.7218885,1.6974216,0.0065495796,0.4848664,-0.38044524,0.9584917,-0.35017136,0.2935823,0.013307751,0.07913103,-0.08967284,0.17916568,-0.022755025,-0.45461747,-0.017031884,-0.22419493,-0.029785138,0.11329553],[-0.021195402,0.41831255,-0.006486072,-0.20005222,-0.044353534,1.5854481,-0.4566311,-0.5508707,0.0053089573,-0.73440605,0.7127015,0.0178563,0.105017535,-0.10557691,-0.08303766,-0.3148053,0.1120448,0.08851348],[1.0059944,-1.3769217,0.0028758708,-0.17301795,0.38417014,-0.8320218,-0.0021920572,0.05236675,-0.11604148,-0.010877651,0.017621847,-0.31199968,0.26072103,0.14645621,-0.060435038,0.23222387,-0.07030094,-0.048769366],[-0.59738463,-1.4774386,4.2301564,-0.6372516,0.28283474,0.29814866,-1.5950772,-0.37465736,-0.046396185,-0.23227905,0.2788923,0.43851766,-0.13952476,-0.1730685,0.5122576,0.09155205,0.22722334,-0.23425691],[1.9368905,-0.55235744,-0.030420046,0.088646464,-0.8423889,0.40580097,-1.086312,-0.1729247,0.11532571,-0.07618555,-0.12122231,0.14744973,0.014324671,-0.49680474,0.14322798,0.3056609,-0.1648101,-0.03914734],[-0.017226573,0.9975025,0.028348321,0.26694727,-1.7435403,0.6003638,-0.015127457,0.33234358,0.77899,0.36002707,-0.7812798,-0.110702105,0.4372163,0.062443327,-1.0144533,0.07515875,0.14223565,0.11260919]],"activation":"σ"},{"dense_2_W":[[-0.3708766,-0.09346849,-0.4860665,-0.28673357,-0.20471741,-0.3887301,-0.53816146],[-0.2870411,0.077891976,-0.7692872,0.46041366,-0.08263284,0.18123056,-0.50797004],[0.8342386,-0.045646798,0.4450974,-0.23703974,-0.12750176,0.7012232,-0.08630407],[0.08431561,-0.07679201,-0.581064,0.011516861,-0.7343563,-0.6116229,-0.34984374],[0.25569338,-0.5237751,-0.48068842,-0.102060966,0.28852814,0.32561827,-0.7739834],[0.17638424,-0.30714586,-0.8407769,0.7255838,0.32686406,0.014714416,-0.67529327],[0.15759718,-0.1990726,0.6290832,-0.42295182,-0.64416325,0.053911954,0.57387424],[-1.3421621,-1.2502698,0.12817562,-0.2831332,-0.016792206,-0.8235658,0.19831528],[-0.8367818,-1.409201,0.18254657,0.4927183,-0.25860602,-1.0264908,-0.50290155],[0.47554544,0.058592763,-0.0097552,-1.9191943,1.0258328,-0.8242871,0.45348266],[-1.2065568,-1.4047163,0.113010526,0.4773201,-0.4767762,-1.2966703,0.2312964],[-0.18884628,-0.058959916,-0.041673712,-0.5327593,0.11240756,0.10169141,-0.23927355],[0.22284397,-0.29184937,0.9790536,-1.3780024,-0.2994004,0.49964294,0.48355368]],"activation":"σ","dense_2_b":[[-0.22963583],[0.032741938],[-0.04570257],[-0.08706406],[-0.14223282],[0.05371619],[-0.34291068],[-0.20564795],[-0.061394084],[-0.5258954],[-0.060946673],[-0.1682708],[-0.30500868]]},{"dense_3_W":[[-0.109130874,0.1274272,0.13656163,-0.4027122,-0.4333919,-0.6936401,0.502236,-0.3675514,-0.7237411,0.4035158,-0.47524786,0.09295235,0.14962798],[-0.16585311,0.47740844,-0.37112427,0.06724968,-0.37363434,0.06406272,0.47516382,0.118478574,-0.022609822,0.2940244,-0.0018366133,-0.40694827,-0.63223433],[0.009586715,0.5517231,-0.34838903,0.078904286,-0.039595366,0.116432205,0.003195687,-0.17880835,0.5144741,-0.46928853,0.36233348,0.4112465,-0.08295281]],"activation":"identity","dense_3_b":[[0.073130004],[-0.049100634],[-0.073537566]]},{"dense_4_W":[[1.1643018,-0.47747687,-0.8026266]],"dense_4_b":[[0.068460904]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143M xf1x892041xf1x820522UZ070303'.json b/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143M xf1x892041xf1x820522UZ070303'.json deleted file mode 100755 index 97f7731e2e..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0909143M xf1x892041xf1x820522UZ070303'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.427667],[0.83860636],[0.42204696],[0.03361851],[0.81973565],[0.825077],[0.8310441],[0.83052015],[0.8284627],[0.8263309],[0.8187787],[0.033480283],[0.03350828],[0.03353586],[0.033594076],[0.0336516],[0.033648238],[0.033631567]],"model_test_loss":0.008597739972174168,"input_size":18,"current_date_and_time":"2023-08-10_13-12-36","input_mean":[[25.706522],[0.050851874],[-0.010751898],[0.01802959],[0.054632157],[0.05350465],[0.052438986],[0.04850811],[0.048906337],[0.046515435],[0.045032594],[0.018018972],[0.018040042],[0.018053347],[0.018092638],[0.018076882],[0.018033529],[0.018010886]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.2964697],[0.049180523],[-3.1576617],[0.118301444],[-0.61603487],[0.25273886],[-0.07330951]],"dense_1_W":[[0.89546925,0.7464279,0.35021314,0.22637925,-0.2754313,0.27137527,-0.031470492,0.33797157,0.21643418,0.26727158,-0.23981565,0.43944034,-0.3634637,-0.32961583,0.30687925,-0.18917838,-0.14749566,0.04560524],[0.0062736324,-0.26759228,-3.0462065,0.030409567,-0.7790592,-0.9642961,0.74581957,0.029767705,-0.2603852,0.43679196,0.83964103,-0.31235635,0.11810286,-0.33990052,0.35530522,0.512531,-0.19636977,-0.21697098],[-1.2924967,1.5836774,0.49238458,0.17067905,-0.25315788,0.8040949,-1.3140789,0.90885764,0.10285396,0.12174135,-0.1821378,-0.03410296,-0.02985042,-0.05142844,-0.092534445,0.31806526,-0.14324093,-0.14495374],[-0.0056716613,-0.20092379,0.015451282,-0.03791514,0.30047786,-0.6232725,0.5658962,0.2011616,-0.2557471,-0.06808377,-0.20146759,-0.44247743,-0.28945133,0.34938657,0.24206486,-0.2013541,0.4648372,0.19353375],[-0.05128189,0.67123437,0.06952555,-0.0042294925,-0.14324088,0.27791318,-0.5421431,0.23997568,0.13052511,0.08122149,-0.13987608,-0.022714188,0.032299228,-0.37737137,0.39930877,0.19679675,-0.15827186,-0.10318431],[-0.019568905,-0.0607303,0.0130618,0.12254651,0.45252982,0.62943685,-0.3645628,-0.24168354,-0.5303252,-0.24557371,-0.016784955,-0.15041395,-0.44035485,0.090951286,-0.45376906,0.050149996,0.75379664,0.5303551],[0.0017316106,0.90743756,-0.00965252,-0.23193015,-0.2623223,0.7361792,-0.38086128,0.18679944,-0.03619202,-0.030559268,0.008687389,-0.06500352,-0.14568505,0.24354985,0.37842107,-0.5658337,0.10926247,0.07731545]],"activation":"σ"},{"dense_2_W":[[-0.39177263,-0.18800414,-0.20788462,0.11247796,-0.22365552,-0.31875002,-0.5684635],[-0.40389916,-0.6881541,0.6079956,-1.2894017,0.4109726,0.6156602,0.94629717],[-0.7998929,-0.7778953,-0.44944042,-0.64266866,-0.12719534,-0.47801676,-0.39805946],[-0.5706913,0.22585051,0.16944969,-0.791522,0.31455386,-0.68588865,0.5746767],[-0.30519763,0.1677756,-0.25193778,0.90596414,-0.032425787,-0.3528361,-0.6918698],[0.21673183,0.024453318,0.1322771,-0.5855296,0.33343047,0.44287738,0.5721365],[-0.5699235,0.2542559,-0.35358787,0.50997967,-0.2712492,-0.5551658,-0.40215912],[0.2629367,-0.16355118,0.033490267,-0.13413614,0.5478591,-0.032118343,0.912505],[-0.36946553,-0.42410433,-0.52718824,-0.29544082,-0.79523194,-0.59584975,0.060524564],[-0.87224454,0.47336072,0.19169393,0.46603736,-0.86350787,-0.010868162,-0.6611907],[-0.67190355,0.14076924,-0.05090652,0.82290465,-0.009441278,-0.669959,-0.41791293],[0.21663819,-0.7003845,-0.1493456,0.60176605,-0.48739564,-0.47414222,-0.7249381],[-0.7122426,0.54805565,0.38896307,0.3285942,-0.112064436,-0.25502503,-1.1255239]],"activation":"σ","dense_2_b":[[0.03228759],[-0.33656517],[-0.34582642],[-0.14028646],[0.08078773],[-0.21520647],[0.10405124],[-0.26432717],[-0.13297138],[-0.03255631],[0.012594238],[0.13707925],[-0.05311798]]},{"dense_3_W":[[0.3323226,-1.0349873,0.16582553,-0.26558918,0.5585341,-0.50477654,0.5019021,-0.44945425,0.1489514,0.6722085,0.6043886,0.6088044,0.074028775],[0.32264686,0.2705527,0.6175214,-0.29842913,-0.061648432,0.5753947,-0.5904476,0.5447954,-0.03628221,-0.34314078,0.0864569,-0.61685383,-0.45528167],[0.63654476,-0.5604362,-0.044634674,0.42495975,0.19226094,-0.08704097,-0.45119545,-0.30201146,-0.48162442,0.5252597,-0.18146215,0.050959926,0.21880749]],"activation":"identity","dense_3_b":[[-0.0937596],[0.03815688],[0.062478464]]},{"dense_4_W":[[-1.019849,0.32047084,-0.07043468]],"dense_4_b":[[0.074612744]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070600'.json b/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070600'.json deleted file mode 100755 index 4e379cc35c..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070600'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5485353],[0.842432],[0.47768155],[0.04491059],[0.8398388],[0.84115833],[0.841805],[0.82316613],[0.80845445],[0.7870207],[0.7709587],[0.044732787],[0.04478789],[0.044834975],[0.044941053],[0.04496564],[0.04483491],[0.04457904]],"model_test_loss":0.006399661768227816,"input_size":18,"current_date_and_time":"2023-08-10_14-01-50","input_mean":[[18.00953],[0.099562876],[0.011085797],[0.0136965355],[0.093436636],[0.09476455],[0.09581153],[0.100991],[0.10254183],[0.103215754],[0.09966734],[0.013582862],[0.013622751],[0.013662026],[0.013673613],[0.013685121],[0.013669784],[0.013470834]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.15596858],[0.4892694],[-2.485747],[-0.9076746],[-2.5210748],[0.62608117],[-0.12859546]],"dense_1_W":[[0.06842267,-0.8856152,-6.732937,0.19605958,0.741428,0.17544515,0.8053877,-0.35061014,-0.9764092,0.036799543,0.6009394,-0.6558462,0.35444188,-0.045649398,-0.06968357,0.21508473,0.2215049,-0.29990086],[-0.05740703,2.9165752,-0.005158554,0.15602402,0.39699048,0.5971187,-0.41904238,1.342937,1.2498165,0.20092702,-0.7303743,0.651644,0.032748777,0.0769538,-0.3169141,-0.06470094,-0.28091532,0.12019054],[-1.1610528,-0.90291053,-0.31168118,0.055444643,0.44807604,-0.53198224,0.92507297,-0.8764255,-0.11257939,-0.023954267,0.044729616,-0.0076007335,-0.1563039,0.1664793,0.21945952,-0.2034357,0.105529465,-0.06975108],[0.7200636,0.8466922,-0.007632461,0.033045746,0.05856158,1.3452346,-1.1502894,-0.12675957,-0.031347644,0.048609737,0.10773478,-0.09310796,-0.0042046523,0.009717507,-0.48196545,0.12704822,-0.033978984,-0.037001982],[-1.2062674,0.9051149,0.32335874,-0.1533066,-0.51617926,1.020792,-1.4042579,0.9042442,0.25317815,-0.05583252,-0.03010343,0.20175298,0.094550155,-0.16070417,-0.47876874,0.32050544,0.077573724,-0.015020535],[-0.7045055,0.2921713,0.0013640912,0.19007114,0.12720339,1.0896366,-0.5078957,-0.07863772,-0.027926547,0.21197884,0.007679035,0.08988427,-0.16537076,0.047214698,-0.45457175,-0.35825354,0.05781769,0.10457059],[-0.00158783,-0.2575547,1.3867532,-0.40103778,0.7387132,0.89181244,-0.06297082,0.24265654,0.16146004,-0.4570955,-0.37828583,0.21716939,-0.32538953,0.059181254,-0.2786397,0.0642267,-0.0045156525,0.13521087]],"activation":"σ"},{"dense_2_W":[[-0.054360803,-0.93450505,1.1069156,-0.25341234,-0.6672028,-0.56871617,0.46180332],[0.66834545,0.311226,0.92539716,-0.7637285,-1.0001141,-0.04506302,-0.79037106],[-0.336666,0.43282512,0.5231884,-0.33170068,-0.5402114,-0.67988545,-0.52936053],[-0.32985738,0.09310308,0.2807457,0.7175757,0.3434783,-0.054528777,0.14698726],[-0.9319756,0.55159384,-0.94562346,1.0089458,1.0009207,0.78610414,-0.39165795],[-0.24430718,-0.17523226,-0.21583228,-0.25136957,0.7013932,-0.1965411,0.6438836],[-0.7124287,-1.5932802,0.37554362,-0.114048585,0.643049,-0.22720207,-0.061459664],[0.72168005,-0.4816915,0.06136277,-0.7875475,0.35240883,-0.42538184,-0.2659062],[0.26363212,-0.8677782,0.10591171,0.32766673,-0.31068003,-0.60304576,-0.44430232],[-0.5729361,0.18546028,-0.095558025,-0.46766767,-0.7543451,-0.78625745,0.0124949105],[-1.4273218,0.6574617,-1.3855623,0.2680664,-0.93055564,-1.384056,0.09248577],[-0.146575,0.10351455,0.07099619,0.09571776,-0.004123669,0.1455809,-0.22726196],[-0.46773708,0.4945239,-1.1005019,0.59550714,-0.406852,0.60328615,0.46037948]],"activation":"σ","dense_2_b":[[0.15551081],[0.063135676],[0.21190381],[-0.12186496],[-0.32130012],[-0.10350768],[-0.1497363],[0.13513808],[-0.3129862],[-0.019406611],[0.081084184],[-0.107219465],[-0.31931284]]},{"dense_3_W":[[0.038192756,0.90545493,0.22436228,-0.08363581,-0.95819527,-0.48104054,0.14439842,0.49872485,-0.52165586,0.4655063,0.96369386,0.08209213,-0.043807942],[0.24979138,0.046216443,-0.24985886,0.46128502,-0.14784333,0.29726094,-0.09796824,-0.37513828,-0.13519555,-0.10046912,-0.019793414,0.26303867,-0.32336316],[0.6733837,0.65772706,0.5991573,-0.2601565,-0.8885243,-0.5688783,0.6620791,0.56542003,0.17227326,0.053705327,0.33648482,-0.17200494,-0.6597408]],"activation":"identity","dense_3_b":[[0.020342646],[0.01258384],[-0.08370784]]},{"dense_4_W":[[-0.4212374,0.007912168,-0.6052606]],"dense_4_b":[[0.07501488]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070700'.json b/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070700'.json deleted file mode 100755 index b48d15badb..0000000000 --- a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567UZ070700'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[10.325298],[0.7057722],[0.47287977],[0.031460747],[0.6921104],[0.697218],[0.70135456],[0.69763875],[0.685733],[0.66782856],[0.6485855],[0.0315074],[0.031504214],[0.031491026],[0.03148004],[0.03150045],[0.03156164],[0.031616196]],"model_test_loss":0.006121247075498104,"input_size":18,"current_date_and_time":"2023-08-10_14-26-22","input_mean":[[22.306183],[0.0053800372],[-0.00795939],[0.0013631819],[0.009645737],[0.008109978],[0.007211559],[0.00485605],[0.001991116],[0.0019658916],[0.0011436291],[0.0012911396],[0.00132131],[0.0013504513],[0.0012909095],[0.0012066179],[0.0010719349],[0.000821153]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.037611403],[-0.039259925],[5.3037424],[-0.014289626],[-0.04116731],[-5.299878],[-0.047248736]],"dense_1_W":[[-0.0064652376,-0.86517066,0.009122232,0.64427334,0.60157204,-1.5649973,0.5922017,0.32393336,0.10592543,-0.10904223,-0.08311717,-0.41152525,-0.17221938,-0.024847839,-0.42303094,0.6325312,-0.20199557,-0.13121592],[-0.01127936,-0.17854609,3.2403448,0.4238691,-1.0125954,0.7522482,-0.7303807,0.5404295,1.1757061,0.29872945,-0.5916982,0.07851869,0.16200984,0.12478189,-0.49618125,-0.35802162,-0.44821835,0.57569295],[2.7688413,1.5677587,0.41038755,-0.33729497,0.1729276,-0.8542694,-2.1819742,1.2398255,1.4715692,0.047309943,-0.2706118,-0.24824658,-0.13942274,0.20966528,0.4355863,0.31434494,-0.293769,-0.07769441],[0.0036463365,-1.5028012,1.0467403,-0.26813957,0.76441354,1.4152889,-0.99150753,1.1589833,0.72802955,-0.70228565,-0.74011207,0.19401184,-0.1607593,-0.33000073,-0.08714993,0.64130986,-0.27448478,0.06201577],[-0.003765804,-0.2075825,-0.022305839,0.9898987,0.50378066,0.95337635,-0.22548404,-0.1336573,-0.58790505,-0.4490368,0.749273,0.13859859,-0.027452512,-0.61067677,-1.153898,-1.1776212,0.24113877,-0.27340102],[-2.7447796,1.9117345,0.4073564,-0.04775491,0.23204777,-0.51974696,-2.9568594,1.3113073,1.4277631,0.020979766,-0.2532327,-0.26606435,0.13057557,-0.30686697,0.4028711,0.3851677,-0.4117104,-0.023646714],[0.0020379785,-1.0273771,-0.0040772515,-0.15474853,0.40938514,-0.8294739,0.61741006,0.41521803,0.19431064,0.012701662,-0.14437585,-0.53484315,0.40445113,0.42614287,0.2149064,-0.33539692,-0.026481858,0.0847282]],"activation":"σ"},{"dense_2_W":[[-1.524189,0.9351632,0.55989957,0.6639257,-0.41399422,1.9353259,-2.080693],[0.4837269,-0.42052314,-0.016988551,0.26961946,-0.5820897,-0.113735415,0.6621344],[0.66784316,-0.18224554,-0.46350604,-0.24139507,-0.33972263,-0.10908334,0.46273032],[-0.25121573,-0.5433506,-0.3747119,-0.48113945,-0.6870209,-0.2597966,-0.6666107],[-1.5878243,0.8484644,1.6857767,0.8684603,-0.49275222,0.8885371,-1.6989545],[-0.37864903,0.1991398,1.0727624,-0.06963282,0.744443,0.0127678355,-1.0510542],[0.6948821,0.4031339,-0.4709602,0.024776852,-0.19349359,-0.61693877,0.6901456],[-0.16844974,0.34244663,0.2792154,-0.22678165,-0.009063555,-0.2205289,0.30833983],[-1.0003111,0.061680865,-0.22125538,-0.14785585,0.33567291,0.23772448,-0.49937972],[-0.25907272,-0.45068902,-0.4165561,0.371873,0.6574395,0.3054128,-0.3081276],[0.4063414,0.31216034,-0.351421,0.24184814,-0.48907033,0.2369533,0.18272556],[0.6680394,0.23359145,0.2988422,-0.13820608,-0.0924177,-0.6595436,0.7519552],[0.7290062,-0.29669526,-0.7187181,-0.4984251,0.33927912,-0.05567023,0.7271803]],"activation":"σ","dense_2_b":[[-0.2505063],[0.036255818],[0.03159872],[-0.22770797],[-0.0873118],[-0.06630587],[-0.048832744],[-0.07904234],[-0.22275046],[-0.08476886],[-0.0669902],[0.0096226],[0.07374443]]},{"dense_3_W":[[0.8759032,-0.59936947,-0.44472367,0.26480153,0.8450838,0.48954475,-0.5052384,0.16207619,0.013260613,0.43904993,-0.105288796,-0.16599573,-0.31243858],[0.14936896,-0.628315,0.2414504,-0.10917872,0.4430291,-0.35649955,0.22603549,-0.48412538,0.2549734,0.48249015,0.0134211285,-0.071542166,-0.37372112],[0.047143627,-0.08542679,0.6750787,0.18638729,-0.011972222,-0.2818068,-0.23235205,0.124561444,-0.23522471,-0.3220255,0.30383208,0.18026324,0.34829038]],"activation":"identity","dense_3_b":[[-0.031695265],[-0.013660732],[0.018769676]]},{"dense_4_W":[[0.80076545,0.24590294,-0.42213082]],"dense_4_b":[[-0.026628232]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SKODA KAROQ 1ST GEN.json b/selfdrive/car/torque_data/lat_models/SKODA_KAROQ_MK1.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SKODA KAROQ 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/SKODA_KAROQ_MK1.json diff --git a/selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN.json b/selfdrive/car/torque_data/lat_models/SKODA_KODIAQ_MK1.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SKODA KODIAQ 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/SKODA_KODIAQ_MK1.json diff --git a/selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN.json b/selfdrive/car/torque_data/lat_models/SKODA_OCTAVIA_MK3.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SKODA OCTAVIA 3RD GEN.json rename to selfdrive/car/torque_data/lat_models/SKODA_OCTAVIA_MK3.json diff --git a/selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN.json b/selfdrive/car/torque_data/lat_models/SKODA_SUPERB_MK3.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SKODA SUPERB 3RD GEN.json rename to selfdrive/car/torque_data/lat_models/SKODA_SUPERB_MK3.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x05xc0xd0x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x05xc0xd0x00'.json deleted file mode 100755 index 31b79abf84..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x05xc0xd0x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.7864456],[1.0675452],[0.44117737],[0.042466324],[1.0634382],[1.0641662],[1.0649238],[1.0489594],[1.0356928],[1.0174093],[0.9990636],[0.04239807],[0.042411074],[0.042412493],[0.042160373],[0.041902237],[0.04156318],[0.041192904]],"model_test_loss":0.006247136276215315,"input_size":18,"current_date_and_time":"2023-08-10_15-19-46","input_mean":[[22.789394],[-0.107057944],[-0.015220077],[0.0053075603],[-0.10096015],[-0.1036062],[-0.10646909],[-0.1105645],[-0.11274725],[-0.1129047],[-0.112440266],[0.0053247744],[0.0052974327],[0.0052765487],[0.005187726],[0.0051564705],[0.005072803],[0.005050624]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.22735131],[-1.1558822],[-2.4949677],[-0.028262757],[0.016046714],[0.46825287],[2.14808]],"dense_1_W":[[0.0063389866,1.1687455,5.6478443,-0.7739389,-0.37703404,-0.2977524,-0.35879293,-0.2989859,0.27854565,0.5250727,-0.5768838,0.437727,0.79303294,-0.25440294,0.015966117,-0.7346069,0.1822349,0.40839165],[3.5873764,-0.038363542,-0.49252892,0.88343006,-0.8263806,-1.0448018,0.35837594,-0.82923394,-0.2903959,-0.59976083,0.39708364,0.4991477,0.14932378,0.23114131,0.71492994,0.7446338,0.86800545,-0.10675554],[-0.71696925,0.589286,0.005141117,0.2558955,-0.15218897,0.56768674,-1.9735179,0.37540847,0.70758367,0.54208136,0.011372507,0.30521852,-0.07170634,-0.3685703,-0.17633998,-0.12821102,0.49403462,-0.28528726],[-0.0126111545,-0.25394174,-0.0476702,-0.051051825,0.15847693,-0.8556249,0.9062775,-0.35461852,0.08610974,-0.016350707,0.05444419,-0.021587849,-0.024609195,-0.041649777,0.2721636,0.11223671,-0.13007721,0.027287088],[-0.00082902284,-0.2895202,0.02292975,0.40938672,-0.5772713,-1.4159223,0.9096195,0.46552798,0.07192008,0.58374035,-0.7259645,-0.4192547,-0.119582735,-0.040364027,0.023777857,-0.099143706,0.07231984,0.05833065],[-0.034051787,-0.68221754,0.09880095,-0.083567955,-0.74208,-0.90698755,0.04928286,0.16156256,0.019495055,0.042218853,-0.28641602,0.051178593,0.26687574,0.46796858,0.46098933,-0.07269996,0.45891553,0.5021809],[0.66424364,0.45286804,-0.0005165507,0.2288496,-0.004017847,0.39797547,-1.7530091,0.4336208,0.41258094,0.72541785,-0.0085950075,-0.29211155,0.17102799,0.101752244,-0.20573312,0.25594547,-0.22377016,-0.008692318]],"activation":"σ"},{"dense_2_W":[[0.20325899,0.082790025,-0.64574623,0.5835337,0.2445456,0.39990926,-0.37031835],[-0.6524255,-0.44563344,0.23222709,0.45553765,0.0009599149,0.07084656,-0.40249822],[-0.42582795,-0.35526115,-0.41792208,0.71313417,0.48622853,0.42440364,0.124865286],[-0.42827517,-0.33303145,0.6030186,-0.6233551,-0.7089609,-0.19002749,0.98240393],[0.37648484,0.5340621,-0.075831234,-0.35439888,-0.05369259,-0.0852395,-0.5522382],[-0.18600848,-0.17840625,-0.13572167,-0.39332452,0.069297686,0.55391586,-0.56896216],[0.5372773,-0.42328098,0.46704698,-0.3903592,-0.31730473,-0.1323594,-0.15068243],[-0.025426986,0.27607596,-0.8116318,0.44459775,-0.039600827,0.2860532,0.21579745],[-0.34013402,0.61537576,-0.37449715,0.2465375,0.1431466,-0.20966384,-0.50743437],[-0.42331675,0.2752822,1.4675745,-0.7314219,-0.98570365,-0.13913184,0.50083154],[0.42013124,0.5378009,-0.11075335,-1.0205,-0.12323601,-0.10791454,1.2503781],[-0.46719682,-0.30131668,-0.7835209,-0.36901754,-0.74570584,-0.18500452,0.309284],[0.4626236,-0.17921384,0.23175037,-0.45361674,0.032451127,-0.29581988,0.68514556]],"activation":"σ","dense_2_b":[[-0.10602414],[-0.017100008],[0.040201504],[0.31925488],[-0.023480363],[-0.014836832],[-0.083288915],[-0.06903872],[0.040521644],[0.03449383],[0.06455035],[-0.22185017],[-0.065645464]]},{"dense_3_W":[[0.24577592,0.60105056,0.39954543,-0.2241492,-0.024554443,-0.15969503,-0.3220896,0.3241807,0.17859495,-0.5020777,-0.20332621,-0.26195568,-0.43355486],[0.14188491,-0.31661624,-0.65018225,0.34786117,-0.24704528,-0.57218057,0.3886062,-0.13966885,-0.6255838,-0.3665181,-0.27110517,-0.43634248,0.3648473],[0.2685311,-0.24588606,0.4600874,-0.6152837,0.44763306,0.503137,-0.21638398,-0.21211603,-0.17489356,0.066063605,-0.35907042,0.3705208,-0.39206743]],"activation":"identity","dense_3_b":[[0.03704233],[-0.009847877],[0.03596555]]},{"dense_4_W":[[-1.1007925,0.13783514,-0.4093285]],"dense_4_b":[[-0.037597723]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x85xc0xd0x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x85xc0xd0x00'.json deleted file mode 100755 index 868f130879..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x85xc0xd0x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.751917],[1.2651925],[0.6286032],[0.041758075],[1.251075],[1.2542156],[1.25788],[1.2476728],[1.2321731],[1.209085],[1.171815],[0.0416455],[0.04166907],[0.041675318],[0.041540235],[0.041331045],[0.0410227],[0.04076636]],"model_test_loss":0.010389542207121849,"input_size":18,"current_date_and_time":"2023-08-10_15-45-17","input_mean":[[21.811985],[-0.08200492],[-0.021123547],[-0.015392087],[-0.077132],[-0.07836754],[-0.07990758],[-0.08903278],[-0.09390533],[-0.0994351],[-0.09906808],[-0.015419691],[-0.015373937],[-0.015333388],[-0.015234815],[-0.01517176],[-0.015184814],[-0.015314578]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.112263665],[-0.2413684],[2.3331506],[-2.6163883],[-0.065890506],[-0.11267999],[0.2540324]],"dense_1_W":[[0.00082437333,-0.6100184,0.0085841585,0.19443965,-0.3853334,-1.0094393,0.54652345,0.4635451,0.41569796,-0.024827078,-0.35933343,0.013195037,-0.34806025,0.38918108,-0.2045975,-0.028205873,0.21251714,-0.14155327],[0.00052090845,-0.067986116,-0.0049952795,-0.17397985,0.19120865,-1.151794,1.4686754,-0.26064983,-0.37115577,-0.14031996,0.22627379,-0.61062306,-0.6003732,-0.08005905,0.6625579,0.27400896,0.2810858,0.22422503],[0.9736936,-0.2066802,-0.03221171,0.38892078,0.12595229,-0.78887135,1.7474787,-0.357525,-0.87113667,0.059320755,0.12783788,0.29396367,-0.33448485,-0.18315637,-0.08755342,-0.07393691,-0.20805165,0.19661658],[-0.8980642,-0.61740303,-0.036882922,0.014804519,0.0004633668,-0.56963277,2.2672677,-0.8473421,-0.7454484,0.14973474,0.15070617,0.14196523,-0.4790531,0.44873357,0.1199102,-0.23800696,-0.27427772,0.2604217],[-0.019455962,0.23203465,-0.00544805,-0.37386358,0.198604,0.39421222,-0.9399687,0.4006715,-0.18001914,0.28436452,-0.16559297,-0.27809414,-0.3476229,-0.23943123,-0.15492289,0.29176927,0.45100713,0.6297477],[0.00265877,-1.9257119,-5.770941,-0.015959108,0.91101694,0.2507323,0.9135306,0.027248167,-0.37422356,-0.42659408,0.31162933,0.048672486,-0.09029977,0.20116101,-0.2788187,0.54255015,0.17655331,-0.34923193],[-0.053368453,-0.32306084,-0.0011745194,0.14451449,-0.10494747,-1.0513184,1.6973016,-0.3520769,-0.08723632,0.20861532,-0.03754033,-0.12658818,-0.45617837,-0.53323764,0.17189239,0.19411314,0.18694821,0.41706687]],"activation":"σ"},{"dense_2_W":[[-0.6774667,0.12969257,-0.4430792,-0.91589767,0.04770356,-0.14245662,0.32101628],[-0.007977094,-0.35256377,-0.17704034,-0.63430905,0.16956906,-0.70034474,0.04581389],[-0.46165147,-0.62357444,0.17046474,-0.75571364,0.43287623,-0.30724007,0.1923109],[-0.6784181,-1.1244366,0.11541932,0.0015692321,0.3201062,0.22912836,-0.3314084],[0.7617433,-0.10211574,0.85646874,0.09638195,-0.3320897,0.5301404,-0.12944654],[0.035080303,0.9425994,1.1255182,0.170445,-0.9830605,0.28675708,0.19016503],[0.050772995,0.07033034,-0.7225591,-0.4550455,-0.16105704,-0.13258936,-0.5693541],[0.33667997,-0.61400133,-0.51990676,-0.64140576,-0.114089586,-0.42780593,-0.09286493],[0.5349278,-0.001589271,0.36740375,1.0545287,-0.42867026,-0.08572172,0.1694925],[-1.0343602,-0.7271993,-0.040044453,-0.6931338,0.5427271,0.71489084,-0.30788174],[0.13735534,-0.39718962,-0.597495,-0.44561583,0.53015804,-0.5777026,-0.35073844],[-0.53797716,-0.5482148,-0.20631851,0.100615636,0.21108344,-0.1866766,-0.27603066],[1.0084223,-0.13957444,0.24433044,0.6394643,-0.8311719,-0.009334607,0.5582453]],"activation":"σ","dense_2_b":[[-0.09939182],[0.068688095],[0.009566937],[0.011495638],[-0.106889665],[-0.24243665],[-0.026521178],[0.1317154],[-0.10032767],[0.08581992],[-0.01238223],[0.015781516],[-0.17793517]]},{"dense_3_W":[[0.4781185,0.3084316,0.08325544,0.04606733,0.08636447,-0.6786478,-0.35504982,0.59879106,-0.120570466,0.8481977,0.4478148,-0.3906098,-0.63914454],[0.3031589,0.25322372,0.5268686,-0.22374596,-0.1588417,-0.0013027226,0.19833587,-0.4039331,-0.48228812,0.23426887,-0.09250619,0.19117919,-0.26200604],[0.059065677,0.54438025,0.23591729,0.44685203,-0.76421094,-0.22385049,0.4203905,0.5741656,-0.51101667,0.6874898,0.39969978,0.64433825,-0.3296311]],"activation":"identity","dense_3_b":[[0.021213043],[-0.017086985],[-0.06297748]]},{"dense_4_W":[[0.25790158,0.11600269,1.2381012]],"dense_4_b":[[-0.05793729]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x95xc0xd0x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x95xc0xd0x00'.json deleted file mode 100755 index 591ebdc7f7..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019 b'x95xc0xd0x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9305706],[1.166364],[0.52697164],[0.04559408],[1.1611184],[1.1617836],[1.1621717],[1.1572268],[1.1512266],[1.1410046],[1.1271056],[0.045430746],[0.045456205],[0.045471754],[0.04538521],[0.045166407],[0.044751257],[0.044259742]],"model_test_loss":0.007159117143601179,"input_size":18,"current_date_and_time":"2023-08-10_16-11-18","input_mean":[[23.875044],[-0.04762809],[0.0020058034],[-0.0051164185],[-0.04738313],[-0.047682315],[-0.04707818],[-0.04922181],[-0.052050225],[-0.05241706],[-0.053604044],[-0.0052390727],[-0.005214684],[-0.005188381],[-0.0052186437],[-0.0052642184],[-0.005336835],[-0.005483444]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.30677524],[2.305386],[0.21258113],[0.0011374068],[-0.07798925],[0.13210933],[-2.2330644]],"dense_1_W":[[-0.9153392,-0.04457669,0.07580861,-0.14653037,-0.09173063,-1.0210644,0.28700185,0.2787717,-0.110930994,-0.22061832,0.031545375,0.21201925,-0.14316308,0.22535005,-0.13208093,0.47763622,-0.19806175,0.07550945],[1.408277,-0.8102327,0.07669226,-0.36992925,-0.10502352,1.4004408,-0.944446,0.52676916,0.45272207,-0.24533494,0.035849094,0.2495303,0.107555866,-0.19849469,-0.20219192,0.3377574,0.091887705,-0.09355204],[0.9365069,-0.6004133,0.073348165,0.15801865,-0.25915328,-0.8621952,0.9956089,0.10657743,-0.26742437,-0.09970222,0.07917549,-0.56488645,-0.07252198,0.6092978,0.18529537,0.062446173,0.21213096,-0.21162209],[-0.021605618,2.0233808,6.686231,-0.77553934,-1.7767231,-0.2691988,-0.54059815,-0.5960048,0.83274704,1.3160363,-0.8824629,0.47476387,0.31446755,0.564766,0.32654157,0.2584088,-0.60193515,-0.5081355],[0.0014130626,-0.53958946,-0.0328115,0.029045805,-0.032773897,-0.6771303,0.90978366,-0.1976198,0.17000276,0.09847352,-0.13980895,-0.6394955,-0.0060927877,0.14346723,0.3639303,0.4022752,0.04658495,-0.3556684],[0.035749156,-0.10624368,-0.104625024,0.035823658,0.20164482,-0.25137526,1.265547,-0.2905279,-0.5661436,-0.21419431,0.47792393,-0.30237326,-0.12908356,0.4366763,-0.18249804,-0.4698138,0.027572105,0.08708235],[-1.396587,0.15164146,0.07955495,0.8348063,-0.16462886,1.0165251,-1.172671,0.6484491,-0.2163863,-0.007840905,0.042114086,-0.29386994,-0.31274995,-0.1285774,-0.3331896,0.39886513,-0.12885635,-0.101650245]],"activation":"σ"},{"dense_2_W":[[0.38495073,-0.7412111,-0.22137684,-0.12030764,0.6368522,-0.06314703,0.03507243],[-0.6724593,0.739151,0.34064248,0.48897338,-0.50050086,-0.22222371,0.38529333],[0.44841364,0.03794733,-0.1467243,-0.20161211,-0.21433899,-0.43315327,-0.6118354],[0.06565437,0.23752235,-0.54241395,-0.19601826,-0.2867999,-0.1890192,0.41696703],[-0.27295426,0.30162266,0.6954773,-0.09653864,0.48812908,0.26977977,-0.4546936],[0.48944157,-0.61165446,-0.2726838,-0.39025265,0.26824158,0.44155118,0.23420909],[0.17367882,-0.1447462,0.5705062,0.11740234,0.38665462,0.3405028,0.37385175],[-0.4640401,-0.34844878,-0.520765,0.2933172,-0.23360184,0.06336928,-0.20476247],[-0.2682518,-0.2981224,-0.061291657,-0.15070377,0.4602456,-0.1752958,-0.35343117],[-0.4592221,1.1183828,-0.8640038,-0.4991326,-0.44832966,-0.2623515,1.0564609],[-0.045591548,0.03365201,-1.1687095,0.5368091,-0.6330926,-0.8546177,0.9726235],[-0.67239046,0.06492867,-0.5151909,0.16666827,-0.059304733,-0.17748602,0.7295886],[-0.17871682,0.7711487,-0.93309194,-0.24634744,-0.4780839,0.016693426,0.3126589]],"activation":"σ","dense_2_b":[[-0.0015952135],[0.012052551],[-0.010449206],[-0.044464882],[0.009422688],[-0.04994557],[-0.035012778],[-0.028600752],[0.016694155],[0.09361134],[-0.25293818],[-0.04506597],[-0.0031262708]]},{"dense_3_W":[[0.50088197,-0.45380923,-0.3447632,0.17479855,0.35610682,-0.29754344,0.29226437,0.40267113,0.3446978,0.15563208,-0.3483347,-0.6286209,-0.17550218],[0.4510917,-0.59041935,0.36655262,-0.30154505,0.49209,0.6228336,-0.18296722,-0.020777082,-0.10334578,-0.5006874,0.010148908,-0.52687216,-0.41658545],[0.39971578,-0.6320007,0.4202651,-0.58625245,0.6280199,0.34103268,0.25863847,-0.6293903,0.5739891,-0.46801668,-0.13070941,-0.01960773,-0.064851746]],"activation":"identity","dense_3_b":[[0.025732024],[0.02984865],[0.02392714]]},{"dense_4_W":[[-0.8745196,-0.8096158,-0.53739285]],"dense_4_b":[[-0.028630944]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019 b'x8dxc0x04x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019 b'x8dxc0x04x00'.json deleted file mode 100755 index 51e4706c5d..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019 b'x8dxc0x04x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.799702],[1.4022106],[0.64107347],[0.048644897],[1.3754585],[1.384525],[1.3930372],[1.3637297],[1.3325337],[1.3025023],[1.2634097],[0.048490796],[0.04852734],[0.048555136],[0.04845293],[0.04838427],[0.048089206],[0.047663692]],"model_test_loss":0.007386927027255297,"input_size":18,"current_date_and_time":"2023-08-10_17-31-57","input_mean":[[23.816095],[-0.049997237],[-0.007897631],[-0.0071165124],[-0.04356241],[-0.044834737],[-0.046383783],[-0.045705367],[-0.044091124],[-0.04704344],[-0.044948243],[-0.0070246058],[-0.007036013],[-0.007050358],[-0.0070076296],[-0.0069411667],[-0.006977052],[-0.007046174]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.11336769],[-0.1558763],[-1.490285],[-1.5598854],[0.012304846],[-0.022315644],[0.041771296]],"dense_1_W":[[-0.01977819,1.1443615,6.4567647,0.22709283,-0.07258762,0.1256894,-0.9979844,-0.84394026,0.93974406,0.6906267,-0.6703605,-0.016698701,-0.12463053,0.4582139,-0.46097878,-0.1382326,-0.07665762,0.016058486],[0.01751075,-0.39227998,-0.042306893,-0.06479078,0.2590678,-0.7885349,0.8643044,-0.05622104,-0.5792078,0.49931744,-0.1498453,-0.091571845,0.068086684,-0.16460074,0.20773992,0.28189114,0.20789368,-0.30530888],[-0.84948033,1.009252,0.011256742,0.33373848,-0.42635688,-0.50016934,1.3120202,-0.9743089,-0.8169875,0.0070605767,0.07339234,-0.13629174,0.34325087,0.7454428,-1.020692,-0.6009766,-0.16322955,0.5690257],[-0.859371,0.6779426,-0.011156044,0.24427465,0.21054544,0.41095948,-1.243871,0.14078836,-0.18485905,-0.18274853,0.53857833,-0.17150062,0.010126415,-0.39408815,0.18594584,0.07860817,0.14298649,-0.1758404],[0.0010954959,0.5071819,-0.020262098,-0.2741187,0.15675487,0.48042226,-1.1560334,0.25577885,0.18734348,0.319839,-0.3276146,0.15339972,0.06763019,0.24912529,0.19296181,-0.35772792,-0.030918041,-0.056021962],[-0.001659214,-0.41259018,0.10546883,-0.04128334,-0.57788277,-1.2264594,0.9491901,0.31587604,0.42403442,-0.46528783,0.21479684,0.2612383,-0.07516154,0.10787102,0.12550128,0.20215736,0.010438747,-0.26799598],[0.0069037564,0.071458444,-0.17135356,-0.15143572,-0.42506117,-0.14927572,1.4475372,-0.7957649,-0.09695476,0.09732733,0.068755925,-0.447942,-0.39005634,-0.47970626,1.3778332,0.15125123,-0.061111715,-0.27014065]],"activation":"σ"},{"dense_2_W":[[-0.5476857,-0.34267196,-1.1804522,0.9826078,1.2559764,-0.06669344,-0.59067243],[-0.19235519,-0.73507553,-0.07926594,0.89560527,0.74729407,-0.61155975,-0.7242012],[-0.48663774,0.7720404,0.10374275,-0.6260227,-0.17417191,0.4686119,0.6312232],[0.36561587,-0.15491518,-0.44031703,0.06942568,0.64594734,-0.4462405,-0.6349547],[0.7081136,-0.29506996,-0.83266884,0.122376084,0.75587255,-0.3350482,-0.2778585],[-0.6224533,-0.5645358,-1.0115622,0.89887905,1.4065654,-0.32766277,-0.39135978],[-0.4492619,0.03162113,0.52745104,-0.41767576,-0.13911435,-0.020886017,-0.009816406],[-0.5448073,0.91549146,0.68613285,-0.013575926,-0.29431057,-0.06598866,-0.16217463],[-0.3627731,0.41454732,0.17659637,-0.039793443,-0.50492966,0.6114329,-0.2755667],[0.0074237594,0.78070295,0.22676738,-0.37978444,-0.3925154,0.5993168,0.31498003],[-0.34473616,0.4788029,-0.111885466,-0.2417559,-0.39796054,0.3986806,0.7663913],[-0.5048224,-0.041392315,-0.69820964,0.1713349,0.7381618,-0.29876855,-0.30547982],[0.028930116,0.4292938,-0.051137988,0.08411418,-0.11514599,-0.39944056,-0.04911791]],"activation":"σ","dense_2_b":[[0.20303766],[0.14015818],[-0.08520703],[0.09250628],[0.23017566],[0.48661518],[-0.00044188643],[-0.06016225],[-0.007325745],[-0.18048085],[-0.02599478],[0.0058664232],[-0.022089954]]},{"dense_3_W":[[0.13350116,0.4653472,0.35548818,-0.19969355,-0.19666392,-0.36159652,-0.4205869,0.4367674,-0.4891205,-0.15468554,0.156333,-0.36591503,-0.24838057],[-0.0064647943,-0.10470988,-0.5210429,-0.100936055,-0.54979503,0.6029704,-0.3322796,-0.58332735,0.060819454,-0.060762953,0.5044272,0.4439412,0.33067426],[0.26523876,0.8024418,-0.5483982,0.41635954,0.6793265,0.5232535,-0.3263415,-0.4702453,-0.20712556,-0.50518614,-0.36013588,0.21646436,-0.09427801]],"activation":"identity","dense_3_b":[[0.0074690827],[0.029551204],[-0.025025982]]},{"dense_4_W":[[0.06027109,0.044870634,1.0522106]],"dense_4_b":[[-0.022553917]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'x8axc0x10x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'x8axc0x10x00'.json deleted file mode 100755 index bdf37fa0a6..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'x8axc0x10x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9070053],[1.0543791],[0.45644546],[0.04216511],[1.0496393],[1.0514421],[1.0525388],[1.0388994],[1.0230772],[0.9977821],[0.97294074],[0.042082436],[0.042079873],[0.042074014],[0.04191643],[0.0416697],[0.0412085],[0.04074361]],"model_test_loss":0.01961229182779789,"input_size":18,"current_date_and_time":"2023-08-10_18-47-37","input_mean":[[24.166582],[-0.028447185],[-0.004559452],[-0.0096051665],[-0.024261262],[-0.025696838],[-0.027025647],[-0.028589323],[-0.030067492],[-0.03444616],[-0.035814732],[-0.009534621],[-0.009544901],[-0.0095633445],[-0.009623893],[-0.009606267],[-0.009746497],[-0.009912363]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.7455199],[0.049996253],[-0.28023538],[-2.2060273],[-0.013816978],[-0.9874536],[-0.9019276]],"dense_1_W":[[0.6895121,0.5161322,0.14658317,0.11381423,0.1892214,1.7092749,-0.96651584,0.44850215,-0.0011632228,-0.042724244,0.15792367,0.5514578,-0.377292,-0.20945737,-0.76233065,0.012376638,0.07503095,0.03581266],[-0.6286081,-0.19999953,-0.26134518,0.40281624,0.025883766,1.6258272,-1.282856,0.15094246,-0.4982385,-0.14781019,-0.1479545,0.2354319,0.11133424,0.01337905,-0.27134678,0.36755842,-0.2766078,0.20018724],[0.01425971,0.12655693,0.027717352,0.25218877,-0.14888945,1.3863931,-0.58381855,0.119170696,-0.30655816,0.28394252,-0.028384114,0.28937957,0.11933416,-0.17924944,-0.5354822,-0.1023875,-0.112619705,0.23060223],[-0.70373154,0.21793373,0.15077697,0.2048877,0.536804,1.0242751,-0.6825991,0.6318776,0.21126975,-0.1301757,0.11066647,0.16537508,-0.13113236,0.008809388,-0.91487056,0.1511099,-0.20573723,0.17212375],[0.6260223,-0.82557577,0.2577335,0.09809156,-0.0992909,0.8572501,-0.7068254,0.11579019,0.9520398,-0.10346599,0.24801868,-0.04993002,0.1822422,-0.8884633,-0.5575527,0.70132893,0.013880684,-0.26569209],[-0.038469315,1.393094,4.8376126,-0.17993413,-2.8555899,-0.81073236,-1.82493,0.3075214,3.1346302,2.149397,-1.5296553,0.16216949,0.63347834,-0.16527048,-0.52531976,0.4832946,-0.8622477,0.4553706],[-0.0084891105,1.6197035,2.4590979,-0.13657339,-1.2173172,0.13232367,-0.9361693,0.3940753,0.5279083,0.7115164,-0.9698505,0.27118906,0.24368131,-0.12613261,0.07012018,-0.2520898,-0.77435726,0.66100776]],"activation":"σ"},{"dense_2_W":[[-0.3877504,-0.5656672,-1.2326187,-1.1548815,-0.2756651,0.68949634,0.3156601],[-0.086553685,0.083017066,-0.46457613,-0.06040094,-0.24278064,0.21467605,-0.820212],[-0.31367186,-0.38895422,0.5136481,0.54023415,0.13330653,0.1338129,0.4324519],[0.48387918,0.4686007,0.7549132,0.5443022,0.64290255,-0.3914411,-0.18872365],[-0.4481094,-0.3843902,-0.18481985,-0.12798713,0.0073901964,-0.8419567,0.07509202],[0.5552352,0.042670928,-0.77402955,-0.73152304,-0.43447974,0.11009675,-0.40836683],[-0.3615617,-0.56010073,-0.20947416,-0.66224504,-0.020653427,0.21728848,-0.3211307],[-1.4455059,-0.76313007,0.2822113,1.7159922,-0.5230928,-2.34454,-0.7053262],[0.5867471,0.043875463,0.29294136,0.05382179,0.34849784,0.6732012,-0.029372701],[0.23746303,-0.28121752,-0.6422261,-0.517458,0.11123861,-0.21673626,-0.02707978],[0.14627667,-0.5604455,-0.556298,-0.32100976,0.32297257,-0.35747936,0.035987776],[-0.28271908,0.46155292,0.36581132,0.38092643,0.5151189,-0.36064845,0.38086742],[-1.7228172,-0.6008753,-0.028210318,0.9336887,-0.7923858,-1.5424409,-1.1373487]],"activation":"σ","dense_2_b":[[0.3649016],[-0.28463706],[-0.18955103],[-0.0975359],[0.014972014],[0.19693135],[-0.20519742],[0.5246628],[-0.010990981],[0.14763328],[-0.051889963],[-0.065584496],[0.24132432]]},{"dense_3_W":[[-0.2141626,-0.5071306,0.47525346,-0.30042058,-0.13658617,0.33044663,-0.19224532,0.47024256,-0.43578166,-0.17088617,0.11608789,-0.46500286,-0.25973997],[-0.69258684,-0.4011068,0.47469568,0.40183055,-0.6213789,-0.5464064,-0.21653396,-0.016826013,0.18607092,-0.6653599,0.15087543,-0.011308093,-0.69397706],[-0.55069065,-0.4436314,0.4907695,0.59020114,-0.2770053,-0.10887845,-0.5752601,-1.0579756,0.44049686,-0.7758806,-0.5634297,0.25996745,-1.2285975]],"activation":"identity","dense_3_b":[[-0.0030500097],[0.016847884],[0.21006793]]},{"dense_4_W":[[-0.8614738,1.2687197,0.32792068]],"dense_4_b":[[0.007946701]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'zxc0x04x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'zxc0x04x00'.json deleted file mode 100755 index d738a84d5c..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019 b'zxc0x04x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.614999],[0.88142365],[0.4115542],[0.04286995],[0.8717417],[0.8741691],[0.8768661],[0.87092763],[0.86162114],[0.8471719],[0.83313096],[0.042673744],[0.04272682],[0.042776305],[0.04276147],[0.042682905],[0.042456076],[0.042026334]],"model_test_loss":0.020124401897192,"input_size":18,"current_date_and_time":"2023-08-10_20-02-36","input_mean":[[22.85947],[-0.016667789],[0.0068580806],[-0.012056368],[-0.020457769],[-0.019109555],[-0.018067708],[-0.017776748],[-0.018178418],[-0.018938173],[-0.020024292],[-0.011968072],[-0.011980279],[-0.011996548],[-0.012103643],[-0.01220858],[-0.012383698],[-0.012489372]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.08823245],[-1.1790096],[1.2441144],[-0.011465203],[1.0564277],[0.0697024],[-1.3683548]],"dense_1_W":[[0.0014331031,0.30712977,0.039872505,0.80071706,-0.06956878,-1.9827149,1.0480732,-0.021383282,0.005184354,0.0075036837,-0.20064104,-0.3831549,-0.048222806,-0.46527135,0.28325924,0.08959743,0.16869979,-0.19650029],[-0.47628394,1.0323036,0.0727205,-0.12824745,-0.03173074,0.8555501,-1.0978942,-0.3188049,-0.23511048,-0.108945906,0.25071257,-0.13640903,0.22402667,0.2394587,-0.2969934,-0.05407172,0.23281921,-0.08285842],[0.5358869,0.30272746,0.73764825,-0.47511554,-0.67684716,1.2363486,-0.9340444,-0.06546125,0.26209694,0.1302329,-0.31725046,-0.26148638,-0.084479555,0.05804304,0.812802,0.13063046,0.061406944,-0.28873906],[-0.006784061,-0.19369683,0.5173411,-0.14995524,0.69393647,-0.8419515,1.0821712,-0.57659614,-0.5480855,0.040282447,0.3126287,0.14098974,0.21859266,-0.27093312,0.17456277,-0.07563259,-0.03413685,0.0682818],[0.49518052,0.9090121,0.07206266,-0.07255221,-0.40314698,1.3829393,-1.300141,-0.10262215,-0.14204547,-0.16600157,0.189207,0.114158854,0.5331006,-0.039711166,-0.51919204,-0.41197154,0.16707423,0.21446657],[-0.010184907,2.5707195,4.8210435,-0.59082705,-2.13527,-0.02737542,-0.084925294,-1.5004889,1.5263844,0.82498163,-0.750615,0.46455646,0.5213816,0.3898705,-0.31170332,-1.3961885,0.08791534,0.6026678],[-0.604111,0.33238423,0.7429127,-0.4376858,-0.1869525,1.0722656,-1.3618989,0.13231814,0.12388613,-0.027485399,-0.14985481,0.01705928,-0.40608093,-0.46543834,1.1232054,0.62169623,0.074105,-0.5730497]],"activation":"σ"},{"dense_2_W":[[0.66628206,-0.3684147,0.29401556,0.33376765,-0.20291045,-0.43510544,-0.49534982],[0.3000001,-0.27556387,-0.4702806,-0.012585157,-0.4258327,0.33206144,-0.23892596],[0.4380561,-0.38661313,0.19346173,-0.010281955,-0.6983228,-0.7392101,0.36173314],[-0.90225124,0.7195273,0.5120532,-0.4113813,0.3908176,-0.19042808,0.5445649],[-2.0083435,0.1796547,0.53105164,-0.43887454,0.55858135,0.095837146,1.0666932],[0.94471526,-0.7361511,-0.3394616,0.5484322,0.21810979,-0.04098551,-0.55697936],[-0.17648907,-0.1659118,0.09883211,-0.019644987,0.09760398,-0.2444248,-0.23118357],[0.012475254,-0.2854982,0.77410185,-0.5734643,0.86467403,0.57916874,0.36548907],[0.21869864,-0.059679627,-0.8418387,-0.3505286,0.19995454,-0.18443146,-0.3518136],[0.733226,-0.8237715,0.11591505,0.12030088,-0.16572322,-0.29059696,0.033399917],[0.4081683,-0.40732962,-0.696102,0.46398422,-0.9380676,-0.117172115,0.06541085],[-0.636597,0.5673404,-0.18129148,-0.80558836,0.3210611,0.22610644,0.059019666],[-0.17355403,0.38050172,0.7130264,-0.49735093,0.6084085,0.47226894,-0.23599635]],"activation":"σ","dense_2_b":[[0.15390728],[-0.27060974],[0.051722474],[-0.18110798],[-0.45624837],[0.005322652],[-0.048935406],[-0.13153522],[-0.2941039],[0.02853757],[0.031165767],[-0.283588],[-0.11898526]]},{"dense_3_W":[[-0.6583376,-0.1158339,-0.5825397,0.38649017,0.6810171,-0.48431656,0.18096629,0.5144921,0.03614329,-0.6123482,-0.3714544,-0.12423297,0.5612449],[0.21774262,0.41141757,0.5053978,0.036839064,0.012879289,-0.01591902,-0.39873704,-0.15116392,0.39331844,0.013287693,-0.51785904,-0.40162948,0.036296766],[-0.6850239,-0.028873632,0.09147937,0.6863797,-0.22511397,-0.7087885,-0.38730666,0.30543882,-0.19349012,0.35246828,-0.21587896,0.49934873,0.63229257]],"activation":"identity","dense_3_b":[[-0.018641375],[-0.010103108],[-0.022765955]]},{"dense_4_W":[[1.1674396,-0.010352109,0.70566726]],"dense_4_b":[[-0.022187218]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x00'.json deleted file mode 100755 index fd0b885f31..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.149806],[1.0466807],[0.48216617],[0.03926948],[1.0378215],[1.0405693],[1.0433956],[1.034937],[1.0209817],[1.0002661],[0.97917086],[0.03917731],[0.039209686],[0.039230634],[0.039230503],[0.039089043],[0.03877449],[0.038412858]],"model_test_loss":0.0086250901222229,"input_size":18,"current_date_and_time":"2023-08-10_21-44-49","input_mean":[[24.784973],[0.022257574],[0.0018790626],[-0.0014456466],[0.021444617],[0.021993408],[0.022768045],[0.024583662],[0.0267569],[0.026212335],[0.025587328],[-0.0014159543],[-0.0014121836],[-0.0014230785],[-0.0014949344],[-0.0015499452],[-0.0016750016],[-0.0018316169]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.11915471],[0.4647498],[-0.18471648],[-0.05602483],[0.7303728],[-0.020603865],[0.08058517]],"dense_1_W":[[0.02919073,1.8689783,4.4265075,0.16716953,-3.2808,-1.9433872,-1.6631875,0.64648163,3.702317,1.9939891,-0.7665767,0.8001585,0.7883229,-0.39065278,-0.15145746,-0.16460232,-1.2793592,-0.002752089],[0.60766363,-0.8283458,0.086918816,0.49001363,0.1764836,1.6148571,-1.172861,0.28852218,-0.12384417,0.22311504,-0.038648173,0.08665237,-0.22122696,-0.1211155,-0.16418546,-0.06580166,-0.12981877,0.1223207],[-0.0611153,2.1892653,4.1823645,-0.020211374,-0.126075,-0.26824856,-0.21868485,0.009974396,0.54638195,0.08174665,-1.6289697,0.13641535,-0.026207518,0.037753426,0.0224,-0.30633605,-0.18595642,0.18627088],[-0.006284281,-0.9393309,0.131348,0.27939406,0.15329085,-1.1371962,0.67140526,0.23289137,-0.25185016,0.14388521,-0.20779973,-0.51052564,-0.30346033,0.5853443,0.3393873,-0.16495557,-0.28405264,0.07844043],[0.7133973,0.36651134,-0.09357234,0.053284127,-0.32661018,-1.1806043,1.2274599,-0.13515554,0.15792286,-0.40642232,0.14303061,-0.012403075,0.007870057,0.0046764547,-0.06777944,-0.23694073,0.4407839,-0.18311372],[0.063063905,-0.105903134,-0.07843828,-0.14851844,0.09402292,-0.94803673,0.9120545,-0.20011538,-0.16328399,0.105953924,0.057462662,0.09776021,-0.14990965,-0.06046959,0.15974031,0.2219897,0.004509259,-0.1270214],[0.0070889555,-0.44478884,0.06164922,-0.122812085,0.30908406,1.5513293,-0.5627223,0.25208586,0.123981394,-0.111266494,0.066460505,0.043457642,-0.06717314,-0.4400081,-0.30934328,0.038612906,0.059938014,-0.23997127]],"activation":"σ"},{"dense_2_W":[[0.36688,-0.19320922,0.28094387,-0.9803768,-1.1758837,-0.99039465,0.49203432],[-0.28640324,-0.72820544,-0.4875037,0.1816081,-0.5080949,0.39986604,-0.2271453],[-0.20991027,-0.33078238,0.36123854,-0.4010081,0.42690548,0.5543692,-0.66790026],[0.028127942,-0.46438977,-0.2351104,0.114041865,-0.8311537,-0.69191617,0.13150403],[0.6023005,3.1064928,0.30146995,-1.728805,0.39918655,-1.0887272,0.8644791],[0.17403108,-0.5989185,-0.5602132,0.23924266,0.047311135,-0.21583998,-0.08689489],[-0.408518,-0.67819715,-0.48529884,-0.43457308,-0.6859549,-0.72042423,-0.10757325],[0.13631205,0.05900456,-0.31221914,-0.42799878,-0.5074306,-0.066171676,0.2549441],[0.38185734,-0.41993743,0.16787384,0.48273364,0.23232572,0.16146578,0.1430547],[0.36192957,0.7118042,-0.11004752,-0.44175497,0.037270173,0.11878499,0.21234997],[-0.45457327,0.13838753,0.22052445,0.07949341,-0.62185955,-0.6223187,-0.597313],[-0.22084583,-0.1706968,-0.31476033,0.620582,0.66211015,0.5056345,-0.30923542],[-0.14307842,-0.09773044,-0.11317682,0.31420723,-0.032641448,0.05758633,-0.23174715]],"activation":"σ","dense_2_b":[[-0.1766578],[0.0030768153],[0.011622017],[-0.2613647],[0.41335022],[-0.029892111],[-0.27720392],[-0.03462619],[-0.03277327],[-0.033704933],[-0.23574014],[0.07590818],[-0.0031470906]]},{"dense_3_W":[[0.44066054,-0.5858187,-0.49569857,-0.27353624,0.016213497,-0.59161377,-0.48449734,0.46109423,-0.0024176766,0.34991503,-0.13543713,-0.48638907,-0.19906554],[0.669034,-0.12078269,0.06202367,0.44989127,0.5493621,0.336327,0.4797354,0.5557385,-0.36501727,0.26719907,0.3279164,-0.33229584,-0.3502743],[-0.5095002,-0.2236471,0.21968824,0.042991508,-0.38274318,-0.11278709,-0.5325957,-0.45203722,-0.12108213,-0.19157046,0.58804715,0.48384163,0.023208706]],"activation":"identity","dense_3_b":[[0.0001239895],[-0.013890755],[0.030029856]]},{"dense_4_W":[[1.067811,0.9453486,-0.14499813]],"dense_4_b":[[-0.002235052]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x01'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x01'.json deleted file mode 100755 index 6f5ea46958..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'nxc0x04x01'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.433109],[0.9277941],[0.4133138],[0.042486828],[0.91961175],[0.9212083],[0.9230463],[0.9178699],[0.90644723],[0.8922139],[0.87602633],[0.042294905],[0.042328734],[0.04236129],[0.042348858],[0.04222418],[0.04196347],[0.041606702]],"model_test_loss":0.006344182416796684,"input_size":18,"current_date_and_time":"2023-08-10_22-11-17","input_mean":[[27.48561],[-0.045379456],[0.000610541],[-0.0075939377],[-0.04516856],[-0.04590259],[-0.04635042],[-0.0455905],[-0.044134438],[-0.047893465],[-0.04872525],[-0.0075862017],[-0.007591181],[-0.0075963517],[-0.0077280067],[-0.007869005],[-0.008030396],[-0.008253526]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.13907726],[0.91428226],[-0.08902528],[-0.8122626],[2.4960856],[0.6941552],[3.1465714]],"dense_1_W":[[0.012394863,2.442848,6.000615,-0.9667802,-2.4481606,0.04116472,-0.298802,-0.45781717,1.0988615,1.5439192,-1.6183215,1.5120034,0.70879805,0.33042568,-0.6360781,-0.72864187,-0.42245787,0.1924922],[-0.039127346,-2.5879724,0.45108536,0.10737795,-1.9936459,-2.6408718,-0.10216445,-0.74508464,-1.0754778,-1.6742834,-0.6845894,-0.2893954,-0.6440116,-0.68839306,-0.8477463,-0.49898022,0.39530098,0.49870434],[-0.028086787,0.11074618,-0.029657526,0.53074354,-0.09886754,-0.50980574,1.6068281,-0.1943193,-1.0108532,-0.4594659,0.7215557,-0.24808267,0.30215025,-0.18002108,0.2840001,-0.57245183,0.10710855,0.07138346],[0.4541753,0.06447674,0.019618178,-0.050374724,0.13303722,1.2749394,-0.6110799,-0.06389013,-0.17551425,-0.02773791,0.21997307,0.28395706,-0.14487898,-0.20185138,-0.18616714,0.03085588,-0.22616515,0.1570019],[0.933303,-0.34038252,-0.065301575,-0.16815153,-0.48548433,-1.0974069,1.3661956,-0.6751278,-0.06634803,-0.05417734,0.008298623,-0.21462391,-0.17723723,0.39795777,0.2967163,0.078405224,-0.10986368,0.0066645048],[-0.44923598,-0.02191377,0.020238422,0.43116552,0.33337408,1.5234641,-1.2367504,0.123196624,-0.13720761,0.06765882,0.14065754,0.2515097,-0.3147324,0.12851562,-0.5540239,-0.48021403,-0.22485968,0.4229258],[1.1905549,0.10563058,0.08857988,-0.563186,1.1590731,1.2013718,-2.1805055,0.6349522,0.81047887,0.13184841,-0.23018143,0.040691454,0.22812058,0.2580085,-0.2708511,0.37357846,-0.14638875,-0.019385386]],"activation":"σ"},{"dense_2_W":[[-0.4165453,-0.17428897,-0.656896,0.56047696,0.075286396,0.29055318,0.6539704],[0.67952734,0.31715697,-0.38251033,-0.9062763,0.61300415,-0.6845408,-0.5751852],[0.33353442,-0.4632752,-0.45792413,-0.58633304,0.45437384,-0.8976134,-0.459859],[-0.28707662,-0.20765603,-0.09663817,0.0712579,0.030774899,-0.9440693,-0.11771196],[-0.034040477,-0.44995186,-0.34478307,0.7316748,-1.0665529,-0.03579851,-0.029609136],[0.2525717,0.42749283,-0.3511222,0.24611457,0.047738947,0.7055022,-0.096511096],[1.0310456,-0.14640242,-0.67039543,-0.05573537,-0.97901416,0.053892918,-0.95491844],[1.935988,-0.24661754,-0.47021067,0.26482674,-2.1922724,0.12265447,-1.0171564],[-0.27922088,0.047959074,-0.4585162,0.43318775,-0.022253482,0.6992371,0.366425],[-1.2182665,0.30541417,0.54548246,-0.82654715,-0.86802375,0.36274722,-1.2755734],[-0.55027056,0.3726949,0.29450348,-0.663457,-0.28297377,-0.7872144,-0.77983695],[-0.29113156,-0.57935303,-0.07371765,0.569743,-0.046916172,-0.095878035,-0.24269529],[-0.4188927,0.2442818,0.6791062,-0.24187906,0.8024283,0.36645007,0.15694125]],"activation":"σ","dense_2_b":[[-0.13162552],[0.14610669],[0.06542088],[-0.008890042],[-0.25142753],[-0.13560805],[-0.25826016],[-0.17347474],[-0.1645501],[0.07222336],[0.059977163],[-0.32542986],[0.18807274]]},{"dense_3_W":[[0.57400185,-0.65310407,-0.026245644,-0.21171129,-0.0046483884,0.5902724,-0.07411066,-0.13533744,0.33003673,-0.23319454,-0.7222472,-0.062199857,-0.31266594],[0.08517949,0.10523219,0.17653435,0.22985537,0.03910563,0.48629716,0.024153559,-0.2307055,-0.5041997,-0.12600066,-0.1328216,0.066026025,0.2542358],[-0.07466326,0.03751704,0.34207597,0.08640459,-0.55675924,-0.43693897,-0.5372613,-0.67614335,-0.008879703,0.5449217,0.60687166,-0.079967305,0.23276323]],"activation":"identity","dense_3_b":[[-0.057068646],[-0.010597932],[0.064764485]]},{"dense_4_W":[[0.7126766,-0.056579176,-0.97978544]],"dense_4_b":[[-0.058505826]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'x9axc0x04x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'x9axc0x04x00'.json deleted file mode 100755 index e20bbbb102..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020 b'x9axc0x04x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.236228],[0.9541643],[0.46896935],[0.037251],[0.942408],[0.94659024],[0.95044875],[0.9528363],[0.95431703],[0.9549371],[0.94726866],[0.037057787],[0.03711012],[0.037162427],[0.037273765],[0.03735724],[0.03742994],[0.037366863]],"model_test_loss":0.01245664618909359,"input_size":18,"current_date_and_time":"2023-08-10_22-36-02","input_mean":[[23.454796],[0.043741453],[-0.009617127],[0.008929559],[0.048594497],[0.0470797],[0.04575023],[0.04157434],[0.037163395],[0.031240081],[0.02667783],[0.00891148],[0.008930276],[0.0089419745],[0.0089975605],[0.00889156],[0.008654451],[0.008377715]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.08725138],[0.62947553],[0.55281675],[0.47698602],[-0.010579495],[0.5603157],[0.121154435]],"dense_1_W":[[0.010149323,0.0927383,-0.049159903,-0.92321444,0.5301868,1.6467744,-0.34752372,-0.7960734,-0.23776174,-0.47925645,0.85876715,-0.12972605,0.07995605,0.4340685,0.24205516,0.10737243,-0.12019449,-0.15221375],[0.06681955,-0.8268898,0.08758739,0.8848569,-0.36724785,-1.2158617,1.1197345,0.067235485,0.035998013,0.15957934,-0.3456709,0.58034456,0.4314829,0.35206887,0.54623073,0.46871477,0.18022528,0.060644507],[1.5824217,1.7102716,3.6078386,-0.0684419,-1.5800762,-0.6593468,-1.0315231,-0.30346423,1.6339799,1.228651,-0.4846987,0.3710236,-0.4006895,-0.34770697,0.8819552,-0.5398949,-0.32821923,0.17143293],[1.303329,-2.1399665,-3.1076748,0.23288973,2.0736525,1.078245,1.2427267,-0.34367758,-2.3364317,-1.4993668,1.4313731,0.25981635,-0.069500186,-0.007198234,-1.0189565,0.4751188,0.6546988,-0.30582112],[0.0036950526,0.04958046,-0.041147415,-0.23472723,0.24974303,-1.5454353,1.8054543,-0.6608297,-0.26494673,-0.4223114,0.47601548,0.24096386,-0.38269913,-0.12060513,0.5988521,0.036612313,0.05911714,-0.14717643],[0.08024163,1.0550786,0.07653441,0.4824589,-0.5017987,0.01434394,-1.376971,-0.131279,0.006976325,-0.22164595,-0.06650469,0.74893504,0.41389975,0.5270169,-0.2144425,0.6345238,0.68122786,-0.1719554],[-0.07933006,2.3567731,0.0042914962,0.74784595,2.28212,2.9230127,0.23938161,1.0576327,0.23800474,0.61905783,0.1781994,0.63615847,0.0073392615,-0.002428518,0.5748812,-0.15760459,-0.54738325,-0.36927438]],"activation":"σ"},{"dense_2_W":[[-0.21508381,0.9633951,0.5315358,0.92654145,0.28553194,0.039701536,-0.18630505],[-0.1678206,0.207308,0.40976796,0.08400935,-1.1243716,0.39975542,-0.330028],[-1.1226933,0.52033097,1.0243174,-0.62620866,1.505394,-0.3176458,-0.777051],[0.693296,-0.28314844,0.4684673,0.17668417,-0.82024777,-0.012310348,-0.5580614],[0.24386548,-0.4684305,-0.25006077,-0.4782456,-0.47599876,0.5501203,0.062193394],[-1.3514801,0.9189132,-0.7240175,-0.28889558,-0.18423705,-0.08741435,0.24606031],[-0.67244714,0.47862688,-1.0843797,-1.111484,0.4975643,-0.52863014,-1.5702293],[0.06620587,-0.3826648,0.0595068,-0.31371126,-0.9359945,0.5710785,0.30018663],[-0.08168836,-0.51131517,-0.073826596,-0.008216051,-0.54347867,0.20297381,-0.6430736],[0.4543929,-0.49646172,0.43142736,-0.66066104,-0.23015887,0.028297924,-0.05720952],[-0.52589,0.61320555,-0.7472295,0.4251358,0.8921376,-0.78721434,0.28226647],[-0.711873,0.25582448,0.14650942,0.4705447,0.64871144,-0.113993205,-0.037552968],[0.41052327,0.18220364,0.35270774,-0.49306205,-0.956854,0.4278162,-0.03011779]],"activation":"σ","dense_2_b":[[0.10105641],[-0.09731066],[0.0055902563],[0.15583935],[-0.1778042],[-0.31665945],[-0.35505518],[-0.011538101],[-0.15872312],[0.123221055],[-0.20084055],[0.12061009],[-0.092269965]]},{"dense_3_W":[[0.34495553,-0.52540576,0.48382422,-0.21559586,0.16588818,0.4986695,0.7247998,-0.20436342,-0.21009935,-0.33020142,0.42502496,0.23494504,-0.6989969],[-0.43483838,-0.16045101,-0.7069782,0.6482748,0.6546552,0.19802035,-0.19270848,0.603569,0.15212789,0.32036832,-0.1777731,-0.59341335,0.37551636],[-0.23369972,-0.018393897,-0.23587896,0.03520326,-0.4262701,0.34585303,0.126404,-0.4852999,0.50604486,0.18693419,0.6988773,0.2218146,-0.40111375]],"activation":"identity","dense_3_b":[[-0.077010185],[0.06201826],[-0.041295182]]},{"dense_4_W":[[-0.8782402,0.5793239,-0.13800435]],"dense_4_b":[[0.0672247]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN b'x9bxc0x10x00'.json b/selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN b'x9bxc0x10x00'.json deleted file mode 100755 index 83a9167915..0000000000 --- a/selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN b'x9bxc0x10x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.572336],[1.1483445],[0.42820358],[0.048202544],[1.1448809],[1.1459116],[1.1458608],[1.1237723],[1.1024351],[1.0727179],[1.0412753],[0.047973968],[0.048014168],[0.04805022],[0.048102845],[0.04802677],[0.04776489],[0.04739827]],"model_test_loss":0.026644039899110794,"input_size":18,"current_date_and_time":"2023-08-10_23-31-10","input_mean":[[24.136143],[-0.042093538],[0.013022028],[-0.0036085332],[-0.0470961],[-0.0462333],[-0.04523365],[-0.040591415],[-0.036471754],[-0.03127247],[-0.027871577],[-0.0038120802],[-0.0037680487],[-0.003724908],[-0.0035597768],[-0.0034507068],[-0.0033237508],[-0.0032780103]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.05131335],[-0.22923447],[-0.014189909],[0.09295414],[-2.8221803],[2.6356938],[-0.1626522]],"dense_1_W":[[-0.0006246851,-1.937167,0.02453268,0.124314785,-0.07763876,-1.3915496,0.6514346,0.062224012,-0.3782371,0.045342997,0.0131263565,-0.07671119,0.2950009,0.5244766,0.24981722,-0.6029727,-0.1914875,0.17850396],[3.6474159,-0.3351425,-0.13860475,0.017950775,-0.5807133,-0.48789144,-0.33976758,-0.092757314,-0.5980742,0.16750406,0.022784369,-0.0036915683,0.2978329,0.22988808,0.5386405,0.8470415,0.41101706,0.8745821],[0.00071263144,0.34790343,-0.025052998,-0.2664853,0.1425834,-1.2502533,0.901666,-0.40636706,-0.07849224,0.18394355,-0.039707936,-1.0538421,-0.278847,0.80892915,0.6621467,0.35024366,0.22499272,-0.44423023],[5.855231e-5,2.4907784,6.5716834,-0.76951736,-2.4156885,-0.6084292,0.32178223,-0.12523341,0.017727956,2.4002576,-1.4535077,1.1310626,0.7982315,0.10428222,-0.34654096,-1.1077892,-0.17795445,0.20854695],[-0.6954145,0.84418166,0.0098673105,0.052796964,0.26646963,1.0693092,-1.161872,-0.3446245,0.8000167,0.6914431,-0.18510826,0.27281952,-0.013284309,-0.51565313,-0.14262609,0.20675737,-0.08539979,0.11145477],[0.68266046,0.9602112,0.009963625,-0.1402191,0.20056713,1.5516362,-1.738518,-0.2687681,0.82588196,0.6286699,-0.16402455,0.6550529,-0.15899514,-0.72548264,-0.29978648,0.7046594,-0.24264838,0.08307443],[4.025976,0.7285796,0.14887388,-0.6201622,0.13705282,0.47417828,0.4768622,0.35751063,0.19407505,0.7661748,-0.6106113,0.17202562,-0.2742306,0.21339923,-1.1030523,-0.35447115,-0.85436875,-0.7747486]],"activation":"σ"},{"dense_2_W":[[0.46410686,0.62191635,-0.062384292,-0.5430435,-0.695603,0.057965573,-0.52540386],[0.6584527,0.21343426,0.17701761,-0.69918996,-0.049447756,-0.037598107,-0.5069386],[-0.44375354,-0.26292452,-0.64291656,0.63415337,0.26265192,-0.11597562,0.15929869],[-0.812513,0.10907013,-0.8120618,-0.19890812,0.8949706,0.5529603,0.13160336],[0.1050679,0.5375794,0.6706402,-0.041373048,-0.6123938,-0.44150752,-0.34567338],[-0.40558782,0.11219362,-0.5137659,0.38914016,0.22155257,0.522915,-0.50805056],[0.63432807,-0.43097767,0.5424638,-0.31058156,0.0059383763,-0.3071036,0.523059],[0.34565827,0.36890084,0.48656797,0.107707486,-0.46674815,-0.2624921,-0.4052778],[-0.022453148,0.6077112,-0.5046755,1.402873,-0.6407784,0.8215227,0.25630465],[0.03767525,-0.2515635,-0.56157374,0.22053413,0.5938849,0.04716324,-0.55130476],[0.02723474,0.6362109,-0.7232292,-0.18455642,0.45341918,1.2936736,-0.802384],[0.06902041,-0.60314816,-0.22065936,0.08411181,-0.19968052,-0.4402093,0.5050189],[-0.58374166,-0.4504642,-0.1112549,0.46519062,0.15296236,-0.15458451,-0.00064379047]],"activation":"σ","dense_2_b":[[-0.014328261],[-0.034038804],[-0.056317214],[-0.025555097],[-0.023897748],[-0.27516785],[-0.03674292],[-0.04560086],[-0.13362178],[-0.17087862],[-0.1543581],[-0.063457526],[-0.20349929]]},{"dense_3_W":[[0.13543664,0.6195368,-0.43438953,-0.59657305,0.5921997,-0.14353473,0.44341394,0.5110973,-0.33468905,-0.41089338,-0.19091435,0.34869814,-0.3758429],[0.30076426,-0.21575679,-0.38356882,-0.036623813,0.2787459,-0.3038595,0.44368634,0.27318835,-0.63082767,0.14850685,-0.27673995,-0.14115706,0.30847898],[0.2674523,-0.39884198,0.21306512,0.41216707,-0.02011493,-0.04432381,0.3676808,-0.016420744,-0.40233457,-0.1554329,-0.009226843,0.43924707,-0.23986638]],"activation":"identity","dense_3_b":[[0.017441018],[0.01997646],[-0.017420627]]},{"dense_4_W":[[-1.0507979,-0.56773245,0.31234828]],"dense_4_b":[[-0.019663213]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019.json b/selfdrive/car/torque_data/lat_models/SUBARU_ASCENT.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU ASCENT LIMITED 2019.json rename to selfdrive/car/torque_data/lat_models/SUBARU_ASCENT.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019.json b/selfdrive/car/torque_data/lat_models/SUBARU_FORESTER.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU FORESTER 2019.json rename to selfdrive/car/torque_data/lat_models/SUBARU_FORESTER.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019.json b/selfdrive/car/torque_data/lat_models/SUBARU_IMPREZA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU IMPREZA LIMITED 2019.json rename to selfdrive/car/torque_data/lat_models/SUBARU_IMPREZA.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020.json b/selfdrive/car/torque_data/lat_models/SUBARU_IMPREZA_2020.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU IMPREZA SPORT 2020.json rename to selfdrive/car/torque_data/lat_models/SUBARU_IMPREZA_2020.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU LEGACY 7TH GEN.json b/selfdrive/car/torque_data/lat_models/SUBARU_LEGACY.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU LEGACY 7TH GEN.json rename to selfdrive/car/torque_data/lat_models/SUBARU_LEGACY.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU LEGACY 2015 - 2018.json b/selfdrive/car/torque_data/lat_models/SUBARU_LEGACY_PREGLOBAL.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU LEGACY 2015 - 2018.json rename to selfdrive/car/torque_data/lat_models/SUBARU_LEGACY_PREGLOBAL.json diff --git a/selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN.json b/selfdrive/car/torque_data/lat_models/SUBARU_OUTBACK.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/SUBARU OUTBACK 6TH GEN.json rename to selfdrive/car/torque_data/lat_models/SUBARU_OUTBACK.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016 b'8965B41051x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016 b'8965B41051x00x00x00x00x00x00'.json deleted file mode 100755 index dc9102a55c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016 b'8965B41051x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.155588],[1.2222154],[0.51593876],[0.045921255],[1.2146778],[1.2164576],[1.2193325],[1.2000308],[1.184473],[1.1582026],[1.1294578],[0.0457375],[0.04576663],[0.04578905],[0.04568079],[0.04555454],[0.04528545],[0.044940177]],"model_test_loss":0.0077543435618281364,"input_size":18,"current_date_and_time":"2023-08-11_00-22-19","input_mean":[[25.38624],[-0.109525174],[-0.0071247322],[-0.008090862],[-0.108410954],[-0.11049666],[-0.11148748],[-0.11183658],[-0.110412374],[-0.111614786],[-0.109395765],[-0.008206939],[-0.008208384],[-0.00822236],[-0.008191385],[-0.0081957765],[-0.008351754],[-0.008558403]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.147119],[-0.7151291],[-0.06542077],[-2.6854012],[-2.9215784],[-0.6333571],[-0.3588006]],"dense_1_W":[[0.050412737,-0.7688983,0.051297277,0.20422332,0.29614073,-0.7492136,0.6221707,-0.28156716,-0.25521812,-0.04673187,0.27558443,-0.7143839,-0.37546682,0.5423986,0.43472832,-0.09003486,-0.1610108,-0.13676094],[-0.86945575,-0.066927284,-0.060515594,-0.049497765,0.37880427,-0.4104487,0.99254173,-0.24023093,-0.22767603,-0.14191294,0.21729311,0.27627876,-0.03367094,0.08543982,-0.105297364,0.16060211,-0.23347247,0.2110998],[0.041003693,0.0019961689,-0.011989706,0.2586212,-0.2982694,1.1390727,-0.09271339,0.011216761,-0.07928292,-0.31107566,0.30151826,0.32163844,-0.111424804,-0.111504324,-0.54352456,0.08193889,-0.09293932,0.1449024],[-0.6092506,-0.34562534,-0.19357689,0.102853455,-0.076768324,-0.9644875,0.3549321,-0.35967496,-0.16627687,-0.3403019,0.100230105,-0.4866395,-0.054948322,0.3741284,0.2193991,0.1279479,-0.07926067,0.061663166],[-0.5892953,0.5779403,0.18596417,0.027102116,0.23143159,0.8041496,-0.5180442,0.17604749,0.13967356,0.3647289,-0.08085053,0.4862775,0.16692553,-0.6730509,-0.07277034,-0.0592746,-0.21806034,0.08425947],[-0.9096294,-0.17975268,0.062644206,0.16992755,-0.027315069,0.18641698,-0.2329115,-0.40319765,0.0728141,-0.022310384,0.15630817,0.19813018,-0.10582375,-0.52104795,-0.120786585,0.1117218,0.06465282,-0.11865458],[-0.032926153,1.0616482,6.864475,-0.11564605,-0.14158455,-0.4117831,-0.76951504,0.10398355,0.7756398,0.61653835,-1.1051329,1.1516933,-0.017778216,-0.34992045,-0.15732552,0.10676282,-0.53930724,-0.00068106386]],"activation":"σ"},{"dense_2_W":[[0.607369,0.045042686,-0.90820694,0.69801354,-1.0983257,-0.2685714,0.34300095],[-0.67589545,0.1324981,0.14731272,-0.85306466,0.5206796,0.7536436,0.09453407],[0.6423009,0.57089245,-0.4761381,0.6488958,-1.2223575,-0.8009584,0.3689039],[0.29086414,0.10636214,-0.45522293,0.20708704,-0.15621087,-0.78096426,-0.048316985],[-0.3550279,1.0548292,-0.88649863,1.015021,0.2844367,0.20109054,-1.1682143],[0.965661,-0.14941974,-0.7082443,0.19087248,-1.4366155,-0.36316642,0.28074083],[-0.21697107,0.5959022,-0.7900999,0.34238023,0.22955489,0.51429254,-1.3292482],[0.02833417,0.38777432,-0.41333404,0.41482702,-0.6048467,-0.38053027,-0.03946799],[-0.122554004,-0.105075054,0.72700727,-0.087382294,0.37528226,0.65905285,-0.4292818],[-0.47591224,-0.3380254,0.6051541,-0.2619172,0.30789238,0.24751364,0.37409812],[-0.08474495,-0.46902463,0.37705857,-0.61829376,0.35094222,0.6649397,0.07235656],[-0.6540115,-0.46159643,0.66689605,-0.59667706,1.0229484,0.06419672,-0.12906657],[0.14077464,0.25589386,-0.705507,0.41406876,-0.5768568,0.08440071,-0.3479489]],"activation":"σ","dense_2_b":[[0.06355875],[-0.17415898],[-0.1774852],[-0.11819309],[-0.41535345],[-0.1463154],[-0.38811693],[0.09710054],[-0.05073436],[-0.11638209],[-0.14782049],[-0.102039225],[0.13234599]]},{"dense_3_W":[[-0.17214395,0.5678262,-0.11139721,-0.08668092,-0.27163222,0.13644972,0.52798116,-0.08823449,-0.5390309,-0.41089463,-0.5085388,-0.5108906,0.6503059],[-0.49004817,0.507694,-0.28311312,-0.27198496,-0.6048582,-0.32954597,-0.027210526,-0.598534,0.24722685,0.6126394,0.63478196,0.4942442,-0.35184625],[0.66657585,-0.16694659,0.27015567,-0.4425793,-0.12436591,-0.39648074,0.17227231,0.61576825,0.53334814,-0.54657924,0.16337119,-0.4853141,-0.29025096]],"activation":"identity","dense_3_b":[[0.07506834],[-0.027431693],[0.033431824]]},{"dense_4_W":[[-0.19975226,1.0868903,-0.14778052]],"dense_4_b":[[-0.030237392]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019 b'8965B07010x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019 b'8965B07010x00x00x00x00x00x00'.json deleted file mode 100755 index 971abf4ae7..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019 b'8965B07010x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3547435],[0.9349845],[0.3416719],[0.03020802],[0.9287519],[0.93094236],[0.9321697],[0.9195053],[0.90565664],[0.88330543],[0.85894924],[0.03025142],[0.030234234],[0.030215727],[0.030088654],[0.030025238],[0.029914714],[0.029875476]],"model_test_loss":0.007811516057699919,"input_size":18,"current_date_and_time":"2023-08-11_01-12-12","input_mean":[[27.099766],[0.021257939],[-0.009488095],[-0.0040843748],[0.024692915],[0.023505691],[0.0221261],[0.019820152],[0.016889216],[0.016442697],[0.016379314],[-0.0040564938],[-0.004047964],[-0.004046166],[-0.0040283427],[-0.0039906264],[-0.0039846366],[-0.0040857326]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.2157677],[-2.3838754],[3.0455196],[0.8014893],[0.07945207],[3.106963],[2.1556125]],"dense_1_W":[[1.1125633,-0.56988466,-4.0888886,-0.15938745,0.6582105,-0.46116465,-0.41639355,0.04232433,-0.59602994,-0.32990792,1.0122606,-0.49626034,-0.13254666,0.37965775,0.3581549,0.51340127,-0.18809582,-0.113844536],[1.1409476,-0.52942747,0.0009779995,0.17279683,0.42025048,-1.0194471,0.19619784,0.018046845,-0.05372719,0.19695577,-0.14354223,-0.35454744,-0.4519569,0.3006548,0.89002454,-0.13396992,0.37972572,-0.4401214],[1.3309811,1.4823053,0.2582569,-0.032915797,-0.28236762,0.4846734,-0.15269001,0.3552266,0.30250248,0.14145501,-0.27240917,0.4871061,0.5173212,-0.7224162,-0.27998483,-0.41258854,0.20030643,0.14221442],[0.7907197,1.6901718,5.3816576,-0.27129257,-1.145268,0.31147382,0.019620774,0.17815213,0.4287783,0.04148877,-0.8830161,0.44120663,0.42428204,0.22440527,-0.92130196,-0.22413124,-0.33906758,0.54252696],[-0.012449405,1.7189058,-0.011069483,-0.08866588,0.0305128,0.9370316,-0.35130048,-0.024127513,0.24698113,0.31200036,-0.14631376,-0.17734727,0.21231978,-0.45571813,-0.14337474,0.32901996,0.2770767,-0.34568372],[1.3784999,-1.3435363,-0.2745729,0.25279233,0.07493813,-0.42336947,-0.063481055,-0.31757474,-0.12468922,-0.118494295,0.1393878,-0.64342916,-0.024168873,0.13941756,0.21592365,0.3690261,0.13736965,-0.3378454],[-1.1883208,-1.0948199,0.0016973034,0.36374646,0.6156439,-0.702277,0.4276083,-0.17839254,-0.15477405,-0.0038111163,0.15055132,-0.24193537,-0.24351074,-0.2785849,0.9893942,-0.10433792,0.28482616,-0.3947434]],"activation":"σ"},{"dense_2_W":[[-0.41992396,1.2538254,-1.3762401,0.18826605,-1.2015911,1.0849522,0.95279044],[-0.554603,-0.46099252,-0.21578617,0.045173306,0.6597546,-0.67514,-0.10196972],[-0.062698506,-0.5813329,-0.4847704,0.3779744,-0.18567432,-0.012139243,0.13781239],[0.54706806,0.63951415,-0.85959625,0.06293286,-0.7042504,0.8421599,0.5909391],[0.46164697,0.4020649,-0.33452457,-0.014348776,-0.62764764,0.124300346,0.9453233],[-0.3903317,0.6063093,-0.43484682,-0.2860064,-0.8296564,0.7835651,0.21584539],[0.175473,-0.5825516,-0.22237642,0.07386135,-0.3432968,-0.3868117,-0.21827103],[-0.5004876,0.97018445,-0.43547085,0.36776522,-0.27490538,0.48544273,0.9886506],[-0.6295581,-0.7262303,0.18957756,0.4320069,0.15381597,-0.37602007,-0.3400327],[-0.18816905,-0.27860478,0.91212904,0.38390306,0.2492882,0.12610404,-0.27094096],[0.037768684,0.45618993,-1.6272914,-1.0754924,-0.6273605,0.48672768,0.96011865],[-0.33102858,-0.027864542,0.42045346,0.14589894,0.015219363,-0.13589944,-0.77460396],[0.17902899,-0.50285494,-0.4366347,0.16011943,0.070149496,-0.4917402,0.015056903]],"activation":"σ","dense_2_b":[[-0.22400843],[-0.01302815],[-0.03749996],[-0.11806751],[-0.11926077],[-0.09058484],[0.06280237],[-0.2770851],[0.030630045],[0.07445694],[-0.22077157],[0.09475054],[-0.29818374]]},{"dense_3_W":[[-0.010462812,-0.24828628,0.041264076,0.5696833,0.15721063,-0.0060403845,0.0508466,-0.10241195,0.11243323,-0.5261026,0.49312815,-0.60535157,-0.22609983],[0.66831225,-0.3054378,-0.1565705,-0.031996824,0.26015618,0.4501768,-0.6939041,0.5919593,-0.69475293,-0.031049775,-0.053406052,0.018912103,0.13819246],[-0.50486624,-0.55928755,-0.53656745,0.48358017,0.5427902,0.50403154,0.46978712,-0.30256158,-0.14531422,-0.0904506,0.031830106,0.5406881,-0.063055396]],"activation":"identity","dense_3_b":[[-0.068349525],[-0.07652613],[-0.057301868]]},{"dense_4_W":[[-0.72008973,-0.7991561,-0.02538519]],"dense_4_b":[[0.07405978]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022 b'8965B41110x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022 b'8965B41110x00x00x00x00x00x00'.json deleted file mode 100755 index 95fdae0f2d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022 b'8965B41110x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.376161],[1.2838221],[0.5474099],[0.04934304],[1.2836047],[1.2821697],[1.2806356],[1.258706],[1.2369865],[1.2116693],[1.183833],[0.049019773],[0.04906449],[0.049113937],[0.049148172],[0.049036138],[0.048767343],[0.048263323]],"model_test_loss":0.008681067265570164,"input_size":18,"current_date_and_time":"2023-08-11_02-26-47","input_mean":[[23.067476],[-0.03387557],[0.0021314505],[-0.00026479672],[-0.0335918],[-0.03408871],[-0.034120698],[-0.033429306],[-0.03334599],[-0.035154633],[-0.03337258],[-0.0003344364],[-0.00031001537],[-0.0002858812],[-0.0002081701],[-0.00014168753],[-0.00010316148],[-0.0001947083]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.00035714143],[-0.44112498],[-2.0768487],[0.033623725],[2.3311365],[-0.2579414],[0.068420805]],"dense_1_W":[[-0.00509446,-0.23187363,-1.2282524,-0.8727873,-0.20932141,0.4933777,-0.6846191,0.32296148,0.60479945,-0.27046466,-0.14131822,-0.012867556,0.5326964,-0.12989101,0.29854774,0.2623998,-0.22680795,0.051163733],[-0.059410393,0.43026504,0.010004543,0.2136965,-0.26893613,0.8620313,-0.18596862,-0.13626388,-0.107266344,-0.1622253,0.22793797,0.35623074,-0.27369574,-0.48247203,0.1288161,-0.14182153,0.17263421,-0.15390971],[-0.64431036,0.55822396,-1.3443316,-0.12504154,0.01676618,-0.694321,0.6168717,-0.6036482,-0.25818932,-0.11348284,0.24836093,0.107356064,0.13224693,0.04477359,-0.029285533,-0.43488002,-0.15231457,0.32518724],[0.048481237,0.42892945,0.026479786,0.108767025,-0.73508763,1.1185008,-0.38002115,0.03620541,0.086171456,0.061443076,-0.08954377,0.7163156,-0.22313805,-0.4416368,-0.18677765,-0.29935995,-0.004914676,0.18798521],[0.6947259,0.22686858,-1.3395145,-0.026273083,-0.024484975,-0.63676757,1.010914,-0.69115335,-0.47127905,0.24076219,0.13991874,0.05702926,-0.38383457,0.4660129,-0.15360665,-0.10321115,-0.20715226,0.20123789],[0.015787806,0.48204544,-0.021891365,0.12252965,0.067283645,1.2190595,-0.67878187,-0.18536092,-0.18721336,0.10465234,0.14439303,0.15279837,0.07980276,0.09336658,-0.8014295,-0.043885637,-0.058773834,0.113214575],[0.0014229139,-1.1489844,-3.6802135,0.37640184,1.4294708,-0.076660365,0.3178863,-0.64991164,-0.70733184,-0.21969552,0.770838,-0.26442793,-0.2161789,0.15546018,-0.12903892,0.17621045,-0.28502613,0.11893793]],"activation":"σ"},{"dense_2_W":[[-0.54397076,-0.540163,-0.5861562,-0.557604,-0.49618587,0.10378188,-0.11437754],[-0.41089043,-0.41863373,-0.26381302,0.06044076,0.28395495,-1.129064,-0.59406483],[-0.7494169,-0.08572868,0.52618885,-0.5607684,0.39462608,-1.169383,-0.1503176],[0.4045638,0.70051044,-0.5056532,0.6174259,-0.5292022,0.26922572,-0.424674],[-0.27162388,-0.9250028,0.26857534,-0.01561676,0.5560947,-0.33507198,-0.16067682],[-0.5384087,-0.64021826,-0.31936148,-0.2864999,0.42469084,-0.5843407,0.030071743],[-0.80377173,-0.5939738,1.089976,-0.60083944,-0.96987534,-1.6227651,0.9416666],[0.40233278,0.16919671,-0.42055172,0.41217375,-0.26429188,0.31943977,0.2621414],[0.0319197,-0.45274907,-0.0022422147,-0.6616981,0.45422152,-0.74961704,0.64761114],[0.298545,-0.08646255,0.16982067,0.49902782,0.06976334,0.75716037,-0.17437762],[0.12613215,0.7822465,0.19383484,-0.011980963,-0.5947784,0.040464688,-0.67411786],[-0.27101958,0.011575684,-0.007966585,-0.32394916,-0.23960575,-0.05978105,0.3404521],[-0.07279379,0.53345263,-0.46249855,0.589232,0.4325604,0.32934994,0.050769333]],"activation":"σ","dense_2_b":[[-0.27212226],[-0.03061088],[0.223251],[-0.1398213],[0.024589097],[-0.05151826],[0.1156625],[-0.07707154],[0.17189187],[-0.07979791],[-0.0551535],[-0.04675364],[-0.061966155]]},{"dense_3_W":[[-0.12258424,-0.67310715,-0.6216291,0.70087993,-0.5456542,-0.08261071,-0.794985,0.378915,-0.7075973,0.33079588,0.28384545,-0.3226729,0.3842719],[-0.53314304,-0.3283625,-0.027936831,-0.30382243,0.5143159,-0.11898092,0.06643987,-0.22891304,0.20859952,-0.62020797,-0.6542792,0.21820208,0.08545237],[0.4545815,-0.4721545,-0.28263086,-0.19456169,-0.294614,0.42408562,-0.28720883,0.50096816,0.17924507,0.2068184,-0.38797694,0.21201205,0.27561057]],"activation":"identity","dense_3_b":[[0.020500826],[-0.0064320345],[-0.03172262]]},{"dense_4_W":[[1.3453387,-0.38940504,-0.36594775]],"dense_4_b":[[0.020062331]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019 b'8965B41090x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019 b'8965B41090x00x00x00x00x00x00'.json deleted file mode 100755 index eb5ba30c31..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019 b'8965B41090x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6056595],[1.1011987],[0.45016465],[0.036513034],[1.0954262],[1.096654],[1.0972972],[1.0781622],[1.0577228],[1.0278832],[0.99876994],[0.03632588],[0.03636222],[0.03639234],[0.036382567],[0.03631101],[0.036141142],[0.035890657]],"model_test_loss":0.009378368966281414,"input_size":18,"current_date_and_time":"2023-08-11_03-42-04","input_mean":[[25.669659],[-0.047895048],[0.011095525],[-0.0010007567],[-0.050389417],[-0.04983048],[-0.04955661],[-0.044621523],[-0.04115602],[-0.035016187],[-0.028634345],[-0.0010792029],[-0.0010608791],[-0.0010422019],[-0.00097256503],[-0.0010143764],[-0.0010519858],[-0.0011353532]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16146694],[-1.5599775],[-0.17506365],[-0.19151914],[0.33073556],[-0.0044728843],[-1.8738011]],"dense_1_W":[[-0.022587843,-1.696307,-5.400682,0.3648149,0.67200285,-0.078337416,0.5580287,-0.7384839,-0.4336378,-0.06844309,1.2609831,-0.46469173,-0.3023337,0.33104905,0.30154014,0.21899197,0.04919983,-0.20795655],[-0.47104296,0.73747975,0.17403716,0.23270167,-0.1037867,0.8239424,0.09184954,0.16263483,-0.037750896,0.15098697,-0.0754606,0.34493265,-0.082084626,-0.33557257,-0.18489552,0.33800292,-0.16610008,-0.057679377],[-0.0027718232,1.5370984,0.024881154,-0.5346706,0.23415335,1.4315361,-0.14873216,0.105326936,0.066477254,0.8128371,-0.3328177,-0.32810703,0.40303403,0.28103107,0.07711046,0.079642035,0.076980725,-0.08185225],[-1.133281,-0.037655216,-0.20665579,0.09188236,-0.7868618,-0.026023107,-0.8787548,-0.6428669,0.033134256,0.11970976,-0.10050087,0.059997767,-0.022198018,-0.16140892,-0.35953227,0.29168937,0.034544915,0.05378626],[1.1066848,0.27753586,-0.22365077,0.16971135,-1.1832408,0.44884738,-0.96368015,-0.91032207,-0.23031113,0.08507745,0.05559425,-0.31901634,0.28722385,-0.31672338,0.21700029,-0.091585815,-0.15736222,0.17971504],[-0.004321371,-0.06275011,-0.048157416,0.24579182,0.47604734,-1.3198181,0.6782722,-0.10995617,-0.20460491,0.042091597,0.05913588,-0.5444536,0.061146915,0.30363235,0.18061714,0.2797491,-0.014113867,-0.18732737],[-0.5763257,-0.9677455,-0.1951802,0.11323726,-0.312983,-0.53621775,0.1185856,-0.21250775,0.04489358,-0.15929341,0.064324245,-0.2883423,-0.13198704,0.2777305,-0.03675221,-0.22492863,0.11493704,0.080734536]],"activation":"σ"},{"dense_2_W":[[-0.61590296,-0.5195715,-0.108829506,0.4103641,-0.15294282,0.4410914,1.4810303],[0.4780821,-0.8781517,-0.4252669,-0.59855515,0.4804704,0.7194652,0.3171456],[-0.0060195136,0.31312257,0.64193386,0.2910982,0.84490585,-0.9846345,-1.0567933],[0.1459189,-0.50605303,-0.69084024,-0.14800137,-0.88331693,0.6852774,0.2694695],[-0.3053409,0.35913458,0.7041157,-0.23017813,-0.017635284,0.06075772,-0.2936795],[-0.1356475,-0.78858066,-0.8566893,0.1977979,-0.3749218,0.33831593,0.691472],[0.5872542,0.44983965,0.22061676,-0.116593465,-0.36591926,-0.96924776,-0.14946656],[0.13530682,0.6748068,-0.19304672,0.5032931,0.8270327,-0.7906366,-1.0424157],[0.30044878,-1.209003,-0.07319125,-0.34063867,-1.1481062,0.9603452,1.1442114],[-0.20257956,0.61473626,0.5823472,0.24531272,-0.22855185,-0.6818321,-0.42225984],[-0.7394789,0.7810616,-0.058806174,0.8324751,-0.3867912,-0.97824925,0.15068337],[0.5175145,-0.9351888,-0.3562028,-0.7593984,-0.32492992,1.3009138,0.008064033],[-0.7596698,-0.08702234,-0.5448599,-0.6187972,0.3668954,-0.02732415,0.09881363]],"activation":"σ","dense_2_b":[[0.12397174],[0.33330676],[-0.0799793],[0.04158973],[-0.09782006],[0.037273075],[-0.23756596],[-0.14609045],[-0.24821158],[-0.159363],[-0.2940094],[0.17432326],[-0.22460997]]},{"dense_3_W":[[0.44469282,0.50233734,-0.66101295,0.3700973,-0.07787853,-0.08806539,0.41965428,-0.43115306,-0.022663087,-0.6569443,-0.39882353,-0.02137261,0.15087838],[0.16178976,0.09075096,-0.7934335,0.5412506,-0.092891194,0.6815236,-0.3410796,-0.31042063,0.55821943,-0.65534914,-0.56217957,0.64118695,-0.00170126],[0.49080417,-0.35064137,0.1350645,-0.5279935,0.09069881,0.516484,0.42135808,-0.110838115,-0.23615395,-0.30600968,0.33043766,-0.74036384,0.1663846]],"activation":"identity","dense_3_b":[[0.07007987],[0.05591756],[0.010658105]]},{"dense_4_W":[[-0.39591685,-0.9289211,0.07738602]],"dense_4_b":[[-0.050904196]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019.json deleted file mode 100755 index b1b51e3228..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6041064],[1.1035304],[0.4484023],[0.03683061],[1.0957737],[1.0976914],[1.0990177],[1.0801798],[1.0598575],[1.0331676],[1.0052766],[0.036654923],[0.036684364],[0.03671293],[0.036709417],[0.036651965],[0.036492568],[0.036210157]],"model_test_loss":0.009458640590310097,"input_size":18,"current_date_and_time":"2023-08-11_02-52-02","input_mean":[[25.630205],[-0.05623775],[0.010955678],[-0.0011824107],[-0.058129467],[-0.058100134],[-0.05753972],[-0.052215047],[-0.05002431],[-0.042788718],[-0.035654448],[-0.0013065297],[-0.001283106],[-0.0012580294],[-0.0011568652],[-0.0012149647],[-0.0012245286],[-0.0013113298]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.6020029],[-0.014326092],[2.131077],[0.9675631],[-0.19065784],[0.022073187],[-0.17599037]],"dense_1_W":[[-1.3987874,-1.1022329,-0.34505498,0.7636868,-0.20586683,-0.9504459,-0.049020052,-0.3938162,-0.123028636,-0.32886922,0.15735438,-0.4781323,-0.48132908,0.23977482,0.10422825,-0.12448882,0.05244729,-0.11038789],[-0.018301038,-0.6299352,0.00622713,0.13428006,0.5419454,-0.8375825,0.56663495,-0.19548799,-0.23334435,-0.2798497,0.34237435,-0.3636734,0.1918039,0.26086813,0.23164305,0.07724925,0.36682686,-0.23426089],[0.9700282,-1.2141867,-0.24132554,0.7250985,-0.054316934,-0.82846856,0.20743893,-0.07541251,-0.0029775759,-0.2764805,0.07297132,-0.55774605,-0.61494875,0.7186673,-0.20925622,-0.012554848,-0.007072312,-0.06780203],[1.2655128,0.6922755,-0.24722645,-0.26949418,-1.186765,0.52344996,-1.3021243,-1.0206279,-0.081423774,0.2734177,-0.22090656,-0.008360833,0.42805007,-0.6104315,0.10659541,0.59180355,-0.07409862,-0.16140598],[0.0016111843,2.3020566,-0.09538863,0.4775302,0.19104634,0.7581803,1.2245975,0.3259312,0.13016133,0.71805245,0.37977412,0.2731153,-0.35271376,-0.75976604,0.3985421,0.36015168,-0.24252148,-0.09097576],[-0.1696741,0.7506803,0.118888825,-0.3327318,-0.5104699,1.7509611,-0.8092226,-0.102412894,0.21171542,-0.41029605,0.29316515,0.289645,0.3842453,-0.32381833,-0.080485,-0.27451643,0.2969006,-0.0033906084],[0.016534764,-2.0133348,-5.4863,-0.03373743,1.1940682,-0.20837387,0.4025841,-0.2529515,-1.1387988,-0.38183406,1.9944586,-0.12616248,-0.8426146,-0.22513841,1.2779588,0.51199806,0.32435155,-0.69949305]],"activation":"σ"},{"dense_2_W":[[-0.7638269,0.031352714,0.10360953,0.5546481,0.30863878,0.82808226,-0.33563384],[0.51879066,-0.44226646,-0.5796693,-0.40858063,0.1578528,0.15035929,-0.84812665],[-0.15702121,-0.67073447,-0.4197038,0.3220818,-0.05991348,0.38041055,0.06092204],[0.806767,0.06304986,0.8075057,-0.20168602,-0.33820373,-0.87435573,-0.28601554],[0.20003784,-0.08937316,0.25184897,-0.5255257,-0.5728098,-0.43476734,-0.010894257],[-0.01787694,0.27795494,0.11630318,-0.06266501,0.060686372,-0.63279563,0.44636598],[-0.4958114,0.43005335,0.7080226,-0.12047338,-0.48428482,-0.2889726,0.44259036],[-0.39932543,-0.51808834,-0.7372899,-0.29793862,0.48923936,0.58836514,0.25622228],[0.25029996,0.08891042,-0.81593496,0.46271,0.15725288,-0.2126664,-0.08401766],[0.6195721,0.5448667,0.041502103,-0.8573642,-0.5645224,-0.87836134,0.20946307],[-0.14115311,-0.90280044,-0.5433088,0.7701665,-0.6260164,-0.13906801,0.23042479],[0.07473069,0.28087774,-0.9681486,-0.009864042,-0.6672649,0.45934054,-0.64873284],[0.13347791,-0.02133041,0.0807407,-0.2441324,-0.5546702,-0.2578623,-0.16019678]],"activation":"σ","dense_2_b":[[-0.020695023],[-0.118575685],[-0.045242883],[0.028083786],[-0.27159098],[-0.023374764],[0.012269623],[-0.12869656],[-0.1787051],[0.0306908],[-0.07568033],[-0.10759439],[-0.27744076]]},{"dense_3_W":[[-0.49162164,-0.4191868,0.0067901798,0.102787994,0.10602838,0.67330825,-0.04103629,-0.5477224,0.37683812,0.7409758,-0.15619572,-0.5923507,-0.07951754],[-0.039288122,0.28114173,-0.59904766,0.6645154,-0.44911647,-0.06922432,0.215001,-0.27168792,-0.19525866,0.49492684,-0.23237818,-0.6230769,-0.50621545],[-0.22085246,-0.51831955,-0.27986276,-0.38381657,0.54892325,0.44768026,0.31407866,-0.5329104,-0.16832387,0.34908122,-0.08704006,0.5308806,0.64026624]],"activation":"identity","dense_3_b":[[0.0607661],[0.06281816],[0.04532571]]},{"dense_4_W":[[-0.5887859,-0.83423084,-0.84973454]],"dense_4_b":[[-0.054816216]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022 b'8965B41110x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022 b'8965B41110x00x00x00x00x00x00'.json deleted file mode 100755 index c4dd358d7f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022 b'8965B41110x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.621417],[0.60216844],[0.33766446],[0.031071559],[0.6074495],[0.6063964],[0.60408527],[0.592746],[0.5848162],[0.57773405],[0.57088673],[0.031094117],[0.031086348],[0.031075306],[0.03092497],[0.030987453],[0.030950982],[0.03085089]],"model_test_loss":0.0035974758211523294,"input_size":18,"current_date_and_time":"2023-08-11_04-33-01","input_mean":[[23.851212],[-0.011735492],[0.014822557],[0.0015981287],[-0.017860906],[-0.016335273],[-0.014861164],[-0.008908558],[-0.00019100294],[0.008320288],[0.015085844],[0.0013476122],[0.0014353959],[0.001521554],[0.0016404905],[0.0017713357],[0.001890435],[0.0018140652]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.29046783],[-0.7386649],[0.8099128],[-0.0830979],[-0.066769995],[-0.58767533],[-0.5783042]],"dense_1_W":[[-0.06973173,-1.1593121,-3.7385426,0.17812389,1.2648335,0.17882043,0.11353305,-1.1128533,-1.1402131,0.49317023,1.1549392,0.22488351,-0.039551347,0.54545957,-0.9453328,-0.30246973,0.48812893,-0.003690356],[-2.088028,0.03569328,0.06524252,0.3073911,-0.0669223,1.0475743,-0.9218425,0.20211175,-0.4463,-0.18910088,0.9684125,0.13405068,-0.1174013,0.081153475,-0.36694288,-0.18311328,0.19375218,-0.05552698],[2.1723948,-0.104979195,0.06845127,0.13558877,0.12955302,0.54661036,-0.71585613,0.37260148,-0.47275162,0.1936406,0.69998413,-0.17018797,-0.29841486,0.19461034,0.11221291,0.08999232,0.40883166,-0.48241648],[-0.0035949238,0.5195585,0.056816265,-0.21500319,0.13682762,0.6210256,-0.26336774,0.2708143,-0.3960605,-0.09337605,0.18600617,0.40625247,-0.03272976,-0.39815915,-0.4334662,0.03242743,0.106475964,0.18782848],[0.00026254903,-0.43522957,-0.29160616,1.2150093,0.561134,0.13226019,-0.3680962,0.4117709,-0.523177,0.21208563,0.37644473,1.2890456,0.35225967,0.95191664,-0.18308976,-1.3802807,-0.5709553,-2.2156804],[0.53350025,0.035052005,0.008865246,-0.04431933,-0.3176884,0.83934355,-0.37516874,0.00706265,0.0775229,0.030765524,-0.040516727,0.006187998,0.5950189,0.14796092,-0.52394676,0.060235158,-0.5274258,0.1178207],[0.5637231,0.13862197,-0.008244962,-0.3938652,0.48107556,-0.6489267,-0.07129171,-0.071288355,-0.050481576,-0.2556226,0.21773542,-0.3818978,0.122946635,-0.0005463466,0.5423771,0.15439962,-0.14910692,0.2768216]],"activation":"σ"},{"dense_2_W":[[0.33422744,0.5476326,-0.40897554,0.03363565,0.42117637,0.1993684,0.11700197],[0.016211191,-0.42357254,-0.013600616,0.58073217,-0.10585923,0.4968173,-0.06083235],[0.2560805,0.23497431,-0.4423548,-0.6719212,0.33036447,-0.65422225,0.11651074],[-1.0021728,0.6715551,-0.28054923,0.066978924,-0.047049686,-0.23047742,-0.7727124],[-0.8329245,-0.06253365,-0.8275449,-0.19949576,-0.49645177,-0.3025703,-0.39923748],[-0.0965028,-0.28401488,-0.29893482,-0.5392418,0.516837,-0.38260764,0.7805964],[-0.13280529,-0.06303277,-0.27558568,-0.47452193,-0.09497839,-0.026708731,-0.06549511],[0.33222172,0.09532853,0.094424486,0.41390723,-0.59934753,1.2102501,-1.4455571],[-0.18434185,-0.40622485,0.019825913,-0.44427174,-0.063956864,-0.15254037,-0.16048898],[0.4783499,-0.016979024,-0.38030294,0.03715881,-0.38931444,-0.73212904,-0.18792534],[-0.66844565,0.34431502,-0.1439725,0.48682266,0.041338764,0.32482722,-0.9202753],[0.10901106,0.37365302,0.25427094,-0.22439355,0.1677833,0.32048756,-0.757699],[-0.03728728,0.22946912,-0.5708871,-0.12548028,0.13651444,-0.3683857,0.40373203]],"activation":"σ","dense_2_b":[[0.03504426],[-0.021830266],[0.014506293],[-0.15004124],[-0.1996024],[0.08620867],[-0.22626895],[-0.2200163],[0.027354911],[-0.0187473],[-0.26950043],[-0.080006495],[-0.00023749561]]},{"dense_3_W":[[0.003805781,0.57647467,-0.3215517,0.6421878,0.36746186,-0.44294173,0.24244395,0.5338086,-0.60588413,-0.45965254,0.3151681,0.50712276,-0.30720553],[0.4721997,0.13897571,-0.66421515,0.36394912,-0.12090668,-0.54066294,-0.06981957,0.42225152,-0.1879612,-0.44998485,0.2981854,0.4459964,-0.1991944],[-0.46331075,-0.33276492,0.31424695,-0.0069436645,-0.17305002,0.6113178,0.48357555,0.2451846,0.33225268,0.5144922,0.4602627,0.007510923,0.5021902]],"activation":"identity","dense_3_b":[[-0.014281405],[-0.011103369],[0.0054283007]]},{"dense_4_W":[[0.86027306,0.53091425,-0.4524987]],"dense_4_b":[[-0.011388131]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022.json deleted file mode 100755 index e308b6f7fd..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON HYBRID 2022.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.6210785],[0.6022118],[0.33968922],[0.03099292],[0.60531795],[0.60364884],[0.60261005],[0.5927404],[0.5860802],[0.5780433],[0.57123464],[0.03102364],[0.03101872],[0.031000676],[0.030836336],[0.030818319],[0.03077106],[0.03060258]],"model_test_loss":0.0035856943577528,"input_size":18,"current_date_and_time":"2023-08-11_04-08-26","input_mean":[[23.850887],[-0.011798306],[0.008752907],[0.001631103],[-0.017083079],[-0.015211123],[-0.013052424],[-0.009723851],[-0.0010425432],[0.00763124],[0.012975372],[0.0013719393],[0.0014717524],[0.0015690022],[0.0016464603],[0.0017470267],[0.0018605703],[0.0018421216]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.64532423],[0.2870542],[-0.58806527],[0.26318058],[0.6671186],[0.6541222],[-0.22572796]],"dense_1_W":[[1.5230434,-0.007496155,1.0794041,-0.4841308,-0.6977591,0.51557744,-0.09899542,-0.23689902,0.18946739,-0.113655314,0.44560134,-0.532302,0.034997255,-0.1360111,0.17597911,0.59236944,0.050468095,-0.20623948],[1.0181296,-0.059453703,0.009536515,-0.01483209,0.38743848,-1.6092814,0.42287022,-0.26000166,0.51355636,-0.09300312,-0.20316118,0.07417511,-0.78482175,0.31442174,0.45461628,-0.05262415,-0.16865608,0.13292025],[-1.3765476,0.27935305,0.9930571,-0.51475865,-0.93571097,0.3701744,-0.72828853,0.1573733,0.84987473,0.26969302,-0.27910694,-0.17882767,0.23388991,-0.56191975,-0.17135333,0.69586045,0.3468155,-0.3236991],[1.0663162,0.11496424,-0.010609953,-0.34656164,-0.31095302,1.2454789,-0.104264125,0.16323781,-0.511932,0.1954236,0.14337912,0.27471086,0.2458354,0.09317978,-0.29965654,0.074385874,0.1680878,-0.15244573],[-0.5496053,0.30009452,0.019474812,-0.15155403,-0.42104033,0.804735,-0.24418715,0.12206082,0.01419753,-0.0772803,0.0075358734,0.31184286,0.119791746,0.02318575,-0.7550021,0.101326704,-0.19755691,0.20817216],[-0.4716649,-0.39404374,-0.017001849,0.30398825,0.37287918,-1.0172095,0.57842916,0.051887393,-0.14316402,0.08946873,-0.013960456,-0.18220635,-0.4013893,-0.019781204,0.40079808,0.3981192,0.09988082,-0.2901716],[-0.0910912,-1.8955553,-5.6552796,0.74153733,1.5436069,0.09860224,-0.26889333,-0.8300267,-0.9122361,0.28157806,1.6353471,-0.3455456,-0.19665305,0.20067552,-0.12310253,0.0478631,-0.24051762,0.018789763]],"activation":"σ"},{"dense_2_W":[[0.19653954,-0.5258311,0.14326829,0.16017042,0.2240187,-0.14981109,-0.23470822],[-0.20858146,0.37757653,-0.22290857,-0.24139176,-0.58756834,0.94805384,-0.3055405],[0.3827672,0.8731881,-0.5274364,0.5947985,-0.12186718,-0.22117402,0.97557515],[0.22888982,0.034816697,-0.4402026,-0.1263617,-0.2391757,0.375515,-0.45880428],[-0.50858766,-0.009293968,0.20779714,-0.06797905,-0.15627685,0.8566428,-0.16560455],[0.33234873,-1.0452052,0.3114699,-0.49879384,0.37760928,-0.10235413,-0.7995544],[-0.21585348,-0.7473184,0.45133677,0.48506138,0.35556215,-0.6276531,-0.18618119],[-0.3087059,-0.757823,0.30346602,0.1112487,0.23632218,-0.32476935,-0.23821081],[-0.33813116,-0.067351766,-0.084407635,-0.7633368,-0.33403933,0.5852588,0.04424095],[-0.13047165,-0.57245564,-0.10349484,0.44043526,0.8112992,-0.22286835,0.1134046],[-0.81824476,-0.48836493,0.24637613,-0.97839844,-0.44806626,0.014597846,0.6120905],[-0.011660478,0.27182546,-0.27260295,0.021457694,-0.15093423,0.103856236,-0.289786],[0.08348892,-0.27305228,-0.033261165,0.8160634,0.7069094,-0.68072647,-0.18045369]],"activation":"σ","dense_2_b":[[-0.028337892],[0.16126229],[-0.024233993],[-0.15039966],[0.010798022],[-0.2899587],[-0.050011154],[-0.23201685],[0.014608492],[0.003838476],[-0.08799288],[-0.049894854],[0.027036132]]},{"dense_3_W":[[-0.27019745,0.66014105,0.44614148,0.13896823,0.4704919,-0.17726699,-0.7050766,-0.099338174,0.18850864,-0.27997562,0.48057485,0.0069672302,-0.6804747],[0.4988687,-0.31667402,0.47645807,-0.12850301,-0.14989346,0.22235468,-0.09084276,0.10203466,0.19078694,-0.2741972,0.11726287,-0.24347067,-0.14281158],[0.11220936,-0.20938803,0.22899435,-0.17603627,-0.23535244,0.4323248,-0.064221285,-0.06924562,-0.5364228,-0.29542312,0.031429153,0.48623005,0.53304803]],"activation":"identity","dense_3_b":[[-0.056309115],[-0.10035845],[-0.002584182]]},{"dense_4_W":[[-0.93852043,-0.002831195,0.0376801]],"dense_4_b":[[0.05399409]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018 b'8965B10040x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018 b'8965B10040x00x00x00x00x00x00'.json deleted file mode 100755 index 1a89e9aa72..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018 b'8965B10040x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.7313623],[0.9888169],[0.4152069],[0.033757195],[0.97801226],[0.9809649],[0.98316544],[0.97654957],[0.96262586],[0.9422399],[0.9169314],[0.033564508],[0.033611197],[0.03365405],[0.03371377],[0.03366836],[0.033512793],[0.03326571]],"model_test_loss":0.010666782036423683,"input_size":18,"current_date_and_time":"2023-08-11_05-49-47","input_mean":[[24.96519],[-0.033782624],[0.009671044],[0.0077961436],[-0.038051996],[-0.037176047],[-0.037127484],[-0.032916453],[-0.028262928],[-0.021224912],[-0.019132588],[0.0075910226],[0.007635079],[0.0076770876],[0.0077970643],[0.007867494],[0.007903498],[0.007878507]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0528064],[0.08900857],[0.75784385],[-0.8937406],[-0.51171505],[-0.10186542],[-1.3997765]],"dense_1_W":[[-0.08676465,2.0455117,-0.102706365,-0.6707259,3.1681015,4.2520304,2.8067908,2.0205982,2.160316,1.8089273,0.55365646,0.3163457,0.4537371,-0.29166102,0.61781347,0.54595727,-0.13856713,-0.8539102],[-0.00016419945,-0.56122553,0.006468475,0.058191027,0.3205225,-1.7764372,1.0253428,-0.22990642,-0.023242323,0.14960705,-0.11546516,-0.47926554,0.13979027,0.25853786,0.35933894,0.231268,-0.163933,-0.011948538],[0.8706783,0.5629842,-1.0976667,0.6597201,0.074501075,-1.1088905,0.073258646,-0.08372772,-0.027485643,0.40303627,-0.085082166,-0.15307684,0.13970284,0.4372201,-1.0356691,-0.46190366,0.08466662,0.31719726],[0.00088525575,0.28771025,-0.00041574074,-0.12136347,-0.45848206,0.7646498,-0.7480068,0.08633297,0.2238723,0.22185136,-0.27731135,0.24002591,0.5882265,-0.46785995,-0.36120954,-0.06715729,-0.019443577,0.20275888],[-0.06155146,-0.9296325,-6.176115,0.32850727,1.9988121,0.056870196,-0.7210163,-0.90295607,-0.6347279,-1.0500165,1.7257686,-0.63104945,-0.20577207,0.52953875,-0.038163472,0.21641904,0.24872929,-0.38487554],[0.0006827544,0.06588264,0.019023217,0.33368507,-0.50753003,1.274059,-0.41946143,-0.4562805,0.1713312,0.022509854,0.060954157,-0.0036319275,-0.14435211,-0.17530417,0.13293767,-0.04580827,-0.16321899,0.061178423],[-0.97508353,0.3754842,-1.2725447,0.30404013,0.06964748,-0.63675576,-0.116767436,-0.46295738,0.2441482,-0.061135307,0.2693983,0.19074592,0.19255072,-0.050766017,-0.34838012,-0.5683125,-0.16777495,0.4320534]],"activation":"σ"},{"dense_2_W":[[-1.7291162,0.18712735,-0.784268,-0.5211682,0.23055974,-1.0369477,1.2522866],[-1.4083703,-1.245634,1.5253365,-0.38234624,1.1451472,0.3420805,-1.3369085],[0.4079928,0.09092335,0.3915673,-0.6955576,-0.99043214,-0.37307084,-1.0267273],[0.36806342,0.86456835,0.014784731,-0.9323144,0.08767326,-0.98557246,-0.49028188],[-0.2841241,-0.47625312,-0.21175718,0.43561095,-0.36729914,0.8540727,-0.43895096],[0.16099487,0.7311489,0.19461572,-0.69285166,0.41518864,-1.1639454,-0.08508787],[-0.3261969,0.4563855,0.48312464,-0.14733022,0.76256764,-0.44852886,-0.35733178],[-0.8633155,-0.17938924,-0.4462165,-0.48804846,-0.8097996,-0.4533271,-0.46252802],[0.12385623,0.009189586,-1.1579738,0.71919787,-1.7606289,-0.31546488,0.448854],[0.07684563,1.1983187,0.08234343,-1.091461,-0.19976689,-0.54287857,-0.37857434],[0.560663,-1.4880527,-0.28693125,0.17221202,-0.36113575,0.19427057,0.44083765],[-0.059977785,-0.58561826,-0.57772005,0.7993362,-0.8236306,1.0891352,0.02070652],[0.57416856,-1.5304499,-0.030536273,0.6002819,0.3496771,0.52368426,-0.5069396]],"activation":"σ","dense_2_b":[[-0.2280989],[-0.6234252],[-0.692007],[-0.121901624],[-0.3153857],[-0.17784967],[0.07650244],[-0.45358527],[-0.4148523],[-0.08295175],[-0.3685902],[-0.006143885],[-0.21816583]]},{"dense_3_W":[[-0.6464554,0.59161955,-0.08040031,-0.38394913,-0.2547638,-0.66541696,0.10209947,0.22952524,0.51443064,-0.6007329,0.16476616,0.8392625,0.86081135],[0.29400313,-0.47131515,-0.07440717,0.4786253,-0.22355409,-0.141201,0.57343155,0.42071205,0.08289365,0.49173295,-0.2876836,-0.6514307,-0.34931198],[-0.41638458,-0.038208514,-0.21903223,-0.25014666,0.40054414,-0.80169666,-0.35611898,0.19608808,0.50653106,-0.22687514,0.33846655,0.9839725,0.9331715]],"activation":"identity","dense_3_b":[[-0.1338492],[0.02347098],[-0.14936106]]},{"dense_4_W":[[0.63154566,-0.2949555,0.46449748]],"dense_4_b":[[-0.07701077]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10091x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10091x00x00x00x00x00x00'.json deleted file mode 100755 index 3f9d6a7e29..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10091x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8614244],[0.75124866],[0.55659616],[0.019078998],[0.73906744],[0.7388618],[0.7372679],[0.7206659],[0.7110691],[0.699438],[0.68114865],[0.01886521],[0.018885473],[0.01889542],[0.01875568],[0.01862864],[0.018454202],[0.018320806]],"model_test_loss":0.01200881041586399,"input_size":18,"current_date_and_time":"2023-08-11_07-04-43","input_mean":[[19.02321],[-0.009182516],[-0.017429296],[-0.011283472],[-0.0053655286],[-0.007232309],[-0.0092455],[-0.01603544],[-0.01682772],[-0.019174336],[-0.027758926],[-0.011568266],[-0.011541738],[-0.011520918],[-0.01157352],[-0.011571877],[-0.011668593],[-0.011788717]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.03519353],[-0.15095843],[-0.7353578],[0.13929218],[-3.4776504],[0.041195296],[0.1761386]],"dense_1_W":[[0.046379987,-0.13878189,-0.036664445,0.38224146,-0.0646248,-1.0924313,0.8775562,-0.053549852,-0.15888737,0.1178062,-0.06738964,-0.47581938,0.02085043,0.04761963,0.19045879,-0.015851231,0.15402271,-0.23869996],[0.047233846,-0.37163836,-6.5784287,-1.1358076,0.5292454,-0.7138368,-0.020171849,0.20063849,0.18085273,-0.92067474,0.81135595,-0.51245284,-0.1656133,0.42384866,0.7504459,0.84762216,0.13103229,-0.24118356],[-1.1028277,-0.49579862,-0.098353446,0.35713926,-0.16605736,-0.5360656,-0.20586732,0.2877909,0.058039125,0.21760072,-0.28679097,0.055256702,-0.39677158,0.21102457,-0.21540093,0.018043555,0.26613265,-0.19123672],[-0.08534582,-0.9939401,-0.4242228,-2.8671207,0.6624762,-2.9042678,-4.992002,-3.7515533,-5.1040688,-1.9935926,1.7598441,1.1262454,1.8797381,1.1090043,-1.6218112,-0.863951,-0.5581413,1.6114283],[-1.1540707,0.43415037,-3.6339066,-0.47187626,-0.7554667,-1.4905885,0.6125929,-0.101766944,0.6937759,0.20132032,-0.47469506,0.018180996,0.51194876,0.07081824,-0.20423755,-0.27204958,-0.23085469,0.6143729],[0.005116348,0.3945791,0.10539601,0.331683,-0.8352237,0.98771363,-0.21386153,0.10292913,0.044619523,0.08716431,0.101707004,0.073796205,-0.09338911,-0.22695537,-0.19353603,0.3005215,0.19999096,-0.5015498],[0.018626228,-1.0940357,0.17377485,1.577099,0.87160116,-1.4516218,1.9833297,0.18896727,0.31323293,0.32171655,0.22981676,-0.048349075,-0.14686754,-0.003915933,-0.9725042,-0.13146995,-0.36996123,-0.098727204]],"activation":"σ"},{"dense_2_W":[[0.97411454,-0.51938444,0.8659755,-0.46950406,0.11822711,-0.8958734,0.6047596],[-0.14340101,0.1965236,-0.48290092,0.25887898,0.037219662,-0.33671203,-0.47383884],[0.883092,-0.04182707,0.39375,-0.28783375,-0.27379218,-0.5107806,0.12861542],[-0.3499007,-0.075701565,-0.16065952,0.028407833,-0.21673161,0.32120997,-0.24848087],[-1.0644221,-1.5145135,1.0423622,0.057657007,-0.8929386,0.38188818,-0.29111302],[0.6651675,-0.10167774,0.34609315,-0.41527653,0.24346839,-1.3106738,0.04831263],[-0.33749178,0.13250409,-0.17898846,-0.07075638,-0.325455,0.4888969,-0.32574978],[-0.13392222,0.005456629,0.32891217,0.2271199,0.03492276,-0.6633292,0.12100792],[-0.87907666,-0.5363504,0.67260146,-0.8091148,0.42400393,0.35343498,-0.5102727],[0.73019344,-0.2813332,0.32472983,0.5224319,-0.19995011,-0.8258774,0.12310978],[-0.9651855,-0.19100729,-0.40759322,0.079893395,0.14696078,0.21351884,0.17654544],[-0.38321492,-0.5142046,0.69242734,-0.7369066,-0.16813168,0.6556536,-0.5864559],[-0.87097305,-0.40665868,0.033173006,-0.36359137,0.2589845,0.35792008,0.16423905]],"activation":"σ","dense_2_b":[[-0.022246333],[-0.20147786],[0.01618344],[-0.018682426],[-0.39971286],[-0.37426376],[-0.05391573],[-0.14660585],[-0.12656218],[-0.13277695],[-0.1482318],[-0.31037378],[-0.18615629]]},{"dense_3_W":[[-0.44387364,-0.21935597,-0.264997,0.5069316,0.5022933,-0.08028709,0.39096925,-0.6225095,0.68565357,0.42978552,0.34397504,0.35004535,0.5203644],[0.7957216,-0.052110795,0.6300835,-0.47696984,-0.1722768,0.6797043,0.3657801,0.37323546,-0.4012943,0.56815857,0.08386955,0.013114558,0.5138369],[-0.0116800405,-0.3395463,0.52625775,-0.33296672,-0.6938831,-0.008207481,-0.47937372,-0.119277634,-0.20143117,0.46600667,-0.013720797,-0.29413077,-0.17268106]],"activation":"identity","dense_3_b":[[-0.060016062],[0.030613739],[0.060220987]]},{"dense_4_W":[[1.0726175,-0.54023695,-0.9860894]],"dense_4_b":[[-0.053101283]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10092x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10092x00x00x00x00x00x00'.json deleted file mode 100755 index 3846c4ff8a..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022 b'8965B10092x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6808248],[1.0210598],[0.5966659],[0.042756997],[1.0107573],[1.012554],[1.0153259],[0.9912984],[0.9735415],[0.9533497],[0.9332258],[0.042687085],[0.042698804],[0.042709883],[0.042716887],[0.04270658],[0.042552505],[0.04235409]],"model_test_loss":0.008525088429450989,"input_size":18,"current_date_and_time":"2023-08-11_07-30-00","input_mean":[[22.609735],[0.021366691],[0.0036772767],[-0.0055039055],[0.018654037],[0.020882115],[0.02251627],[0.021924747],[0.02177209],[0.018817721],[0.015407738],[-0.005619203],[-0.0055884435],[-0.005562743],[-0.005521372],[-0.0055254106],[-0.005608956],[-0.005731615]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.10787289],[2.7295141],[-0.014846635],[-2.52249],[-0.41797954],[0.009203023],[-0.03822759]],"dense_1_W":[[0.006059761,-0.2780369,0.019265022,0.3020706,0.034155324,-1.3772042,0.47423708,0.35504794,0.36091778,-0.19814305,-0.16233607,0.22252728,0.31619906,-0.26939157,0.13296632,0.16370413,0.24879563,-0.44122157],[1.2936878,0.5217924,0.16455218,0.27345595,-0.03019537,1.0137162,-1.5315937,0.121129505,0.2535813,0.051281486,-0.114028275,0.08941389,-0.16636313,-0.046149377,-0.58158803,0.44673163,0.3362695,-0.30439505],[0.010025998,-1.1366434,0.06847304,0.05892584,0.7231386,-0.90292823,0.3060419,-0.17182396,0.06936535,0.13302577,-0.08824037,-0.6510271,0.25069413,0.5232841,-0.39950168,-0.1576116,0.20445362,0.044638686],[-1.2454971,0.6038898,0.16080211,0.12973976,0.13429877,0.7463809,-1.2848366,-0.16410895,0.124600835,0.30732483,-0.16996159,0.18161087,0.29306152,-0.6729109,0.00044485295,0.22021376,-0.11470402,0.0064366944],[-0.057729445,-1.6840429,-6.5337806,0.5755675,1.9029108,0.3108279,-0.045327578,-0.4666652,-0.8846539,-0.7133611,1.3928591,-0.7003825,-0.16232297,-0.3231918,0.5879237,0.5351214,-0.0139183095,-0.46289876],[0.012766599,-0.6894872,0.24702038,-0.23795167,0.051006347,0.81989294,-0.44921973,0.5467078,0.1596552,-0.13800426,-0.14706412,0.2545808,0.15971354,0.31360984,-0.8261207,-0.0990083,-0.2607686,0.524966],[0.011152478,-0.2827323,-0.0088778855,0.10415767,0.04776933,-1.0724484,0.85188013,0.12321841,-0.17070293,0.04727044,-0.03278087,-0.34906387,-0.070353836,0.4458464,-0.016616534,0.07696789,-0.16656372,0.2188996]],"activation":"σ"},{"dense_2_W":[[0.013153307,0.72258556,-0.9607895,0.5651246,0.30607197,-0.020686822,-1.0686581],[0.250104,-0.78947,0.47588462,-0.6149001,-0.032745462,-0.4966682,0.88839453],[0.22150557,-0.76598793,-0.3002023,1.2499317,-1.6504543,0.030420702,0.15898795],[-0.083388545,-0.689518,0.05265897,1.5231378,-1.540956,0.26537773,-0.5574814],[0.24958974,-0.37062392,-0.14619073,-0.13918088,0.43284532,0.04136838,0.07143529],[0.15065649,-0.109692805,0.093387246,0.30221173,-0.024876209,-0.09227776,0.63619983],[0.56862855,-0.17278619,-0.33281788,-0.10547164,-0.00034883298,-0.56013817,-0.22195897],[0.42458898,-0.77232456,0.6531793,-0.07446621,-0.1938117,-0.45410666,0.6741056],[-0.16886851,-0.47917107,0.49286413,-0.034239717,-0.108527124,-0.08425037,0.07619126],[-0.26427963,-0.02655328,-0.7206567,0.46840718,-0.6032674,0.5223421,0.075842224],[0.0049433056,0.95529455,-0.5440883,0.41637206,-0.45465398,0.8077066,-0.71393406],[-0.063968115,-0.108970076,0.109497316,-0.3942332,-0.68592453,-0.0995049,-0.4702665],[-0.70982593,0.37136346,-0.37781605,0.35262644,0.4457534,0.16508546,-0.5957397]],"activation":"σ","dense_2_b":[[-0.116926156],[0.0042479504],[-0.46176797],[-0.23112983],[0.011751201],[-0.011064423],[-0.038083997],[-0.029864028],[-0.008636633],[-0.040441785],[0.016329648],[-0.3489733],[-0.0816719]]},{"dense_3_W":[[-0.022905884,-0.09678962,-0.42239848,0.013462638,0.31903088,-0.51887375,-0.33630884,0.26145482,-0.1154883,0.33833036,0.11669115,0.06747294,0.11933737],[0.050040435,-0.5856353,0.14493953,0.6705113,-0.3872963,0.361062,-0.5757033,-0.16463317,0.09669611,-0.44681597,0.35252583,0.50204754,0.63696355],[-0.45258597,0.3210578,-0.28552428,-0.19756064,0.47599337,0.4500213,-0.24421427,0.72807336,0.25044173,-0.62012583,-0.6892487,0.28510118,-0.39239216]],"activation":"identity","dense_3_b":[[-0.032324813],[-0.058080077],[0.051499244]]},{"dense_4_W":[[0.19064297,0.63367367,-1.2247652]],"dense_4_b":[[-0.051857576]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33540x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33540x00x00x00x00x00x00'.json deleted file mode 100755 index 185558301f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33540x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9780097],[1.4051862],[0.48408332],[0.04853162],[1.3928818],[1.3977288],[1.4018258],[1.375475],[1.3433505],[1.2949077],[1.2478521],[0.048412163],[0.048431084],[0.048459467],[0.048518475],[0.048504874],[0.04839253],[0.0481143]],"model_test_loss":0.00801712553948164,"input_size":18,"current_date_and_time":"2023-08-11_08-30-17","input_mean":[[25.642933],[-0.0019835518],[0.0040060235],[-0.009254944],[-0.0033266023],[-0.0029646403],[-0.0019904082],[-0.0020933496],[-0.0038487294],[-0.005581948],[-0.0044637513],[-0.009216257],[-0.009224849],[-0.009232599],[-0.00923392],[-0.00923287],[-0.009259574],[-0.009315466]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.04618915],[-3.334577],[-0.022748481],[-0.07218225],[3.7755296],[-0.122582935],[-0.0052783587]],"dense_1_W":[[-0.0012499753,0.33883905,0.042702407,-0.2214031,-0.36033404,1.2806584,-1.0731505,0.25989679,0.14866988,-0.10340344,-0.015702773,0.5870672,-0.09173469,-0.32383582,-0.35129866,0.27342206,0.0042890036,0.025042968],[-1.6428236,-0.63481885,-0.111530595,0.3713098,0.092823684,-0.6249234,0.54686266,0.41442233,0.03279755,-0.1797473,-0.09668681,-0.3626609,0.28806838,-0.031328026,-0.23864591,-0.1097307,-0.016905924,0.0765963],[-0.0009610195,1.2744341,-0.11151947,0.054716695,-0.73242664,0.90427834,0.16628876,-0.017297843,-0.053887896,0.30539826,-0.19929217,-0.22211027,0.10559502,-0.13222888,0.23039715,0.42640105,-0.40309757,0.036333088],[-0.023137279,1.8224742,4.434084,-0.51519555,-1.1649675,-0.28008473,0.09062625,0.14845455,0.49387005,0.02369536,-0.5737739,0.32818693,0.34118465,0.1457762,-0.5785472,0.1424408,0.16707024,0.08814323],[1.7683705,-0.1194262,-0.13175204,-0.23340832,0.29679087,-0.8300054,0.16098455,0.44727117,-0.1962079,-0.44604713,0.14344603,-0.46670324,0.37683523,0.5052653,-0.11880916,-0.39280412,0.36395994,-0.05599607],[0.00085408555,-0.3749454,-0.00757018,0.07293645,0.47284073,-1.08383,0.43937385,-0.3126087,-0.2110254,0.091425285,0.019250873,0.18259677,-0.20196928,0.24545331,0.41908297,0.12497451,-0.04950806,-0.27745348],[-0.002797162,0.45220622,0.0928887,0.14079146,-0.038952228,1.2299527,-0.77015364,-0.33163518,-0.19668595,0.18426204,-0.054098736,0.3948651,0.4821092,-0.12373006,-0.4104894,-0.3608244,-0.050283466,-0.054687865]],"activation":"σ"},{"dense_2_W":[[-0.9274079,3.2624276,-0.5414991,-1.8350966,-0.8542368,0.35031518,-0.34859648],[0.9660724,-0.7803512,0.48230568,0.0805093,0.19358476,-0.52365863,0.4405566],[0.7851582,-0.6059611,0.086790875,-0.26486087,-0.7225202,0.06725921,0.7280278],[0.62741816,0.033202164,-0.2685909,-0.15281594,-0.8427713,0.13733315,0.01932823],[0.8164209,-0.41978616,0.2836711,0.26222813,-0.87872094,-0.8590503,0.68521476],[-0.043918654,0.16022983,-0.2956201,-0.4721823,0.8772654,1.004911,-0.83114386],[0.07872535,-0.29399154,-1.0099515,-1.1905336,0.052381076,-0.71205014,-0.7501543],[-0.4239558,0.48020416,-0.45598856,0.09060652,0.64608604,0.5741175,-1.1443394],[-0.09043453,-0.1659236,-0.6169011,-0.7262809,1.2436397,1.0421194,-0.40427843],[0.4041751,-0.14081301,0.57343036,0.18853396,0.12455946,-0.9625049,-0.17269157],[-0.8457818,0.12824811,-0.046741482,-0.18018991,0.9064454,0.3723606,-0.51164293],[-1.1185607,1.6248577,-0.42184004,-0.4399729,-0.2472109,0.8469407,-0.9312666],[0.49973565,-0.3323982,-0.3472047,-0.593044,-0.38130876,-0.39827725,0.49389073]],"activation":"σ","dense_2_b":[[-0.18386438],[-0.05718434],[-0.06549015],[-0.07134607],[-0.10577739],[0.005866841],[-0.2776331],[-0.04393405],[0.1977544],[-0.06883987],[0.05352327],[-0.20584084],[-0.11540173]]},{"dense_3_W":[[-0.06877563,-0.7143566,-0.03641639,0.39388388,-0.18843412,-0.014399047,-0.45135775,0.8130004,0.5402372,-0.22440514,-0.026450275,-0.359043,-0.019707523],[0.18318374,-0.5381017,-0.6231416,-0.5614665,-0.5481862,0.61288226,-0.22442989,0.39143884,0.5283164,-0.4216234,0.38933647,0.2545475,-0.002126224],[-0.88305146,0.18006742,-0.40557522,-0.16114128,0.08966503,0.26192102,-0.4644843,0.3903803,0.02153314,0.22797619,-0.26264903,-0.33558837,0.53328735]],"activation":"identity","dense_3_b":[[-0.0750595],[0.053941935],[-0.05915371]]},{"dense_4_W":[[-0.07031837,-1.2113694,0.261664]],"dense_4_b":[[-0.05185825]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33542x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33542x00x00x00x00x00x00'.json deleted file mode 100755 index 541c69ebe1..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33542x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.253551],[1.2301955],[0.4433781],[0.048036292],[1.2180563],[1.2215648],[1.2244625],[1.2078366],[1.1872348],[1.1560153],[1.1222544],[0.047749482],[0.047788024],[0.04782943],[0.047852717],[0.047783505],[0.04746524],[0.046932556]],"model_test_loss":0.008610215969383717,"input_size":18,"current_date_and_time":"2023-08-11_08-57-34","input_mean":[[26.187445],[-0.0071422574],[0.001980914],[0.001046037],[-0.007964942],[-0.007880573],[-0.007988253],[-0.009467786],[-0.008615659],[-0.008149362],[-0.009630898],[0.00084624556],[0.00086762797],[0.00088921416],[0.0008551317],[0.00078379776],[0.00071628735],[0.0006797733]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.02733056],[0.9519103],[1.179534],[-5.256048],[-0.068846025],[-0.001023872],[0.047838554]],"dense_1_W":[[-0.007770572,-1.2564598,0.036638457,0.21713501,0.23338117,-0.7073799,0.33575004,-0.19753128,0.24105607,-0.25897455,0.00047999376,-0.40289143,-0.1727166,0.26855484,0.15926753,-0.11272167,0.14361864,-0.027891645],[1.4905782,-0.47127068,0.26584575,0.3194812,1.1585804,-0.49999246,0.8128295,-0.06897485,0.27223653,0.27935958,0.6564722,-0.1511041,0.08323231,0.105417795,-0.19195606,-0.5771197,0.2512899,-0.16904134],[0.9752811,0.3798001,0.17150617,0.078614265,-0.4016901,1.0311221,-0.43946624,-0.046153106,0.45251793,0.23658508,0.19738759,0.27465844,0.24110676,-0.52507246,-0.1172636,-0.13135712,0.0018473302,-0.044648286],[-1.9979073,0.469533,0.38075405,0.38248965,0.03199995,0.8767418,-0.3808672,0.13193713,0.9768667,0.6579403,0.27945238,0.12676767,0.05653972,-0.5021998,-0.005707313,-0.5350684,0.50075513,-0.48098195],[0.09501199,-0.43849072,-0.02388532,-0.19896263,0.5059142,-0.7151482,0.5014636,0.14320679,-0.26502132,-0.10398254,0.097926326,-0.31807315,-0.017643483,0.26102692,0.11085488,0.44673,0.070843324,-0.24798131],[0.01869301,1.0456816,4.226997,-0.0017353684,-0.24813181,-0.09464798,0.19211425,0.2305938,0.75171006,0.0668822,-1.5460484,0.17806499,-0.3484644,-0.10388819,0.11723415,-0.087600686,0.043417487,0.026686585],[0.026612299,0.18889695,0.025076069,-0.31810546,-0.24766445,1.1192691,-0.5334893,0.19868112,-0.17242211,-0.24407543,0.15552837,0.44391513,0.22742282,-0.40553492,-0.3606672,0.12259318,0.1473879,-0.045519803]],"activation":"σ"},{"dense_2_W":[[0.60255677,0.16861977,-0.09762268,-0.2837764,-0.07567895,-0.37070033,-0.79792696],[0.49195844,0.17409827,-0.4679116,-0.20569389,0.6392559,-0.2820173,-0.7966848],[-0.053543754,-0.04045658,0.061384078,-0.27339914,0.29516026,0.09619451,-0.5365491],[0.19862464,0.40960187,-0.5885574,0.19464053,0.31404445,-0.14482382,-0.71336615],[0.050688785,-0.2452892,-0.71070766,-0.0914633,-0.36177072,-0.4671836,-0.55903697],[0.4795129,-0.131694,0.1492489,0.15489131,-0.007348985,-0.22303534,-0.31186175],[0.5021524,0.2245533,-0.6239134,-0.6030447,0.4679717,0.1760995,-0.099333],[-0.49081337,0.24919184,0.8373565,-0.41256565,0.28563014,0.67823786,0.38134417],[-0.8883889,-0.43416515,0.52214336,0.38264576,-0.64902043,-0.3316096,1.2996199],[0.13214777,-0.09506896,-0.7131637,0.5065029,-0.10351111,-0.593896,-0.7980942],[0.10000199,0.33303285,-0.18169716,0.19090554,-0.36384225,0.3556522,-0.67900723],[-1.5198281,-1.2734241,0.3973511,1.1452348,-1.8075484,0.96129864,1.0681554],[-0.81462014,-1.5782593,1.6699271,-0.5293936,-1.0444264,0.0026833075,1.7008731]],"activation":"σ","dense_2_b":[[-0.07236402],[0.028845945],[-0.1323438],[-0.1738864],[-0.09381208],[-0.1300469],[-0.11935734],[0.07721876],[0.14992687],[-0.06720915],[-0.19223419],[-0.33762133],[-0.1208263]]},{"dense_3_W":[[0.16432953,0.5942093,0.24944223,0.07672291,0.17414363,0.19451983,0.59266853,-0.668625,-0.64897245,0.6133092,0.21917813,-0.2546305,-0.6117167],[0.58310723,0.54848456,0.44340667,0.1732376,0.31500515,0.234152,0.39546844,0.19260909,-0.2684148,0.04366559,-0.37576258,-0.3523593,0.018720862],[0.2536531,-0.7660225,0.56532425,0.067297734,0.030229906,-0.009724075,0.45067325,-0.23095876,0.112479135,0.20881021,0.014405874,0.8360824,-0.10908318]],"activation":"identity","dense_3_b":[[-0.09141844],[-0.10133247],[0.05868698]]},{"dense_4_W":[[-0.96234053,-0.4108186,0.2421145]],"dense_4_b":[[0.09122495]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33581x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33581x00x00x00x00x00x00'.json deleted file mode 100755 index 03a5364272..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018 b'8965B33581x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.861338],[1.27499],[0.57348746],[0.046157062],[1.2795943],[1.2781751],[1.2762386],[1.24604],[1.2176551],[1.1878494],[1.1657255],[0.046013683],[0.046028],[0.04604425],[0.045964256],[0.045818],[0.045440868],[0.044904295]],"model_test_loss":0.0066848318092525005,"input_size":18,"current_date_and_time":"2023-08-11_10-12-24","input_mean":[[25.302942],[-0.08986686],[0.006437036],[-0.000770344],[-0.09078672],[-0.09131106],[-0.09105468],[-0.087818414],[-0.08535958],[-0.08077309],[-0.07629666],[-0.0008042366],[-0.00080282136],[-0.00080204045],[-0.0008154784],[-0.0008211331],[-0.0008975459],[-0.0010069694]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0742805],[0.92973286],[-1.2597991],[-0.015863936],[0.076297365],[0.039942347],[-0.09862842]],"dense_1_W":[[-0.89714944,-0.5694732,0.2553829,0.08549169,-0.3029584,0.8248408,-0.34906214,-0.0043470534,0.29719195,-0.2585757,0.16454367,0.2295475,0.1065112,-0.042710267,-0.63867694,0.22198902,0.1815665,-0.019736245],[0.043996632,-0.5165713,-0.01470944,-0.01490538,0.0015828871,-0.37951434,0.41633916,-0.43565232,0.0105871195,-0.09095717,0.14132233,-0.23960045,-0.23504797,0.4974917,0.23090471,-0.0010534904,0.14477685,-0.15111166],[-0.8907693,0.102393575,-0.26280454,-0.2428607,0.0006221315,-0.75598705,0.89070266,0.24951544,-0.1677102,-0.22674787,0.041006655,-0.6199366,0.055024263,0.34216496,0.2160915,0.37361667,0.13422973,-0.37392148],[-0.041263368,0.22979482,0.02687934,0.23515709,-0.058687184,1.2512988,-0.31698132,-0.20909786,-0.24276179,0.0524146,0.18924035,0.05974352,0.018966423,-0.30618235,-0.39119706,0.09769458,0.1381972,-0.09514759],[0.046502795,0.6602059,-0.037667993,-0.25442934,-0.11708759,0.86960804,-0.49021152,-0.07804353,-0.11474104,0.1469114,0.04552821,0.3126329,0.2082432,-0.5143092,0.114365466,0.15073813,-0.16331002,0.05541271],[0.05034215,0.14753957,0.032934844,0.028605228,-0.5262837,0.40912592,-0.21305162,0.5888757,0.5798016,-0.2346427,-0.29419842,0.1249654,0.34906247,-0.4432667,-0.36166826,-0.043212466,-0.00637034,0.10826623],[0.002508507,-0.9045623,-6.878152,-0.029319404,1.0181056,-0.451885,0.033875328,-0.75717235,0.07011871,-0.14485015,0.786407,-0.3947812,-0.098444514,0.39931172,0.10100173,-0.07530515,0.36536965,-0.30755058]],"activation":"σ"},{"dense_2_W":[[0.22400917,-0.30598494,0.25054607,0.37136942,-0.24538715,0.034769878,0.4539929],[0.037326954,-0.41299608,0.16081683,0.24574164,0.056523614,-0.027640207,-0.1309322],[-0.39091694,0.5082205,0.93584853,-0.63075423,-0.15180112,-1.0432836,-0.22495167],[-0.15306623,-0.45128495,0.41558233,0.48239455,0.6017532,0.7212807,-0.30316913],[-0.08770284,0.46613476,0.47092214,-0.53098565,0.050529372,-0.8164752,-0.0025518546],[-0.33539963,-0.48491186,-0.34354278,0.012208527,0.4700861,0.36545125,-0.041543964],[0.17866884,-0.19735998,-0.67110294,-0.3110027,-0.5290932,-0.68236077,-0.111222625],[-0.7327989,0.93089855,0.07169331,-0.49829224,0.19631308,-0.13825691,0.5089517],[0.36573797,-0.3776811,1.7510772,-1.9604117,-2.1450837,-1.4785987,1.3181192],[-0.21792145,0.016347371,0.10254979,0.51089144,-0.06845565,0.3958906,0.20665437],[-2.080944,3.407494,-0.39748654,-0.95476985,-0.6695305,0.49773726,1.6649209],[-0.3173275,-0.17373022,0.098646894,-0.46179616,-0.40287703,-0.20223522,-0.4789483],[0.030579967,-0.23474593,-0.26780617,0.6667259,0.5838826,0.37227827,-0.38209188]],"activation":"σ","dense_2_b":[[0.031172732],[-0.046594083],[0.04188912],[-0.009133611],[-0.020946773],[-0.008495372],[-0.2704271],[0.094023824],[-0.40898916],[-0.048260532],[0.6355896],[-0.01349315],[0.003674332]]},{"dense_3_W":[[-0.31565678,0.29919386,0.12521249,-0.51271564,0.4427603,0.122981675,0.48869878,-0.06551224,0.7051895,0.21552129,0.39309025,0.5903403,-0.5543942],[-0.2777765,-0.6289323,0.28298908,0.31119838,0.6172389,-0.27801976,-0.23232892,0.41942078,-0.05232441,-0.3835318,0.032355104,0.40797642,-0.5436199],[0.30726758,-0.13741928,-0.16658607,0.55618703,0.04306974,0.5606126,0.19286956,-0.5398464,-0.2852267,0.1816551,-0.6652878,0.26612532,0.55205345]],"activation":"identity","dense_3_b":[[-0.03041773],[-0.017930472],[0.016982466]]},{"dense_4_W":[[-0.9280437,-0.7111026,0.5093497]],"dense_4_b":[[0.021796599]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021 b'8965B33630x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021 b'8965B33630x00x00x00x00x00x00'.json deleted file mode 100755 index 5e651c0507..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021 b'8965B33630x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.546224],[1.4038109],[0.5651468],[0.043467518],[1.3987619],[1.4010857],[1.4028497],[1.3774658],[1.3484732],[1.3066528],[1.2626185],[0.043321155],[0.043366555],[0.043409824],[0.043420527],[0.043341193],[0.043100573],[0.04268996]],"model_test_loss":0.008768445812165737,"input_size":18,"current_date_and_time":"2023-08-11_11-30-42","input_mean":[[23.653286],[-0.08564946],[0.00538869],[-0.0041225236],[-0.08325304],[-0.08371971],[-0.08399296],[-0.078614086],[-0.07081872],[-0.05996409],[-0.049967643],[-0.00410234],[-0.0040951944],[-0.0040958365],[-0.0041202484],[-0.00410688],[-0.0041029328],[-0.00419054]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.03874873],[-0.784227],[3.223217],[0.5529675],[0.30194795],[-1.4031215],[0.056803867]],"dense_1_W":[[0.034401055,-0.34275624,0.030142846,0.1802324,-0.107920006,-1.022601,0.54692894,0.13827248,-0.059076726,0.30037975,-0.31303012,-0.06996616,-0.12360416,0.28437266,-0.15365309,4.6970963e-6,-0.26872233,0.2647263],[-0.16882746,-0.5824008,-0.020696588,0.14142953,0.2510791,-0.82992935,0.7110236,-0.29950327,-0.11735881,-0.14580877,0.19486403,-0.225828,-0.2887637,0.32220486,0.15587561,0.14097172,0.05713667,-0.11179676],[1.2839215,0.69310856,0.25602317,-0.010940563,0.09358904,0.9869969,-1.9319696,-0.5257503,-0.3271229,0.07050555,1.0539954,0.37352842,-0.48068744,-0.5090061,0.5122622,0.41323286,0.19394471,-0.44235808],[1.1244255,0.013561664,-0.29108623,-0.36359474,-0.19730152,0.99993306,-0.5672578,0.35510588,0.0071264915,-0.11894784,-0.73594254,0.24889143,0.22513571,0.13149923,-0.34713557,-0.09747717,-0.21321945,0.36720133],[0.15369973,-0.45637712,-0.03247139,-0.1660746,-0.09586008,-0.50975263,0.6658816,-0.49961114,0.11238557,0.07679043,-0.0053253584,-0.15730502,-0.12147023,-0.2606572,1.0126175,0.005088513,0.28010598,-0.38153377],[-0.79352224,0.26021218,0.16691022,-0.21337944,-0.48989457,0.5108416,-0.9224001,0.012780019,0.02489179,0.38960975,0.22246063,-0.043535743,0.18737064,-0.2547757,0.2212282,0.41946402,-0.13940004,-0.1286837],[0.010760579,1.3616978,5.955588,-0.23460385,-1.2176392,0.08488249,-0.47026646,0.4500766,1.1898807,-0.050334588,-1.1531816,0.45957503,0.277536,0.27783328,-0.79819953,-0.6636131,0.3210711,0.3499502]],"activation":"σ"},{"dense_2_W":[[0.3657454,0.81196916,0.34115106,-0.05315271,0.418085,0.20080918,0.51165557],[0.24918951,0.758012,-0.7564233,-0.48264846,0.14990342,-0.45200977,-0.5562867],[-0.80529535,-0.9293644,-0.17528604,0.41654125,-0.21587072,0.21727388,-0.27255547],[0.5453549,-0.083353505,-0.49446028,0.53072816,0.4999342,-0.032543693,-0.27890655],[-1.0843325,-0.7817543,-0.7844736,-0.08889147,-1.439987,1.2749369,0.77239406],[0.14125653,0.5189451,-0.45035714,0.023866806,-0.18329848,0.025697729,-0.67258346],[-0.10291709,0.37623602,0.3589048,0.48825127,-0.16012862,0.22953656,-0.57453346],[-0.14062448,-0.6055541,-0.83215773,-0.40746033,-0.924489,-0.010786422,0.17521149],[0.30822852,-0.12148049,-0.40332836,-0.48652056,0.08054319,0.13378952,-0.7915521],[-0.7257491,-0.7932184,0.10272839,-0.25080377,0.0010266063,0.74610263,-0.049907055],[0.42381865,-0.0553793,-0.38158083,-0.265551,0.85806245,0.1474835,0.14327356],[-0.67127514,-1.3377081,1.2235403,0.68773735,-0.28817493,0.81384164,0.74030864],[-0.71422875,-0.88451463,0.27248266,0.44150946,-0.58906794,0.77334875,-0.2741372]],"activation":"σ","dense_2_b":[[-0.038974255],[-0.060381696],[-0.11952605],[-0.073940076],[-0.046222135],[-0.047778048],[-0.04543839],[-0.24633041],[-0.30813476],[0.036111247],[0.013441597],[0.1894709],[0.040286675]]},{"dense_3_W":[[-0.07313357,-0.59815574,0.26091176,-0.66873443,0.35969868,-0.25591415,0.0072562387,-0.098555766,-0.4751247,0.21601625,-0.14175397,0.41238782,0.47897983],[0.09714538,0.3654853,-0.2926264,-0.28464285,-0.61904335,0.3250731,0.15649477,-0.22976924,-0.41835013,-0.24120942,0.41197148,-0.17491877,-0.5697462],[0.55913174,-0.20682354,0.04047605,-0.075866535,-0.51092017,-0.47107786,-0.1388181,-0.17455935,0.5574489,-0.6044243,-0.13675697,0.4066009,-0.3129467]],"activation":"identity","dense_3_b":[[-0.054309756],[0.06553867],[0.04563365]]},{"dense_4_W":[[1.1299008,-1.1184049,-0.16297631]],"dense_4_b":[[-0.059165344]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33540x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33540x00x00x00x00x00x00'.json deleted file mode 100755 index ef4b109aee..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33540x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.8744264],[0.95179135],[0.41017145],[0.033567343],[0.9481631],[0.94890034],[0.9500518],[0.9391581],[0.92971367],[0.91555744],[0.9017156],[0.03344094],[0.03347542],[0.033526078],[0.033655073],[0.033587176],[0.033420175],[0.033133168]],"model_test_loss":0.006604278460144997,"input_size":18,"current_date_and_time":"2023-08-11_12-47-30","input_mean":[[24.228636],[-0.006917462],[0.012768614],[-0.01302538],[-0.007990223],[-0.007133511],[-0.006058136],[-0.000751731],[0.0036597915],[0.011357695],[0.014827531],[-0.012985793],[-0.012987019],[-0.012994645],[-0.013017216],[-0.013077659],[-0.013120363],[-0.013297155]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.304586],[0.857909],[-0.13514984],[0.041853286],[2.706798],[-0.056241833],[0.21371262]],"dense_1_W":[[-0.3753853,-0.9076579,0.0028183204,0.4173851,0.21572869,-1.0650074,0.73067254,-0.042485468,0.09713275,-0.03332723,-0.06025824,0.031956095,-0.41729087,0.31993416,-0.17310858,-0.047939993,-0.17648701,0.17462116],[0.33882773,-0.6728253,0.008314714,-0.09627012,0.36394936,-1.1073593,0.40562075,0.025473012,0.14220724,-0.22702415,0.032973353,-0.19210276,-0.099463224,0.3244121,0.4324219,-0.2788309,0.019109316,0.013932906],[-0.0022891897,0.031610064,-1.2756119,-0.41923544,0.012356326,-0.58470213,0.4747707,-0.59731174,-0.27581474,0.25697255,0.45881832,-0.34830928,0.25764722,0.26794606,0.1684697,0.28286308,0.054468513,-0.20199662],[-0.07542859,0.49655056,0.009735591,-0.29418063,-0.39386368,1.3242066,-1.0746825,-0.027953196,0.4030883,0.05812593,-0.17800117,0.14682488,0.52946347,-0.23444709,-0.2074028,-0.1704285,-0.1765637,0.28617206],[2.4904616,-0.26425233,-0.0018980796,-0.21572022,-0.50891054,0.17968056,0.5879445,0.25236315,0.11600188,-0.48917735,0.18833756,-0.108221054,0.18672714,0.2742739,-0.25533918,-0.044307824,0.22729309,-0.061135843],[-1.5304627,-0.06861046,-0.0068868627,-0.14318405,0.5373798,-0.4130537,1.0160918,0.28602827,0.1930912,0.6789012,-0.4611178,-0.4333957,-0.061391115,0.2945637,0.18769418,0.11001372,0.012913331,-0.2238074],[-0.041391328,1.6325934,8.690423,-0.05333061,-1.1986765,-0.6498667,-0.09251747,0.8950851,0.6041451,0.18318479,-1.2228688,0.04124331,0.48312688,-0.46965152,-0.5156128,0.43232778,-0.04794754,-0.017222332]],"activation":"σ"},{"dense_2_W":[[0.37433198,0.6652587,0.08239935,-0.8569689,-0.8685764,-0.3847302,0.0137114385],[-0.35057282,-1.2175003,-0.42322615,0.38215703,-1.0018536,-0.15562555,0.6304607],[0.86870515,0.79735583,-0.4298693,-0.554179,0.43315074,0.091884896,0.17298584],[0.9098309,0.52323526,0.12250424,-0.6117293,0.70999146,0.24827984,0.08124493],[0.57016754,-0.119958416,0.007385769,-0.20906192,0.028813249,-0.092872046,0.018928468],[-0.20748374,-0.31650364,-0.22984746,-0.6644821,-0.058953296,0.064504504,-0.48933387],[-0.22011767,0.2896796,-0.48634374,-0.12751068,-0.70889044,-0.26188907,0.11740775],[0.015611131,-0.3213432,-0.6176512,-0.23218389,0.2165557,-0.08857583,-0.32597545],[0.97897273,0.065667436,-0.2384423,-0.51702297,-1.5663196,-0.2764533,-0.7045769],[0.11058509,-0.9896542,-0.6524602,0.28573242,-0.63486636,-0.24109863,0.24683195],[-0.66108924,0.24438925,-0.27961603,0.6331003,0.7140061,-0.40370527,0.74801046],[-0.15248063,-0.86366767,-0.5378505,0.54860836,-0.28483847,0.048412364,0.030324109],[-0.5823096,0.039869063,-0.044110443,0.24722692,-0.14052401,-0.2127331,-0.4708845]],"activation":"σ","dense_2_b":[[-0.23049933],[-0.005141671],[-0.006018821],[-0.09049717],[0.07267921],[-0.2727181],[-0.37398845],[-0.007982683],[-0.31346324],[-0.006329838],[0.18627632],[0.060891155],[-0.025011454]]},{"dense_3_W":[[-0.6244113,-0.0693489,-0.64380056,0.02070149,-0.2835836,0.17476825,-0.30840033,-0.18814965,0.20354885,0.48808318,0.12971187,0.6179497,-0.062635556],[-0.03557403,-0.6171725,0.38030297,-0.011414498,0.7638232,0.5485419,0.069103144,-0.53698826,0.41040367,-0.646017,-0.50121707,-0.34758377,0.05735551],[-0.2116303,0.35683113,-0.32435957,-0.6160469,0.15839952,0.04338889,0.16674682,0.29060665,-0.39650652,-0.32134357,0.6334751,0.45032698,0.4106783]],"activation":"identity","dense_3_b":[[0.035586465],[-0.021380048],[0.02714556]]},{"dense_4_W":[[0.96291214,-0.41048172,1.2709689]],"dense_4_b":[[0.03164057]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33542x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33542x00x00x00x00x00x00'.json deleted file mode 100755 index cae93624e0..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33542x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.103622],[1.1064674],[0.4549032],[0.04746862],[1.0982857],[1.0995609],[1.1011963],[1.0907159],[1.0762013],[1.0530915],[1.0245787],[0.04732885],[0.047370408],[0.047405586],[0.047371153],[0.047191557],[0.04685842],[0.046427477]],"model_test_loss":0.0077569992281496525,"input_size":18,"current_date_and_time":"2023-08-11_13-13-15","input_mean":[[24.77323],[-0.008526437],[0.012011691],[0.006570668],[-0.006429047],[-0.0059693544],[-0.005243256],[-0.0018391812],[-0.0014637707],[-0.0009910533],[-0.0016574132],[0.0064960546],[0.0065228636],[0.006551923],[0.006488435],[0.0064425557],[0.0063805063],[0.0062670223]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[3.3205738],[0.14958848],[-0.037750356],[2.9136846],[0.37804675],[0.029861098],[-0.23139778]],"dense_1_W":[[1.9326701,-0.5547836,-0.10067679,0.88928187,0.3556339,-0.44636774,0.371038,-0.16718003,-0.1884807,-0.48036063,-0.07517039,-0.37563908,0.008011507,-0.122201584,0.38154516,-0.52539575,0.3565951,-0.21173865],[-0.05472125,0.71019995,-0.011301738,-0.24624866,-0.20143683,0.6633662,-0.528109,-0.039701864,0.11818609,0.072079115,-0.06178089,0.09657236,0.26577142,-0.09257749,-0.33768046,0.16679412,0.043577697,-0.00800075],[0.08681189,0.67218554,0.016864384,-0.17151606,-0.7993779,1.7853086,-1.0030217,-0.03944043,0.4116835,-0.25059646,-0.008190873,0.24095483,-0.04000996,0.015966445,-0.048546206,-0.30038705,0.0048840884,0.13509746],[1.8621184,0.9286514,0.09670759,-0.8034425,-0.62457097,0.7103663,-0.60736674,0.08118307,0.21853067,0.34846613,0.11744647,0.5011902,-0.26050925,0.06353079,-0.00013581893,0.13610855,-0.20387033,0.17545028],[0.017074391,-0.6718979,-0.0025658803,0.1153182,0.39260125,-0.89202017,0.73113865,-0.48909268,0.13709295,-0.059374757,0.08379893,-0.21752448,-0.17059386,-0.12913309,0.55954635,0.06616547,0.2593372,-0.35252413],[-0.0015273993,1.122298,4.36107,-0.7284269,-0.52017367,-0.053717256,0.22980922,0.29242814,0.73537266,-0.28037038,-0.91037434,0.6036067,-0.20762318,-0.43595174,0.30240452,0.042510543,-0.03717491,0.16869526],[-0.057129644,2.118584,-0.030197065,-0.98787266,1.289168,1.9827989,1.6250021,1.1510297,1.2282369,1.2243376,0.013641883,0.543552,0.53434277,0.10262394,-0.19424945,0.7177195,0.3077161,-0.2747159]],"activation":"σ"},{"dense_2_W":[[0.13961074,-0.8202845,-0.7884319,0.05487456,0.4678429,0.49467292,-0.1308989],[-0.22201177,-0.32698002,-0.7149156,-0.29914114,0.031437565,0.047704495,-0.28477243],[-1.1148013,0.34092113,-0.18912317,-0.48008075,-0.8709616,0.59132445,0.40171188],[0.71819705,-0.2069683,0.51701564,0.9862385,-0.6635331,0.7514818,0.56039315],[-0.4868372,0.7213388,0.18281417,-0.06934696,-0.74189734,0.28737235,-0.11886813],[0.20839769,-0.28190994,0.67423296,-0.53066903,-0.09744761,0.4307269,-0.19752182],[0.26911464,-0.7672294,-0.62952495,0.1261736,-0.1012706,-0.5423726,0.6709568],[0.6176686,-0.08770763,-0.54375565,-0.10256734,0.7390516,-0.21484475,0.11860012],[-0.19913496,-0.7181119,-0.45452398,0.15518615,0.6978777,0.025296569,0.3637034],[-0.25252303,-0.53283435,-0.1554272,-1.2265081,-0.42687193,-0.36367923,-0.5279896],[0.32439613,-0.07298584,0.1197523,0.3783207,-0.7045304,0.37183088,0.21917883],[-0.09075075,-0.62557536,-0.3368084,-0.887969,-0.4871516,-0.23721167,-0.37883517],[-0.22336866,-0.7741714,-0.6305694,-0.4416341,0.7521898,0.00021530618,0.12290076]],"activation":"σ","dense_2_b":[[-0.121355705],[-0.09121598],[-0.24085803],[-0.083796315],[-0.094084196],[-0.058419645],[-0.14530613],[-0.037983466],[-0.080644384],[-0.025107358],[-0.004766168],[-0.08153612],[-0.044914465]]},{"dense_3_W":[[0.24312028,-0.01319292,-0.6061371,-0.6909818,-0.51359975,0.2992521,-0.39097613,0.31651005,0.2757285,0.4441153,0.31348884,-0.27545422,-0.3225179],[-0.39810908,-0.36194545,0.7269056,0.4569008,0.46710286,0.04934306,-0.3813575,-0.5831742,-0.3599856,-0.41585222,0.4099908,-0.41335598,-0.39183122],[0.306892,0.25172576,-0.07124628,-0.122216314,-0.41072568,-0.32011005,-0.027263654,-0.29434043,0.36800984,-0.007864523,0.36681712,0.40220886,0.41821438]],"activation":"identity","dense_3_b":[[-0.017188622],[0.047469802],[-0.052530196]]},{"dense_4_W":[[-0.30256894,1.1517153,-0.40644947]],"dense_4_b":[[0.042950604]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33580x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33580x00x00x00x00x00x00'.json deleted file mode 100755 index 5b1459e29b..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33580x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.2698],[1.0929606],[0.43473774],[0.041922506],[1.081593],[1.0849229],[1.0877095],[1.0787771],[1.0640684],[1.0383222],[1.0108876],[0.04182125],[0.041832544],[0.041841984],[0.041791342],[0.041712664],[0.041520424],[0.041276637]],"model_test_loss":0.00780085613951087,"input_size":18,"current_date_and_time":"2023-08-11_13-38-19","input_mean":[[25.180971],[0.067363806],[0.0050942847],[-0.0016889262],[0.0692244],[0.068829365],[0.06866644],[0.070981584],[0.07282052],[0.07147961],[0.07122264],[-0.0016967524],[-0.0016941526],[-0.0016961577],[-0.0017855666],[-0.0018609619],[-0.0020476414],[-0.0022919406]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.078407],[-0.085797824],[-0.60504895],[1.2304441],[1.2940428],[-0.2765851],[-0.1730718]],"dense_1_W":[[0.03620994,0.5334588,-0.008751684,-0.30718732,-0.24120554,1.1354307,-0.8072042,-0.32701683,0.3591096,0.08543978,-0.093012184,0.035917368,0.05168646,0.01635545,0.0006926348,0.21674627,-0.1275013,0.018545493],[0.003296379,0.27156684,-0.0114976885,0.24166274,0.21411923,0.8352162,-0.8050061,-0.0060145953,0.31223345,-0.34529817,0.22191735,0.27288175,-0.13967498,-0.44568652,0.24579433,0.1121055,0.23223591,-0.2451417],[-0.28206483,0.5281006,0.004273511,-0.058251712,-0.66737545,1.2072822,-0.48789716,0.09432811,-0.43518975,0.28679478,-0.041617993,0.34799293,0.14502835,-0.048017643,-0.4097651,-0.3127551,-0.21574068,0.43956098],[1.2072837,-0.23662613,-0.3173964,0.3888246,0.13292286,-0.1938199,0.6423224,-0.16508526,-0.24950479,-0.32070765,0.33587667,-0.31030202,-0.07912521,0.1687367,0.30611345,-0.17966121,-0.5359515,0.3222771],[1.2397379,0.4381082,0.3287358,-0.23143762,0.23506987,0.24820729,-0.96802294,-0.019559357,0.15710932,-0.0708022,0.043548137,0.082909495,0.052344177,-0.057601973,-0.30085152,0.35778126,0.2825749,-0.26779613],[-0.1566607,-0.26598597,-0.0057827565,-0.0664115,0.7773096,-1.0950903,0.25486425,-0.30872136,0.16972275,0.088417634,-0.04042932,-0.63080585,0.16424803,0.31180224,0.17867585,0.27970847,0.35946506,-0.47439978],[-0.021681845,-1.7487134,-6.625535,0.1751056,1.331768,-0.03913034,-0.052204903,-0.722452,-0.59748906,0.19350941,1.3864747,-0.45786792,0.005014887,0.4978294,0.06386993,-0.059275076,-0.19035634,0.068175]],"activation":"σ"},{"dense_2_W":[[-0.27746135,-0.11133147,-0.7466579,0.32316014,-0.82424444,0.8190084,-0.07618176],[-0.98910165,-0.29924926,-0.121483654,-0.06462649,-0.77615696,-0.052050546,-0.2068846],[-0.81079465,0.21189949,-0.7650154,0.16670461,-0.24258237,0.6706145,0.41312888],[-0.04046249,-0.2564188,0.13485432,0.19543083,0.4125496,-0.28913745,-0.47865254],[-1.2282639,-0.5878796,-0.13990462,-0.68876964,-0.4017427,0.6788837,0.5318957],[-0.5227068,-0.48116323,-0.5057654,-0.09864695,-0.32342318,0.5650167,-0.13734272],[0.6354482,-0.15141888,0.64957154,-0.046926428,-0.21597984,-0.24500787,0.3873409],[0.10921166,0.40626168,0.77957875,-0.94732684,-0.37726498,0.010828876,-0.6373631],[-0.6380874,-0.68041843,-0.50705653,0.40137365,0.13087752,0.8324961,-0.20889166],[0.7565542,0.08734602,0.53366995,-0.75452554,0.105391264,-1.0089295,-0.034701627],[-1.1198757,-0.2618769,-0.59588647,-0.706865,-0.21783987,0.86488605,0.3997857],[-0.8328754,-0.35271266,0.12354107,0.1924855,-0.78571886,0.2952341,0.24212927],[0.7423821,0.44760862,0.035012443,-0.8567946,-0.23191078,-0.5886413,-0.664454]],"activation":"σ","dense_2_b":[[-0.010436229],[-0.066020235],[0.0060121845],[0.031020565],[-0.15874258],[-0.07110535],[0.020249015],[-0.13936971],[0.08172514],[-0.19487327],[-0.16985166],[-0.07488271],[-0.1648508]]},{"dense_3_W":[[0.2368204,-0.38186413,0.16379678,-0.093882345,0.18792015,0.30424705,-0.2652192,-0.0128758745,0.4871652,-0.82823867,0.3168634,0.36287144,-0.05755385],[0.08671304,0.26755866,-0.44672224,0.3511056,-0.07436179,-0.029944455,0.51201284,0.011309003,-0.009461364,0.03749171,-0.14320603,-0.5220241,0.5982596],[-0.6713392,-0.4692543,-0.18836813,0.16650435,-0.38397953,-0.09753196,0.4263721,0.3648231,-0.48916298,0.63411295,-0.26365083,-0.5657471,0.31661007]],"activation":"identity","dense_3_b":[[-0.043500695],[0.043294493],[0.070429035]]},{"dense_4_W":[[-0.13705656,0.4213639,1.0240872]],"dense_4_b":[[0.0634434]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33581x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33581x00x00x00x00x00x00'.json deleted file mode 100755 index 1e7cb72b13..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018 b'8965B33581x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.970947],[1.0384973],[0.5339848],[0.0439044],[1.0386008],[1.0383806],[1.0382704],[1.0300301],[1.0274649],[1.0244931],[1.0205593],[0.043891665],[0.043891575],[0.04389554],[0.043873448],[0.04374348],[0.043487765],[0.042901814]],"model_test_loss":0.005093628540635109,"input_size":18,"current_date_and_time":"2023-08-11_14-02-50","input_mean":[[24.332022],[0.060984537],[-0.010774325],[-0.010102695],[0.06669931],[0.066552386],[0.06558183],[0.064041205],[0.059805464],[0.057570588],[0.052696057],[-0.010093866],[-0.010066769],[-0.010040301],[-0.01002835],[-0.010157424],[-0.0103778625],[-0.01061843]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.0042867805],[-0.08686578],[-0.037254773],[0.03485279],[1.0671247],[-0.047314014],[-0.993783]],"dense_1_W":[[-0.021375071,-0.14122938,-0.35861322,-0.08880356,-0.82792205,0.7598527,-0.4383258,0.5881781,0.65400213,-0.08076669,-0.47284502,0.6587817,0.42645591,-0.71615744,-0.19810899,-0.26471764,0.089353725,0.25006968],[-0.0043314192,1.954295,6.3405747,0.22489387,-1.1874827,0.14704707,-0.07096752,0.41535223,0.5072961,0.09738453,-1.6553766,0.052053954,0.10042309,0.32028568,-0.6243986,-0.57866776,-0.2910692,0.6025305],[-0.004210423,-1.1789036,0.043389764,-0.17041136,0.018858045,-1.028696,0.60524696,0.12432735,0.1403251,0.6718426,-0.58897483,-0.49425384,0.26766488,0.021670086,0.47191808,-0.2670336,0.17180552,-0.076177396],[-0.0014423821,0.40574962,0.09375788,-0.030430922,-0.28834507,0.96773094,-0.4115615,-0.25777864,-0.122904286,0.16757521,-0.093617134,0.086109094,-0.19272889,0.12177329,-0.16501935,-0.3261848,0.109229244,0.048125066],[0.7480793,-0.44217807,0.47803837,0.12700126,-0.30083793,1.1000353,-0.34668228,-0.22410758,0.59894305,-0.2912633,0.106452525,0.12899296,0.16302301,-0.58852977,-0.4219825,0.3098118,0.30627355,-0.26459885],[-0.0010856693,-0.073189795,-0.010420755,0.510726,0.48776355,-1.3092571,0.5646315,0.09301288,-0.04550693,-0.18133546,0.030909019,-0.22555129,-0.37417185,0.066544555,0.21544787,-0.19924314,0.04824762,-0.037603877],[-0.7319411,-0.53309584,0.47002098,0.51350844,-0.15382649,0.8515273,-0.2119853,0.10290207,0.060688037,-0.017283736,0.07458493,0.12407178,-0.3054991,-0.5866961,0.32772487,-0.36159655,0.15252681,-0.10539709]],"activation":"σ"},{"dense_2_W":[[-0.8456761,0.29112202,0.5538746,-0.27183205,-0.66401464,0.9681805,-0.45490798],[-0.29222146,-0.19562286,0.64160013,-0.29229674,-0.22581333,0.8861653,-0.4574926],[0.20166388,0.07838155,-0.07201707,0.28346765,0.5453596,-0.2245247,0.5990845],[-0.7644849,-0.2661926,0.28970414,-0.36327568,-0.696993,0.51633406,-0.0007974338],[-0.58643913,-0.088404864,0.8255952,-0.36814624,-0.7079003,0.37753046,-0.022236357],[-0.06973816,0.19982524,-0.83173025,0.71500087,-0.3413635,-1.0756832,0.73801243],[-0.13959065,0.19020522,0.24497935,0.56480676,-0.2445819,-0.8559911,0.45792028],[-0.02966249,-0.7037074,0.8162655,0.044394657,-0.36493388,1.2052823,-0.84985954],[-0.42486554,0.19081669,-0.012745155,-0.80222046,-0.5517139,0.23807476,-0.1403817],[-0.5011139,-0.3268968,-0.6706034,-0.15131825,-0.3535179,-0.07793423,-0.2949964],[-0.108988635,-0.38238916,0.66745275,-0.89970803,-0.22937314,0.28115448,-0.01224377],[0.23614992,-0.08788459,-0.09533522,0.3415471,0.20813029,-0.80524844,0.5243813],[-0.7208867,-0.55935323,0.19054662,-0.89190704,-0.95664173,0.9696772,0.28062636]],"activation":"σ","dense_2_b":[[-0.052245323],[-0.22305784],[-0.09663632],[-0.20786262],[-0.014743078],[-0.08700816],[-0.10860553],[0.080216914],[-0.2522886],[-0.39075246],[-0.11641336],[-0.07052046],[0.5928834]]},{"dense_3_W":[[-0.7149941,-0.47273389,0.41016644,-0.104267396,-0.31817394,0.9295361,0.055846684,0.010776243,-0.5708312,-0.022532204,-0.6505357,0.15083706,-0.34012407],[-0.021996325,-0.48407006,0.39829472,-0.41447127,-0.45983404,0.2265217,0.64464855,-0.14684099,-0.13853866,0.1992617,0.023521371,0.6656039,-0.001323564],[0.11754858,-0.5532173,-0.6610757,-0.14822331,0.48995,-0.5581861,0.22167473,0.5960896,-0.36395517,0.18789944,-0.047904395,0.038645275,0.7867522]],"activation":"identity","dense_3_b":[[0.12575556],[0.038765904],[-0.04705467]]},{"dense_4_W":[[0.68855655,0.4865954,-0.44680688]],"dense_4_b":[[0.05231935]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018.json deleted file mode 100755 index d70742e35d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.113561],[1.288432],[0.44980875],[0.049022406],[1.276642],[1.2789117],[1.281596],[1.2659067],[1.2421862],[1.2042812],[1.1628327],[0.04884337],[0.048885074],[0.04892067],[0.048904777],[0.04874475],[0.048363086],[0.047754645]],"model_test_loss":0.008815777488052845,"input_size":18,"current_date_and_time":"2023-08-11_12-22-51","input_mean":[[24.583223],[0.035939325],[-0.0035848166],[-0.00051022915],[0.040922612],[0.04026527],[0.039454605],[0.038882907],[0.03908899],[0.037455987],[0.037543096],[-0.0004972871],[-0.00047999652],[-0.00047416435],[-0.000555545],[-0.00067389105],[-0.0009116623],[-0.0012008604]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.6907706],[0.020205228],[1.9151607],[2.0762143],[-0.070254005],[1.656243],[0.040563114]],"dense_1_W":[[1.9184645,0.12281177,-0.05548771,0.3325733,0.049481086,-0.93242055,1.1692095,0.029121507,0.09385143,-0.09659533,-0.11398056,-0.42710423,0.0013246255,0.5561167,-0.1495541,-0.21716745,0.1501572,-0.089972384],[0.0095424475,0.5977504,0.01609186,0.008589333,-0.6946006,1.0936681,-0.6658466,0.21197227,-0.06230653,0.17695144,-0.13071376,0.49202713,0.38372365,-0.6296875,-0.6752815,-0.07816118,-0.20058149,0.47544223],[0.7138527,0.88336164,0.10898959,0.07776455,-0.11466185,0.85354257,-0.44323412,0.28020075,0.1735972,-0.30542865,0.0051241503,0.41995117,0.010464949,0.16623583,-0.4241442,-0.028010447,-0.026523042,-0.14295045],[0.802182,-1.1617771,-0.1162637,-0.0067429696,0.18329306,-1.2598122,0.9663145,-0.18042558,-0.41879544,0.5239016,-0.06684812,-0.45527652,-0.28534758,0.2599457,0.2397677,-0.0516189,0.007355238,0.23112406],[-0.0030232992,-1.1722454,0.051927917,0.095425725,0.19179568,-0.96292347,0.33426154,-0.015786754,-0.26612803,-0.41344067,0.36896846,0.25567958,0.21475382,-0.40880233,-0.21282537,-0.22598088,0.27500418,0.0051436215],[1.9630992,-0.32222328,0.058737174,-0.5038972,-0.16381685,1.1271104,-0.9266026,-0.31080577,-0.05270356,0.24345441,0.07495984,0.039676085,-0.27428615,0.117246784,0.3644701,-0.038675178,0.4529369,-0.3158286],[-0.006583586,-1.90042,-5.086346,1.178374,0.9872427,-0.08279943,-0.11563482,-0.085821435,-0.30849832,-0.483396,1.235762,-0.6782165,-0.1051005,0.049771134,-0.08851904,0.47486317,-0.18179584,-0.33851555]],"activation":"σ"},{"dense_2_W":[[-0.98456967,-0.08674989,0.050625086,-0.7365153,-0.20228219,0.14482267,-0.011665877],[-0.5769628,-0.497833,-0.57603395,-0.27131066,-0.43619764,-0.41154072,-0.44292274],[-0.030439235,0.4782569,0.09370738,-1.0248427,-0.75271314,0.27682835,0.100586735],[0.7785517,-0.8945198,-0.24256033,0.12664571,0.73264015,-0.72209287,0.32675773],[-0.79072905,0.5852975,0.8183082,0.11523399,0.013696286,0.8965856,-0.12477829],[0.99764585,-0.9510505,0.026474258,0.8939435,0.6465811,-0.30319425,0.5071415],[0.4976951,-0.7593475,-0.8069521,0.42173788,0.46559027,-0.18526554,-0.5820664],[0.07649806,-0.0935198,-0.07850874,-0.52957004,-0.6727888,-0.7231066,0.25522104],[-0.27911595,-0.9477233,-1.153818,-0.15193523,0.7870086,-1.0027183,0.7966875],[-0.9716597,0.89015436,0.32853165,-1.0613221,-0.12263486,0.3528593,-0.5928117],[0.2827416,-0.32474115,-0.9680884,0.022911986,0.27188945,-0.98760265,0.3656817],[0.7160093,-1.0138652,-0.50953317,0.46416208,0.06371475,-0.028066937,0.23573612],[-0.77464837,0.44803238,0.14630596,-0.8826064,-0.56392753,0.6949805,0.12345892]],"activation":"σ","dense_2_b":[[-0.25699404],[-0.26730993],[-0.015171051],[-0.09039672],[-0.061481774],[-0.07387397],[-0.047998182],[-0.30401027],[-0.02116504],[-0.07505101],[-0.15518288],[-0.117099114],[-0.09308846]]},{"dense_3_W":[[-0.004456457,-0.17817564,-0.5636806,0.58977455,-0.6984907,0.37438712,0.4960488,0.08712738,0.672033,-0.39785558,0.5507936,0.3100092,-0.41587812],[0.36591443,-0.53552973,0.346754,0.4773916,-0.07704387,-0.27689734,-0.5725575,-0.2300009,0.38975373,0.5509545,-0.06661364,-0.16530657,-0.32090378],[0.5468248,-0.2983021,-0.18621923,-0.1862858,0.6007365,-0.7406874,0.013266623,0.53915715,0.18158531,0.8944796,-0.62438655,0.092128076,0.3605866]],"activation":"identity","dense_3_b":[[-0.09266206],[0.104886286],[0.028007649]]},{"dense_4_W":[[-1.0827008,0.1191742,0.25597933]],"dense_4_b":[[0.081487015]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33630x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33630x00x00x00x00x00x00'.json deleted file mode 100755 index 263e742b40..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33630x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.527258],[1.58837],[0.5055459],[0.046407],[1.5704566],[1.5757883],[1.5804579],[1.5656428],[1.5384976],[1.4943614],[1.4440472],[0.046127472],[0.046209764],[0.04628142],[0.04638724],[0.046373256],[0.046248272],[0.045979995]],"model_test_loss":0.013032137416303158,"input_size":18,"current_date_and_time":"2023-08-11_15-08-28","input_mean":[[23.675987],[-0.061649498],[-0.0037433535],[-0.00974628],[-0.0592297],[-0.059604164],[-0.060115922],[-0.06090137],[-0.05811594],[-0.054634698],[-0.050830174],[-0.009785485],[-0.00977242],[-0.009764823],[-0.009743659],[-0.009729754],[-0.009756633],[-0.009844285]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.2454443],[-3.9935453],[0.028671095],[0.5960012],[-0.03880155],[0.05596765],[-0.034470085]],"dense_1_W":[[-1.64422,0.68550414,0.54501456,0.53847647,0.27692503,0.063880496,-0.7023363,0.5811879,0.4607719,0.32430968,0.33705142,-0.15086013,0.25737584,-0.14769863,-0.5269933,0.09086217,-0.039941527,0.056566585],[-1.6872351,-0.8609276,-0.5547092,-0.32451072,-0.42200893,-0.61688584,1.3860269,-0.36377195,-0.3244275,-0.36894146,-0.46561348,0.135956,-0.314409,0.33939078,0.11052305,-0.4511116,0.6767753,-0.25145525],[-0.0011624083,-0.46549657,-0.029367186,0.0338469,0.10036589,-1.3792645,1.3517435,-0.087907985,-0.17922819,0.27989322,-0.1508471,-0.30754912,0.12222471,0.27249634,-0.11857876,0.2081331,-0.20149365,0.092303105],[-0.019411901,-2.743489,0.2092647,0.03613767,-1.4975988,-2.199135,-1.4105736,-1.1626186,-1.1813308,-1.2874912,-1.0614506,0.12311394,-0.35716504,-0.39015725,-0.19417982,0.030657688,-0.10556074,0.30376726],[-0.0013404661,0.811287,-0.011727227,-0.184332,-0.50731385,1.0558553,-1.0108443,0.3428108,0.06010551,0.10949871,-0.1949178,0.31412193,0.35021275,0.1347588,-0.3269873,0.002721337,-0.3956695,0.107962616],[0.0018287555,0.9383599,-0.020639788,-0.10069178,0.012285102,0.8423632,-0.76416844,0.2949073,0.02011132,0.32481852,-0.20832625,0.09446031,0.05286432,-0.25073406,-1.0954369,0.19070928,0.29430318,0.21283779],[-0.0031318972,1.86199,3.7149577,-0.45614806,-0.9853326,0.0031807204,-0.36801562,-0.017010337,0.8629713,0.27299413,-0.93133396,-0.040520113,0.20344736,0.16688503,0.18763259,-0.3295253,-0.44451007,0.54270303]],"activation":"σ"},{"dense_2_W":[[-0.10703138,0.26329565,0.372871,0.62210536,-0.91045755,-0.5059908,0.082728624],[-0.8455082,0.60686517,0.77131647,0.18505652,-0.83584833,-0.061201718,0.06414944],[0.9602546,-0.33188254,-0.6254281,0.28107804,0.4938986,0.19022591,-0.021539062],[0.6665293,-0.88368744,-0.4690383,0.09154278,0.07947504,0.50024533,0.59482914],[-0.38501546,-1.222405,0.2893011,-0.6509259,-0.70557487,-0.66354203,-0.10562698],[0.49674258,-0.5769124,-0.49069,-0.41817957,0.67324835,0.4933393,-0.10286841],[-0.2216885,0.47380883,0.56191033,-0.28784683,-0.4096605,-0.490356,-0.031157235],[-0.0936251,-0.45093265,-0.76677954,-0.3329675,0.8052054,0.061642174,0.5920758],[-0.6441064,0.4133462,-0.15337071,-0.0061294995,-0.73091877,-0.11528061,-0.37335342],[0.18037143,0.040658288,0.91772383,0.17238702,-0.43315202,-0.4585807,-0.4309972],[0.2177669,-0.30795693,0.17052971,-0.16855669,-0.13677986,-0.69589096,-0.19900195],[-0.65990835,-0.1468485,-0.12448653,0.4080429,-0.14782807,-0.4780015,0.24199547],[0.34541848,0.07740233,-0.46892044,-0.18850818,0.12455788,0.3817125,0.20588997]],"activation":"σ","dense_2_b":[[0.004909596],[-0.1015675],[-0.026956508],[-0.14565209],[-0.068403244],[-0.17654194],[0.011075499],[-0.07494447],[-0.17450505],[0.081554756],[-0.067178436],[-0.08978031],[-0.16875927]]},{"dense_3_W":[[0.3513672,-0.21975671,-0.040741704,-0.6609442,0.47521582,-0.1486722,0.40466824,-0.651978,-0.1652465,0.65699995,0.5369138,-0.07486931,-0.4354842],[0.15970285,0.41789836,-0.22640069,-0.57340044,0.4493888,0.14716445,0.4456815,-0.39007702,0.5953172,0.079848245,0.08602837,0.51125026,0.2055881],[-0.44146788,-0.50463027,0.28063488,0.044468172,0.21196483,0.7198564,-0.37790608,0.103921935,0.4282467,-0.56497794,-0.14485644,0.31268966,0.57528377]],"activation":"identity","dense_3_b":[[-0.051718097],[-0.07012978],[0.038476463]]},{"dense_4_W":[[-0.54659784,-0.6573955,0.52299213]],"dense_4_b":[[0.05747961]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33650x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33650x00x00x00x00x00x00'.json deleted file mode 100755 index 4cee46ce78..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021 b'8965B33650x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.4544187],[1.1398869],[0.59536827],[0.03667061],[1.1367389],[1.1371896],[1.1369772],[1.1125838],[1.0882599],[1.0540591],[1.015276],[0.0365254],[0.03656361],[0.03660487],[0.03671011],[0.036751248],[0.036655042],[0.036459148]],"model_test_loss":0.00820766668766737,"input_size":18,"current_date_and_time":"2023-08-11_15-33-20","input_mean":[[16.952526],[-0.052201446],[-0.0025111593],[0.008815221],[-0.04683998],[-0.048375413],[-0.049727276],[-0.04895246],[-0.046067394],[-0.042347096],[-0.043832958],[0.008778602],[0.008794993],[0.008793817],[0.008708494],[0.008642194],[0.008570167],[0.008426222]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.6888532],[-0.14074084],[-4.6503873],[-0.0526546],[-0.16162582],[-4.8515434],[0.0059119985]],"dense_1_W":[[-0.1887723,1.7019817,-0.0113050295,-0.84645253,0.5320028,1.9590821,0.32137358,0.4540078,0.31248295,0.3334322,0.94135123,0.46212864,0.41069177,-0.008444669,0.44834596,-0.1659424,0.075368986,-0.14096133],[0.09387379,-0.24212502,0.004232037,0.1580718,0.5345186,-1.7837541,0.8140116,0.35570875,-0.09320282,-0.33667397,0.1162101,-0.07693762,-0.4861762,0.39767268,0.37297454,-0.23607363,-0.07967667,0.044579674],[-2.367052,-0.45616403,-0.06572045,-0.2425425,-0.008704978,-0.20262632,1.2449195,0.03634092,-0.26020807,-0.18703146,-0.27698797,0.04616871,0.3345856,0.27772164,-0.38416603,-0.26807493,-0.179506,0.45063913],[0.0060991277,1.3728696,6.3618674,-0.1529537,-1.0295473,-0.36459753,-0.5428813,-0.1351585,1.359785,0.59491414,-0.95546675,0.47300407,-0.07679976,-0.4389862,-0.09457229,0.09079313,-0.3535876,0.35535023],[0.10419659,0.6981407,0.0010684849,0.50049585,-0.6847731,1.2972739,-0.845766,0.4630602,0.014233105,-0.22511983,0.036824916,0.03641603,0.14271958,0.017790886,-0.62306106,-0.45059016,-0.12857214,0.3850661],[-2.4553664,0.7025891,0.07218532,0.3614062,-0.18104361,0.14960986,-1.4881148,0.47337767,0.12397967,0.15814431,0.22360176,-0.14111422,0.026148688,-0.4370157,0.06734503,0.2592729,0.23636505,-0.40628332],[0.011856804,0.28269672,-0.8995745,0.5396218,-0.41245276,-1.3505635,1.202017,0.23253399,-0.109473534,-0.1018154,0.30684808,0.012973135,0.26841184,0.26688126,-0.936263,-0.32659927,-0.01672119,0.30120432]],"activation":"σ"},{"dense_2_W":[[0.3640571,-0.6617311,-0.0747308,-0.37031746,0.6537133,0.37298128,-0.53218305],[-0.11639251,0.61945325,0.0017198602,0.1977158,-0.8382063,-0.58378947,0.45054537],[-1.5765465,-0.4710046,-1.2433935,-1.1040761,0.11871377,-1.103308,-0.08877445],[-0.35699993,0.6091763,0.03869232,-0.27107364,-0.480981,-0.37596822,0.63457584],[0.3026075,0.5471183,0.5758416,-0.22221741,-0.8760496,0.02318747,-0.014120267],[2.2380452,-0.91835636,-4.180824,0.85650325,2.4713848,-1.189591,-0.59328234],[0.4808254,0.5034869,-0.06683023,-0.2557325,-0.46868747,-0.563796,0.3365589],[0.17383875,0.052510574,-0.2056088,0.06328794,-0.0013120257,-0.39633247,-0.124248356],[0.32954514,0.45643237,0.41245767,-0.6036774,-0.11574388,-0.3204366,-0.17148384],[0.32425106,0.045497462,0.35014722,0.43193093,-0.43063545,0.021148223,0.30852592],[-0.25192562,-0.5058624,-0.8747967,0.552287,0.750765,0.5214585,0.05243548],[1.162155,-3.353464,0.5340603,0.659619,0.7062718,3.5616868,-0.5632878],[0.3252148,-0.06799463,0.5038412,0.12492446,0.07536071,-0.7216808,0.56761354]],"activation":"σ","dense_2_b":[[-0.058470216],[0.013836472],[-0.11013916],[0.024257516],[-0.047517203],[1.0202676],[-0.028003285],[-0.07813839],[-0.020832257],[-0.024440002],[-0.021560166],[-1.8247504],[-0.041251946]]},{"dense_3_W":[[0.40882266,-0.55162454,0.19300854,-0.7047124,0.18826057,-0.024725482,0.26570073,-0.54785085,-0.47576043,-0.58123916,0.60901785,-0.034762446,0.30913785],[-0.4319101,-0.61121434,-0.3207124,0.45264772,0.043344818,0.176912,0.48326144,0.14974174,-0.4031163,-0.005480138,0.21610041,0.40871677,-0.3560042],[0.43242753,-0.27668396,0.2542409,-0.29328224,-0.467545,0.8394127,-0.62540203,0.22238283,-0.031581767,0.07810114,0.41339856,0.8512083,-0.37855253]],"activation":"identity","dense_3_b":[[-0.03324967],[0.0075375573],[-0.052993078]]},{"dense_4_W":[[0.5854674,0.016769838,1.1952219]],"dense_4_b":[[-0.04352723]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021.json b/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021.json deleted file mode 100755 index c221878177..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY HYBRID 2021.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.740597],[1.6114016],[0.5348656],[0.046610184],[1.595203],[1.6010917],[1.6055775],[1.5847278],[1.5526379],[1.5036105],[1.4504586],[0.04635463],[0.046429936],[0.046500154],[0.046611696],[0.046591446],[0.046455257],[0.046220616]],"model_test_loss":0.01294305082410574,"input_size":18,"current_date_and_time":"2023-08-11_14-35-46","input_mean":[[23.0379],[-0.053410813],[-0.0019288365],[-0.0063912515],[-0.050324135],[-0.05122038],[-0.051873837],[-0.051581234],[-0.048981857],[-0.047338136],[-0.045371193],[-0.0064203762],[-0.006407644],[-0.006401244],[-0.006397862],[-0.0063910685],[-0.00646659],[-0.0066046687]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.5836827],[-0.00027897302],[-0.18345492],[1.9316171],[2.4109695],[-0.35735247],[-0.00752829]],"dense_1_W":[[-0.19923586,-0.8446253,-0.049223807,0.062187098,0.034134634,-0.5164691,0.5356359,0.02361736,-0.094354145,-0.13402478,0.03197027,0.025565224,-0.34767163,0.44327018,-0.2331072,0.08544469,0.13220021,-0.042109292],[0.19774629,0.7956804,0.048354603,-0.03464038,-0.5552806,1.4616147,-1.1069727,0.25491667,0.24574293,-0.032276858,-0.074901365,0.32208532,-0.005093918,0.04149316,-0.38724327,-0.3423741,0.038095005,0.20536087],[-0.01277339,-1.1209253,-3.2829685,0.2908269,0.7730306,-0.26604077,0.15447722,0.3180269,-0.39517486,-0.7156121,0.5851515,-0.157586,0.20472787,-0.10676806,0.103783496,0.38098288,-0.20058244,-0.17163335],[1.0040841,0.5252502,0.022688726,0.2826037,0.21658197,0.34697813,-0.94360363,0.24253304,-0.18907677,0.3291399,-0.11032786,-0.018658556,0.083128914,-0.6952669,0.32141057,0.35096252,-0.33404535,-0.04190496],[1.8762695,0.36984375,0.050812285,-0.69581956,-0.06582166,0.15085408,0.7331872,-0.22675583,-0.21822771,-0.05756491,0.2606855,0.33968002,0.33952188,0.08715113,0.047839224,-0.36322674,-0.25783,0.3792682],[1.4820158,0.1705126,0.0016943603,0.4127989,-0.0974151,-0.9748564,0.8694424,-0.44104308,-0.11535523,0.46097124,-0.24303544,-0.6474734,0.12288866,0.059170075,0.5683426,-0.27918825,-0.1918551,0.038009226],[-0.036992043,-3.7975738,0.13517864,0.27046844,-2.310979,-1.828817,-1.5850654,-1.539081,-1.5010515,-0.6565915,-0.9062962,-0.20627469,-0.67237496,0.12094677,-0.4404271,-0.19511403,0.5184492,0.33670986]],"activation":"σ"},{"dense_2_W":[[-0.42162207,0.37654948,0.20128639,-0.063237175,-0.48145297,0.4043876,-0.3341159],[0.44190538,-1.1244025,-0.09626844,-1.0280551,0.18970345,0.26944143,-0.009037805],[-0.49628687,-1.2132783,0.52467674,-0.7936528,-0.9315534,0.56592065,0.73007417],[-1.1409178,0.2814847,-0.25048304,-0.12513222,-2.585411,-0.61156756,-1.9930322],[-0.22451939,1.0647622,-1.433535,0.027757127,-2.0988069,-1.5258986,-1.1993341],[-0.39952537,0.90642506,-0.15748514,0.093761675,-0.14429392,-0.34393898,0.54427654],[-0.97083896,0.3346563,-0.51369995,0.31469372,-0.33595,-0.14703576,-0.02035328],[0.040784314,1.0367972,-0.2969124,0.8747469,-0.17848283,-0.3237289,-0.09698425],[0.1814441,-0.9662698,0.13469651,-0.82734567,-0.0686567,0.20662351,0.010672753],[0.7433569,-1.089515,-0.5163916,0.07499303,-0.0010849822,-0.03413402,0.3965658],[-0.070186645,-0.9964952,0.03863335,-0.39458206,0.121162325,0.0053036516,-0.23557144],[0.34303343,-0.22630331,0.42313117,-0.40690577,-0.72221476,-0.43852168,-0.6039356],[-0.45295054,-0.11365345,-1.2165514,-0.090053685,-0.5146623,-0.9904289,0.33478776]],"activation":"σ","dense_2_b":[[-0.46519402],[0.015997758],[-0.15750933],[0.36400142],[-0.0012292],[-0.056723733],[-0.11375456],[-0.05405809],[-0.015591645],[-0.0058899955],[-0.04078644],[0.00196873],[-0.16756381]]},{"dense_3_W":[[0.047287945,-0.6736067,-0.46639067,0.9129947,0.33239195,0.62215215,0.4689233,0.10021073,-0.6075113,-0.49370164,-0.27906764,-0.047028817,0.12527764],[0.09248094,0.1314878,-0.33640304,-0.49161217,-0.21528612,-0.5316355,-0.095554546,-0.5099446,0.39594427,-0.4868655,0.2566146,0.19383566,-0.56233704],[0.17183253,-0.6922636,-0.7815626,1.7245736,0.26443008,0.34830126,0.18106776,0.4897128,-0.5520722,-0.3594627,0.04037111,-0.46142736,0.64785737]],"activation":"identity","dense_3_b":[[-0.0055949884],[0.06270205],[0.041998606]]},{"dense_4_W":[[0.9982169,-0.30214822,0.8375058]],"dense_4_b":[[-0.011819658]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02181x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02181x00x00x00x00x00x00'.json deleted file mode 100755 index 986005262e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02181x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.939101],[1.5599267],[0.57329994],[0.051986337],[1.5397805],[1.5469866],[1.5538288],[1.5324374],[1.5024316],[1.4477412],[1.390682],[0.051756933],[0.051815208],[0.051863786],[0.05182103],[0.051682103],[0.05124605],[0.050552182]],"model_test_loss":0.0067290966399014,"input_size":18,"current_date_and_time":"2023-08-11_16-34-05","input_mean":[[24.415758],[-0.0708019],[6.1642786e-5],[-2.1343174e-5],[-0.06627885],[-0.06775841],[-0.06956871],[-0.06583787],[-0.064153455],[-0.06203538],[-0.058261454],[-1.822088e-5],[-1.6343323e-5],[-2.2065358e-5],[-6.640849e-5],[-0.00010978214],[-0.00016678876],[-0.00023529833]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.090955906],[0.04917988],[-0.1741757],[-0.10349463],[0.073517144],[-0.14433604],[-0.21417597]],"dense_1_W":[[0.031386774,-0.0064099,0.008045171,0.2867708,-0.08236162,-0.84199697,0.10240696,0.13015348,0.21739843,0.13009188,-0.336333,0.18302079,-0.4356695,0.20127627,-0.14926645,-0.18274651,0.20071413,-0.009890185],[0.01055423,-0.9589615,-4.888261,-0.4326293,0.9792688,0.06254708,0.81589156,-0.22105382,-0.72918415,-0.47384414,0.57448494,-0.89492524,-0.42377415,0.28702468,0.94103277,0.3108972,0.22522354,-0.06581927],[0.00889319,0.5760613,-0.011418503,-0.2077564,-0.20235416,1.1582084,-0.71085477,-0.22053532,0.048205245,-0.0015826726,0.071042135,0.5661853,-0.19431645,-0.14515138,-0.23947677,-0.06749122,0.15579678,0.042601693],[0.021154417,0.73471886,-0.20633163,-0.092965506,-0.11627686,0.78098047,-0.3053794,-0.10012283,0.19263598,0.108361736,-0.21976234,0.1443252,-0.27093878,-0.088000044,0.14388824,0.12235138,0.7552596,-0.30535087],[0.7607973,0.059191745,-0.17095767,-0.18675576,0.4779047,-0.8605541,1.0540863,0.077983476,-0.35377684,0.34912428,-0.23799801,-0.61662775,0.19051781,0.324648,0.20347545,0.34229413,0.3465081,-0.20990801],[0.016754853,0.13105184,0.060855266,0.19800498,-0.25625008,0.93284976,-0.99328595,0.43371382,0.1287163,0.3198935,-0.34120345,0.36319074,-0.17294398,-0.40115258,0.018337402,-0.10593194,-0.09644049,0.093416676],[-0.80104244,0.5966007,-0.17412119,0.0745668,0.26523033,-0.12644067,0.37905166,-0.47610426,-0.19432892,0.23034103,-0.11601362,-0.0361885,-0.44668338,0.47873983,0.13158317,-0.19112219,0.28012928,0.10046652]],"activation":"σ"},{"dense_2_W":[[0.12751395,-0.579469,-0.42941913,-0.82789993,0.118697666,-0.030509774,-0.4625477],[0.43198177,0.34745836,-0.7453266,-0.28072536,0.3007269,-0.5361298,0.21595009],[-0.64348674,-0.43256557,0.5034301,0.23926352,-0.71879435,0.54971355,-0.32021347],[0.021957472,0.5988634,-0.9111236,-0.8090046,-0.04196959,-1.0256908,0.7584421],[-0.04072775,-0.5223909,0.8810148,0.102556,-0.08203382,0.8192045,-0.31275043],[0.52576905,-0.11147491,-1.0164086,-0.46802506,0.69514006,-0.9750496,0.25202104],[0.5843185,-0.43077394,-0.5290841,-0.8182589,0.56711,-0.2554457,0.27834472],[-0.9143706,0.14909329,0.7489671,0.21731603,0.094174676,0.5228992,-0.63162416],[0.5781319,0.077873595,-0.7260175,0.053800765,0.22003157,-1.1925383,0.4699523],[-0.8478256,0.27122667,0.574439,0.3034642,0.18656549,0.30236706,-0.74189764],[-0.89728916,-0.540247,0.42537263,-0.26421598,-0.71848625,0.5283021,0.27896],[-0.6038582,-0.6634362,0.35248938,0.39700025,-0.96313494,0.1258266,0.27540943],[-0.702523,0.28951612,-0.34453344,0.061114356,-0.6473836,-0.3301445,-0.5951263]],"activation":"σ","dense_2_b":[[-0.044364497],[-0.21510312],[0.11091102],[-0.13621476],[-0.06183172],[0.102863066],[-0.036004663],[-0.07521248],[-0.19428256],[-0.050729755],[-0.16412741],[-0.1322501],[-0.13190113]]},{"dense_3_W":[[0.21880057,0.17238903,-0.59318775,0.54590964,0.328959,-0.08423074,-0.021402186,-0.30087715,0.105242334,-0.07735786,-0.64967847,-0.60325295,-0.019917456],[-0.5737253,0.054932736,0.6915356,-0.5588708,-0.3497235,-0.66048837,-0.55370605,0.6054378,-0.6448654,0.5938389,0.70369726,0.15654652,0.4921153],[0.22326133,0.38247967,-0.68284494,0.74056363,-0.46936858,0.6398252,0.30618396,-0.1293351,0.72910917,-0.47571996,0.19982132,-0.50786984,0.120341815]],"activation":"identity","dense_3_b":[[0.0075428453],[0.03185654],[-0.06226225]]},{"dense_4_W":[[-0.20277399,0.36300623,-0.80966884]],"dense_4_b":[[0.048043206]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02191x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02191x00x00x00x00x00x00'.json deleted file mode 100755 index cda75eb28b..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017 b'8965B02191x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.0005245],[1.1223631],[0.56650954],[0.040156633],[1.1045293],[1.1096628],[1.1155437],[1.1086388],[1.1007575],[1.0822154],[1.0583125],[0.040068675],[0.040072493],[0.04007388],[0.039984047],[0.039851412],[0.039609052],[0.039315373]],"model_test_loss":0.005991812329739332,"input_size":18,"current_date_and_time":"2023-08-11_16-59-30","input_mean":[[25.675858],[-0.14288636],[-0.014269486],[-0.0032686314],[-0.13565269],[-0.1382612],[-0.14184494],[-0.14358865],[-0.14512834],[-0.14613849],[-0.14589326],[-0.0033924344],[-0.0033741088],[-0.003360874],[-0.0033476953],[-0.0033650529],[-0.003380635],[-0.0034961724]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.17480564],[0.18210134],[-0.56885064],[-0.19985428],[-0.045291904],[-0.57443535],[-0.11631125]],"dense_1_W":[[-0.007863749,-0.28470495,0.04231277,-0.66548604,-0.12848611,-0.91329616,0.30217457,0.16402288,0.19537158,-0.256202,-0.14585154,0.09115254,0.1150835,0.30422798,0.017745864,-0.29077125,0.5362173,-0.1107794],[-0.005497062,-1.2494678,-5.5986447,-0.093020305,0.934668,0.26794314,1.5251178,-0.6939207,-0.6933608,-0.6269682,0.42408594,-1.5087744,-0.582999,0.43095827,1.0934985,1.0581348,0.19804095,-0.61133814],[1.2855586,-0.045317598,-0.041259,0.6257151,-0.5867755,1.315738,-0.619025,-0.031879213,0.08639269,0.38603297,-0.21348597,0.4264018,-0.23836033,-0.62063384,-0.10609298,-0.61321807,0.107925534,-0.0714755],[-0.0047950665,-0.43550637,-0.028580034,-0.3060538,0.5702284,-1.100899,0.34844038,0.10669702,-0.11319558,0.3034445,-0.20166925,-0.30887967,0.33024544,0.51993126,-0.30957666,-0.01086123,-0.11150792,0.20599872],[-0.0060232766,-1.0670959,0.34271115,-0.76167846,0.07718474,0.8662963,-0.26442152,0.36251798,0.23742421,-0.071805924,-0.110565305,0.08984451,0.35723057,-0.25795203,0.08405907,0.2909975,0.04691789,-0.046068314],[1.243962,-0.06773367,0.041754216,-0.49038526,0.67357427,-1.419546,0.61591196,0.15995342,-0.3010706,0.116759814,-0.05290848,-0.58484674,-0.2919908,0.76646173,0.79990584,0.6095101,-0.2919323,-0.040067844],[0.0063426853,0.29359382,0.029911779,-0.11636771,-0.17950699,1.065461,-0.6709385,0.09389695,0.14424817,-0.031868383,-0.076493725,0.89900523,-0.100873575,-0.6742322,-0.11008049,-0.102969535,0.15808189,0.059139792]],"activation":"σ"},{"dense_2_W":[[0.1780774,-0.23879893,0.40886527,-0.03837895,0.6731009,0.37912157,0.024035169],[0.26459897,0.39045632,0.21518803,0.15523876,0.49753502,-0.24493335,0.25550902],[0.6711707,-0.43927252,-0.036247067,0.64019126,-0.31602848,0.52645594,-0.8239448],[-0.022878619,0.057614833,-0.1544598,0.04378831,-0.058183365,-0.0948237,-0.84012353],[-0.39999592,-0.30837488,-0.5094495,-0.45057485,0.04420731,-0.39995825,-0.0781143],[0.16760944,0.20678467,-0.40867665,0.471323,0.24410716,0.32461926,-0.22563171],[0.5557148,0.41185716,0.24847849,0.31282943,-0.41320753,0.50370765,-0.21249676],[-0.19418764,-0.012745005,0.19675006,0.15134968,-0.32846612,0.16126548,-0.086756974],[0.17462167,0.13238178,-0.31408685,0.038765885,-0.017508972,0.25259814,-0.58019114],[-0.017934231,0.26039112,-0.34202117,0.43214414,0.24746032,-0.30627286,0.5151575],[0.4940814,0.15724,0.06147876,0.2419263,-0.5808532,-0.0146812,-0.6242227],[-0.44739762,-0.51928467,0.49245462,0.08635158,0.5575218,-0.35451686,0.4488533],[1.2522198,-0.2360379,-0.6547458,0.8267273,-0.88394165,0.70522034,-1.0572921]],"activation":"σ","dense_2_b":[[0.026364576],[-0.025734073],[-0.04295231],[-0.25066647],[-0.013064962],[-0.08499931],[-0.036362205],[-0.004759432],[-0.061301507],[0.005311887],[-0.039976895],[0.04567746],[0.013406974]]},{"dense_3_W":[[-0.5968739,-0.439085,0.48412055,0.3187139,-0.29512522,0.5073818,0.20465378,0.045948084,0.013481034,-0.1332729,0.60977477,-0.6310519,0.23163827],[-0.27164835,-0.4812297,-0.6265655,-0.023346987,0.25599414,-0.12162734,0.13101235,0.41443184,-0.2227736,-0.2773484,0.3685923,0.030362112,-0.634783],[0.57348764,0.19016632,0.25121495,0.27343124,-0.2428453,-0.26571003,-0.6007244,0.4791869,-0.5334977,0.46657896,-0.4515347,0.35774907,0.027132725]],"activation":"identity","dense_3_b":[[-0.011396689],[0.0397831],[0.009339748]]},{"dense_4_W":[[-0.9927989,0.34151393,0.70749515]],"dense_4_b":[[0.012457315]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json deleted file mode 100755 index d7aedb019d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.1069937],[1.377736],[0.55493695],[0.05719556],[1.3765576],[1.3775383],[1.3772336],[1.3490695],[1.3153961],[1.2702683],[1.223111],[0.056874666],[0.056979246],[0.05707212],[0.05725215],[0.057166327],[0.056820378],[0.056312907]],"model_test_loss":0.01224404014647007,"input_size":18,"current_date_and_time":"2023-08-11_18-01-17","input_mean":[[21.029448],[0.062122844],[0.011586429],[-0.013362663],[0.058448926],[0.059218813],[0.06003164],[0.060906783],[0.05690931],[0.05107428],[0.04589755],[-0.013371633],[-0.013350069],[-0.013321604],[-0.013194786],[-0.013209626],[-0.013246084],[-0.013091505]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.029981],[0.6557142],[0.025477692],[-0.07285545],[0.14103301],[-0.75449616],[-0.37838358]],"dense_1_W":[[0.45469517,-0.13852943,-0.20428768,-0.4649964,-0.16689883,-0.46213424,0.58211297,-0.2600774,0.011318633,-0.31072444,0.24087484,-0.30786481,0.22569135,0.4312357,0.095120884,-0.040498447,0.016559452,-0.006246631],[0.48909014,0.19140528,0.21468148,0.38366044,-0.2924136,0.90077084,-0.57901615,0.49554396,-0.109812155,0.13619985,-0.1644991,0.0029267913,0.39931184,-0.6447186,-0.28419474,0.011865851,0.32336563,-0.16406368],[0.08335772,0.46219787,-0.006281903,-0.4606084,-0.5252204,1.4688734,-0.81243116,0.23485558,-0.0043862914,-0.1055535,0.017743455,0.25692242,0.48580706,-0.406194,-0.3941023,-0.015782943,0.26534048,-0.03168482],[-0.025222164,1.0567143,7.659574,0.08088202,-1.9668833,-0.6673831,-0.35986438,0.8868536,1.874591,1.4548881,-1.8890685,1.428609,0.31265762,-0.31063205,-0.92161745,-0.96598464,-0.21013777,0.3951245],[-0.24860296,-0.03803796,-0.00405875,0.21248466,0.11106674,0.40961975,0.09255897,0.019209573,0.07700923,0.15433341,-0.100313425,0.10832265,-0.058324855,-0.31074783,-0.18075982,0.055103302,-0.20808068,0.12037389],[-1.7423648,0.82126313,2.705039,0.22467682,-0.003623281,0.25392738,-0.4748977,0.06635853,0.54281545,-0.13825028,-0.21510579,0.61694807,0.04500307,-0.4738145,0.15694156,-0.5615226,-0.28929874,0.30215448],[-0.029229201,-0.24708195,-0.06705875,-0.06484636,0.6352556,-1.6881858,1.0670066,-0.18514188,0.14397305,0.029184626,-0.022868067,-0.11220785,-0.41982648,0.24265464,0.5274242,-0.26783192,0.44759402,-0.3523202]],"activation":"σ"},{"dense_2_W":[[-0.14019006,0.8517118,0.23271823,0.36868808,0.61500895,-0.34682518,-0.7155873],[-0.347382,-1.0464604,-0.77282,-1.3966386,0.86157274,-0.15990283,0.32113728],[1.0913037,0.396265,-0.46790498,-0.52455956,-0.4228992,-0.13811836,0.6824839],[-0.19100685,-0.16689822,-0.38699043,0.19396296,-0.6368938,0.4325597,0.23740473],[0.86992455,0.2691951,-0.31172332,-0.21921356,-0.34238544,-0.21491715,0.80763847],[0.9475764,-0.02158802,-0.87059724,0.014679482,-0.324306,-0.33987498,1.1471028],[-0.2071371,-1.4411374,-0.26056397,-1.5143462,0.40373328,0.42800063,0.34931841],[-0.70536876,0.0997919,0.41194123,-0.036822613,-0.2394713,0.23169665,-0.33681363],[-0.2928761,-0.9999774,-0.19667697,-1.0640647,-0.17863739,0.35508665,-0.24925552],[-0.20061804,0.5150541,0.9944113,-0.39703074,0.5471109,0.24731952,-0.8795763],[-0.09993521,-0.21843813,0.9697644,-0.29330543,0.5018627,-0.17633167,-0.9433106],[-0.61491317,-1.1780969,-0.6712012,-1.6405643,0.7202017,0.3414344,0.14721029],[-0.83430654,-0.30646098,0.7540531,0.1640073,-0.07167989,-0.15225653,-0.6632847]],"activation":"σ","dense_2_b":[[0.008414734],[0.02586258],[0.26360497],[-0.17161213],[0.021794198],[0.11237369],[-0.19526652],[-0.21869946],[-0.15780614],[0.0076409117],[0.08034951],[-0.052167464],[0.008192686]]},{"dense_3_W":[[0.37548563,0.6901746,-0.017093312,0.05906239,-0.17285745,0.7850599,0.16857842,0.2924379,-0.45666716,-0.71577275,-0.20736414,-0.22495872,-0.7006286],[-0.63446444,0.3959629,0.6600817,-0.36419266,0.5282527,0.44988224,0.3944795,-0.48388985,0.33301595,-0.7800839,-0.2381008,0.04726727,0.008106329],[0.4815408,-0.39100966,-0.570321,-0.52544576,-0.5211865,-0.2355475,-0.13347512,-0.45825776,-0.1850824,0.6669436,0.73957324,-0.7607831,0.583408]],"activation":"identity","dense_3_b":[[-0.022654189],[-0.047549613],[0.081376344]]},{"dense_4_W":[[-0.07399648,-0.7841488,0.65943784]],"dense_4_b":[[0.049836714]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12451x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12451x00x00x00x00x00x00'.json deleted file mode 100755 index 44f484b674..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B12451x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.487649],[0.9452884],[0.49897322],[0.036168467],[0.9375047],[0.939802],[0.94176334],[0.9312508],[0.9176832],[0.8981818],[0.8754837],[0.036056127],[0.03607669],[0.0361009],[0.03615947],[0.03622122],[0.036174823],[0.03611307]],"model_test_loss":0.013644726015627384,"input_size":18,"current_date_and_time":"2023-08-11_18-28-16","input_mean":[[22.188808],[-0.0016201948],[0.0067229858],[-0.006841018],[-0.0040381285],[-0.0036605345],[-0.0031642113],[0.0007389491],[0.00048997015],[0.0011243575],[-0.0031244024],[-0.006816045],[-0.0068408772],[-0.006861466],[-0.006930233],[-0.006957305],[-0.0070455903],[-0.0070900545]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0673442],[2.7745846e-5],[-0.99905986],[0.58756214],[0.7617952],[0.04276479],[-0.08482717]],"dense_1_W":[[-1.376805,0.15786377,-3.812531,-0.245421,0.6155368,0.2635061,-0.1198247,-0.3752861,-0.55684185,-0.21776916,0.61006033,-0.44973776,-0.16761783,0.8354563,0.5233352,0.40619633,-0.25151846,-0.48748687],[0.028500041,0.8878804,-0.9752583,0.5530488,-0.47703752,-1.1190318,1.1573414,-0.41567516,-0.6945042,0.08366254,0.6784389,-0.9251646,-0.16067813,0.39871418,0.010591839,0.43614033,-0.1241933,-0.22110312],[0.0055779507,0.20711112,0.043922327,0.5815181,0.79546875,-0.3745229,1.0692942,0.5421788,0.51711035,0.08371175,-0.7767221,0.14060917,0.86184376,1.282557,0.5231202,0.48133206,0.85133666,0.6251881],[0.23285055,-0.4198758,0.0023081363,0.034350406,0.36339942,-0.8756732,0.4318861,0.068672374,0.1868084,-0.105609834,-0.082326055,-0.21219045,-0.052394826,0.38342378,-0.08516862,-0.073896684,0.20564918,-0.09030272],[0.20625626,0.69163126,0.0040207044,-0.2540704,-0.796767,1.4653561,-0.7764364,-0.3945441,0.16091216,0.07360298,-0.009463289,0.33463284,0.12811317,-0.33023477,-0.15273824,0.20237693,-0.057417326,0.027028535],[0.0009643716,-0.4622335,0.008336065,-0.14127259,-0.03327446,-1.2106333,0.1591597,0.17660871,0.1737159,0.04918479,-0.35066015,0.061325263,-0.32096663,0.065511234,0.07052332,-0.009597162,-0.12007005,0.08947649],[0.16628331,-0.74743044,-7.732924,0.14102307,3.3183703,0.25258428,0.033113215,-2.4762802,-1.7066356,-1.0341645,2.3158412,-1.1193362,-0.6722529,0.23111704,1.0017239,1.267337,-0.41339538,-0.4809045]],"activation":"σ"},{"dense_2_W":[[0.21290007,0.64724165,0.49358806,0.056110725,-0.70513237,-0.11181515,-0.11487207],[0.109797336,-0.40518957,-0.22855765,-0.87453985,0.69947445,-0.3448592,0.36246267],[-0.10385788,0.05007824,-0.43522125,-0.24411759,0.6849432,-0.72941595,0.11045129],[-0.366294,0.48336378,-0.026342975,0.38450494,-0.8003826,0.39405254,0.20164785],[0.09994913,0.15614097,0.03521924,-0.31754568,-0.87542045,-0.0036878414,0.6618589],[-0.4278517,0.13070711,0.22683983,-0.50581944,1.1253206,-0.574315,-0.33853972],[0.3912402,-0.057859033,-0.26818904,-0.07417243,-0.53089696,-0.037230473,0.35937098],[-0.007780401,-0.062603526,0.24958208,-1.1340399,-0.118980326,0.0787109,-0.6355662],[0.045311734,0.31174505,0.3089076,0.12579472,-0.5789172,-0.35370818,-0.276329],[0.002701942,-0.17374736,0.26680645,0.52160555,-0.4519264,0.38481277,0.07479425],[-0.16118486,-0.3074708,0.36325666,-1.1860276,-0.21609893,-0.49962327,0.43130475],[-0.18138263,-0.51702213,-0.07574924,-0.36417502,0.49235836,0.32681176,-0.4689479],[-0.39053667,0.11265152,0.20087351,0.767612,-0.99513376,0.61860406,0.3170469]],"activation":"σ","dense_2_b":[[-0.053010453],[0.073241115],[-0.090730816],[-0.14704],[-0.14625446],[0.19712886],[-0.35103756],[0.021736875],[-0.067158625],[0.013618938],[-0.021116722],[0.05918233],[-0.15891494]]},{"dense_3_W":[[-0.32645482,0.5014898,-0.22124335,-0.56819195,0.37468666,0.36114338,-0.35449836,0.31993988,0.2904279,-0.18361193,-0.49852094,0.5350739,0.17842627],[-0.33429646,0.2762441,-0.45675096,-0.17342906,-0.52969354,0.72830856,0.4542556,0.52436656,-0.14327197,0.19658618,0.5030742,0.086073324,-0.4896408],[-0.40658107,0.72393274,0.58974785,-0.31303748,-0.34105098,0.5463775,-0.105001554,0.5828467,-0.25973922,-0.49174955,0.43771726,0.20469081,-0.62791723]],"activation":"identity","dense_3_b":[[-0.042050008],[-0.04370406],[-0.031461757]]},{"dense_4_W":[[0.52837956,0.37841925,1.2096573]],"dense_4_b":[[-0.031662747]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B76012x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B76012x00x00x00x00x00x00'.json deleted file mode 100755 index 3379069f0a..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'8965B76012x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.375572],[1.0479666],[0.5336316],[0.034517776],[1.0380636],[1.0415741],[1.0435171],[1.0233974],[1.0003295],[0.96495837],[0.9329012],[0.034553193],[0.03455014],[0.034553725],[0.0345314],[0.034555648],[0.03454],[0.034541115]],"model_test_loss":0.01448360551148653,"input_size":18,"current_date_and_time":"2023-08-11_19-45-05","input_mean":[[21.282667],[-0.0041169003],[0.0054940344],[0.0054295054],[-0.0039702826],[-0.0047535836],[-0.0049827257],[-0.00041957427],[0.0036263561],[0.010159709],[0.010208528],[0.0053120484],[0.0053210543],[0.005327886],[0.0053719524],[0.005379417],[0.0054208445],[0.0054328674]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.08694271],[2.3874013],[-1.1189023],[-0.20053284],[-0.82135457],[-1.9767927],[-0.24129376]],"dense_1_W":[[0.04281066,-1.1349988,0.0029240015,0.51000357,1.2487551,-1.6569496,0.1126817,0.46920308,-0.18618616,-0.03293716,0.05162156,-0.70887804,-0.03422212,0.34768334,0.17257658,0.11435088,-0.062131677,-0.117349416],[0.78725845,0.5511427,-0.009158071,-0.0879293,-0.29217157,-1.1015882,0.22204675,-0.32402563,-0.31345448,-0.19125423,0.058251724,-0.37509483,0.445088,1.1528792,-1.2366151,-0.30880412,-0.08606776,0.5468172],[-0.53494954,0.8182066,-1.0288574,0.10421147,-0.57160145,-1.2457802,1.087224,-0.11592528,0.16457517,0.12212297,-0.29925084,-0.17019296,-0.27164263,0.33206818,0.03422637,0.16099158,-0.22837052,0.07222221],[-0.018647902,-1.2851863,-5.806965,-0.5820859,1.6532221,-0.15292299,0.3868868,-0.07472222,-1.1960039,-0.9730067,1.3412269,-0.4317284,-0.40662217,0.49923965,0.4225129,0.9066051,0.0015882424,-0.37326196],[-0.57139546,0.46502775,0.99184674,0.396859,0.2340786,0.7237931,-1.2583938,-0.08029648,-0.35627592,0.3597747,-0.040746044,-0.38713092,0.3865338,-0.10270777,-0.41028908,0.27863222,-0.26602527,0.07882698],[-0.5458326,-0.9584286,-0.009850046,0.20454025,0.32909134,-0.98597926,0.7100352,0.04268226,-0.2823607,-0.2440534,0.19341996,-0.3187937,-0.113805935,0.9269717,-0.62920344,-0.21646176,-0.054388206,0.28129458],[-0.020640513,0.1749185,-0.8748891,-0.08894304,-0.6374144,1.5462204,-1.4470797,0.53431803,0.16430534,-0.38660437,0.054579385,0.42408434,0.29847622,-0.53912234,-0.19198798,0.042103697,-0.15677306,0.2510289]],"activation":"σ"},{"dense_2_W":[[0.576956,0.58485156,0.46824354,0.23629351,-0.7127077,0.24054548,-0.801404],[-0.7679824,-0.82911664,-0.1316323,-0.649113,0.5064222,0.32822382,0.5846307],[-0.45726764,-0.2200032,-0.106780164,0.50859475,-0.6885187,-0.9536588,-0.1520038],[-0.6101801,0.0043161334,-0.52828544,-0.6778497,0.20272149,0.17903528,0.6156166],[0.00020568681,-0.8475529,-0.028076276,-0.40698978,0.09670474,-0.032005046,0.34535372],[0.65462285,-0.18649338,0.6973468,-0.1406565,-0.26298824,-0.05047055,-0.112580955],[0.82534224,-0.35191694,0.39351723,-0.1623142,0.109611444,0.19251318,0.25714624],[-1.0138118,-0.30412364,0.05206559,-0.20494476,-0.13674605,-0.24461035,0.34458944],[0.39735422,-0.3080049,0.184732,0.34991446,-0.19378886,0.5201685,0.10663582],[0.051989906,-0.43616736,-0.2765625,-0.6018549,0.35423297,-0.06406093,0.04343631],[-0.46184382,0.2845056,-0.6880694,-0.15087406,0.42838258,-0.8445976,0.78881943],[0.25200763,0.06935976,-0.23696655,-0.39565444,-0.20061536,-0.43781048,-0.48936784],[-1.0732412,0.27758133,-0.028595658,-0.5918897,0.66757387,-0.51985353,0.9180244]],"activation":"σ","dense_2_b":[[-0.13084444],[0.04154609],[-0.1692621],[-0.060585238],[-0.11847037],[-0.0038540647],[-0.009530867],[-0.199515],[-0.15339535],[-0.11540088],[0.031653397],[-0.31335723],[0.043830592]]},{"dense_3_W":[[0.6439716,-0.51321656,-0.29869318,-0.5795511,0.075971514,0.4085636,0.67255604,-0.52776796,-0.080016606,-0.49534002,-0.5485497,0.5257951,-0.51068026],[-0.229645,-0.125913,0.20544381,0.029917588,0.15909044,0.30286267,-0.5067371,-0.31015295,-0.34193483,0.35274273,-0.018820988,-0.10453944,-0.18352267],[-0.71315366,0.5508435,0.56744355,-0.11833193,0.4223396,-0.4779712,0.47948912,0.08573708,-0.28134808,-0.15602563,0.65661746,0.3988988,0.29393244]],"activation":"identity","dense_3_b":[[0.069226205],[-0.050530106],[-0.07095789]]},{"dense_4_W":[[-0.8900288,0.84156877,0.9698375]],"dense_4_b":[[-0.062096175]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json deleted file mode 100755 index a161aec775..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.993547],[1.3824608],[0.5442085],[0.04466587],[1.3670224],[1.373887],[1.3785548],[1.3483428],[1.3078706],[1.2547767],[1.2047329],[0.044602543],[0.044602063],[0.044597205],[0.044438787],[0.044370554],[0.044226427],[0.043893978]],"model_test_loss":0.01754230633378029,"input_size":18,"current_date_and_time":"2023-08-11_20-42-27","input_mean":[[21.669216],[-0.019106807],[-0.00071183714],[-0.004523422],[-0.015881915],[-0.016015995],[-0.01599993],[-0.013354679],[-0.009738685],[-0.0054146647],[0.0011390813],[-0.0044711116],[-0.0044688736],[-0.0044746096],[-0.004526157],[-0.004584231],[-0.0047590407],[-0.004947274]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.3237112],[-0.2403381],[-0.014628102],[-0.022476863],[-2.7615786],[0.007984176],[-0.28538132]],"dense_1_W":[[1.0919807,-0.045324247,-0.75395745,0.08453984,-0.1758099,-0.7810576,0.60001886,0.1895486,0.022043524,-0.13008374,-0.6345032,-0.04466129,-0.10564512,0.4632076,-0.66976476,0.13218683,-0.12667759,0.23693071],[-0.14425355,-0.1333905,0.61592144,0.16705051,-0.4906342,0.47542897,-0.5073153,0.8226191,0.5239043,-0.020427523,0.118154675,0.042043276,0.05852372,-0.22402734,-0.002725648,-0.021388907,0.09187215,-0.10525817],[-0.002070986,-1.0142688,0.0024986335,0.29121137,0.23187101,-1.4923184,1.0455217,0.3253877,-0.026153605,-0.18092944,-0.022284921,-0.7775931,0.17352305,0.4154996,0.0007446691,-0.3231251,0.016695077,0.092076115],[0.003556123,-0.6074834,-5.16307,0.10229213,1.5040752,-0.24918728,-0.31775448,-0.24619824,-1.1433711,-0.9349265,1.3716418,-0.8144274,-0.26113123,0.12032675,0.4644665,0.6542465,0.8436341,-0.81249446],[-1.2800871,0.5802051,-0.8313711,-0.36175877,-0.6173688,-1.0907602,1.1683012,-0.12169285,-0.04679629,-0.31703347,-0.56498647,0.027285641,-0.13184144,0.46147045,0.08659124,-0.20840271,-0.24434797,0.31504855],[-0.0037023455,0.6878883,0.011835528,-0.14244853,-0.7035841,1.4227525,-0.67105776,-0.052963886,0.040167555,-0.06747049,0.03174579,0.07668224,0.270919,-0.25877607,-0.19650425,-0.39022088,0.16024818,0.07297123],[-0.15980847,-0.26276147,0.51323986,0.2717203,0.06203693,-0.92020065,1.1863018,0.17152844,-0.12639117,0.3401608,0.21352135,-0.5127686,-0.17613575,0.42713523,0.15159386,-0.028390504,0.116660304,-0.2374384]],"activation":"σ"},{"dense_2_W":[[-0.31951153,-0.60305333,0.94934136,0.5176455,0.42330498,-0.9991227,0.42707992],[-0.5175407,0.04058364,-0.5662553,0.3280252,-0.46270046,1.0823125,-0.36556607],[0.3591221,0.21218485,0.48469293,0.5919236,-0.39960954,0.10840565,0.34785143],[-0.6868013,0.5927585,-0.2725992,-0.43643984,0.09060123,0.12481008,-0.63349223],[-0.25257543,-0.8518924,0.085459694,0.6604647,0.55866843,-0.17756383,-0.24361156],[-0.3636745,0.036077805,-0.8358255,-0.19005351,0.23775734,-0.3111283,-0.3870686],[-0.5255931,0.4393281,-1.1511757,-0.071744345,0.46959507,0.40960646,-0.40884846],[0.12857412,0.560429,-0.8185417,-0.40506232,-0.06547155,1.1404641,-0.6429645],[0.629162,0.03809335,0.936505,0.342929,-0.6054116,-0.7688969,-0.062184736],[-0.2467538,0.0011489796,-0.6328479,-0.40097603,0.05688727,0.2515537,-0.40826854],[0.32569283,-0.26726797,-0.05968891,0.6881055,0.7094254,-0.566512,0.22227532],[-0.49612823,0.09098714,0.034291003,-0.28518376,-0.1303378,0.3737506,0.21425006],[-0.21644352,-0.40147,0.2609396,0.09716901,0.75330514,-1.2959148,0.58928996]],"activation":"σ","dense_2_b":[[-0.64226997],[0.07075255],[0.029240176],[-0.1350133],[-0.10543014],[-0.14136776],[-0.08885219],[0.04394021],[-0.06569347],[-0.014445162],[-0.30804452],[-0.14045092],[-0.09604305]]},{"dense_3_W":[[0.5584446,-0.49258238,-0.06831941,-0.33898526,-0.010516451,-0.243958,0.3254376,-0.6381771,-0.43171817,0.32533497,0.3000785,0.47373283,0.1616467],[0.62135106,-0.6357912,-0.03967677,-0.3655531,0.13359948,-0.010117412,-0.26593152,-0.2779743,0.7421054,-0.64709723,0.5776921,0.35391986,0.85788155],[-0.24483721,0.4855099,-0.3095385,0.46626845,-0.117039315,0.27388623,0.39779752,0.61265177,-0.034959346,0.2967797,-0.008864683,0.36063853,-0.479764]],"activation":"identity","dense_3_b":[[-0.031353332],[0.04507456],[-0.07856169]]},{"dense_4_W":[[-0.065495215,-0.60703295,1.0466374]],"dense_4_b":[[-0.0710821]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12520x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12520x00x00x00x00x00x00'.json deleted file mode 100755 index 9a58eb918c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12520x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.850587],[1.2006214],[0.60150135],[0.038597997],[1.1924275],[1.195236],[1.1976618],[1.1804594],[1.160997],[1.129005],[1.0974691],[0.03850275],[0.03851834],[0.038536113],[0.038553298],[0.038495034],[0.038382825],[0.03821236]],"model_test_loss":0.013673663139343262,"input_size":18,"current_date_and_time":"2023-08-11_22-22-26","input_mean":[[21.53012],[-0.045687865],[0.0011462382],[0.0033840926],[-0.041380186],[-0.042962875],[-0.044409957],[-0.04001238],[-0.035696205],[-0.031632073],[-0.029335052],[0.0033047958],[0.003320643],[0.003342723],[0.003354216],[0.0033464204],[0.003304185],[0.0032328872]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.108350344],[-0.20693034],[-0.14522482],[-0.5163846],[-0.37156594],[-0.119947374],[-0.31804028]],"dense_1_W":[[1.0910766,-0.43300736,0.0030034583,0.38913414,0.18278283,-0.31925726,0.64668375,-0.13552432,-0.41154033,0.24433674,0.048472222,-0.030966012,-0.18421704,0.302578,0.05368483,-0.10369585,0.45285794,-0.2643156],[0.021740088,-0.6065864,-0.0005514439,0.08483938,0.5714144,-1.2917976,0.6474515,0.1432958,-0.08682793,-0.0937718,0.09686305,-0.27733508,-0.2996467,0.07307305,0.4865785,-0.08587177,0.48999208,-0.4380169],[-0.0045009824,-0.5964933,0.00063102716,-0.16957587,0.42155236,-1.5124145,0.9020258,0.30124182,0.2940203,-0.19893585,-0.14327702,0.028712958,-0.3790416,0.5805242,-0.25458577,0.27593663,-0.32479686,0.18945682],[-0.031941526,-0.36289775,-6.4586377,0.5251884,1.2119403,0.19459614,0.027046863,0.15272467,-2.0958602,-0.6124005,1.2700095,-0.52332336,-0.1753136,0.04349013,0.5094644,-0.12745608,-0.3554143,0.17660716],[-0.0045775212,0.8235139,-0.9080976,0.8690431,-0.18817183,-1.0143514,0.68702215,-0.302185,-0.3445395,0.32111478,-0.021534106,-0.13426313,-0.1298182,0.04873703,-0.40560097,-0.0978507,-0.36964232,0.38757965],[-0.10878436,-1.5791492,0.060036104,-0.75532895,-1.7842572,-0.77946854,-1.2905889,-1.401123,-1.1079345,-2.0109158,-1.0800682,0.1277004,-0.047745556,-0.14514564,-0.4930343,0.4303121,0.40624237,0.38801444],[-1.047575,-0.3641548,-0.011621664,0.1802768,0.36029488,-0.5678573,0.87215257,-0.32095528,-0.48281944,0.18143207,0.16359733,-0.06739126,0.043152835,-0.06856613,0.3683477,0.08366781,0.41270572,-0.37719706]],"activation":"σ"},{"dense_2_W":[[0.08896879,-1.0618838,-1.236928,1.1085147,0.45503667,-0.29649493,-0.5560603],[0.05802153,0.8222231,0.79636604,-0.7962488,-0.14412767,0.14525741,0.6180748],[-0.15825768,-0.96576464,-0.20819964,-0.59680426,-0.15439917,0.22671004,-0.2357116],[-1.111581,0.27544013,-0.17377003,-1.2714287,-1.0232576,-0.6894107,0.9488163],[-0.5458172,-0.42459664,-1.6347574,-1.4187841,-0.964695,-0.5459487,-1.4589431],[-0.15094759,0.6969223,0.84540576,0.45799604,-0.31126192,0.48867247,-0.46977514],[-0.34919992,0.7479091,0.7190768,0.549971,0.5500571,-0.5448207,0.15025789],[-0.68081254,-0.38789412,-0.048226748,0.4368647,-0.8189457,0.021749284,-0.77771515],[-0.60718095,-0.26552448,-0.28099757,-0.15710582,0.29094604,-0.24080555,-0.7808776],[0.0033568847,-0.71768373,-0.9406896,-0.042297453,-0.36388123,-0.108075835,0.5197345],[-0.4915351,0.9041844,0.25389567,-0.013445068,0.18897061,0.2837717,0.3741654],[-0.3757065,0.23760095,-0.66970426,-0.36544222,-0.8507982,0.4782464,-0.5303433],[-0.29663894,-0.37195724,-0.8442924,0.29635245,-0.19174902,0.070796795,-0.4390862]],"activation":"σ","dense_2_b":[[-0.39513272],[-0.159368],[0.2868388],[-0.23528467],[-0.26247987],[-0.15212747],[-0.22264543],[-0.36984366],[0.033016775],[0.06725842],[-0.3415627],[0.22711973],[0.17381573]]},{"dense_3_W":[[0.69550085,-0.2602267,0.6511873,0.80323565,-0.5139177,-0.6302756,-0.41592857,0.5141956,0.6740762,0.7060216,-0.8168942,0.68222535,0.3284389],[0.089398846,0.46339324,-0.97560817,-0.80172545,0.19869575,0.5268298,0.6723404,-0.00843294,-0.75555086,-0.7210899,0.55462325,-0.8117566,-0.73714113],[0.48829198,-0.5059535,-0.08616368,-0.16644941,0.48320302,-0.48428047,-0.30819136,-0.35214564,-0.15856753,0.5061082,0.11269471,0.5998318,0.5135987]],"activation":"identity","dense_3_b":[[-0.117111795],[-0.062588595],[-0.0089505]]},{"dense_4_W":[[0.7856232,-0.70317644,0.19791394]],"dense_4_b":[[-0.08677392]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json deleted file mode 100755 index 8d7481346f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.7166467],[0.9360951],[0.54996157],[0.039336555],[0.9278234],[0.92963946],[0.9314855],[0.92150825],[0.91230273],[0.8934071],[0.86945397],[0.039176],[0.03919577],[0.039226335],[0.03920194],[0.03908752],[0.0389208],[0.038630653]],"model_test_loss":0.01772945560514927,"input_size":18,"current_date_and_time":"2023-08-11_22-47-50","input_mean":[[17.004646],[0.045599815],[0.0011152645],[-0.001088986],[0.042060442],[0.043612026],[0.044696216],[0.043072034],[0.044451833],[0.042805985],[0.038478125],[-0.0010230377],[-0.0010265883],[-0.0010224311],[-0.0010469804],[-0.000976282],[-0.0009040997],[-0.0007548164]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09819362],[-0.04249229],[-0.3479007],[0.03214666],[0.922219],[0.94473046],[-0.2771768]],"dense_1_W":[[0.07611097,-0.64347965,-5.7489953,-0.057701204,1.9627318,0.71188766,0.62335354,-1.5248296,-1.8103973,-1.1273834,1.2180927,-0.7481957,-0.65215784,0.3646581,0.76954377,0.93266475,0.5737459,-0.9375362],[0.082355805,0.0792861,-1.4165217,0.2831444,-0.8286206,-1.796174,0.7789983,-0.7667562,0.39938906,0.6860971,0.7154728,-0.3473279,0.46564227,0.70484024,0.18656117,-0.024444446,-0.13199502,-0.24193652],[-0.24016297,1.706992,-0.00090066914,-0.071590096,-0.7422648,0.8374083,-0.44082543,0.04738862,-0.22899044,-0.4460011,0.39585826,0.47956917,-0.17853828,-0.10812888,-0.08165929,-0.0425193,0.17251264,-0.29201412],[-0.35274625,-1.3477879,-0.0075425776,0.08863907,-0.77081376,0.9018588,-1.3318201,-0.44829947,2.0795786,0.8122879,0.6548207,0.44521397,-0.31335637,-0.17517531,-1.1029497,0.9331358,0.026675547,-0.06601325],[0.8279214,1.8557522,-0.0014833922,0.0585293,-1.1659931,0.9336915,-0.07515252,0.5152648,-0.62365764,-0.30737656,0.34178838,0.14973152,0.07111421,0.014621839,-0.22071289,0.16666935,-0.16080067,-0.23379543],[1.1760968,0.5412744,-0.0017593631,-0.22849438,-0.632045,0.6746573,-1.3172346,-0.8634406,-0.424611,0.5899645,-0.31364056,-0.32016203,0.25754422,0.1650363,-0.7505603,0.7215971,0.19650249,0.1422042],[0.852189,0.065097235,0.0061805155,-0.22967027,1.4924825,1.5642314,-0.60489327,-0.863056,-0.22668254,-1.0052434,-1.1320058,0.42393053,0.071807854,0.3276753,-0.47956294,0.08070331,-0.29770264,0.29226956]],"activation":"σ"},{"dense_2_W":[[-0.18211515,0.44951305,-0.9500942,0.21868896,-0.23856848,-0.2160815,-0.0797832],[-0.69846493,-0.4206712,0.31242144,0.24509996,-0.49114344,0.39693424,0.40193912],[0.17850624,0.19152331,-0.9087939,-0.44867268,0.23942706,-0.20083866,-0.22976424],[1.3243266,-0.25121248,-0.8598626,-1.3246324,-2.2754881,-1.6574712,-0.9889931],[-0.06998735,-0.6535759,0.1664615,0.1401335,-0.5745483,-0.5484165,0.52828187],[-1.0033789,-0.5766727,1.4222881,0.46975863,0.93773127,-0.7977733,0.08462863],[-1.6989592,0.24379954,1.0563916,0.8624438,-2.5557318,-3.1306412,-0.0018583427],[0.7160944,-0.045115337,-0.7554288,-1.3468298,-1.6522032,-1.3480777,-0.55742955],[0.8170345,-0.4355595,-0.24635607,-0.40475637,1.2702687,0.6482177,0.07428298],[-0.041201867,-0.83161634,0.6151208,0.63096315,0.09922941,0.5946334,0.097100645],[-0.8438058,0.4685656,0.83145976,1.2900296,1.6341914,1.3352168,0.91666037],[-0.22399388,0.07508866,-1.2330295,0.0674378,-0.18247488,-0.29714978,-0.35030952],[0.46261635,-0.33211225,-0.3962421,-1.7023565,-1.4344509,-1.1435779,-0.6136494]],"activation":"σ","dense_2_b":[[0.08529015],[-0.19910426],[0.1709426],[-0.27077383],[-0.40408188],[-0.21291175],[-0.6464522],[-0.30908433],[0.2922855],[-0.15335728],[0.09016753],[0.22037135],[-0.12172044]]},{"dense_3_W":[[0.17863923,-0.6011715,0.1722149,0.44289172,0.34816673,-0.49830723,-0.43645224,0.85543525,0.6923212,-0.49683204,-0.44174555,0.7450105,0.2767857],[-0.23232669,-0.05226724,-0.3187981,-0.7006331,0.26881424,0.5859572,0.7913836,-0.5530767,-0.0619629,0.5197311,0.06590323,-0.13048458,-0.727642],[-0.25087458,-0.4260785,-0.5679577,-0.8808904,0.3215431,0.3545877,1.4937782,-0.5066919,0.17787237,0.24629535,0.33879703,-0.77151966,-1.04119]],"activation":"identity","dense_3_b":[[0.11716675],[-0.15205665],[-0.09666118]]},{"dense_4_W":[[-0.6054611,0.6616036,0.5710006]],"dense_4_b":[[-0.113945]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B1254000x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B1254000x00x00x00x00'.json deleted file mode 100755 index 8c62679e2e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019 b'x018965B1254000x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.5586987],[1.0668136],[0.65108716],[0.034576062],[1.0662991],[1.0668288],[1.065283],[1.0460236],[1.0356027],[1.0212996],[1.004612],[0.034393594],[0.034448482],[0.03450532],[0.03473761],[0.03497435],[0.03507344],[0.034994226]],"model_test_loss":0.00870500411838293,"input_size":18,"current_date_and_time":"2023-08-11_23-14-06","input_mean":[[15.162458],[-0.030393902],[-0.032802418],[-0.0010593864],[-0.023624144],[-0.026816128],[-0.030528499],[-0.045015506],[-0.055663712],[-0.07392666],[-0.08540629],[-0.00092076114],[-0.0009717724],[-0.0010414494],[-0.0015066566],[-0.001796707],[-0.002044406],[-0.002223362]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.021506997],[0.21911767],[1.484493],[-1.3083466],[-0.06510764],[0.9399787],[1.458603]],"dense_1_W":[[0.0022624284,-0.3323741,-0.35996,0.30342358,0.4944291,-1.2646209,0.9047208,-0.47583306,-0.23761328,0.18038853,0.38000605,-0.25240594,0.101771735,0.3689774,-0.5897502,-0.13633685,0.18846181,0.053237073],[0.017284913,-1.2738092,-4.2060423,0.73188466,1.3437643,-0.18045263,0.56554645,-0.26942906,-0.49767345,-0.5426496,0.51763725,-0.43579608,-0.3971797,0.086990125,0.05311058,-0.03055538,0.37126696,-0.39750952],[2.0191145,0.49570322,0.031393226,0.54196084,-0.59665686,0.66882825,-1.0989279,-0.18807355,-0.45894685,0.2759851,0.336422,-0.037411854,0.19308677,-0.46080658,-0.4973297,0.5372746,-0.37408796,0.10846941],[-0.46998337,0.3490007,-0.00438622,0.34095845,0.8166364,0.60549915,-0.8988132,0.5476835,-0.37996238,0.3388258,-0.03860557,-0.036083266,0.1092255,0.052381583,-0.5599509,0.24364339,-0.28141674,0.18529813],[0.009164018,0.433447,-0.042506576,-0.17593549,-0.38864172,1.2539347,-0.59288657,-0.13135396,0.29104137,0.023563422,-0.009315888,-0.07067319,0.2342533,0.10161306,-0.5636307,-0.23514093,0.25040185,0.046599127],[0.4312695,0.36135638,-0.0074610105,0.26067948,0.4758904,1.401296,-1.3515489,0.20557608,-0.082261525,0.21485652,-0.0033740771,0.6790412,-0.13174984,-0.46494,-0.69377804,0.41025424,-0.14858818,0.13721205],[1.986749,-0.49324146,-0.02681901,-0.4256105,0.3361303,-0.35204482,0.9926823,0.12374698,0.5503816,-0.09924912,-0.4841911,0.24159499,-0.40405098,0.31244668,0.36439434,-0.044306964,-0.08293645,0.027888171]],"activation":"σ"},{"dense_2_W":[[-0.6324022,-0.2001331,-0.3526252,0.092529655,-0.27300277,-0.43241245,-0.014045538],[0.32039317,-0.116377145,0.3309547,0.63877505,0.5530988,0.50968677,0.24939647],[-0.30597773,-0.40312517,-0.38242427,-0.37124476,0.45356536,0.24014069,0.028166713],[0.96208113,0.43337837,0.14673242,-0.47370073,-0.9436095,-0.7661267,1.4071115],[1.0540173,1.2540439,0.6600092,-1.6646789,-0.54332626,-0.32733205,1.6595306],[0.62378746,-0.023177164,-0.34522477,-0.18102872,-0.551694,-0.5655608,0.6431443],[-0.736956,-0.87690467,1.1770567,0.6597062,0.27471146,1.0888082,0.692091],[-0.62574077,-0.12893064,-0.022563975,0.029874153,0.9045192,-0.17541885,-0.34263155],[0.48334014,-0.41208985,0.18305346,-0.20077266,-1.1162131,-0.2358352,0.34831035],[-0.56035835,-0.06362593,-0.5727027,-0.9132281,-0.30174935,-1.0307825,-0.63969034],[0.14403231,-0.3598213,0.4601045,0.4040111,0.7650697,-0.24749416,-0.4396638],[0.42583916,0.43303528,-0.8717473,0.12096721,-0.70570135,-0.4342938,-0.106751114],[0.84214103,0.1612862,-0.44598746,-0.30170873,-0.734939,-0.39400816,0.33292803]],"activation":"σ","dense_2_b":[[-0.010498221],[0.033183154],[-0.07346041],[0.31818846],[0.4988308],[-0.06161561],[0.13534743],[0.04956322],[0.013285028],[-0.24566568],[-0.054392837],[-0.07685737],[-0.0044829077]]},{"dense_3_W":[[0.320467,-0.094095595,0.29182792,0.19275357,-0.2693895,-0.03124413,0.70573056,0.13810281,-0.14187036,0.4353431,0.59297323,-0.35034177,-0.3786733],[-0.49737677,-0.03697066,-0.4474356,0.4436638,0.22232622,0.077376895,-0.2219271,-0.41994625,0.35827994,0.6140234,-0.30546016,0.06829079,0.09227224],[0.16473123,0.5829968,-0.19248042,-0.60918665,-0.43222797,-0.5060332,0.6062956,0.26105765,-0.52482605,-0.3128516,0.19090605,-0.5577064,-0.6766231]],"activation":"identity","dense_3_b":[[0.03811113],[-0.038507566],[0.07794119]]},{"dense_4_W":[[0.5730286,-0.2928305,0.97310096]],"dense_4_b":[[0.052272193]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019.json deleted file mode 100755 index 98b503aa71..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA HYBRID TSS2 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.718988],[1.5299566],[0.588685],[0.04587614],[1.5157732],[1.5220679],[1.5256046],[1.4840062],[1.4323099],[1.3597063],[1.2913275],[0.04572448],[0.045758896],[0.045787074],[0.045749795],[0.045636524],[0.045395125],[0.044941075]],"model_test_loss":0.01872895285487175,"input_size":18,"current_date_and_time":"2023-08-11_17-36-03","input_mean":[[20.897451],[0.06658304],[-0.006871385],[-0.0023558615],[0.06727495],[0.0672389],[0.06719857],[0.062312864],[0.059572313],[0.053668246],[0.050075833],[-0.0023719259],[-0.002378079],[-0.002380981],[-0.0024748852],[-0.0026206481],[-0.0028906488],[-0.0031310404]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.4188718],[3.7088637],[-0.4249776],[3.6651204],[0.046135984],[-1.4088162],[-0.10634205]],"dense_1_W":[[1.1106812,1.1545246,-4.947238e-5,-0.19786799,-0.18502258,0.5724563,-0.49629408,-0.04241503,-0.0403527,-0.15461488,0.11042651,0.53509825,0.37794867,-0.5013257,-0.36293125,-0.21677697,0.12571956,0.033723105],[1.8875406,-0.87548965,-0.001720046,0.009296322,0.26706383,-0.78977394,1.0030317,0.049685888,-0.81093186,-0.06850548,-0.606039,-0.72494996,0.5103131,0.33077994,0.15339775,-0.43638188,0.059071552,0.17510937],[0.00311601,-3.0533133,0.024360646,-0.6194892,-1.5417911,-1.5249615,-1.0547282,-0.9433036,-1.1036747,-1.0223001,-1.3264794,-0.25942302,0.510594,0.7205571,-0.4561305,-0.24234876,-0.38653123,0.5385542],[1.8394231,0.871029,0.00046375685,0.25113386,-0.26997137,0.6880674,-0.80075204,0.00029531567,0.5298615,0.050234746,0.67435867,0.2723314,-0.19964069,-0.3188195,-0.33458334,0.57019603,-0.115791656,-0.19562978],[-0.0028326493,0.5804407,1.410442,-0.28499115,0.28093004,1.6346636,-0.7038905,0.51737905,0.25173852,0.06668676,-1.1657398,0.79343003,-0.13164437,-1.4595138,-0.089708395,0.2537593,-0.105980076,0.3329512],[1.071272,-0.9638096,0.00031746196,0.07963901,0.52283543,-1.1346815,0.57982945,0.20819707,-0.23751144,0.14297311,-0.030557238,-0.51577616,-0.55872697,0.6908526,0.52733356,0.0744941,0.027328867,-0.12216176],[0.004417767,1.1576066,6.299144,-0.32635224,-1.7558908,-0.30372036,-0.066983394,0.6580024,1.0876615,1.1211929,-1.1704223,1.6710458,0.75445145,-0.87139034,-0.7181289,-1.1046274,-0.4240588,0.63390136]],"activation":"σ"},{"dense_2_W":[[0.2679174,-1.0445848,-0.8299557,-0.25635472,0.4422085,-1.1647375,0.6085093],[-0.6689395,0.39463186,0.23278524,-1.1111928,-0.74221855,0.76892823,0.35332564],[0.31055808,0.3647656,-0.02499961,-0.1409631,0.31955567,0.12277927,-0.15797752],[0.9008812,0.60631984,-0.813905,0.92170995,0.6534263,0.22818235,0.71731585],[0.230484,-0.26698533,0.08754667,0.03489466,-0.3151056,-0.47791874,0.3342572],[0.34251255,-0.7261644,-0.20441282,-0.034852047,0.36376244,-0.89967006,0.219338],[-1.1227978,-0.12817267,0.21945642,-0.8032351,0.09376713,-0.84758645,-1.0390291],[-0.15338765,-0.037509676,-1.0683689,0.50024486,-0.7426109,0.53765345,-0.37471557],[-0.17778587,-1.1523334,-0.80799854,-0.28195953,0.50175095,-1.0760622,0.46772632],[-0.86102694,0.2053753,0.3926311,-1.0105791,-0.2120155,0.7215332,-0.23412094],[-1.2708869,0.66490364,0.25874946,-0.5689588,-0.022179203,0.580645,0.002767838],[0.5473067,-0.6157128,-0.6704757,-0.57233113,-0.29838595,-0.34488145,-0.13409242],[-0.33881795,-0.022099096,-0.55139774,0.18853591,0.050985426,0.8735969,-0.35496432]],"activation":"σ","dense_2_b":[[-0.25471497],[-0.05747227],[-0.061555464],[-0.13456716],[-0.013720933],[-0.07922762],[-0.113175996],[-0.04504478],[-0.35800874],[-0.0046020667],[-0.11548371],[-0.028764911],[-0.05550412]]},{"dense_3_W":[[-0.51718456,-0.015113678,-0.5522247,-0.12137883,-0.18037502,-0.4991924,-0.188951,0.6336781,0.09542685,0.5714098,-0.14561579,0.44534728,-0.09133837],[-0.03161159,0.34381616,0.26201352,-0.41056356,-0.25490084,-0.5049834,0.5320046,-0.12673296,-0.33940148,0.4677796,0.67244035,-0.43483102,0.58558035],[0.22973408,0.5728116,-0.17393303,-0.28269792,0.5416507,0.23091814,-0.074842304,0.019422745,-0.469903,-0.22602552,-0.34416038,-0.09474743,-0.07237691]],"activation":"identity","dense_3_b":[[-0.011782462],[-0.022098923],[0.040575616]]},{"dense_4_W":[[-0.7849743,-1.266133,0.028305434]],"dense_4_b":[[0.018039817]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json deleted file mode 100755 index a981acff9e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'8965B12361x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.9360695],[1.1630229],[0.49147838],[0.04477571],[1.156402],[1.1589196],[1.1612774],[1.1484874],[1.127694],[1.0978333],[1.0665215],[0.0445643],[0.04463128],[0.044691123],[0.044780783],[0.04475211],[0.044584557],[0.044264473]],"model_test_loss":0.014142030850052834,"input_size":18,"current_date_and_time":"2023-08-12_00-18-25","input_mean":[[22.546267],[0.026984693],[0.0015847267],[-0.009265251],[0.02708977],[0.02745922],[0.027661897],[0.027764216],[0.02783128],[0.027259488],[0.02614681],[-0.009333842],[-0.009295044],[-0.009257047],[-0.009214106],[-0.009245656],[-0.009297244],[-0.009411856]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.29641],[-0.092996016],[-0.07247574],[0.01721833],[2.1956046],[-0.15631124],[-0.058797363]],"dense_1_W":[[-0.22285046,-0.1114835,-0.18068203,0.16602449,0.59281373,-1.1307124,0.4008994,-0.16000947,0.085925706,-0.29159763,-0.3772878,-0.6881549,-0.13406135,0.5206962,0.36629307,-0.19463618,0.31983083,-0.1474239],[0.016796593,-0.98549455,-1.7525299,0.3078688,0.5721632,-0.3304454,-0.06705133,-0.11118571,-0.32195482,0.3919248,0.27401718,-0.46777967,-0.48869264,0.28487942,0.6982902,-0.074734256,-0.24820116,0.16100961],[0.31042123,0.19122998,-0.12722188,-0.27483284,-0.4547291,0.8013624,-1.0190685,0.21308842,0.33060518,-0.29281816,-0.40331224,0.17957272,0.39285606,-0.25553757,-0.24935547,0.1355044,-0.06329214,0.22954762],[-0.006421214,0.37099814,0.0027769755,0.010240031,-0.80907327,1.8348622,-0.38069573,-0.056077406,-0.14080317,0.13694486,0.03138031,0.16390382,0.21113038,-0.5778241,0.0057960977,-0.032158796,0.07527852,-0.04575749],[0.3227168,-0.17621782,-0.18886027,-0.37221447,0.32229832,-0.6248933,0.40250614,-0.18772343,-0.19750184,-0.27255252,-0.2845168,-0.30223995,0.15848213,0.16786462,0.3700133,-0.02713416,0.35638666,-0.14070766],[-0.029193275,-0.95258975,-6.3443847,-0.16789156,2.1661074,-0.15078546,0.3174049,-0.41737202,-1.9191536,-0.7163877,1.5734226,-1.7942194,-0.99211544,0.3988617,1.8096817,0.71005505,0.3803724,-0.517763],[1.4648159,-0.23948996,0.29068846,0.25918722,0.6120923,-0.8601464,0.5889934,0.34411243,0.020458814,0.28458166,0.45318642,-0.5825167,0.29618037,-0.066410765,0.42480034,-0.16173336,-0.10525159,-0.2598628]],"activation":"σ"},{"dense_2_W":[[-0.37377402,0.46476626,0.5534617,-0.26033473,0.45733005,1.1248896,0.9239269],[0.80217236,-0.20218013,-0.28995574,-0.92397535,0.33133814,0.21111849,-0.052037425],[-0.39823613,-0.4600786,-0.12479944,0.7203347,-0.6923874,-0.07840685,-0.11677317],[0.13027504,-0.37647787,-0.83754325,-0.6329695,0.6788497,0.2377329,-0.10071739],[-0.4414727,-0.18732905,0.5177299,0.7144774,-0.7800902,-0.009347282,0.04816524],[1.4953467,-0.1516854,-0.7720803,-1.5129604,0.547889,-0.11141382,0.4703957],[-0.082963005,-0.12600237,0.16579789,0.060129933,0.14053828,-0.4156861,-0.032326207],[0.10354526,0.39380085,-1.0558978,-1.1450167,-0.09905039,0.7310668,-0.8474744],[0.97818476,-0.174693,-0.38756898,-0.69246876,-0.029256595,-0.36487702,0.25810534],[0.36486697,-0.3805968,-0.32210922,-0.29974073,-0.2457904,-0.078286484,0.14194314],[-0.4540887,-0.23490758,0.45732084,0.8397524,-0.59814954,0.32775092,-0.22665621],[-0.6326152,0.1386963,-0.054368168,0.29623267,0.26214838,-0.5508051,0.03455977],[0.13512251,0.15923476,0.29472926,-0.41340572,0.10075192,-0.89706355,0.01360474]],"activation":"σ","dense_2_b":[[-0.12671065],[-0.051599756],[0.053335667],[-0.119286604],[0.026706826],[-0.1761932],[-0.024956206],[-0.17874902],[-0.109204695],[-0.030811843],[0.033664174],[0.027278738],[-0.33637452]]},{"dense_3_W":[[-0.41551515,-0.6342881,-0.021494662,-0.006901076,0.6140606,-0.03595642,0.2998105,-0.035869166,0.26118553,0.42404452,0.26687363,-0.34257045,-0.006692998],[0.41666955,0.63193476,-0.5990722,0.22787261,-0.69550204,0.6494638,-0.2658041,0.2686287,0.4277496,-0.08251372,-0.6163266,-0.23402017,-0.2279805],[0.57232213,-0.0648472,-0.58796054,0.13980845,-0.745974,-0.3898328,0.4852061,0.6894071,0.31734547,0.32177705,-0.009921448,-0.5850407,0.5147919]],"activation":"identity","dense_3_b":[[0.046797086],[-0.049840048],[-0.06342088]]},{"dense_4_W":[[0.605299,-1.1554636,-0.685096]],"dense_4_b":[[0.053069614]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json deleted file mode 100755 index cde14c836c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12350x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.373858],[1.429052],[0.5426649],[0.052008856],[1.4160408],[1.4200201],[1.4230659],[1.3935287],[1.3574492],[1.3125392],[1.2667787],[0.051808108],[0.051840812],[0.051871687],[0.051805917],[0.051645547],[0.05135777],[0.050868414]],"model_test_loss":0.01654689572751522,"input_size":18,"current_date_and_time":"2023-08-12_01-38-11","input_mean":[[22.57365],[-0.10559917],[-0.0033210916],[-0.012123505],[-0.10526322],[-0.105793074],[-0.106214054],[-0.10535747],[-0.101396576],[-0.097008556],[-0.09058301],[-0.0121329045],[-0.012128961],[-0.012128141],[-0.012230474],[-0.012350836],[-0.012518174],[-0.012592093]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.0777179],[0.97938883],[1.5086899],[-0.04293025],[-0.1820288],[-0.6305807],[-0.120503895]],"dense_1_W":[[-0.8936668,-0.9089122,-0.0107665425,-0.33187804,0.63021916,-1.7183859,0.12800273,-0.0100968545,0.024045149,-0.029676547,-0.34905303,-1.0929383,-0.18899661,1.343712,-0.007488287,-0.3871314,0.25819728,0.1568673],[1.5129911,0.79717666,0.022131754,0.5209565,0.4205534,-0.332852,0.6810523,0.8714592,-0.50664216,0.08871834,0.32013246,0.2844342,-0.46781865,0.17079753,0.39502883,-0.36544546,-0.25921047,-0.09649327],[0.35998663,-0.9628087,-0.0062323916,-0.17270656,0.22350977,-0.6925143,-0.13750921,-0.17138264,-0.18750982,-0.013588476,-0.21163066,-0.5151457,-0.16456504,0.12154584,0.47781697,-0.20399685,0.11707962,0.10914235],[0.004396283,0.51554716,-0.9786613,0.69308823,-0.46901524,-1.0285038,0.84607154,-1.1921532,-0.63446474,-0.06949246,1.0443338,-0.42222655,-0.1182501,0.6120174,0.3311507,0.049771998,-0.29231647,-0.24979034],[0.20238344,1.1074004,0.0024114763,-0.0062439544,-0.62287986,1.6389,-1.4840738,-0.053691912,0.08705532,0.07321774,-0.042032983,0.74493074,-0.13798285,-0.52930796,-0.29137415,0.040948115,-0.19026838,0.14882064],[0.5280113,0.27212307,0.007787733,0.15363543,0.35135317,-1.3474009,0.05997354,0.101474024,0.081706434,-0.0908575,-0.10102894,-0.45173493,-0.1977021,0.4278154,0.318782,0.060933735,0.11480374,-0.13501142],[0.0057853195,0.6303344,6.09931,0.026223302,-1.2619864,-0.51326764,-0.03881918,0.49512786,1.4146665,0.79070103,-1.2047328,0.75863904,0.08617853,0.31710652,-0.20454784,-1.32909,-0.210705,0.46263775]],"activation":"σ"},{"dense_2_W":[[0.90623915,-0.19034801,-0.108130135,0.5278633,-1.2545385,-0.12592614,-0.52437365],[0.47535196,0.016532913,0.035282977,0.13013715,-0.870746,0.85260004,0.12751696],[0.5615727,0.46776855,0.09889727,-0.10724942,-1.3574804,0.77887696,0.22862391],[-0.5160793,-1.205545,-1.2478756,-0.8897315,-0.06685275,-0.8264719,0.81887203],[0.48447967,0.9875634,0.8365766,0.21329804,-0.49966353,0.4703453,-0.593851],[0.29606903,0.6514512,0.19704497,0.6196983,-1.1678208,0.060366396,-0.45280713],[0.88284767,0.07871202,0.028610494,-0.24149852,-0.63900256,0.6064404,0.11543124],[0.25333208,0.48942828,-0.12563716,0.051205732,-0.93026,0.80623984,-0.004143445],[-0.2687049,-0.44401962,-1.024401,-0.53700495,0.5412046,-0.6765064,0.29961354],[-0.8286411,-0.43201685,-0.61702985,0.2633626,0.8428664,-0.22970653,-0.1767021],[0.28991467,0.8902969,0.07605267,-0.15893519,-0.76903087,0.4981137,-0.3236638],[0.6096544,-0.21495588,-0.91238225,0.77867436,-1.8102629,-1.2908732,-1.2738218],[-0.5399221,0.2869458,-0.20122242,-0.5448208,1.5114583,0.0075225746,0.47214413]],"activation":"σ","dense_2_b":[[-0.6210039],[-0.7338756],[-0.49544066],[-0.016957626],[0.14940451],[-0.2620403],[-0.33229533],[-0.6031841],[-0.004913182],[0.07355716],[-0.09776186],[-0.21512811],[0.17054316]]},{"dense_3_W":[[0.48983884,0.36363626,0.21502955,-0.9243558,-0.16985188,0.4922954,0.3588781,0.27590808,-0.25560167,-0.46252558,0.39927235,0.69911397,-0.67142934],[0.37070408,-0.123413324,0.18464014,-0.37953055,0.77963734,0.129906,-0.29632708,0.44859973,-0.49503464,-0.2910844,0.2119971,-0.12548667,-0.6616464],[-0.4211456,-0.061192263,0.51209587,-0.8209177,0.81541854,-0.26879197,0.40843183,-0.38219845,-0.50384146,-0.26437145,0.048634317,0.21556903,-0.61757386]],"activation":"identity","dense_3_b":[[-0.14383568],[-0.119675145],[-0.059801787]]},{"dense_4_W":[[-0.9198642,-0.18013722,-0.18726753]],"dense_4_b":[[0.12321251]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json deleted file mode 100755 index c889cb8d88..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B12530x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.948574],[1.1548593],[0.53562486],[0.04142332],[1.1479245],[1.1507511],[1.1525209],[1.1366456],[1.1163762],[1.0853585],[1.0512753],[0.041254494],[0.04129291],[0.04133092],[0.041417275],[0.041405268],[0.041273605],[0.040966455]],"model_test_loss":0.01583303138613701,"input_size":18,"current_date_and_time":"2023-08-12_03-21-02","input_mean":[[22.332148],[-0.0104918955],[0.005065536],[-0.0070506595],[-0.013160345],[-0.013143605],[-0.01291947],[-0.008646495],[-0.0035904623],[0.003121308],[0.0078104283],[-0.0070844237],[-0.0070869317],[-0.007085635],[-0.007076808],[-0.0070724767],[-0.0071802554],[-0.007291667]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.8984663],[-2.0064306],[-0.15834741],[-0.15535103],[-2.6078513],[-0.8259225],[-0.36931977]],"dense_1_W":[[1.9998074,-0.5228987,-0.007837696,-0.37922895,0.2013876,0.9096955,-0.59748536,-0.48922086,-0.22898138,-0.16860367,0.4016587,0.026524307,0.41660535,0.061682027,0.01675915,-0.30379614,-0.22650504,0.31388414],[-0.70133764,-0.31426615,-0.30248472,0.44402006,0.048648655,-0.895414,0.40575865,-0.45831415,-0.31590462,-0.45891097,0.41624534,-0.114576444,-0.32526416,0.48809057,0.09747309,-0.5963326,0.14772642,0.024402922],[-1.3297249,0.20129964,-0.00036146026,0.038497657,-0.5804307,1.210312,-0.79524547,-0.021346122,-0.33560273,-0.2652577,0.30101648,-0.05918743,0.33916757,-0.09221603,-0.38487548,-0.048523333,0.1305082,0.026008023],[0.021477336,0.79985726,-0.0015464973,-0.024727628,-1.1476581,2.130608,-0.8638772,0.0654132,0.11198076,0.11908945,-0.14789096,0.3044069,-0.10925098,-0.37106133,0.018268378,0.16547772,-0.19248393,0.07397156],[-0.7169261,0.5082077,0.33950427,-0.2827534,-0.02629989,0.6695642,-0.17877822,0.435526,0.4602184,0.07237377,-0.22672322,0.29523724,0.30271506,-0.6622034,-0.18534695,0.18379785,0.17853066,-0.034246102],[1.5692992,0.20060617,-0.0087794345,0.22292043,-0.47884136,0.30518147,-0.12451496,0.5754826,-0.21691562,0.2744736,-0.279054,0.5970735,0.4481981,-0.34849948,-0.95557034,-0.4386284,-0.10558777,0.5969739],[-0.09477646,0.0028076046,6.1231327,0.08033729,-1.3894303,-0.101474024,-0.39416897,0.8766576,2.336158,0.5908453,-1.6577489,1.201268,0.18122643,-0.22435206,-0.83741874,-1.0561486,-0.29097697,0.85901344]],"activation":"σ"},{"dense_2_W":[[-0.43103984,0.57259583,-0.45353982,-0.8405737,0.23949991,-0.4028692,0.014858877],[0.73426634,0.05207242,-0.08326654,-0.18289784,0.02668798,0.6674364,1.2636756],[0.5063167,-0.07997967,-0.38297585,-0.54653513,-0.890911,-0.28915372,-0.25040558],[-0.45767108,-0.7947474,-0.98106426,-0.27605048,-0.223204,-0.26669544,0.32884514],[-0.6062595,1.2573644,-0.3091175,-0.5193278,-0.098620065,-0.22738218,-0.6608672],[0.3030579,-0.26088515,-1.2724319,-0.97036225,-0.35874432,-0.74326634,0.53469926],[-0.27986455,0.17539752,-0.7900952,-0.78699905,-0.33842587,0.22881772,0.07359398],[0.3623993,-0.53849274,0.28685072,0.22223133,0.34689447,-0.2684479,0.43466133],[0.46523356,-0.73971575,-1.0159626,-1.149454,-0.27072653,-0.8258129,0.5557078],[-0.53017086,0.72048044,-0.09883555,-0.2829141,0.04501004,0.0050941044,-0.960148],[0.04228475,-0.753709,0.51548535,0.9503595,0.9151871,0.1863079,-0.38379395],[0.20732456,0.4841701,-0.30309632,-0.6324904,-0.32458326,0.030910695,-0.62432814],[-0.414588,-0.5427142,0.07252307,0.13270381,1.1135048,0.40259692,0.40499088]],"activation":"σ","dense_2_b":[[-0.008773873],[0.053248625],[0.012098179],[-0.15198793],[0.031805143],[-0.1111416],[-0.028365295],[-0.14010914],[-0.15508862],[-0.11093824],[-0.08748234],[0.00033527156],[-0.4448109]]},{"dense_3_W":[[0.52092105,-0.5030081,0.3844592,-0.27487588,0.4706045,0.5264942,0.5090887,-0.51060134,0.5129347,0.56152797,-0.28395477,0.3204959,0.02406914],[0.01593203,0.39330208,-0.1664461,-0.33330208,-0.60746926,-0.9253926,-0.235876,0.08486243,-0.59641266,-0.583729,0.34775153,0.23688537,0.26984528],[-0.13828522,0.47288388,-0.14799266,-0.5270513,-0.20191401,-0.25410458,-0.33126354,-0.007962782,-0.09041336,-0.43510935,0.5427055,-0.25327948,0.24559122]],"activation":"identity","dense_3_b":[[-0.07803073],[-0.039414078],[0.06702688]]},{"dense_4_W":[[-0.8098712,0.37011686,0.88090986]],"dense_4_b":[[0.069430865]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B1255000x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B1255000x00x00x00x00'.json deleted file mode 100755 index 0217d51cd4..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019 b'x018965B1255000x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.182226],[1.318108],[0.55038416],[0.04239555],[1.299573],[1.3053768],[1.310721],[1.3021369],[1.2816164],[1.2473235],[1.21014],[0.042187754],[0.042233933],[0.042278603],[0.042346247],[0.042341743],[0.042186968],[0.04189735]],"model_test_loss":0.014659138396382332,"input_size":18,"current_date_and_time":"2023-08-12_03-48-36","input_mean":[[23.368876],[-0.068378255],[0.006725546],[-0.008719376],[-0.06981951],[-0.06967088],[-0.069361694],[-0.063916035],[-0.05700445],[-0.05206913],[-0.047056135],[-0.008766596],[-0.008747308],[-0.008727638],[-0.008741792],[-0.008740139],[-0.008743794],[-0.008700719]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.07148768],[-1.2549438],[-0.12059412],[0.28853613],[0.5968914],[1.0667353],[0.060763594]],"dense_1_W":[[-0.024016947,0.84826535,7.0236993,-0.11074515,-1.0140074,-0.3385152,0.3869476,0.19172075,1.175179,0.6838961,-1.670459,1.526374,0.40274563,-0.15733598,-1.1089683,-0.61065984,-0.49152604,0.4318153],[-0.33222798,-0.9686618,0.001050462,-0.010235882,0.6520806,-2.10211,0.87924844,0.10038173,0.29654494,-0.24353155,-0.38334486,-0.46616292,-0.048904274,1.0027238,-0.324415,-0.18696539,-0.13033646,0.2411943],[-0.0034917125,0.52613735,-0.6482348,-0.2613602,-0.31058145,-0.95539135,0.74526536,-0.2220608,-0.07110724,-0.04182627,0.3254652,-0.77304727,-0.20731975,0.41823757,0.6348863,0.7838213,-0.011969447,-0.49731982],[-0.0023636539,-0.9352469,0.010787807,-0.34020036,1.1659639,-0.64832354,0.7099896,0.5089206,-0.4254998,0.33206016,0.01926688,-0.7223199,-0.3694965,0.43782136,-0.4339172,-0.22489113,-0.02471112,0.028520793],[1.4516557,-0.19518882,-0.0029764688,0.12874876,-0.98909014,0.5284616,-1.16062,0.22776824,0.089895435,-0.19509007,-0.56990606,0.7084235,-0.36520556,-0.498448,-0.059548475,0.3090115,-0.28404635,0.19958587],[0.6468036,-0.7351077,0.008596004,0.35622707,0.15142143,-0.7299676,-0.3414438,0.2833802,0.37200418,-0.32622182,-0.38793376,-0.0299215,-0.09024869,0.012755521,-0.27303815,0.07300682,-0.0782633,0.107511714],[0.0020368258,0.40920547,0.003771097,-0.2989948,-0.5958545,1.302363,-0.5710859,-0.12573288,0.14467251,0.008276177,-0.02948484,0.14001983,0.20254755,-0.68072915,-0.024878774,0.015510983,-0.0020638234,0.009023179]],"activation":"σ"},{"dense_2_W":[[0.041601215,0.24447797,0.4216046,-0.016745664,0.15380263,0.64953125,-1.5191501],[-0.39923093,-0.7630646,-0.076158375,-0.11835629,0.07851075,-0.68705547,0.38427234],[-0.8636165,-0.9983891,-0.19798958,-0.7385011,0.45974955,-0.3868112,0.79535973],[0.37583378,0.031611152,-0.033107635,-0.28120467,0.55615216,-0.03311618,-1.2747175],[0.47308478,0.6686049,0.3348913,0.04881856,-0.61745036,0.7808802,-0.66125715],[-0.3698526,0.166168,0.34443247,0.78737146,-0.22270668,0.6219827,-1.3671186],[-0.84190524,0.0076339054,-0.022591086,-0.6236704,-0.709543,-0.1443693,-0.075285174],[0.19466163,-0.26411548,-0.31579143,-0.1977254,0.022438988,-0.9939421,1.1909277],[0.25067687,0.65360653,-0.74067396,-0.17100555,0.19362506,-1.1775283,0.14330721],[-1.1357728,0.79514545,-1.0022937,-0.09116658,-1.3095479,-0.6293098,-0.13681495],[0.09452845,-0.37880635,-0.5292872,-0.386041,0.3486835,-0.056757417,0.43682256],[-1.2684631,1.433187,-0.12050286,0.46401381,-0.9219034,-0.38595304,-0.7805995],[0.54370886,-0.26546618,-0.40414193,-0.34449917,-0.46030614,-0.5862646,0.8578885]],"activation":"σ","dense_2_b":[[-0.21447611],[-0.2793929],[0.028746858],[-0.3559357],[-0.0974488],[-0.031200977],[-0.41441417],[0.04470072],[0.034972806],[-0.17655064],[0.049306504],[-0.20983955],[0.070270784]]},{"dense_3_W":[[0.28620473,0.49553362,-0.29979274,0.49239248,-0.3187128,-0.8089054,0.5728521,0.19156021,0.5760315,-0.15520339,0.63937896,-0.5519342,0.42006114],[-0.73719287,-0.10893459,0.69925296,-0.6052518,-0.18487976,-0.7727218,-0.39659286,0.65072507,0.53865,-0.36898273,0.17422022,-0.61456436,0.58988386],[-0.05938441,0.28018096,-0.3131366,-0.10477532,-0.56004566,0.48185638,-0.11083797,0.3429314,-0.25739473,0.5281356,0.32803684,-0.5822138,-0.26118425]],"activation":"identity","dense_3_b":[[0.008872742],[0.05966272],[0.06136013]]},{"dense_4_W":[[0.4281875,1.0318612,0.050216466]],"dense_4_b":[[0.027177498]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48140x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48140x00x00x00x00x00x00'.json deleted file mode 100755 index 21de46199b..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48140x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.231288],[1.2236207],[0.48384562],[0.042621814],[1.2090349],[1.213721],[1.2177045],[1.1926111],[1.1658418],[1.1279925],[1.0919241],[0.042506836],[0.04252686],[0.04254458],[0.04244013],[0.042343955],[0.042099677],[0.04176238]],"model_test_loss":0.01185668259859085,"input_size":18,"current_date_and_time":"2023-08-12_04-42-56","input_mean":[[23.357746],[0.02301448],[0.0030845709],[-0.0019251241],[0.024697196],[0.024336],[0.024798963],[0.027229987],[0.029705063],[0.028953856],[0.027455976],[-0.0019747023],[-0.0019767939],[-0.0019740309],[-0.0018473448],[-0.0018153174],[-0.0018839837],[-0.0020214282]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.007139518],[-0.36417663],[-0.22151361],[-2.2752786],[-1.842185],[-0.052370787],[0.52810186]],"dense_1_W":[[0.06463208,-0.14614256,-0.004301284,0.17093673,0.10111846,1.3639654,-0.8234353,0.039920002,-0.11260984,-0.035453953,0.19663298,0.6151078,0.32875365,-0.8119263,-0.287689,-0.23053078,-0.42119426,0.4950128],[-0.07006446,-1.9708806,-6.5331817,0.1236159,1.8130503,0.5166503,0.68799275,-0.060281184,-1.673682,-1.1404577,1.1906871,-1.2054949,-0.46952084,0.06406035,0.34139132,1.0217533,0.42528445,-0.20924324],[-0.0120092,-0.55868286,-0.43635416,0.46025708,0.59761775,-1.3045688,1.4550803,-0.6410079,-0.46044356,-0.22099674,0.6732854,-0.4678468,0.03187814,0.92614293,-0.61934835,-0.05177542,-0.28630045,0.33652946],[-0.83317536,-0.80627066,-0.10179178,0.10999726,0.019785184,-0.956369,1.0176833,0.3697496,-0.028362121,-0.059128877,-0.12437713,-0.30265445,0.27188116,0.79045576,-0.71790576,-0.34110048,-0.04529891,0.3435819],[-0.7444216,0.63491786,0.08715752,-0.054840762,-0.049226776,0.716783,-0.7838131,-0.0045873374,-0.09835043,0.1465429,0.020588161,-0.035376523,-0.03541739,-0.4995638,0.5265647,0.15362841,0.17507628,-0.338172],[-0.102648556,-0.7882426,0.038460653,0.22105083,0.10494431,-1.0060503,0.5764925,0.11352376,-0.25469536,-0.10095615,0.09101166,-0.32238397,-0.4038888,0.48288944,0.24523751,0.06623701,-0.19029224,0.039122805],[0.7842295,0.004104562,-0.034050412,-0.038287047,0.6813913,-0.9235343,1.0443885,0.6999839,-0.30497897,0.19115898,-0.084208526,-0.488823,0.45840722,0.118487336,-0.117081836,0.0810515,-0.21686175,0.02809039]],"activation":"σ"},{"dense_2_W":[[0.31191123,0.012578262,-0.073103,0.4197174,-0.39167115,-0.5860375,-0.0401353],[0.49508798,-0.73552,0.32163823,-0.13604626,-0.20699552,-0.12848318,-0.3038487],[-0.57450694,0.18396352,0.11384991,0.2159519,-0.34654605,0.02929712,-0.44482008],[0.5138877,-0.17677623,-0.5761437,-0.4093428,0.5905016,-0.5129224,-0.05200225],[-1.1020558,-0.31896916,0.23366053,1.0878744,-0.3915952,0.83413684,0.30904847],[0.6287403,-0.45615014,0.28765643,-0.43303448,0.63161,-0.87807333,-0.6236202],[-0.18465663,1.3596067,0.5464439,-0.521901,-1.4459647,0.6942117,1.1208469],[0.72724205,0.047573425,-0.7336553,0.050098203,-0.30979815,-0.030565912,-0.1010699],[0.13069697,-0.7504235,-0.31712496,-0.25702086,-0.4903785,-0.38608697,-0.8202706],[0.25118548,0.26678544,-0.015086808,-0.7808886,0.49729776,-0.9659693,-0.10936706],[-0.8416602,-0.3856989,0.39649925,0.22174147,-0.27461663,0.97619355,-0.26972875],[-1.3890435,0.42025894,-0.07396389,0.83693534,-0.43904755,0.41258448,-0.7992472],[0.36811528,-0.80290574,-0.041142356,-0.1994228,0.36623415,-0.5200105,-0.76657784]],"activation":"σ","dense_2_b":[[-0.22534604],[-0.105216384],[-0.19398747],[-0.016557224],[-0.13661896],[-0.15216051],[-0.08812248],[-0.09663603],[-0.34491262],[-0.09128825],[0.04268533],[-0.39448884],[-0.061641783]]},{"dense_3_W":[[-0.049214575,0.06255724,-0.70038843,0.6088635,0.1090371,0.6303497,-0.5964707,0.47305194,-0.16417064,0.52888405,-0.53463614,0.09932232,0.2497237],[0.08096788,-0.39710945,-0.15236828,-0.64790344,0.3642383,-0.101971485,-0.020350397,-0.35562035,-0.19162105,-0.5233594,0.49097145,0.43193904,-0.1615822],[0.3178663,0.4239579,0.2581351,0.104468025,-0.5409481,-0.05274523,-0.60230494,0.025281865,-0.17851482,0.14904647,-0.5448667,-0.57374054,0.6508731]],"activation":"identity","dense_3_b":[[-0.062227387],[0.06364925],[-0.03869293]]},{"dense_4_W":[[0.5423993,-0.964113,0.53714585]],"dense_4_b":[[-0.056707334]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48150x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48150x00x00x00x00x00x00'.json deleted file mode 100755 index f1afd48621..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017 b'8965B48150x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.754703],[0.99583066],[0.52195853],[0.03364074],[0.9999458],[0.9983864],[0.9967491],[0.9690758],[0.9489988],[0.9172365],[0.89279425],[0.033480037],[0.03352747],[0.033564996],[0.033597305],[0.033555403],[0.03339308],[0.033234917]],"model_test_loss":0.011961689218878746,"input_size":18,"current_date_and_time":"2023-08-12_05-09-42","input_mean":[[20.5533],[0.06072723],[-0.0130017605],[0.00067336776],[0.06433451],[0.06329887],[0.062110342],[0.059719138],[0.055979628],[0.0545425],[0.050233126],[0.0008544997],[0.0008328172],[0.0008131706],[0.0008174784],[0.00082928565],[0.0009185176],[0.0011421707]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.90862113],[-0.7998115],[0.29500127],[3.5970535],[-0.12021488],[-0.008523585],[4.1502047]],"dense_1_W":[[0.16046667,-0.18488905,-0.08116255,-0.18750922,-0.16433491,-1.1152148,0.9359541,0.09028606,-0.37050682,0.02058137,0.08767959,0.07042472,-0.10593792,-0.24539731,0.65890104,0.033354606,0.08174793,-0.13008156],[5.6240082e-5,-2.0457633,0.65334374,1.5251502,-1.3088462,-2.043833,-0.04112441,-1.5476086,-1.6310064,-1.5787094,-2.5516076,-0.15880251,0.8098546,0.84737986,-0.29775852,-0.58279693,-0.109593175,0.9306553],[-0.09240735,-0.23691395,-0.08596292,-0.021863438,0.19790214,-1.3464229,0.85313654,0.04628712,-0.3389506,-0.043647792,0.18819022,-0.37191772,-0.0034588557,0.14444594,0.39095238,0.1306712,0.023204941,-0.12470221],[1.6062875,-0.14168718,0.29216757,-0.29068917,-0.10627767,0.88737196,-0.22878392,0.2706971,0.52616674,-0.1836785,0.015717065,-0.40486693,-0.34726334,0.50040615,0.47368926,0.36900276,-0.0014073849,-0.43910235],[-0.007260963,2.2485175,4.940441,-0.5364479,-1.326066,-0.22738455,-1.5765278,0.108092494,0.6156207,0.84355676,-0.3730777,0.8112125,0.3988551,-0.008641389,-0.27626094,-0.28699768,0.046848673,-0.34230638],[-0.037478976,-0.1001093,-0.0863427,-0.07570549,0.36714154,-1.8569329,0.9551398,-0.16772039,0.1527077,0.12593286,-0.19880708,-0.16723952,0.27533242,-0.15500604,0.52059233,-0.3220368,0.048995454,0.06608929],[1.8863575,-0.09598721,-0.34971088,0.59141415,0.033216525,-1.0910133,0.68912745,-0.5307834,-0.4284811,0.18438782,-0.024860496,0.19869357,0.26999107,-0.24860352,-0.6470507,-0.508486,0.0019406695,0.51603043]],"activation":"σ"},{"dense_2_W":[[-0.48650655,0.2588981,0.0312486,0.43491283,0.16748133,-0.71130973,-0.053482138],[0.27239284,0.07384157,0.1776044,-0.33170608,-0.002457442,0.7151791,0.21523637],[-0.18006818,-0.4765831,-0.6325456,-0.70129013,0.122486345,-0.1399289,-0.26494774],[-0.7057871,-0.47439024,-0.52092475,-0.1475755,0.45321676,-0.11419975,-1.1540185],[0.29741463,-0.47053236,0.84870386,-0.09420109,0.3550361,0.53206086,-0.0045715007],[-0.72433555,-0.6616255,-1.5622116,2.4680088,1.291401,-0.54468,0.7206563],[0.6961331,0.44749773,0.36611405,-0.38041288,0.3445849,-0.18433261,-0.27811208],[-0.69021624,-0.017037576,-0.67009085,-0.09356929,-0.10503188,-0.34458145,-0.02231519],[-1.0635598,-0.33353114,-0.5266894,-0.137938,0.7490435,-0.35423642,-0.99171734],[-0.21807487,0.18801044,-0.68545204,0.12370873,0.9005878,-1.0286127,-0.8563234],[0.5423448,-0.29096147,-0.018749518,-0.09780457,-0.5506883,0.46788862,-0.16100915],[0.03551326,0.2860867,0.6957025,0.21722172,-0.1966169,0.5215825,0.07507346],[-0.5746759,-0.22346315,-0.44673678,0.15813608,0.3015097,-0.40882587,-0.51104206]],"activation":"σ","dense_2_b":[[-0.024497896],[-0.07063643],[-0.19928667],[0.42064607],[-0.005411175],[0.6328674],[-0.049392886],[0.02871734],[0.3210596],[0.26861688],[-0.026878959],[-0.060387224],[-0.10667805]]},{"dense_3_W":[[0.36677212,0.55660695,-0.55313206,-0.4082663,-0.27326408,0.10608849,0.021528898,0.36427072,0.35612637,-0.26106265,-0.580114,-0.5729309,-0.44237646],[0.4771073,-0.6284979,0.4865573,0.72787654,-0.19068882,0.63529533,-0.54094064,0.422667,0.3027027,0.3450987,-0.013951826,-0.53568786,0.41296872],[-0.48427796,0.43434283,0.07578888,-0.43649468,0.40260956,0.3030044,0.14234343,-0.16904311,0.2427833,-0.6615657,0.047491975,-0.2096294,-0.08129209]],"activation":"identity","dense_3_b":[[-0.014429971],[-0.026662724],[0.013837804]]},{"dense_4_W":[[0.45206308,1.1123025,-0.31965008]],"dense_4_b":[[-0.023298338]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48241x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48241x00x00x00x00x00x00'.json deleted file mode 100755 index 07a3ab8f04..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48241x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.209049],[1.1246747],[0.46813142],[0.038223516],[1.1218573],[1.1228344],[1.1237725],[1.099323],[1.0759022],[1.0401212],[1.0056554],[0.0380946],[0.03811699],[0.038133033],[0.038103707],[0.038023833],[0.037828285],[0.037552092]],"model_test_loss":0.011310987174510956,"input_size":18,"current_date_and_time":"2023-08-12_06-10-19","input_mean":[[22.88909],[-0.028824013],[-0.013613169],[-0.010625672],[-0.024585929],[-0.025837906],[-0.02695633],[-0.033290874],[-0.035039704],[-0.03637915],[-0.034272987],[-0.010562119],[-0.0105818845],[-0.010603017],[-0.010749645],[-0.010851333],[-0.011034958],[-0.0111641]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.22523445],[-0.26343995],[-0.16324636],[-0.118881956],[-1.753483],[-0.07577936],[-1.102491]],"dense_1_W":[[0.002532067,-0.03390916,-0.003535666,-0.04854094,-0.08614675,-0.69101536,0.10960003,-0.03146945,0.24333058,0.14761123,-0.2722869,0.27474254,-0.043608457,-0.11733092,0.24542642,-0.10411576,-0.14360683,0.1711039],[-0.002566696,-0.61363703,-0.012943635,0.026450964,0.29015598,-0.71414703,0.554264,-0.037178878,0.03740144,-0.30521652,0.21204664,-0.38488153,-0.21638761,0.41673842,0.33263344,-0.15415925,0.3494084,-0.28160352],[-0.16471842,-0.31117657,0.8566729,0.29125565,0.4319235,-0.75162256,0.95838267,-0.20883378,-0.32447112,0.082446456,0.10276111,-0.49870324,-0.023855265,0.21451043,-0.006508097,0.3004852,-0.32773772,0.011747492],[-0.019952636,-1.5153528,-5.0031734,-0.09435296,1.048899,0.43409705,-0.069626406,0.32380673,-0.8917055,-0.23266096,0.83130217,-0.20197223,-0.07251639,0.20138681,0.1400577,-0.017955068,0.055563636,-0.10964311],[-0.88960624,0.66261613,-0.9217085,-0.023391634,-0.13783228,-0.78201807,0.58500487,-0.34910184,-0.41719157,0.30604267,0.020150643,0.0013851137,0.14963569,-0.0014568489,-0.15652372,0.05179874,0.043643035,0.0022867518],[-0.05010886,-1.9120406,0.16408531,-0.29981497,-0.61399275,-2.088809,-0.7970844,0.03929672,-0.0981413,-0.88908887,-0.7213265,-0.37824726,-0.072238155,0.22233075,-0.5327377,-0.12634961,-0.14507468,0.4685959],[-0.692649,0.076070726,0.835587,-0.07369687,-0.31847525,1.0514476,-0.7529806,-0.02802738,0.112416394,-0.007971444,-0.073445976,0.027493669,-0.023394028,-0.14953516,0.3462396,-0.20032988,0.013378577,-0.006742064]],"activation":"σ"},{"dense_2_W":[[0.14651315,0.65690446,-0.04113687,0.041510507,0.09703274,0.42973572,-0.19722632],[-0.16582173,-0.02892236,0.21182849,-0.07145227,0.7815606,0.6976398,-0.4521055],[-0.09238782,-0.79659176,-0.010888447,-0.64854467,-0.3640353,-0.32341737,0.94107974],[-0.31743294,-1.079859,-0.48714882,-0.31109604,-0.7076601,0.6800173,-0.3782569],[-0.029170444,-0.949289,-0.2557742,0.26696756,-0.6634111,-0.020845836,-0.13919494],[0.39409286,0.7231917,0.6616238,0.6863315,0.45207512,-0.65741384,-0.27147612],[0.9265955,0.55270416,-0.15335171,-0.21362257,0.839455,-0.20367129,-0.54616636],[1.1020366,0.52923506,0.0077937646,-0.6614574,0.1045729,0.40647596,-0.01551381],[0.8354852,0.60446924,0.24171901,0.80390596,0.08422289,-0.5756955,-0.47378206],[-0.86737347,-1.0375736,-0.7943101,0.19968024,0.34953976,-0.27134398,0.38634428],[-0.23586744,-0.90408766,-0.9303652,-0.9001962,0.604345,-0.8173552,1.2277185],[-0.0666105,-1.2101858,-0.17242567,0.21582662,-0.5084395,0.30618143,-0.61344314],[-0.7643587,-0.44565865,-0.5358139,-0.789047,0.60576195,-0.40198153,0.7971051]],"activation":"σ","dense_2_b":[[-0.30520138],[-0.2789117],[0.26295054],[0.20992225],[0.09671134],[-0.23525962],[-0.28452772],[-0.15586977],[-0.24889536],[0.2383187],[0.031573173],[-0.06746427],[-0.18409434]]},{"dense_3_W":[[0.6026086,0.52552027,0.2761912,-0.8430829,-0.66491354,0.069576606,0.08970149,0.5401842,0.24471678,-0.89263755,-0.32295918,0.13739742,-0.5061482],[-0.3305499,-0.5845312,0.7317596,0.93317604,0.087755084,0.2923734,-0.8093447,-0.6683554,-0.6317001,0.99416625,0.7963545,0.5912554,0.59245497],[0.0005086235,0.27584663,0.7916986,0.4292943,0.63182247,-0.6468668,-0.2727807,-0.35912475,-0.3197199,0.82221115,0.32133383,0.2867808,-0.08736428]],"activation":"identity","dense_3_b":[[-0.034214295],[-0.032624304],[-0.05482243]]},{"dense_4_W":[[-0.24479973,0.74612886,0.73167807]],"dense_4_b":[[-0.026686598]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48310x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48310x00x00x00x00x00x00'.json deleted file mode 100755 index 191731833f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48310x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.603247],[1.3767333],[0.4454295],[0.045631606],[1.3678387],[1.370781],[1.3725109],[1.3436831],[1.311338],[1.2674466],[1.2208972],[0.045455445],[0.045487784],[0.045517508],[0.045482583],[0.045399908],[0.045213446],[0.04482382]],"model_test_loss":0.013772002421319485,"input_size":18,"current_date_and_time":"2023-08-12_06-42-21","input_mean":[[23.356035],[0.011589931],[-0.015715389],[-0.0022615397],[0.015798328],[0.014719816],[0.013118888],[0.009267011],[0.008420342],[0.008507399],[0.009309166],[-0.0022847306],[-0.0022728958],[-0.002267876],[-0.0022721845],[-0.00230573],[-0.0023624457],[-0.0024641412]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.88219327],[-0.05723061],[-0.059791878],[1.4932584],[-0.0350319],[-0.84323514],[0.2996949]],"dense_1_W":[[0.15552013,0.68498236,-0.004401782,0.06613787,-0.3138051,0.9909178,-0.4801728,0.27251762,-3.9911305e-5,0.14424084,0.029309403,0.041476194,0.5599982,-0.5216308,-0.12916003,-0.17854483,0.036074255,0.11677919],[-0.0082084965,-0.53576446,0.0034336871,0.36242324,0.07065764,-1.0044807,0.7644967,0.048346102,-0.28757718,0.05818398,0.0812672,-0.42089686,0.18758625,0.326259,0.5879358,-0.09024579,0.026588196,-0.027274309],[-0.030504204,0.94661164,1.4692297,-0.14969598,0.0024379326,0.62712175,-0.19334361,0.30215573,0.34021494,-0.14773123,-0.9896913,0.8398936,0.06587321,-0.62592477,-0.17010672,-0.34911457,0.26831692,0.1246808],[0.53607357,-0.8794676,0.0014746991,0.35912958,0.35449198,-1.2205513,0.5645118,-0.12328942,0.09299552,-0.07820418,-0.16524789,-0.18727893,-0.30706224,0.03244261,0.17126645,0.03033496,0.062598415,-0.15945143],[-0.29806733,0.62810147,0.016662166,0.04787856,-0.2178898,1.0717077,-0.58408093,0.038249463,0.055414878,-0.16181065,0.2520098,0.14243068,0.2880338,-0.34465408,0.011317232,-0.11930281,-0.32691225,0.30142125],[-0.09203294,1.0721633,5.374889,-0.26402676,-0.21183757,-0.18999156,-0.1049094,-0.13156429,0.3925089,0.41511986,-0.6934615,0.86322796,0.7660964,-0.3449572,-0.41987318,-0.61497223,-0.21786183,-0.13827488],[1.0558003,-0.15531835,-0.014700998,-0.15400389,-0.17445247,0.19957963,-0.7788509,-0.66680443,0.4196881,0.10506768,-0.30046782,-0.113978475,0.022458427,-0.07436751,-0.24094073,0.5980271,0.49674785,-0.5393424]],"activation":"σ"},{"dense_2_W":[[-0.5135834,-0.25661662,-0.026235756,0.030436503,-0.17369603,-1.7777263,-2.4461317],[-0.7826742,0.5919605,-0.203896,1.0301571,-0.49202737,0.30388182,-0.3286326],[-1.4934103,0.1125834,-0.784764,0.10120618,-0.73634833,-0.33474493,-0.51051533],[-0.08085624,-0.5157619,-0.61287373,-0.03598703,-0.13013026,-0.73116446,-0.6332094],[-0.15480644,-0.52027535,-0.43745804,-0.22571458,-0.59228283,0.22646776,-0.22388498],[-0.17604452,-0.18500611,0.50142026,-0.56830126,0.6879626,-0.08546103,0.09753222],[0.45385736,-0.1853672,0.5049051,-0.46082744,0.15115426,-0.3264805,0.27134734],[0.62699825,-0.23365812,-0.12801227,-0.66903687,0.5545601,0.15332852,0.32462138],[-0.107537225,-0.56420654,-0.6508188,0.30347762,0.0477495,-0.41004136,-0.012734894],[-0.19092843,0.54952693,-0.26207697,1.156082,-0.55869824,-0.2928665,0.26659483],[-0.55371886,0.43837482,0.24519897,0.20218645,-1.3142209,-0.4187609,-0.051204197],[-0.9921039,0.17509715,-0.047123123,0.009096356,-0.22319628,-1.7375966,-1.591449],[-2.3417017,-0.10801021,-0.026163574,0.3812512,-1.0870538,-0.819271,-0.7919683]],"activation":"σ","dense_2_b":[[0.3518073],[0.1122314],[-0.0118162315],[-0.2725371],[-0.24143407],[-0.04301829],[-0.037871398],[-0.043535873],[-0.077412814],[-0.016384799],[-0.030182287],[0.060030468],[0.27441582]]},{"dense_3_W":[[0.36764717,0.59455025,-0.26633954,0.55135894,-0.080566764,-0.058451932,0.34915563,0.37275517,0.4936895,0.0741616,0.30454972,0.37950292,0.40615684],[-0.6196921,-0.63125026,-0.48607326,0.026073568,-0.23994817,0.6612403,0.665946,0.624512,0.58777785,-0.47118247,-0.4825106,-0.5355161,-0.5683991],[0.32227254,0.10172928,0.0020228538,0.5071577,0.21635775,0.53688926,0.2714474,0.60069305,-0.26110378,-0.20226555,0.41789976,0.5308405,0.3238944]],"activation":"identity","dense_3_b":[[-0.04775693],[0.03200255],[0.023321353]]},{"dense_4_W":[[-0.6651373,1.1393598,0.5636013]],"dense_4_b":[[0.03244566]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48320x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48320x00x00x00x00x00x00'.json deleted file mode 100755 index 214f8be518..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48320x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.5644407],[0.8395695],[0.34483072],[0.038255572],[0.8326137],[0.8354024],[0.8375865],[0.8230707],[0.8024709],[0.77293986],[0.74346644],[0.03822754],[0.03823464],[0.038251538],[0.038143624],[0.03792401],[0.037752647],[0.03757457]],"model_test_loss":0.012391784228384495,"input_size":18,"current_date_and_time":"2023-08-12_07-07-38","input_mean":[[22.189064],[0.013319887],[0.004920282],[-0.013327403],[0.01110264],[0.011794839],[0.012627523],[0.014629398],[0.0158066],[0.0182441],[0.021402285],[-0.013237113],[-0.013275518],[-0.013312367],[-0.013382163],[-0.013264392],[-0.012985241],[-0.012600721]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.26434997],[-0.79208225],[-0.20664789],[0.013472025],[-0.39775062],[-0.83568007],[0.18677552]],"dense_1_W":[[0.34441796,-0.52539915,0.011351737,-0.0031063606,0.538754,-0.41478962,0.5309099,-0.49093226,-0.122121654,0.17211112,0.031722955,-0.049942363,-0.45295808,0.44230676,0.2298436,0.07178071,-0.19289836,0.0064287023],[1.1373345,0.30843458,0.06299667,0.29950574,-0.0838057,0.4998327,-0.2954441,0.07530557,-0.09903502,-0.3212128,0.0950906,-0.30354694,0.05237616,0.38115606,-0.29169688,-0.02946208,-0.23857956,0.18285783],[0.08874039,-0.36663172,-0.0022011884,0.042667914,0.25671524,-0.9374695,0.76006675,-0.13235554,0.3273898,-0.3046668,0.061351378,-0.16451104,-0.04971849,0.28689685,-0.10612716,0.091517314,-0.094520494,0.022685707],[0.060418982,-0.1157775,0.0033044387,-0.53267866,-0.3576781,1.0214648,-0.7689731,-0.088864565,0.5304823,0.36398104,-0.32102284,0.25985885,0.12955877,0.118082896,-0.41932943,0.5984563,-0.34898463,0.16819601],[-0.35258323,-0.2083451,0.0007432207,-0.19166562,0.53556216,-0.7179964,0.17767152,-0.19613978,0.014983063,0.1352932,-0.07252017,-0.049061526,-0.22725205,0.5097105,0.092519365,-0.052805327,-0.086677946,0.050957207],[1.1484965,-0.36967862,-0.059478328,-0.46070608,0.3855522,-0.77252835,0.12642105,0.28179643,0.06333251,0.08696457,0.012441664,-0.17870833,0.13207336,-0.3562681,0.39463803,0.7484561,0.21307406,-0.5399646],[-0.005871693,1.2971369,4.596029,-0.7689503,-0.85900676,0.2098196,-0.21946974,0.10207684,0.7080346,0.19166191,-1.1770563,0.31363365,0.35723364,0.23915814,0.012657947,-0.18623129,-0.03445843,-0.17965348]],"activation":"σ"},{"dense_2_W":[[-0.3623736,-0.41845292,0.15554701,0.52873987,-0.33623168,-0.109475665,0.1650474],[0.20129873,-0.17509207,0.6367557,-0.022217795,0.6520106,-0.06378363,0.37632793],[-0.02613163,0.6422942,-0.08672158,-0.018176718,-0.5885163,-0.41947407,-0.44015065],[0.06876831,0.2672296,-0.10011656,0.8271233,-0.14820686,-0.08494413,0.034133013],[0.5603243,-0.41052374,0.6464844,-0.7759632,0.13104425,0.6245838,-0.25918558],[0.24931118,-0.72889996,0.60138255,-0.7174911,0.44678172,-0.37861496,-0.6592254],[-0.2587339,0.14566004,-0.7437367,0.41833475,0.11803848,-0.119959645,0.13896635],[0.030275445,0.44386005,0.03581493,0.3722496,-0.7559753,-0.24718514,-0.5880272],[-0.16906022,0.14654645,-0.18917269,-0.5889206,0.30467245,-0.17858168,-0.2796732],[-0.7495855,-0.4666009,-0.668737,0.4311893,-0.3495553,-0.7319314,0.51790726],[-0.89682776,-0.011368982,-0.13440222,-0.12547427,-0.5925041,-0.63063765,0.40521654],[0.90010816,-0.44593993,0.4698638,-0.30274037,0.24248902,0.9315232,-0.4489031],[0.11560195,-0.4628338,-0.63196105,-0.2325408,0.10829967,0.08619985,-0.3691465]],"activation":"σ","dense_2_b":[[-0.09398416],[-0.16811661],[0.0034526016],[0.02302207],[-0.02017339],[-0.18555853],[0.007355943],[-0.012509794],[-0.15630287],[-0.059829053],[-0.22280535],[-0.104731545],[-0.05920679]]},{"dense_3_W":[[0.27258593,0.23565869,-0.3472996,-0.4951552,0.5607892,0.62477237,-0.26927564,-0.54649544,0.28152058,-0.48925486,-0.0038740942,0.41033503,0.5219135],[-0.044915594,-0.13625428,0.14908999,0.50632745,-0.36696005,0.5478251,-0.1786471,-0.3696246,-0.67396617,-0.04566228,-0.30607444,0.009878186,-0.5257712],[-0.45755082,0.5034456,-0.3199554,-0.06326751,0.6669257,0.49097896,-0.5270685,-0.15877146,0.44582334,-0.7103173,-0.2027269,0.0686523,-0.49046502]],"activation":"identity","dense_3_b":[[-0.062416617],[-0.03785598],[-0.053617734]]},{"dense_4_W":[[-1.1007901,-0.35901657,-0.90650785]],"dense_4_b":[[0.058452934]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48400x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48400x00x00x00x00x00x00'.json deleted file mode 100755 index b84d1cc4f8..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020 b'8965B48400x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.76261],[0.93215835],[0.425047],[0.03367151],[0.93245465],[0.93255615],[0.9317443],[0.9169954],[0.90578634],[0.890775],[0.87333876],[0.033522148],[0.033568572],[0.03361294],[0.03370465],[0.03366217],[0.033505887],[0.033300173]],"model_test_loss":0.009005936793982983,"input_size":18,"current_date_and_time":"2023-08-12_07-32-45","input_mean":[[23.330957],[0.031854257],[-0.016394153],[-0.010512169],[0.038015034],[0.037232615],[0.035574514],[0.029611548],[0.02562595],[0.019023875],[0.017404461],[-0.0105256],[-0.010525036],[-0.0105359815],[-0.010630796],[-0.010722013],[-0.010881347],[-0.011070561]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-5.0810957],[0.1603531],[-0.049640577],[5.2707887],[0.67574877],[0.1516555],[0.15765585]],"dense_1_W":[[-2.0682428,0.13633108,0.13491328,-0.36039838,0.43495807,0.68475527,-1.6714412,0.47828165,0.109744266,-0.026151523,0.72647053,-0.47452134,0.06982296,0.3297403,0.17760237,0.58767045,-0.21541646,-0.16653578],[-0.008568287,0.12206914,0.23071772,-0.102156624,-0.500583,1.8274449,-1.554223,0.340697,0.109655045,-0.18670748,-0.23404415,0.2656916,0.5948071,-0.46532926,-0.4009976,-0.39237484,-0.07123574,-0.010524451],[-0.0031924327,-0.62425506,-0.046601616,0.2168617,0.50812894,-1.6562872,0.9460569,0.13316472,-0.15056206,-0.15252529,0.14638653,-0.41414198,0.07276244,0.22266257,-0.15308774,-0.034698598,0.16347538,-0.050810855],[2.125994,0.39522022,0.1382072,-0.10945463,0.44430417,0.8159377,-2.1067505,0.37659898,0.11375099,0.35729685,0.5010697,-0.08696807,-0.36882088,0.1198089,0.24507992,0.24288763,0.26632097,-0.35650986],[-0.029398045,-0.75224733,0.8366512,-0.48501256,0.4163101,0.41848388,1.2642128,-0.53183347,-0.69976854,-0.6898771,-0.12976366,0.07133254,-0.26144692,0.38537222,-0.32685757,-0.23447362,-0.6981122,-1.0000134],[0.00065578264,0.609174,0.0046034064,-0.31727758,-0.15922506,0.9975659,-0.3816561,0.1362802,-0.30854115,0.085538454,0.09641526,0.15830934,0.38728058,-0.4841558,-0.4591731,-0.06406144,0.047263924,0.30575022],[0.0008388964,-1.4820985,-3.707669,0.069603644,3.1635418,-0.36718917,-0.4799769,-0.13187854,-2.1920686,0.1677239,0.9062365,-1.1247116,-0.34561667,0.36416775,0.48867264,0.6879564,0.30840775,-0.39429164]],"activation":"σ"},{"dense_2_W":[[0.2973958,0.08332646,-0.3467805,0.23699734,-0.5854178,-0.129308,-0.43418685],[-0.36580157,-0.3235827,-0.016993066,0.10935744,-0.049958985,-0.5979773,0.03689173],[-0.28405172,-0.45268708,0.4789435,-0.29643363,-0.24837038,0.3182004,0.115557075],[0.15464418,0.46542335,-1.0709205,1.0785366,-0.14720912,0.6205811,-0.8320102],[-0.10603755,-0.22647086,0.28111154,-0.55486935,0.17641152,-0.49721366,-0.09488447],[0.62766623,-0.20216012,-1.2113202,0.7469767,0.067126594,0.47500092,-0.15576144],[-0.49403727,-0.49650237,0.6379596,-0.0013690102,0.39851728,-0.38198105,0.34440374],[-0.35230166,-0.22415853,0.4071291,-0.5434958,0.010856588,-0.33139396,-0.07433657],[0.5740357,-0.03681304,-0.8333273,-0.15300135,-0.014365716,-0.36107722,-0.29574242],[1.0023674,0.22067322,-1.0635573,0.4620926,-0.38083276,0.2977076,-0.30534083],[1.5357183,0.21400538,-1.2476741,-0.5011329,0.20616063,0.50831836,-0.44240168],[-0.22830233,-0.047964964,0.6109007,-0.2337184,-0.4955921,0.11622925,-0.103081025],[0.22968316,0.37905967,-0.1994602,0.5001487,-0.16496213,-0.06584811,-0.18063226]],"activation":"σ","dense_2_b":[[-0.009041046],[-0.2510398],[-0.019130033],[-0.015723245],[0.114224665],[-0.25378084],[0.049713876],[0.14150867],[-0.29484767],[-0.20610979],[-0.49759024],[0.01332179],[-0.057279114]]},{"dense_3_W":[[-0.4027402,-0.60708517,-0.5284704,0.5859432,-0.6416008,0.10952159,-0.1184989,0.03421147,-0.29945162,-0.020218438,0.061756372,-0.5574928,0.31008488],[0.033894606,-0.41223776,0.17423983,0.18949471,0.5258869,-0.33833903,0.17779568,0.4694829,-0.47503108,-0.70289963,-0.48349223,0.21150771,-0.30218485],[0.10131618,0.10130477,-0.11519296,-0.5324584,0.28956762,-0.24111281,0.6044179,0.20313828,0.15558045,-0.2360581,0.09277952,-0.17545496,-0.5429789]],"activation":"identity","dense_3_b":[[-0.033029158],[0.045226328],[0.04225117]]},{"dense_4_W":[[0.6470691,-0.9522123,-0.9472077]],"dense_4_b":[[-0.041427232]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018 b'8965B48160x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018 b'8965B48160x00x00x00x00x00x00'.json deleted file mode 100755 index e8006d9259..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018 b'8965B48160x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.447082],[1.3057796],[0.54874927],[0.045618646],[1.3064655],[1.3057723],[1.3055998],[1.2616607],[1.2238507],[1.1785189],[1.1370367],[0.045534577],[0.04553703],[0.04553903],[0.045388177],[0.045190737],[0.044918988],[0.04458369]],"model_test_loss":0.01316243689507246,"input_size":18,"current_date_and_time":"2023-08-12_08-27-45","input_mean":[[23.570164],[0.036853246],[-0.016496139],[-0.0010369287],[0.042531505],[0.041598342],[0.04004992],[0.035041444],[0.029833477],[0.026067143],[0.021290474],[-0.0010061035],[-0.0009948352],[-0.0009900935],[-0.0009686471],[-0.0009951665],[-0.001064114],[-0.0012318792]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-5.0845885],[0.1004176],[0.00013673597],[5.0672097],[0.16392848],[-0.0016507725],[0.03163203]],"dense_1_W":[[-2.194229,-0.9903979,-0.08080573,0.6365177,-0.016596766,-0.57292145,0.71629894,-0.13917753,0.10558334,0.048379973,-0.37905106,-0.37705103,0.008995534,0.26333934,-0.5870924,-0.014787129,-0.07076682,0.115287304],[-0.017660985,-1.7817364,-7.0660744,0.32349348,0.58495885,0.08818791,0.327425,-0.26258895,-1.0716436,-0.24204725,1.3435555,-0.4196861,-0.3284182,-0.5121312,0.5085909,0.29486054,0.47518936,-0.09737066],[-0.0020460926,0.5839157,-0.4102708,0.33361316,-0.19995423,-1.8766894,1.8676817,-0.6156362,-0.20390484,0.05773844,0.5775369,-0.69629824,-0.48964554,0.76413906,0.17794818,0.013914604,0.26574284,-0.35397956],[2.238539,-1.285662,-0.077533774,0.45735472,-0.15934312,-0.3347021,0.7057036,0.13443239,0.046269502,0.031148197,-0.40138546,-0.3106728,-0.22145422,0.705411,-0.5908254,-0.1697941,-0.099797,0.21151316],[0.0072099357,-1.0319359,-5.8044977,-0.012008662,2.721464,0.9949136,2.1362736,0.755109,-2.9483802,-2.687557,-0.21047898,-0.6913134,-0.46375927,-0.08410903,1.2371743,0.34849486,0.1389388,-0.11194528],[-0.001468309,0.71179956,-0.016407752,0.2380162,-0.59478456,1.7276148,-0.7567721,-0.15031393,-0.0544795,0.07924978,0.074758366,0.3384667,0.1260156,-0.73387,-0.12542778,0.035354953,-0.08498558,0.11839043],[-0.0067242286,0.7752038,-0.015802715,-0.2522099,0.18704206,1.0989213,-0.8221326,-0.1619869,0.36667046,-0.08953081,0.07729341,0.3080005,0.32241634,-0.6751567,-0.08914714,-0.25339732,0.11973354,-0.11458613]],"activation":"σ"},{"dense_2_W":[[0.48777774,0.16780007,0.506049,0.06149719,0.02641481,-0.15557353,-0.47309208],[-0.033767972,-0.22800188,0.3801882,-0.4038235,-0.018416025,0.48671988,-0.1726016],[1.3997426,-0.2836853,0.50399095,0.7228087,0.17250279,-1.1006094,-1.036102],[1.5827407,-0.52164584,0.44014573,1.500202,0.24160044,-1.3031888,-1.155962],[0.9090004,-0.22377129,-0.16544203,0.5805136,0.10938864,-1.071583,-0.36718455],[0.20949104,-0.15260668,-0.35395786,0.16198182,-0.26443386,0.1544654,0.30052176],[0.35954893,0.04215935,0.6288832,0.16029716,0.19912098,-1.1470475,-0.41342846],[-0.27078894,-0.22278617,0.28234375,0.17605774,0.060802832,0.1927992,-0.18586269],[-0.4729232,0.128256,-0.29198325,-0.63878536,0.11258722,0.7476101,0.41813225],[-0.38154852,-0.3791316,-0.5129751,0.013876141,0.11724782,0.6680124,0.40538806],[-0.31103176,-0.5047606,0.33748698,0.095529206,0.18596448,0.45894697,0.30854413],[0.11049385,0.3211236,0.30543202,0.6428709,0.14853697,-0.68060184,-0.22545667],[0.3577858,-0.05270775,-0.24674627,-0.62481797,-0.5663065,0.27451596,-0.25037414]],"activation":"σ","dense_2_b":[[-0.13820776],[-0.044455525],[-0.25503334],[-0.22968425],[-0.19087854],[-0.011678218],[-0.18331416],[0.006042763],[-0.007903232],[-0.012231933],[-0.008202675],[-0.1534127],[0.04731731]]},{"dense_3_W":[[-0.10723448,-0.34210286,-0.03438066,0.37535432,-0.0108004445,-0.6269137,-0.068967775,0.31058553,-0.65623224,-0.31572104,-0.39706936,0.3712482,-0.41853353],[-0.5804139,-0.04486996,-0.049920645,0.46066716,0.3930726,-0.25964186,-0.04363731,0.49404967,-0.013849256,0.4068667,0.38286507,-0.24872099,0.65286624],[0.57707745,0.17859071,0.51623523,0.37261355,0.4789657,-0.0021774643,0.6602461,-0.38525575,-0.35309088,-0.00086821883,-0.062653214,0.57291704,0.00911787]],"activation":"identity","dense_3_b":[[-0.029123915],[0.023471655],[-0.04527022]]},{"dense_4_W":[[-1.0457256,0.43828797,-1.1001852]],"dense_4_b":[[0.033784293]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018.json deleted file mode 100755 index 52a019b0b1..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2018.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.446532],[1.305604],[0.54480565],[0.045578297],[1.3061355],[1.3057326],[1.3058693],[1.2597163],[1.2224401],[1.1767526],[1.1361469],[0.045510642],[0.04551679],[0.04551409],[0.045335952],[0.04515042],[0.04486992],[0.044565506]],"model_test_loss":0.013752324506640434,"input_size":18,"current_date_and_time":"2023-08-12_08-00-18","input_mean":[[23.569853],[0.03672725],[-0.020106794],[-0.0010078558],[0.04061277],[0.039911255],[0.03890138],[0.03328521],[0.027936308],[0.023301033],[0.021146066],[-0.0010234776],[-0.0010079038],[-0.000997834],[-0.0009388888],[-0.001006094],[-0.00110449],[-0.0012551269]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.775717],[-1.5074123],[0.03396842],[-0.21671481],[0.0462703],[0.8037427],[-0.052228786]],"dense_1_W":[[0.9219134,-0.5559626,-0.21603523,0.24129556,0.10209199,-1.0011351,0.5424733,-0.5449639,0.050155614,0.22614123,-0.004761036,-0.55282843,0.41325715,0.0022247569,0.044411074,-0.09423209,-0.10117545,0.04368109],[-0.7283206,-0.35355893,-0.16045861,0.25857133,-0.24542835,-0.62773067,0.48699424,-0.3978315,0.16402064,0.11644162,-0.05423804,-0.15727901,-0.1769678,0.16871296,-0.017148495,-0.1356121,0.12889557,-0.06923812],[0.031175813,1.3461481,-0.05207552,-0.13424256,0.15673165,1.1298523,-0.54824036,-0.16689743,0.049443748,-0.016901892,0.20333812,0.5619182,0.006826116,-0.6597064,-0.026180983,0.22729635,0.2584868,-0.2113748],[0.5795566,0.67358404,-6.977969,0.058563557,-0.29574206,0.5823302,-0.24030899,-0.2995381,-0.26924467,-0.081547186,-0.5541594,0.16588,0.15840445,-0.7864141,0.40154028,-0.2373318,-0.24145977,0.61007404],[-0.009848546,0.30045143,0.029503373,-0.27351668,0.11376449,1.6821749,-1.2038943,-0.049892105,0.37281117,0.18173723,-0.16429949,0.35660785,0.22832245,-0.4506436,-0.23757456,-0.32164904,-0.053110283,0.12267799],[1.3934647,0.36499634,0.26312694,-0.432766,0.75987923,-0.74437225,0.8091179,0.6067964,-0.2472178,0.10360785,-0.13620545,-0.34767386,-0.16454501,0.5357987,0.62150854,-0.05545808,0.010435748,-0.17039369],[0.20956095,-1.419724,-6.043722,0.29923502,0.8952572,0.09468286,1.1705585,0.08298218,-0.94001234,-0.7296266,0.37193263,-0.7382738,-0.4084395,0.52171934,0.029654104,0.22694133,0.35117772,-0.11566992]],"activation":"σ"},{"dense_2_W":[[0.93649673,0.50793236,-0.6459632,0.14732611,-0.31413737,0.24595617,0.5410845],[-0.147114,-0.36361343,-0.09407195,0.02937175,0.22865185,0.1751995,-0.9527202],[-0.7733485,0.011140345,0.23013693,-0.34375155,-0.19983934,-1.170109,-0.9463034],[-0.27665538,-0.39627838,0.51849717,-0.1559539,0.023949604,-0.90093136,-0.9847508],[0.10923114,1.0428375,0.10153842,-0.20655255,-0.99642473,0.0155226635,0.39040205],[-0.7608344,-0.741681,0.61714303,0.29961175,0.40194076,-0.6485538,-0.37572783],[0.06267869,1.0860785,-0.8247702,-0.24703546,-0.5712135,0.2198229,0.5468893],[0.9322532,0.8754985,-0.3895632,-0.72363174,-1.1679527,0.24966148,0.2579374],[0.1763633,-0.5714968,0.6868805,-0.06384768,0.5371141,0.2615531,-0.46435195],[-0.02702668,1.2335556,-0.27594045,-0.05924885,-0.87853885,0.3753951,-0.05063993],[-0.6255276,-0.8581678,0.021257112,0.43066528,0.77454144,-0.020291625,-0.6967373],[0.83754885,0.4857429,-0.050797034,-0.6029118,-1.0627534,0.080022566,0.92563975],[-0.09895578,-1.0526363,0.6905131,0.26684704,0.83103323,-0.55075085,-0.45172825]],"activation":"σ","dense_2_b":[[-0.19245008],[-0.3300925],[-0.017551435],[0.0553758],[-0.2694437],[-0.05464509],[-0.6291996],[-0.030519193],[0.07915488],[-0.22345226],[0.13039747],[-0.10993277],[0.18852183]]},{"dense_3_W":[[0.11073112,-0.533201,0.62755555,0.30198997,0.19470435,-0.51550233,0.43695763,-0.607277,0.5566251,-0.6911583,-0.36105812,0.12090485,0.41196087],[-0.35777438,0.18036212,0.36846223,0.24149348,-0.47303873,0.40955707,-0.50227696,-0.6546859,0.24461997,-0.3516048,0.58416516,-0.115509026,0.5594079],[-0.31891224,0.0019296159,0.70591456,0.27569255,-0.6370788,0.18638003,-0.031307057,-0.28519005,0.49748984,-0.3436976,0.7751193,-0.62876755,0.75629675]],"activation":"identity","dense_3_b":[[0.00038296377],[0.055723432],[0.018070834]]},{"dense_4_W":[[0.011774748,0.8155508,0.383835]],"dense_4_b":[[0.05629205]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48241x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48241x00x00x00x00x00x00'.json deleted file mode 100755 index 35099b6ea8..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48241x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.00827],[1.1619883],[0.4412975],[0.04544336],[1.1478776],[1.1518719],[1.1561376],[1.1453321],[1.1250126],[1.0930616],[1.0567293],[0.045202393],[0.04525232],[0.045298003],[0.045285065],[0.045152135],[0.044884894],[0.044592474]],"model_test_loss":0.009325500577688217,"input_size":18,"current_date_and_time":"2023-08-12_09-31-17","input_mean":[[22.791122],[-0.042878833],[-0.011877181],[-0.014597569],[-0.035545684],[-0.03717921],[-0.03862496],[-0.038736913],[-0.03762687],[-0.03448324],[-0.028882926],[-0.014555443],[-0.014538738],[-0.014526647],[-0.014420466],[-0.014331951],[-0.014239206],[-0.014240208]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.11822516],[0.0008828471],[-1.0862342],[-0.18366772],[0.385106],[0.7609392],[-1.4512328]],"dense_1_W":[[1.1565036,-0.47999045,-0.64334595,-0.046866857,-0.2571887,0.5431218,-0.90600425,-0.015227577,0.6074154,0.2966983,-0.3288622,0.35351965,-0.105130196,0.014889756,-0.2885607,0.062367395,-0.0416696,0.19297217],[0.00013613896,1.1544919,5.8863997,-0.063363396,-0.9809145,0.28564644,0.35597575,0.155261,0.3324481,0.33633226,-1.2474326,0.6385195,-0.11791013,-0.054307703,-0.67459035,-0.1379244,0.102973334,0.19569656],[-0.06969047,0.12243385,-0.0019499671,0.39603442,0.30784214,0.31830847,-0.15033488,0.33314312,0.054290332,-0.028862095,0.027961347,0.2477672,-0.12936744,-0.09928604,-0.74599934,0.26326394,-0.22953305,0.12559183],[-0.02875901,-0.66695607,-0.005256191,-0.06915698,0.43517417,-1.1354989,0.80874676,0.1404699,-0.16011457,-0.005997933,0.033535052,-0.2592826,-0.2594959,0.2704396,0.34614062,0.2440052,0.0562286,-0.21780711],[0.9463859,0.18438934,-0.5292463,0.14852741,0.32597074,-1.031986,0.22700587,-0.24131732,0.20941843,-0.1038609,0.082350604,0.020917263,-0.022982072,-0.06515789,0.07043909,-0.07168746,-0.05299607,0.10198203],[0.0038015677,0.46421862,-0.011183879,-0.101370975,-0.031247087,0.8092469,-0.35475132,0.18806289,-0.1415783,-0.07569947,0.14818926,0.6507605,-0.0435432,-0.57430553,-0.28939062,0.19110921,0.07659029,-0.08136513],[-0.77969193,0.41833523,-0.5825853,0.06571391,-0.036265094,-0.7098911,0.27432096,-0.21149854,-0.14941117,-0.10727135,0.20307949,0.2624021,-0.30541962,0.34553188,-0.38883,-0.16372426,0.28227317,0.046450898]],"activation":"σ"},{"dense_2_W":[[-0.1928296,0.32115498,0.20930864,0.5611469,0.19011536,-0.26645315,-0.17603545],[0.166902,-0.16892958,-0.6638914,0.15825053,0.21120141,-0.748163,0.474334],[-0.1116566,-0.043712437,-0.25810665,0.7776559,0.30960482,0.045773234,0.3270671],[-0.10762828,-0.5864748,-0.28898096,0.15144639,-0.4097048,-0.24713844,0.018743742],[0.6269138,0.2670387,0.51526284,-0.38287458,-0.12963958,0.5141082,-0.16934894],[0.60643613,0.5065733,0.51206255,-0.8444096,-0.23755147,0.9865407,-0.66474754],[0.39914343,-0.31481522,-0.15519524,0.9308352,0.08094447,-0.563002,-0.39392495],[-0.62913185,0.13864003,-0.4409571,1.048762,0.6268857,-0.20228775,-0.062061056],[0.5582918,-0.37558815,0.8273307,-1.1066164,-0.3901795,0.70115936,-0.42085156],[-0.7219747,1.0324795,0.5925977,-0.7950196,-1.1894366,-0.35266805,-0.08333824],[0.17714527,0.035280515,-0.5560802,0.25969428,0.37214068,-0.70087725,-0.007387615],[0.45798004,-0.23500519,0.7236357,-0.7572892,-0.77434045,0.5295288,0.0067519485],[0.12378485,-0.26742935,-0.19959643,0.79587483,0.08676472,0.19069159,0.17077966]],"activation":"σ","dense_2_b":[[-0.023296025],[-0.062371153],[-0.08753547],[-0.012299448],[-0.12436653],[0.12464757],[0.051917683],[-0.044311624],[-0.08723197],[-0.22925796],[-0.037951283],[-0.031904783],[-0.029043172]]},{"dense_3_W":[[0.266644,-0.09708873,0.36481127,-0.3777422,0.34096837,-0.02927695,-0.01537932,-0.24403723,0.71203685,0.10868033,0.3864008,0.357262,-0.061952867],[0.21862133,0.09851822,0.21582417,0.22255906,-0.43100807,-0.68686426,0.00410916,0.4358678,-0.2271849,-0.73627913,0.66998297,0.072033614,0.08977202],[0.44470266,0.32145885,0.62044615,0.21872145,-0.17952862,-0.5809358,0.5550113,0.033751376,-0.20690925,0.011282066,0.040129244,-0.62126046,0.37573385]],"activation":"identity","dense_3_b":[[-0.061297435],[0.035920873],[0.030181145]]},{"dense_4_W":[[0.4694328,-0.89785147,-0.7038385]],"dense_4_b":[[-0.036924034]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48310x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48310x00x00x00x00x00x00'.json deleted file mode 100755 index e15c8a24d9..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48310x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.133618],[1.4129014],[0.44969133],[0.045696877],[1.4049444],[1.4081829],[1.4101628],[1.3818637],[1.3492402],[1.2996615],[1.2511544],[0.04564733],[0.04565076],[0.045647893],[0.04553961],[0.04542456],[0.045219943],[0.0448686]],"model_test_loss":0.014148019254207611,"input_size":18,"current_date_and_time":"2023-08-12_10-02-27","input_mean":[[22.846207],[-0.028825762],[0.0069386563],[-0.011931484],[-0.029900458],[-0.030026564],[-0.029956907],[-0.025415199],[-0.02073705],[-0.016202599],[-0.012826078],[-0.012012862],[-0.011981135],[-0.011950831],[-0.011894881],[-0.011909395],[-0.011980199],[-0.012003033]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.045462497],[0.14482749],[-3.1937203],[0.41232848],[-0.036116436],[-0.10669243],[3.1771445]],"dense_1_W":[[0.04209759,-0.123200886,-0.001966771,-0.27350724,-0.07637217,-0.69638944,0.49670324,-0.10970925,0.17391703,-0.020320209,-0.11798665,-0.32608816,-0.15994923,0.74159515,0.16622286,-0.16900371,-0.11755795,0.12067652],[0.12397108,-0.8622103,0.002287507,0.5233263,0.29362643,-0.90254813,0.6244419,0.09886855,-0.20115684,-0.068305194,0.09150868,-0.040079072,-0.5887415,0.03467633,0.37852713,0.04821548,0.33913377,-0.32878298],[-1.5204463,-0.30083042,0.54742867,-0.22839276,-0.2593333,0.5200578,-0.22732674,0.35200244,0.0005918363,-0.14585528,0.47478247,0.34271586,0.18018198,-0.5389027,0.31345156,0.32557848,-0.10517697,-0.24773833],[0.16338956,0.7465661,0.00091303553,-0.30629274,-0.83907,1.2726458,-0.46392232,0.28630704,0.009157783,-0.092671104,-0.027732085,0.6079292,0.34104618,-0.639812,-0.3557384,-0.16809613,0.056947865,0.15010986],[0.0016282196,-0.808354,-3.8552349,-0.28365737,0.5438757,0.06829288,-0.19340357,0.0031712118,-1.2518381,-0.3716958,1.4632245,-0.3830043,-0.08256899,0.41362843,0.4654074,0.24454728,-0.060357146,-0.29063493],[0.00881861,1.5529372,-0.004645296,0.101736404,-0.44716865,1.1123074,-0.11059584,-0.23869607,-0.19627295,-0.16191976,0.27920842,0.5280347,0.07986667,-0.2998149,-0.13689749,-0.061755475,0.26918095,-0.17861305],[1.5262027,-0.7209147,0.54510105,-0.41295,0.24966663,1.5925447,-1.7505642,0.4582838,0.21614361,-0.11827627,0.48279446,0.7191378,-0.5658482,-0.5843556,1.2161899,0.0055931257,0.16656737,-0.5068038]],"activation":"σ"},{"dense_2_W":[[-0.93619925,-1.0465239,0.51262397,0.74086666,0.21353468,0.3476233,0.32381067],[-0.51265305,-0.87474597,0.46417361,-0.24346405,-0.3276334,0.5293372,0.051842663],[0.53608036,0.56876564,-0.22863568,-0.38303185,0.27319765,0.33705932,-0.7360473],[-0.7518486,-0.65000415,0.35375157,0.28509223,-0.56357265,0.478604,0.03561653],[0.029013865,0.25404042,0.57304466,-1.2749768,0.95642287,-0.6889415,-1.2362365],[0.39669678,0.4147544,-0.33926824,-0.935757,0.07840821,0.26636747,-0.3079712],[0.596397,0.20710751,0.1445996,0.047088236,-0.58025897,0.08174204,-0.08478866],[0.6787158,0.85764533,-0.28679985,-0.9344713,0.11183712,-0.4111803,-0.7435469],[-0.032755844,-0.41277444,0.3462792,0.65885925,-0.33081263,0.115080066,-0.17707695],[-0.5118069,-1.2389166,0.28025037,0.68769765,0.15658064,0.116785616,0.18789898],[-0.1941865,-0.9085792,-0.015243897,-0.11461906,-0.61263376,-0.6787525,0.1516513],[-0.8660754,-1.2627017,1.1963525,0.4615613,-0.7016441,0.5529118,-0.5558919],[-0.25683263,0.2894195,0.38483003,-0.59003097,0.4263322,-0.7981855,-0.42868915]],"activation":"σ","dense_2_b":[[-0.26972106],[-0.23031023],[-0.12965338],[-0.041467585],[-0.15502211],[-0.23721904],[-0.07618676],[0.024510087],[-0.09441283],[-0.18249302],[-0.22564216],[-0.23934019],[-0.07737953]]},{"dense_3_W":[[0.3971231,0.28900996,0.1904874,-0.00935186,-0.193967,-0.02954578,0.06900154,-0.5145334,0.12633824,0.21880715,0.21613063,0.60171586,-0.64756685],[0.0129291145,-0.32070932,0.5608509,0.21185556,-0.22626269,-0.27636886,0.08561043,-0.31846905,-0.5734745,-0.21031462,0.1820749,0.28639615,0.4885934],[-0.12727283,0.26172706,0.64191544,-0.46281716,0.83532584,0.4892697,0.27129266,0.8000755,-0.53944695,-0.16300395,0.15426172,-0.75119865,-0.1486517]],"activation":"identity","dense_3_b":[[-0.022976112],[0.023158783],[0.0038195048]]},{"dense_4_W":[[1.077695,-0.06574526,-0.53436226]],"dense_4_b":[[-0.017774973]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48400x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48400x00x00x00x00x00x00'.json deleted file mode 100755 index c7cff36455..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020 b'8965B48400x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.644386],[1.1440065],[0.4692075],[0.044103775],[1.1367902],[1.1393884],[1.1417042],[1.1268477],[1.1062402],[1.0774581],[1.0459682],[0.04386147],[0.04393631],[0.044005807],[0.044103783],[0.04404187],[0.04392301],[0.04367208]],"model_test_loss":0.01073704194277525,"input_size":18,"current_date_and_time":"2023-08-12_10-27-46","input_mean":[[23.381014],[0.005975481],[-0.009992327],[-0.021032402],[0.008117326],[0.006850381],[0.0054110563],[0.0023832242],[0.002186634],[0.0035959708],[0.0033810092],[-0.021105358],[-0.02110145],[-0.021099575],[-0.021097427],[-0.021086434],[-0.02115564],[-0.02128101]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.834708],[-0.045707446],[-2.563987],[-0.117759325],[-0.91913813],[-0.03334596],[2.6613603]],"dense_1_W":[[0.16599746,0.7096867,-0.0038545108,-0.13340561,0.2588123,0.29712543,-0.2594707,-0.071150005,-0.07657077,-0.013201976,0.10662274,0.04428099,-0.1436738,0.16864574,-0.22712697,0.12658992,0.0954199,-0.12004688],[0.0042369105,0.18097177,-0.22014329,-0.30500078,-0.06370518,0.46832517,-0.90946174,0.6372478,0.25378084,-0.1069116,-0.37374678,0.3893671,0.45563832,-0.4595813,-0.2876199,0.33593014,-0.33627144,0.25168842],[-1.2126169,-0.16930301,-0.21450809,0.20024887,0.03201565,-1.0296049,1.4060705,-0.4294684,-0.0039082374,-0.42241377,0.012848083,0.123701885,0.14541772,-0.08624216,-0.18380383,-0.27203885,-0.19501837,0.2907863],[0.00063447293,1.2981268,4.2820415,-0.2594015,-1.2206693,-0.08402264,-0.313254,0.2832975,1.461314,0.50451976,-1.6309339,0.5598124,-0.14541756,0.23579545,-0.2860597,-0.611733,0.34472165,0.16626717],[0.14616013,-0.495636,0.0058109863,-0.01570958,0.58130336,-1.5504689,0.2670856,0.13132574,0.40939844,-0.057407007,-0.20243555,-0.2075857,-0.18856382,0.72101206,-0.06758915,-0.24377194,0.1419332,0.047459047],[-0.013590818,0.34024894,0.18479231,-0.019695252,-0.86625415,0.9378449,-0.7798978,0.22300671,0.40178698,-0.04151977,-0.13329166,0.45217785,0.09624605,0.084031366,-0.47827828,-0.55867606,-0.046922974,0.4538892],[1.2487265,-0.5044096,-0.22156143,0.51267344,-0.10274288,-0.51327384,1.1344092,-0.17422712,-0.058846287,-0.40755874,-0.003082627,-0.34271088,-0.2929998,0.434721,-0.30842355,-0.021555493,0.21910873,-0.1752489]],"activation":"σ"},{"dense_2_W":[[0.62964183,0.3170662,-0.7668863,0.4648944,-0.35633978,0.323501,0.36004624],[0.9853487,-0.27411574,0.34153345,0.1801431,-0.94035196,0.07904266,-1.1844826],[-0.16382942,-0.5559022,0.39087328,-0.6283743,0.41070727,0.020665707,0.8685],[0.34209964,0.5759347,-0.31890684,-0.2798852,0.13835523,0.6231073,-0.26864585],[-0.6228901,-0.4353858,0.24678996,-0.14232816,0.6366259,-0.22533265,0.60833997],[0.51754946,0.08759814,-0.1679395,0.5345081,-0.6778435,0.03203068,-0.94014156],[0.49474886,0.21732587,0.407077,-0.32371607,-0.2704814,-0.0010814304,0.13743709],[-0.0838043,-0.49292943,0.032049768,-0.05150428,1.0013574,-0.96868503,0.41634974],[-0.63949,-0.648591,1.0157802,-0.31856138,0.9662109,-1.015555,-0.22861005],[0.15993874,-0.013838849,-0.4022037,-0.28916073,-0.47161445,-0.6956427,-0.7160354],[-0.24090491,-0.26874304,0.749612,-0.4140518,0.6883246,-0.89394754,0.041574933],[-0.9463262,-0.55637103,1.0741757,-0.1182538,0.047610544,-1.0402383,-0.16455126],[-0.6265001,-0.59906393,0.09580579,0.026793769,0.63057166,-0.6412282,-0.3706451]],"activation":"σ","dense_2_b":[[0.07676112],[-0.111001514],[-0.008189968],[0.03080702],[-0.023322558],[-0.12537855],[0.041264],[-0.068600364],[-0.17696345],[-0.34724367],[-0.13291265],[-0.119294606],[-0.06824207]]},{"dense_3_W":[[0.30592474,0.65184015,-0.18676876,0.5202834,-0.47716483,0.49206358,0.1335472,-0.46779883,-0.45796365,-0.27737036,-0.61875904,-0.21409914,-0.4281805],[-0.22402486,0.36820185,0.5984844,-0.32377946,0.51082987,-0.5228782,-0.4425499,-0.22049034,-0.28360286,-0.63904005,0.57028985,0.27956602,0.54471344],[0.015972696,0.56076694,-0.4424602,0.50380963,0.1369866,-0.10628985,-0.03996058,0.51810396,-0.27963144,0.5446682,0.091093265,-0.067806154,0.017807629]],"activation":"identity","dense_3_b":[[0.08166017],[-0.07228911],[0.020593217]]},{"dense_4_W":[[1.2059438,-0.34201673,0.15371227]],"dense_4_b":[[0.075159274]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020.json b/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020.json deleted file mode 100755 index 8df2f4bb1d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER HYBRID 2020.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.164538],[1.4558752],[0.45833412],[0.04711418],[1.4456551],[1.4501203],[1.4533974],[1.4229606],[1.3864104],[1.3335255],[1.2820569],[0.047046598],[0.047047578],[0.047046028],[0.046939764],[0.046797764],[0.046596467],[0.04624541]],"model_test_loss":0.014431758783757687,"input_size":18,"current_date_and_time":"2023-08-12_09-04-44","input_mean":[[22.724527],[-0.0073930244],[0.0021499225],[-0.013335735],[-0.0060209357],[-0.0065084104],[-0.0070741335],[-0.004122651],[-0.0006198622],[0.002992856],[0.0050453614],[-0.013361201],[-0.013339233],[-0.013309726],[-0.013208915],[-0.013188212],[-0.0131769525],[-0.013236434]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.4987317],[-0.21502848],[-0.023930108],[-0.08293208],[-0.18136914],[-2.6931612],[1.9903412]],"dense_1_W":[[0.6072704,0.018546268,1.0117872,-0.02655404,0.12334371,0.9183143,-1.0057606,0.33296764,0.0034425545,0.30709305,-0.1837191,0.43864262,0.1951786,-1.0183357,0.08373593,0.46079198,0.069924854,-0.20370835],[0.018644223,1.3867873,3.9551542,0.15828222,-1.7119819,-0.06886215,0.15835802,0.104763426,1.5361047,0.7793233,-1.5410533,0.57826525,0.2791371,-0.091204755,-0.9631753,-0.25537375,-0.40537784,0.6930675],[0.05840197,0.83388406,-0.0011560204,-0.3091371,-0.24360721,1.7607956,-1.0322315,-0.24692948,-0.22033525,0.058811415,0.1848893,0.50187564,0.024970453,-0.10388528,-0.35247543,-0.33053055,-0.036511794,0.19697922],[0.041596312,1.2468644,0.00062399096,0.08458749,-0.64712596,0.8903513,-0.17702456,0.29386955,-0.32305542,-0.060308453,0.11958216,0.5488134,0.25830337,-0.8367097,-0.20763892,0.1274579,0.2367986,-0.21593204],[-0.16188623,-0.123164184,-0.9382007,0.13822892,-0.38314018,0.43343663,-0.5543238,0.26458925,0.39078033,-0.18539841,-0.12467638,0.29254597,0.14244753,-0.47446775,-0.09593193,0.09456061,-0.35750958,0.26552486],[-0.88318425,1.1153313,0.0017999654,0.19061683,-0.30666143,0.75104123,0.11356683,0.48195174,0.02523524,0.010765657,-0.04291398,-0.03229076,0.4961786,-0.31880328,-0.67625135,-0.14397632,0.15807933,-0.0985196],[0.5923598,0.6756624,-1.0463923,0.37445185,0.11736687,-1.0798235,0.55913264,-0.47123235,-0.54284656,0.055854443,0.17690535,-0.7807285,0.3889109,0.4822052,-0.42190412,-0.21585964,0.19765395,-0.03469817]],"activation":"σ"},{"dense_2_W":[[-0.7025875,-1.01547,-0.43722752,-0.09516741,-0.24370766,0.28927654,0.014542646],[0.2749662,-0.29885203,0.30274695,-0.10304987,-0.3782751,-0.26847735,0.025089832],[-0.54648656,0.24413349,-1.0082586,-0.23474653,-1.1860299,-1.0889997,-0.08883737],[-0.4322979,-0.7916055,0.08303449,-0.5981394,-0.08842554,-0.4015095,-0.44426244],[0.25884318,-0.48712513,-0.4562449,-0.765338,-0.3228274,-0.009145744,0.7458293],[-0.61903703,0.009864125,-0.7634911,-0.21205765,-0.7243218,-0.29422146,0.7232771],[-0.30022988,0.15801793,-0.4750129,-0.39146864,0.43409535,-0.20482707,0.21319191],[-0.09161583,0.29012272,-1.1244291,-0.7968736,-0.52818763,-0.31070143,-0.7589764],[0.41631448,-0.041808337,0.45858353,0.5034346,0.25543645,0.5356051,-0.6972568],[-0.779109,-0.23796116,-0.9607459,-0.6135155,-0.25498068,0.41323018,0.25573388],[-0.5596749,-0.21328482,-0.9854063,-0.5111223,-0.7307937,-0.06609184,-0.16158096],[0.26007235,0.24132085,0.5798595,0.6841223,0.65867245,0.061028752,0.36075428],[-0.3321862,0.12987743,0.56252885,0.2816003,-0.16890442,-0.22842854,-0.9761609]],"activation":"σ","dense_2_b":[[0.020393617],[-0.1259718],[0.15805069],[-0.23997118],[0.1390272],[0.08802155],[-0.11869106],[-0.24654494],[-0.11373044],[0.11735831],[0.30582067],[-0.15132986],[-0.27947864]]},{"dense_3_W":[[-0.41748047,-0.5452961,-0.5681742,-0.31478232,-0.43341246,-0.50046074,-0.1333813,-0.5239057,0.18791445,-0.6105861,-0.53726876,0.11316518,0.5290968],[-0.08242217,0.49892414,-0.4914419,0.32127154,-0.5822968,-0.6094572,0.18559168,0.31101432,0.7411366,0.31846002,-0.39128235,0.6802514,0.6365301],[0.6492468,0.02211246,-0.12046828,0.28079885,0.2860496,-0.10623663,0.10433247,0.3697982,-0.68328637,0.6391152,0.44678408,-0.028312663,0.45253885]],"activation":"identity","dense_3_b":[[0.078321405],[0.037635524],[-0.057794243]]},{"dense_4_W":[[0.5587847,0.7765039,-1.1255592]],"dense_4_b":[[0.048529897]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47022x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47022x00x00x00x00x00x00'.json deleted file mode 100755 index 967dcf8d1f..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47022x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.000243],[1.0529355],[0.44031963],[0.04554594],[1.0481081],[1.0505339],[1.0517689],[1.0306543],[1.0114516],[0.9864613],[0.96286005],[0.045486752],[0.04548187],[0.04546514],[0.045314565],[0.045162555],[0.04484083],[0.044451322]],"model_test_loss":0.016144780442118645,"input_size":18,"current_date_and_time":"2023-08-12_12-48-27","input_mean":[[23.703514],[0.034525022],[0.0037587206],[-0.0066846693],[0.036115173],[0.035502695],[0.035573922],[0.038456824],[0.03878846],[0.037492014],[0.035617996],[-0.0066404915],[-0.0066419644],[-0.0066401316],[-0.006694763],[-0.0067848936],[-0.006970607],[-0.0071066907]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.018687818],[0.016889395],[-2.2628572],[-2.078596],[0.22971022],[-0.1767829],[-0.5167562]],"dense_1_W":[[0.011015955,1.0643084,-0.08839964,0.61551523,0.802623,1.5406702,-1.6393329,-0.07330995,0.22098303,0.5496796,-0.07165077,0.57465875,-0.49430174,-0.72913355,-0.028702782,0.2533353,-0.15451618,-0.014682099],[-0.0044485596,0.68300956,2.34839,-0.49447054,-2.7115552,-2.5957623,-3.4036458,1.1568989,5.159137,2.5940776,-0.9615852,1.2597148,0.4663126,-0.4115597,-0.54910094,-0.018557174,-0.6093785,0.19555537],[-0.38033494,0.6095696,0.27524653,-0.24040353,0.23970546,0.72473454,-0.19985196,0.05170179,0.37927815,0.008114709,-0.30030593,0.5968865,0.072596125,-0.31858274,-0.41960534,0.26154235,-0.09866176,0.15294196],[-0.3583878,-0.7227564,-0.2559942,-0.047408156,-0.23193003,-0.7996542,0.557878,-0.10742698,-0.4394683,0.09005993,0.26495668,-0.7439191,-0.013596186,0.88895196,0.092311434,-0.022404915,-0.17483388,0.011742477],[-1.1386592,0.20961168,-0.0043176794,-0.14611427,-0.13120638,1.3944597,-1.0419998,-0.39789963,-0.08476762,-0.36311617,0.42571318,1.3092103,-0.26345864,-0.98487866,-0.0447565,-0.3767902,-0.10429795,0.14397188],[1.1815095,0.06911906,-0.0023387522,0.08115236,-0.12113374,1.487969,-1.2359906,0.11289565,-0.58799416,0.07841065,0.22937942,1.0972705,-0.07823999,-0.92822057,-0.4054966,-0.18756558,-0.33272704,0.2668549],[-0.19750582,1.2739553,7.0663867,-0.5248582,-0.4676437,-0.08646342,-0.91660845,1.0469422,1.1008883,0.3525522,-1.6761202,0.9796133,0.77493626,-0.44570097,-0.3790537,-0.24817844,-0.04224263,-0.08521787]],"activation":"σ"},{"dense_2_W":[[0.56187254,-0.42941013,0.01137766,-0.5091996,-0.021960784,-1.0853531,-0.55602425],[-0.7135164,-0.39620182,-0.35796282,-0.24564448,-0.08940037,0.018869234,0.21817489],[0.5262834,0.37286675,0.54738665,-1.4483702,0.74003285,0.36226225,-0.4840184],[0.66549075,-0.45087525,0.5316808,-0.80598843,0.5375895,0.44839606,0.19927433],[-0.05242752,-0.47517085,-0.07394551,0.23638195,0.76435024,-0.7201021,-1.2908622],[0.20445137,0.27786765,0.6353812,-1.2159988,0.7916566,-0.03361323,0.14942108],[-0.29910564,-0.13706577,-0.66971123,0.5954099,-0.5241532,0.08504403,0.31102544],[0.2186948,0.13250604,0.14607616,-0.009396174,-0.4860835,-0.08648418,-0.5939958],[-0.18379676,0.37188196,-0.5983929,0.008835486,-0.5554737,-0.39572975,-0.17633566],[0.40148303,-0.3301877,-0.32109272,0.8163982,-0.18761033,-0.55294204,-0.4394005],[-0.18555163,-0.30746877,-0.8649402,0.3212118,0.37567982,-0.35336125,-0.40009186],[0.42191646,0.2480143,0.5938211,-0.47291356,0.24606346,0.3526983,-0.31585172],[0.30375394,-0.4357636,-0.67720544,0.18926817,-0.2186749,0.19559121,-0.15258849]],"activation":"σ","dense_2_b":[[0.0456926],[0.1021674],[-0.525961],[-0.2781079],[-0.179685],[-0.9191505],[0.018642724],[0.07845247],[0.06336037],[0.21135324],[-0.09867381],[-0.25866526],[0.27727693]]},{"dense_3_W":[[0.005986166,0.5403741,-0.5950544,-0.668431,0.3410047,-0.4509835,0.41055346,0.56165504,0.47017696,0.04962426,0.30859372,-0.4631947,0.19735102],[-0.548777,-0.34207267,0.29769439,-0.07678766,-0.18337654,0.3864849,0.09935212,0.41492525,0.2651904,-0.4132142,-0.055492,0.6352499,-0.0036086126],[-0.1508172,0.13540027,-0.39238226,-0.6953886,0.57532775,0.2929234,0.51378953,0.33914775,0.5232986,-0.16648121,0.079042025,-0.44329265,0.72198534]],"activation":"identity","dense_3_b":[[0.04064909],[-0.056400906],[0.02708405]]},{"dense_4_W":[[-0.9928628,0.7695461,-0.40275335]],"dense_4_b":[[-0.04485986]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47023x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47023x00x00x00x00x00x00'.json deleted file mode 100755 index 4d3ae8cfe8..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47023x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.189096],[1.2119626],[0.49706239],[0.047317218],[1.2048372],[1.20692],[1.2089139],[1.1869353],[1.1617409],[1.127547],[1.0964477],[0.04720443],[0.04723218],[0.047246177],[0.047100883],[0.046939258],[0.046583816],[0.046134617]],"model_test_loss":0.0164700448513031,"input_size":18,"current_date_and_time":"2023-08-12_13-15-10","input_mean":[[23.779161],[-0.013822137],[-0.002065226],[-0.0027149373],[-0.010493581],[-0.012193051],[-0.012818504],[-0.012930413],[-0.010893465],[-0.005386844],[-0.0016019325],[-0.0026636221],[-0.0026759957],[-0.0026916054],[-0.0028163292],[-0.0029443589],[-0.0030217492],[-0.003099767]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.6248422],[0.4383351],[0.0049929065],[-2.9431283],[0.008178566],[-0.051198818],[-0.33704558]],"dense_1_W":[[-0.8000218,-1.0995749,-0.2871293,0.5462917,0.24798232,-1.2576014,0.1120573,0.078140825,0.078286864,0.15174086,-0.01840363,-0.52815986,-0.05432176,0.34631014,-0.20628281,-0.14995483,0.07829511,-0.042495955],[1.6193608,-0.46763715,0.28946337,-0.2223544,0.35163045,-0.606444,0.984452,0.34925696,-0.08003834,-0.30489528,-0.18959466,-0.6525449,-0.3045237,0.5406548,-0.090693735,0.6568375,0.7551066,0.56893355],[0.020400103,0.33052164,3.5161345,-0.21798564,-0.87898314,-1.127264,-1.9201058,0.13413894,2.837898,1.4812523,-0.66593146,0.45540428,-0.012385356,0.13430928,0.21109414,-0.14471997,-0.4844812,0.03366415],[-0.86977047,1.0564649,0.306292,-0.13933228,-0.31024972,1.1149535,0.1641149,-0.005766936,-0.050841313,-0.06560041,-0.086284995,0.20279922,-0.04585891,-0.20554592,0.114430346,0.14967376,-0.021810979,-0.045283116],[0.00061570096,0.45353583,-0.009236617,0.26197684,-0.15322922,0.83636606,-0.8349571,-0.17852367,0.14262004,-0.05964174,0.04870579,0.69924206,0.4330304,-0.9156969,-0.4326727,-0.65043074,0.14345872,0.07251757],[0.0015624848,0.9121691,-0.02306211,-0.17766467,0.3675618,1.406637,-0.91108245,-0.26483488,0.007428613,0.17409417,0.12758283,0.22435105,0.11867643,-0.47856376,-0.003195762,0.21000656,0.26077518,-0.29852307],[-1.1143638,0.32679862,-0.2348363,0.5724334,-0.15143955,-1.033644,0.93523884,-0.40604407,0.0011522722,0.12635851,0.2240593,-0.24549077,-0.1502993,1.0182712,-1.1520041,-0.10360738,-0.0657126,-0.8226056]],"activation":"σ"},{"dense_2_W":[[-0.35284433,-0.2574711,-0.029361492,-0.49557316,-0.11526183,-0.2827134,-0.4111898],[0.03056212,-0.4830144,0.14822236,0.27505293,0.709112,0.4124182,-0.6306692],[-0.9140814,0.17214836,0.2355942,0.6127966,0.4447363,0.56893396,-0.3780424],[-0.72159797,-0.1386788,0.28826654,0.39564595,0.7098589,0.07965858,-0.09599504],[0.7131255,0.4191417,-0.11335002,-0.81645864,-0.16484027,-0.24157974,-0.1626869],[0.11402234,0.13955061,0.12694025,-0.046629976,0.011027189,0.7676317,-0.09719566],[-0.12212158,-0.15184937,-0.10101525,0.07340927,-0.24177536,-0.5750619,-0.3229692],[0.31239644,0.5398298,-0.12011592,-0.64138055,-0.556097,-0.6323519,0.41405684],[0.42244118,0.752209,-0.5100762,-0.5812268,-0.19271265,-0.061693292,0.4749355],[0.35658112,0.4356272,-0.6723626,0.1700935,-0.6141872,-0.49651685,0.69559157],[-0.00028722011,-0.30635557,-0.19579825,-0.09017295,0.15330125,-0.39068377,0.0518424],[0.30908525,0.26968578,-0.9460024,-0.6721539,-0.05254155,-0.96726763,-0.8004719],[0.5386026,0.24466284,-0.3876961,-0.35310513,-0.5629104,-0.62708277,0.7053968]],"activation":"σ","dense_2_b":[[-0.1009566],[-0.052083995],[-0.17170173],[-0.11832341],[-0.040780384],[-0.0032875277],[-0.06165029],[0.11283898],[-0.04587376],[0.04051942],[-0.27606243],[-0.3136743],[0.00120357]]},{"dense_3_W":[[-0.12000948,-0.07712079,-0.13579264,-0.5477244,0.12987608,-0.27466065,0.18847848,0.36536223,0.095779814,0.6490736,-0.54498273,-0.25738448,0.18985388],[0.2613838,-0.74475616,-0.71508867,-0.029044528,0.45442525,-0.2592899,0.40360647,-0.08311714,0.49941358,0.5649388,0.073403694,-0.15956575,0.47439378],[-0.3364592,0.5295699,-0.4562176,0.5927123,0.025007816,0.28039455,-0.4734172,-0.50012225,-0.26987627,-0.25010377,-0.22944938,-0.15876396,0.4559477]],"activation":"identity","dense_3_b":[[-0.04299677],[-0.057208654],[0.05739145]]},{"dense_4_W":[[-0.5825432,-1.227139,0.78172004]],"dense_4_b":[[0.05413455]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47050x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47050x00x00x00x00x00x00'.json deleted file mode 100755 index 73b1d0618c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47050x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.311736],[1.1833621],[0.46748862],[0.043473817],[1.1803772],[1.1810178],[1.1803039],[1.1448357],[1.1118515],[1.0669984],[1.0288521],[0.043289315],[0.043316387],[0.043338254],[0.043359537],[0.04335068],[0.043099],[0.04268195]],"model_test_loss":0.02130388654768467,"input_size":18,"current_date_and_time":"2023-08-12_13-42-52","input_mean":[[23.338652],[0.0079169525],[0.011965741],[-0.0043622814],[0.0054793637],[0.0060081836],[0.0057728244],[0.010234134],[0.015633008],[0.018571485],[0.021591475],[-0.004419671],[-0.0044097584],[-0.0044071046],[-0.0044820793],[-0.004507606],[-0.004685093],[-0.0047487807]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.3424917],[-0.22007197],[2.7653508],[-0.08879859],[-0.51477855],[-0.545124],[2.8031893]],"dense_1_W":[[-0.0609116,0.24219239,-3.0795984,-0.10600801,1.926117,1.9883113,2.695181,-2.2749603,-4.703912,-1.4620117,1.3659627,-0.61915976,-0.5933105,0.5631315,0.53107154,0.16850716,0.5389666,-0.24403873],[-0.13675421,-0.28692976,-0.047750086,-0.07963782,-0.15478788,-1.52701,0.76644737,0.36206856,0.08041735,-0.07322048,-0.13415782,-0.81037486,-0.11634636,1.0861106,-0.058293134,0.28003043,0.11846962,-0.11565344],[0.95614064,1.0019612,0.53723675,0.06426713,0.024449164,1.2951865,-0.014162737,0.17224762,-0.29896966,0.004003529,-0.033126593,0.5333686,-0.043380257,-0.34817392,-0.0940334,-0.070693925,-0.056659807,-0.040717468],[-0.3698795,-2.043652,-0.001344297,0.2573092,-1.8309736,-1.4463769,-0.7664984,-0.48727417,-0.77685726,-0.765619,-0.8620695,-0.12925234,0.19212537,0.22146735,-0.42407393,-0.28144377,-0.39236894,0.47548348],[0.8419204,-0.5650975,0.036041167,0.65058583,1.710107,1.0682759,2.30751,4.404108,1.5041014,-0.48164627,0.92178214,-0.6536394,0.088804975,0.48443964,-0.22410193,-0.3742232,0.056062154,0.047145177],[-1.2325656,-0.30824685,-0.09048496,0.18950711,-0.4825,0.048707586,-0.18827212,-0.6238843,-0.15898828,-0.0016847495,0.20470282,0.78116095,-0.21980284,-0.42645526,-0.20192316,-0.20980175,0.06175255,0.42999753],[1.1973844,-0.61121106,-0.65272874,0.11695344,-0.415401,-0.8369048,-0.51655334,-0.46804002,0.1774671,0.034465495,0.11842057,-0.19437845,-0.21636976,0.14230467,-0.1306049,0.22070019,-0.014487319,0.1370136]],"activation":"σ"},{"dense_2_W":[[-0.09687541,0.41265634,-0.28903764,0.088248394,0.08749764,0.40536332,-0.40259215],[0.09616042,0.53485495,-0.52763003,-0.3675957,-0.4812057,0.5304369,-0.35900635],[0.47528854,0.027117088,-0.79976135,-2.041139,0.12766449,0.6291589,-1.348053],[0.007089686,0.65491384,-0.28227356,0.14037174,-0.116616175,0.4254773,0.25753963],[0.30368233,0.830298,-0.5528413,-0.41899738,0.5059065,0.70742816,-0.5321653],[-0.106924206,-0.9505898,-0.1433678,-0.7451343,0.26985407,0.19505453,-0.37276903],[-0.6210788,-0.9982259,0.2111701,0.25647947,-0.2557463,-0.050668027,0.27773225],[-0.29684657,0.39087462,-0.6303919,0.45115256,-0.24149868,-0.099998295,-0.36485362],[-0.96378434,-0.67800295,0.101591,-0.4826239,-0.7637202,0.9594377,-0.27190077],[0.8295861,-0.09165251,0.27433112,0.76305205,-0.17441471,-0.2059716,0.47888404],[0.5831719,-1.3856399,0.16508237,-0.44017437,-0.1796982,-0.51486045,-0.26369834],[-0.70064485,-1.0656925,0.99505454,-0.13768534,-1.1000327,0.32685453,0.07229443],[-0.3610345,-0.9261802,0.8907604,-1.1000993,-1.0780302,0.43730703,-0.8698188]],"activation":"σ","dense_2_b":[[0.0029676734],[-0.045690004],[0.052396797],[-0.11907807],[-0.03244056],[-0.010383539],[0.14556181],[-0.06368351],[0.117490895],[0.0279692],[0.0063737636],[0.1982034],[0.36711437]]},{"dense_3_W":[[-0.4897033,-0.08666579,0.6885498,-0.029216405,-0.5607586,0.6646527,0.6371779,-0.49990708,0.80433536,-0.6012616,0.66267055,0.3536834,0.7406547],[-0.21406044,0.1894386,-0.059286572,-0.25800148,0.36541036,-0.023487262,0.08215483,0.2643849,0.7693755,-0.3409327,-0.3719815,0.62649447,-0.1366564],[-0.54868925,-0.38931724,-0.37813,-0.21437772,0.025669921,0.5354064,-0.53577673,0.43504256,-0.14300491,-0.6100815,0.2980951,-0.44299504,-0.3803292]],"activation":"identity","dense_3_b":[[-0.0040670936],[-0.008865108],[0.0073812064]]},{"dense_4_W":[[1.2559222,0.3952422,0.23678719]],"dense_4_b":[[-0.005785818]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47060x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47060x00x00x00x00x00x00'.json deleted file mode 100755 index 066956c53e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017 b'8965B47060x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.720254],[1.4248189],[0.6346064],[0.043413434],[1.4171089],[1.4204099],[1.4220495],[1.3829275],[1.3424436],[1.2829355],[1.2256352],[0.043280665],[0.043307457],[0.043318037],[0.043207273],[0.043084644],[0.042780377],[0.04235212]],"model_test_loss":0.017869291827082634,"input_size":18,"current_date_and_time":"2023-08-12_14-12-09","input_mean":[[21.814978],[-0.044544768],[-0.0024178808],[-0.009240181],[-0.045137636],[-0.04497973],[-0.04478877],[-0.04410983],[-0.045231145],[-0.043119643],[-0.043177184],[-0.009214069],[-0.0092027215],[-0.0092002945],[-0.0092338],[-0.009313492],[-0.009387383],[-0.00947316]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.389111],[0.4858375],[-0.13127421],[-0.38854295],[-3.1610048],[-0.33462796],[-1.149649]],"dense_1_W":[[-1.602772,-0.53400826,0.37718666,0.3633788,0.33693865,0.68845004,-0.8066354,-0.59084105,0.07060837,0.27426994,0.15494016,-0.07353975,-0.25826493,-0.32263887,0.28983268,0.3546069,0.18318044,-0.42745438],[0.25555605,-0.46022877,0.010211284,0.3684016,0.29642805,-0.20792986,0.9199042,-0.0009176482,0.15137427,0.30636084,-0.16015714,-0.052834738,-0.27825084,-0.27992555,0.24953611,0.13372909,-0.36744606,0.06524456],[-0.014943542,0.0033767207,-0.01663711,-0.16835603,0.11114337,1.0834363,-0.5150133,-0.07263835,0.054830827,-0.16517083,0.22029305,0.49329266,-0.17962627,-0.29688638,0.09192479,-0.06749909,-0.072753765,0.10270321],[-0.0008402716,-1.1286653,-5.7245965,-0.021644374,1.5435878,-0.1730232,0.21411745,-0.47486955,-0.97386926,-0.5715368,0.8451933,-0.455989,-0.4467363,-0.082325645,0.7459095,0.6310687,0.36110288,-0.34151703],[-1.7693851,0.12620595,-0.3989256,-0.2882022,-0.45917684,-0.51895636,0.84001356,0.61877567,0.27147272,-0.19530535,-0.35681,-0.45012978,0.7122562,0.3551444,-0.45587432,-0.4327567,0.33414394,0.11296678],[-0.08414736,-1.0083802,-0.015756436,0.013720882,1.0453994,-1.1957791,0.71627206,-0.21035555,-0.19702181,-0.27536744,0.35988438,-0.14539826,0.1924023,-0.14444451,0.25051752,-0.033313595,0.12550475,-0.12158435],[-0.30154642,-5.557496,-0.14708285,-0.061846647,2.3995101,-0.1547433,-1.5738837,-4.107894,-5.171764,-1.1092714,-0.02171138,0.11659548,0.45198613,0.6176347,-0.48459208,-1.2427675,-0.49318025,1.0491029]],"activation":"σ"},{"dense_2_W":[[0.03774502,-0.16235852,-0.84784216,0.24940088,0.00461042,0.65833217,-0.11222489],[1.1341851,-0.064238384,1.1198534,-0.95495975,-1.2911308,-1.0256866,0.6400749],[1.062979,-1.3534148,0.47456717,-1.5896825,-0.21420188,-1.0324565,0.31096524],[0.078438394,-0.271086,0.58087903,-0.26364973,0.10504239,-0.92563856,-0.25989658],[0.24416082,-0.7104936,0.24994028,-1.219746,0.37427732,-0.9982437,-0.0085131265],[-0.09752925,0.21119414,-1.1002113,-0.13776001,0.37355924,0.17910865,0.53129876],[0.2012527,-0.11168886,-0.8083448,0.059142426,0.2023561,0.5704213,0.12255705],[0.64825,-0.12111593,-0.76845324,-0.24870408,0.4248867,1.1680412,-0.2043484],[1.7244234,-1.3934715,-0.04146303,-0.17682545,1.7285235,-1.6673733,-3.813261],[-0.48733664,-0.6287612,1.05426,0.05775865,-0.87263334,-1.0111203,0.60572374],[-0.28019178,0.5071182,-0.466659,0.078289345,0.31104136,0.71050084,-0.16471304],[0.30341744,0.039579187,1.2398592,0.29671758,-0.5292248,-1.2144855,-0.31690553],[-0.040978797,-0.28604105,0.5629664,-0.15134554,-0.59253997,-0.5422128,0.19325934]],"activation":"σ","dense_2_b":[[-0.07329691],[-0.0073756496],[0.11507728],[-0.0200944],[-0.35160002],[-0.13647649],[-0.11702968],[0.07018993],[-0.4881218],[-0.11002543],[-0.046954576],[0.07282092],[-0.06980713]]},{"dense_3_W":[[0.3841397,0.43480623,0.3392544,0.11891049,0.19847225,0.45567343,0.56124204,0.73655707,-0.103296585,-0.12169428,0.0068540676,-0.71867234,-0.40767854],[-0.45614606,0.21017289,0.55516654,0.61873233,0.33714756,-0.4300137,-0.45999125,-0.08619196,0.9222072,0.008902227,-0.15612483,0.7118131,-0.082317345],[-0.042307917,0.6266083,0.664274,0.6469083,0.16917458,-0.51057035,-0.20145637,-0.67773443,0.61834735,0.5064825,-0.2500228,-0.056062642,0.3220822]],"activation":"identity","dense_3_b":[[0.016107948],[-0.113635235],[-0.055587772]]},{"dense_4_W":[[-0.3492811,0.56186444,1.1551155]],"dense_4_b":[[-0.04331681]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42082x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42082x00x00x00x00x00x00'.json deleted file mode 100755 index fa23d9871e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42082x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.019431],[0.9383312],[0.43760064],[0.04085473],[0.92240274],[0.9266218],[0.9308925],[0.9144991],[0.8993299],[0.87902194],[0.856193],[0.04076221],[0.04078495],[0.04079549],[0.040720142],[0.040604606],[0.040340398],[0.04001449]],"model_test_loss":0.015206318348646164,"input_size":18,"current_date_and_time":"2023-08-12_16-07-29","input_mean":[[25.50595],[-0.011863799],[-0.0006739514],[-0.01594329],[-0.012065965],[-0.012642977],[-0.012979119],[-0.01383788],[-0.012668227],[-0.014262671],[-0.016552003],[-0.015838692],[-0.015853724],[-0.015880592],[-0.015935425],[-0.015941922],[-0.015968155],[-0.016021552]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.036452126],[0.08559556],[0.2897148],[0.075330995],[-0.38187677],[1.4539754],[-1.2161264]],"dense_1_W":[[-0.0060098697,-0.39788464,-0.0083788065,0.18333316,0.278688,-0.92364454,0.88050914,-0.16357976,-0.083575465,-0.16548778,0.17388147,-0.64590514,-0.2367544,0.16991502,0.39137343,0.3947005,-0.15660408,-0.03307207],[2.8630645,-1.2588997,-0.0027301412,0.24774393,-0.2915709,0.7063696,-0.41898602,0.093648784,0.3480123,0.08518327,-0.19690122,0.02904587,0.4258792,-0.48439965,-0.58783513,-0.51380473,-0.11631057,0.456209],[-0.017119301,-0.7335742,0.0014175244,0.5969601,0.050444994,-0.6665325,0.5107775,0.111380346,-0.09259335,-0.026180675,-0.011466796,-0.4973461,0.1700098,0.035120707,-0.12647136,-0.0991956,0.044152405,-0.060947783],[0.004678411,1.2740623,3.7182605,0.107325286,-1.2989601,-0.3152337,-1.0639912,-0.13160844,2.1075041,1.0793704,-1.4939084,1.1409113,0.07448943,-0.5013081,-0.29907212,-0.39650646,-0.21130306,-0.116951525],[2.8458567,0.54284513,0.0016173293,-0.17757091,0.05277462,-0.094486594,0.62712353,-0.31395078,0.1025354,-0.12772946,0.13789791,-0.20587224,0.3055044,-0.119795896,0.5939448,0.4397611,0.06556392,-0.37161782],[0.4724819,0.80122966,-0.00018380646,-0.039874755,-0.3928932,1.8747684,-1.233508,0.09610313,-0.13470712,-0.06360237,0.15746103,0.67920583,-0.096370995,-0.8378776,0.014750212,0.28160796,-0.1478646,0.080034226],[-0.47802755,0.48921135,-0.0002520188,-0.037732497,0.10487879,0.92998505,-0.55178314,0.10634122,-0.18135986,-0.10310874,0.21691601,0.4927082,-0.095634714,-0.4269393,-0.3520725,0.43727353,-0.1824048,0.10521066]],"activation":"σ"},{"dense_2_W":[[-0.7678551,-0.044020087,-0.9463613,0.1381405,-0.4766844,0.17481054,0.865753],[0.36592254,-0.46206722,0.4263325,-0.5770286,-0.38127115,-0.35710543,-0.46009374],[-0.77888083,0.19055568,-0.7574013,-0.24226372,0.006470128,0.7841768,0.6951729],[0.4839658,0.49723354,-0.119507566,-0.37833682,-0.2862369,0.13223429,-0.08261849],[0.1550176,-0.13229156,0.23890848,0.28497326,-0.06232947,-0.5918447,-0.87441015],[0.38908252,-0.46098205,0.042430878,0.0006829582,0.25034666,-1.0715038,-0.5407985],[-0.62666726,0.47684154,-0.19868156,0.43383852,-0.49297318,0.9425333,0.27851704],[-0.18181121,0.5257746,-0.7636084,0.6897081,-0.76064235,0.20353147,0.13215753],[0.76410335,0.19123517,0.21125565,-0.22053698,0.16143271,-0.004425321,-0.2898052],[0.6294419,0.17306042,0.1091528,-0.00499673,-0.28395087,-0.97709465,-0.25536087],[-0.28397334,-0.055312153,0.44325092,-0.39098385,-0.20454785,-0.043942228,-0.51369905],[-0.4919128,-0.10269968,-0.6502031,0.4973944,-0.42260522,0.057200216,0.23966748],[-0.5128312,0.38837132,-0.107127376,0.24325761,0.16999815,0.28076303,0.35485357]],"activation":"σ","dense_2_b":[[-0.02832953],[0.045545593],[0.037394777],[-0.047663357],[0.037933607],[0.098250054],[-0.06336312],[-0.08578499],[-0.00794813],[-0.05136867],[-0.0020242317],[-0.09399862],[-0.1000513]]},{"dense_3_W":[[-0.48297986,0.3544177,-0.45382679,-0.06326301,0.5731008,0.033288028,-0.3915376,-0.42120582,0.25898603,-0.29080692,-0.17612633,0.12559004,-0.19767617],[-0.6037485,0.5368198,-0.3116054,0.16574962,0.33300138,0.70383537,-0.4044081,-0.5238778,0.40293556,0.65038425,0.26341242,-0.5921214,0.081331424],[-0.3002974,-0.47011936,0.46762595,0.45630494,-0.06353013,-0.33025408,-0.35250518,0.18968482,-0.20597102,-0.1440317,0.03978579,0.48477307,0.10114584]],"activation":"identity","dense_3_b":[[0.06856954],[0.03152135],[-0.011259861]]},{"dense_4_W":[[-0.6018683,-1.0063373,0.005766461]],"dense_4_b":[[-0.035384744]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42083x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42083x00x00x00x00x00x00'.json deleted file mode 100755 index c04c4bf7ba..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017 b'8965B42083x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.785183],[1.3424761],[0.5159871],[0.047890432],[1.3260951],[1.331146],[1.3365234],[1.3069957],[1.2819953],[1.2447248],[1.2092956],[0.04772719],[0.04774223],[0.047755223],[0.047561523],[0.04740499],[0.047128234],[0.04665515]],"model_test_loss":0.01631096750497818,"input_size":18,"current_date_and_time":"2023-08-12_16-36-05","input_mean":[[24.84536],[-0.048694376],[0.0017105383],[-0.0076607447],[-0.043704547],[-0.044807203],[-0.046089165],[-0.04298986],[-0.042797346],[-0.040657774],[-0.038248837],[-0.007561775],[-0.0075660897],[-0.0075722965],[-0.0076475735],[-0.007697426],[-0.0077724564],[-0.0077436664]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.280903],[-1.7886032],[-4.637047],[-0.08578383],[0.010013872],[4.6856623],[-0.22121063]],"dense_1_W":[[-0.09450893,-0.6459062,0.060911775,-0.3847882,0.7519606,-1.8593575,0.8616294,0.053076338,-0.209784,-0.07385902,0.00047539294,-0.4523988,0.2974266,0.38510123,0.259752,0.08684495,-0.02447588,-0.0733537],[-0.6774607,1.2661867,-0.10200818,0.65671134,-0.047138035,0.6458983,-0.24165322,0.062084105,0.14131553,0.28091753,-0.06481851,0.2215787,-0.13829407,-0.5720354,-0.24476062,-0.09048865,0.05114956,0.00428825],[-1.9029608,0.34790626,0.2843667,-0.37467235,0.09965191,0.57280195,-0.17685397,-0.11966289,0.2557388,0.055247348,-0.2157288,-0.08949254,0.4247985,-0.16542377,0.18466538,0.19807269,-0.23189463,0.09547625],[-0.00062151457,0.1738365,0.17885163,-0.57136464,0.012507409,0.7827646,-0.87514424,0.27497044,0.32263565,-0.13115652,-0.28708053,0.9652118,0.20607184,-0.5144796,-0.47407618,-0.042873062,0.12893395,0.18263417],[0.025652306,-2.0052488,-6.667998,0.4208965,1.2458491,0.3907362,1.0876682,-0.3848656,-1.4246505,-0.61824685,1.1011258,-1.3024,-0.37421313,0.12721808,0.6561884,0.37722364,0.08510617,0.3396205],[1.99233,0.6377857,0.28082734,-0.385711,-0.23865217,0.99780643,-0.48828554,0.08000757,0.029273741,-0.082829274,-0.1007471,0.2732823,0.0831288,-0.6843401,0.6745747,0.19553038,0.15868916,-0.2637087],[-0.035898842,-0.044465996,0.013378123,0.08511469,0.28486708,1.4638215,-1.2811527,-0.0017351665,-0.13274787,0.10752207,0.10370681,0.5822642,-0.12452679,-0.58151734,0.121833816,-0.2511263,-0.25619733,0.2831056]],"activation":"σ"},{"dense_2_W":[[-0.8841406,0.4347669,0.84688157,-0.0004789553,-0.5473451,-0.39614245,0.6071275],[-0.59437585,0.033965513,0.24382767,0.5086613,-0.5668177,0.4027159,0.6990393],[0.27216327,0.11812625,-0.6145046,-0.052390628,-0.39457545,-0.293586,-0.3356249],[-0.66689086,-0.19540851,-0.3679948,-0.36721542,-0.4817769,-0.4075158,-0.67281103],[-2.0079339,-0.15370838,0.8236128,0.6912437,0.29243928,0.94582,0.35805795],[0.6160914,-0.4700829,-0.29550225,-0.45972148,-0.2371927,-0.22895168,-0.22462685],[0.21214539,-0.38577923,-0.15344645,-0.3005762,0.33333546,-0.36551368,-0.67323405],[0.26780415,-0.6526573,-0.26887926,-0.39421728,-0.63939315,-0.06335249,-0.06702983],[-0.64520854,-0.13833176,0.710947,0.49081513,-0.67323875,0.88580966,0.07329091],[0.70333093,0.27374974,-0.185739,-0.64055556,0.6837862,-0.8216412,-0.7543152],[-0.08852291,-0.24456227,0.64587975,-0.25254932,-0.8361469,-0.0998585,0.41330463],[0.76102114,-0.52449924,-0.39964664,-0.28608727,-0.010932956,0.20352012,-0.34879187],[-0.5587552,-0.061310817,0.3489882,0.6867392,-0.19598259,0.6264299,0.19196412]],"activation":"σ","dense_2_b":[[-0.3371589],[-0.34260237],[0.0060174274],[-0.14280829],[-0.79392904],[0.1485932],[0.10975139],[-0.21955685],[-0.25368217],[0.059160925],[-0.105888784],[0.061584476],[-0.27724692]]},{"dense_3_W":[[0.599121,-0.09533889,0.046242982,-0.34005862,0.9232934,-0.63216597,-0.14118026,-0.520665,0.07688401,-0.7621056,0.41081268,-0.507315,0.26893604],[-0.13292964,-0.5938322,-0.14970674,-0.35914317,-0.34032637,0.4124289,0.4949658,-0.009953369,-0.6471148,0.6008697,0.5047356,0.4261539,-0.49192414],[-0.40530923,-0.49001616,0.48234347,0.23525164,0.13179244,0.6979752,0.19944161,-0.3692451,-0.49022684,0.55492526,0.17020899,-0.2596992,-0.27337795]],"activation":"identity","dense_3_b":[[-0.018591681],[0.05460255],[0.024361271]]},{"dense_4_W":[[0.7731739,-0.2942781,-0.54992497]],"dense_4_b":[[-0.021991715]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42170x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42170x00x00x00x00x00x00'.json deleted file mode 100755 index c44df15868..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42170x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.6815405],[1.3625606],[0.58612674],[0.04494688],[1.3312421],[1.3441323],[1.3557953],[1.3301966],[1.3021425],[1.2688354],[1.2291747],[0.044845853],[0.044869147],[0.044881903],[0.044806324],[0.04471491],[0.044416413],[0.04393822]],"model_test_loss":0.010017327032983303,"input_size":18,"current_date_and_time":"2023-08-12_17-39-46","input_mean":[[22.628992],[-0.11303276],[0.007194183],[-0.0077724075],[-0.11107788],[-0.112366706],[-0.11259246],[-0.11006202],[-0.10841513],[-0.104063615],[-0.09847846],[-0.0077845864],[-0.0077784657],[-0.0077716475],[-0.007819506],[-0.007886005],[-0.0080318935],[-0.0081485715]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.21272992],[-0.40113866],[-0.046252824],[-1.1976674],[-1.8280349],[0.43455112],[0.41996923]],"dense_1_W":[[-0.014234041,-0.78265864,-0.13875955,0.18335098,0.23734437,-0.50521135,0.36379108,-0.4259525,0.4898528,0.0040126243,0.019784093,-0.032719463,-0.4327173,-0.12524551,0.7217114,0.05992928,0.002012295,-0.20088603],[-0.036329545,-0.9737573,-5.137863,0.083788216,-0.005417048,-0.17019805,-0.02595917,0.034362078,-0.2063752,0.23753147,0.70431274,-0.3613305,0.05551018,0.15823703,0.08872215,0.075007804,0.04234053,-0.056786302],[0.00834581,-0.96139866,0.014483826,0.055574536,0.22303146,-1.4104741,0.92028916,0.087765716,-0.16381508,0.3775856,-0.3001809,0.12152302,-0.42909965,0.40768436,0.0117414165,-0.14114279,-0.15148588,0.26370925],[-0.52212185,-0.03799507,0.24594627,-0.28721508,-0.13069189,0.75029343,-0.48417374,0.043601163,0.30521616,0.23167257,0.03514275,0.32121775,0.11313678,-0.6157623,0.16969404,0.1570377,-0.20692776,0.15328379],[-0.72681564,-0.06951357,-0.28516898,-0.08874456,0.046744134,-1.0358999,1.0505315,0.013021108,-0.5818019,-0.11940496,-0.08663402,-0.30453667,0.6163768,0.28448704,-0.41274244,0.1396545,0.027995694,-0.04543083],[1.1373413,-0.22728406,0.34642276,-0.19258007,0.7746351,-0.67045534,0.95286924,-0.21672118,0.0045977663,-0.18956426,0.669332,0.022881322,-0.15852845,-0.11712322,0.21890385,-0.047339663,-0.076035015,0.09771824],[1.158495,0.4386377,-0.3719728,-0.2144668,-0.28061992,0.37479827,-1.125051,0.20529382,-0.20885709,-0.18522696,-0.35365984,0.9139095,0.5455004,-0.16538139,-0.90117735,-0.37809762,0.024544928,0.43491235]],"activation":"σ"},{"dense_2_W":[[0.9442889,0.06396063,0.1758221,-0.9002739,0.51660156,0.6283171,-0.15372173],[-0.21146928,-0.46287906,-0.3174703,0.52997434,-0.60623443,0.4278871,0.5900774],[0.36982772,-0.58558965,1.3331947,-0.12588388,0.73645073,0.71320856,-0.82657343],[0.9362422,0.39615652,0.15127127,-0.60997945,0.20599456,0.57852656,-0.34932035],[-0.051511385,-1.3649589,-0.30547243,0.5103264,0.15643549,-0.6987231,-0.78192246],[-1.0683442,0.5136093,-0.5176573,0.054374628,-0.79540557,0.30752757,-0.2061963],[-0.09987685,-0.041346654,-0.9594419,0.56500435,-0.41152915,-0.21413708,0.30724752],[0.24056341,0.9189844,1.2736111,-0.57043445,-0.6264625,1.476869,-0.63796276],[-0.39368296,-0.5534738,-0.6872756,-0.3378118,0.019038709,-0.16970441,-0.6788282],[-0.43239704,0.4175175,-1.1101261,0.14615986,-0.51680034,-0.4460474,0.18916978],[0.34036997,-1.2931368,0.24365155,0.36805943,-0.8831002,-0.78154045,-0.9917771],[-0.32418334,-0.21353374,-0.8684678,0.71919113,-0.3519593,0.29612234,-0.24847104],[-0.6143994,0.334264,-0.738587,0.38311487,-0.8502191,0.24822249,0.52923447]],"activation":"σ","dense_2_b":[[-0.046749797],[0.15821725],[-0.14121938],[-0.00466868],[-0.21171582],[-0.12640443],[-0.01650508],[0.043904293],[-0.39722887],[-0.041803863],[-0.17979127],[0.04611048],[-0.08694865]]},{"dense_3_W":[[0.47707623,-0.55884546,0.3642584,0.61173815,-0.45111135,-0.58238584,-0.6464996,0.51249677,0.17997093,-0.21995978,-0.25227636,-0.19393432,-0.58519727],[0.41195044,-0.34169996,0.24929023,0.4966983,0.04403884,0.22156799,-0.3648181,-0.08629075,-0.32962176,-0.35790387,-0.23305754,-0.5900693,-0.55587316],[0.16219983,-0.60253245,-0.13929227,0.70285386,-0.39211234,0.26089627,-0.09964737,0.33340716,0.12721112,0.27053747,-0.23665811,-0.37967107,-0.61005354]],"activation":"identity","dense_3_b":[[0.047260348],[0.057699345],[0.0503478]]},{"dense_4_W":[[-1.0821502,-0.70280385,-0.16161306]],"dense_4_b":[[-0.045549482]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42171x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42171x00x00x00x00x00x00'.json deleted file mode 100755 index e36c7414c1..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42171x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.850636],[1.0534494],[0.559162],[0.039194528],[1.0216674],[1.0324214],[1.0434673],[1.0372584],[1.0196428],[1.0042849],[0.98527515],[0.039155982],[0.039141923],[0.03912828],[0.03902883],[0.03896556],[0.03880961],[0.03858737]],"model_test_loss":0.007366378325968981,"input_size":18,"current_date_and_time":"2023-08-12_18-05-25","input_mean":[[22.558586],[0.012600959],[-0.0025238749],[-0.0026826798],[0.012323804],[0.012055752],[0.012161658],[0.01208182],[0.013478406],[0.012696328],[0.0117868],[-0.0026575418],[-0.0026759468],[-0.0026921802],[-0.0026960133],[-0.0027045996],[-0.0027334057],[-0.0027859134]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[4.3723984],[-0.15515873],[0.11519163],[0.06005554],[3.4827287],[0.42637882],[-0.33662567]],"dense_1_W":[[1.635911,-0.8581116,0.60294753,0.22644173,0.56974345,0.537524,-0.28151554,0.49941906,0.39198443,-0.07235275,0.006073699,0.14474358,-0.32794192,0.13542445,-0.119024836,-0.14169936,0.3387417,-0.20942728],[-0.346328,-0.5516171,0.080080934,0.10132348,0.4069819,-1.2606146,0.53356946,-0.32096785,0.14152372,-0.19885544,-0.006135965,-0.4611887,0.13272883,0.46906894,0.044298,-0.22844265,-0.070147365,0.20264639],[-0.0017895487,0.4250715,3.6650927,0.09883716,-0.20037115,-0.10519589,-0.31081927,0.33351684,0.6235205,-0.24577214,-0.35088176,0.16477962,0.08359709,-0.12857589,-0.35176766,0.08673794,0.0882971,-0.0059149545],[-0.11156434,-0.07133895,-0.11842378,-0.2705628,0.3160349,-1.201357,0.64614654,-0.29452515,-0.03474319,0.040595938,0.13474983,-0.34016025,0.29270774,0.2156598,0.2662016,-0.095750175,0.18576562,-0.1266449],[1.566436,0.40248048,-0.5471031,-0.2949783,-0.33196628,-0.70656186,0.41840243,-0.17929772,-0.5059166,0.11792245,-0.014220853,0.08556844,-0.29646376,0.3219811,0.003027516,0.2374258,-0.16363016,0.069542915],[1.1214007,0.76452684,-0.106327794,0.3591528,0.45266876,-1.0236844,0.8478621,0.6426136,-0.08401936,0.3613498,-0.2025572,0.16258357,-0.3565566,-0.0661512,-0.29554963,0.25371164,-0.3117673,-0.017764365],[0.15459706,-0.6427235,-0.107100666,0.15153684,0.6515941,-1.4472166,0.28652865,0.64169884,-0.013493055,0.084728494,-0.08627843,-0.32101175,-0.511683,0.23642686,0.5705781,0.32341844,0.04121637,-0.35112992]],"activation":"σ"},{"dense_2_W":[[-0.7762452,-0.849805,-0.46875656,-0.74493283,0.18020831,-0.4340312,0.25214154],[-0.29184672,-0.7365605,-0.595678,-0.13487294,-0.027134769,-0.20032321,-0.112272106],[0.58472466,-0.82953453,-0.005004089,-0.5499627,0.17766191,-0.20011434,-0.5746712],[0.18799576,-0.08261969,-0.26112568,-0.27001104,-0.38785893,0.10126745,-0.7606747],[0.44626936,0.12008678,0.2681783,-0.8564858,0.13984889,0.1533924,-0.8285644],[0.034566738,0.8191327,-0.3085401,0.77344036,-0.120254815,0.10792034,0.12895963],[-0.74384415,0.62587434,-0.0201533,0.43589312,-0.37061056,0.17112038,0.5242522],[0.2502627,-1.4431168,0.52936316,0.5863533,-1.8113189,-0.40397888,-0.21871096],[-0.6663258,0.44417387,-0.7050019,0.6507446,-0.296155,-0.55173874,-0.3932162],[-0.3191022,-0.4508303,-0.6623701,-1.0217099,-0.26747382,-0.14080943,0.05274293],[0.7867121,-0.5575085,0.38432392,0.3111023,-2.326249,-1.2271587,-0.10263035],[-0.01625549,0.5269726,-0.6120971,0.53062654,0.41914165,0.58355737,0.03725023],[-0.14983092,-0.43453297,0.32586545,0.15301059,-0.298674,-0.38269258,-0.12950632]],"activation":"σ","dense_2_b":[[-0.2599826],[-0.23439017],[0.092643164],[0.010998941],[0.09755141],[-0.10229962],[-0.06416034],[0.17825136],[-0.17380705],[-0.22213228],[-0.01849935],[-0.037762668],[-0.034081236]]},{"dense_3_W":[[0.24201153,0.27176222,0.48346063,0.45460057,0.5518781,0.11765685,-0.45951,0.040261418,-0.32136354,0.42783323,0.2824862,-0.4817042,-0.3478935],[0.25385153,0.13409254,-0.61687577,-0.41602758,-0.31623435,0.6585921,0.4292418,-0.48805797,0.1712523,0.39033636,-0.45903277,0.52522135,-0.5536476],[-0.42142174,0.49712908,0.0066777696,0.19092213,-0.19024393,-0.51191115,-0.51730525,-0.145093,-0.37869886,-0.6067165,0.27452636,0.5235049,0.5219291]],"activation":"identity","dense_3_b":[[-0.0019366292],[-0.004374928],[0.023441652]]},{"dense_4_W":[[1.1235595,-1.012536,-0.048990816]],"dense_4_b":[[0.00054319843]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42180x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42180x00x00x00x00x00x00'.json deleted file mode 100755 index f6e6875fb6..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42180x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.5956964],[0.71566606],[0.40817738],[0.030724205],[0.697758],[0.7050867],[0.7110168],[0.7090755],[0.704616],[0.7050678],[0.7017272],[0.03057917],[0.030627273],[0.030674666],[0.030662438],[0.030695168],[0.030730452],[0.030547515]],"model_test_loss":0.005593742243945599,"input_size":18,"current_date_and_time":"2023-08-12_18-31-36","input_mean":[[18.236588],[0.10607195],[-0.03237979],[0.01414653],[0.10869373],[0.10751717],[0.10631519],[0.095033936],[0.09223452],[0.08335266],[0.075875334],[0.014149798],[0.014185712],[0.014213116],[0.014326014],[0.014364046],[0.014352649],[0.014447873]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.21198542],[-2.6553576],[0.20141259],[0.95158356],[-0.5720143],[0.39397573],[-0.4670486]],"dense_1_W":[[-0.00029343241,-0.49663246,0.017366314,-0.12524623,0.020472532,-0.89937484,0.38001934,0.084407,0.0400682,-0.055563126,-0.091518156,-0.057863355,0.076088704,-0.047266904,0.11677408,-0.11511501,0.08395411,0.07032127],[-1.1604841,0.50435513,0.10866094,-0.38009703,-0.067992724,0.8220403,-1.8998632,0.6885379,0.45261034,0.09571614,-0.39597392,-0.3781081,0.03911253,0.39478612,0.39906728,0.059939872,0.06685323,-0.2039767],[0.86580884,-0.6447551,0.06702498,0.3656542,0.49015638,-1.1621298,0.70610285,0.38969237,0.4859566,0.36371088,-0.5152764,-0.43576756,-0.3097063,0.059733965,0.5456647,0.20413095,-0.28141046,-0.13499509],[0.9506561,0.33130687,0.055115584,-0.35157964,0.1601246,0.5376464,-0.7747868,-0.28408384,0.09547507,-0.23935354,0.24678634,0.25146312,0.43105263,0.010345131,-0.64360464,-0.1637928,0.4655862,-0.011340331],[0.011468432,1.1100329,6.454579,-0.09630004,-0.09938363,-0.035011847,-0.51070076,0.32011735,0.28890565,-0.0070284377,-0.8069142,0.36875013,-0.10292811,0.04136438,-0.4851647,0.10500297,0.22695696,-0.022597108],[0.55722225,0.2913517,0.06907888,-0.1502978,-0.5804214,1.1116054,-0.7745691,0.1985203,-0.11460045,0.14750798,-0.1172053,-0.00924517,0.25824112,-0.13810264,0.19143151,-0.018714879,-0.36252472,0.21987407],[7.108331e-5,-0.16992536,0.5472812,-0.37839067,0.18227997,1.005237,-0.9246754,0.05019804,0.19119476,0.20836721,-0.09654861,0.2401787,-0.40744683,-0.31037423,0.24721394,0.035022534,-0.0010219115,-0.37515312]],"activation":"σ"},{"dense_2_W":[[0.031580374,0.32096317,0.08259337,0.48913407,-0.24779709,0.47663438,-0.27535772],[-0.7346924,-0.08216103,0.05271296,-0.2585462,-0.16613883,0.035694335,0.6171577],[0.37460434,0.7498522,-1.41457,-1.657875,-1.2513721,-1.2112695,0.19442175],[-0.43960452,0.89257705,-0.25445974,0.07596238,-0.4224754,0.4412636,0.714036],[-0.21586035,-1.074201,0.49453756,-0.54887825,0.26405144,-0.68578094,-0.7791566],[-0.38307914,0.5247953,-0.21214375,0.52114254,0.33317557,0.21650434,-0.05312382],[0.46901834,-0.32129788,0.8633818,-0.29700297,-0.2139187,-0.39682165,-0.5993696],[1.3140488,-0.8290484,1.0804474,0.47383633,-0.5198381,-0.58393943,0.035804532],[-0.22552004,0.030722179,-0.70003814,0.339238,-0.08206504,-0.425623,-0.1990634],[0.71316224,-0.49133265,0.12954167,-0.7012649,-0.14375544,-0.21532835,-0.18687665],[0.99007577,-1.001546,0.5625099,-0.7423299,0.2236182,-0.14007774,-0.33882037],[-0.5948786,0.55410933,-0.36279666,0.11258444,0.5546571,-0.18480037,-0.37986085],[-0.9709514,-0.048795592,-0.0681278,0.24821533,0.3230478,0.041420642,0.60907954]],"activation":"σ","dense_2_b":[[-0.08150623],[-0.09351969],[0.036499698],[-0.12114925],[0.1371385],[-0.17559104],[0.16320653],[0.39418298],[-0.25063452],[0.045626037],[0.14293382],[-0.19067796],[-0.14629959]]},{"dense_3_W":[[0.1686224,0.077352226,-0.7372458,0.54665744,-0.39950836,0.30807123,-0.34158686,-0.50262797,0.31327793,-0.1562205,-0.21310961,0.46808118,0.6072344],[-0.38100314,-0.32793987,-0.36607596,0.250266,-0.46443465,-0.37167656,0.50372356,0.51983595,-0.038650624,0.008295879,0.07703269,0.04023035,-0.12850939],[0.27967122,0.4289127,-0.5830814,0.40497577,-0.31304854,0.30774248,-0.46728247,-0.48856315,-0.5128953,-0.46290538,-0.5038767,0.021850327,0.48637435]],"activation":"identity","dense_3_b":[[-0.030914357],[0.019430986],[0.018790174]]},{"dense_4_W":[[1.097547,-0.026450653,0.49955416]],"dense_4_b":[[-0.025014628]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42181x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42181x00x00x00x00x00x00'.json deleted file mode 100755 index 2570b49139..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'8965B42181x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.209153],[0.56191576],[0.30280617],[0.029290121],[0.56198466],[0.5629255],[0.5632454],[0.5529423],[0.5457737],[0.5399884],[0.5333994],[0.029308232],[0.029312193],[0.029313201],[0.029210748],[0.029177375],[0.02916549],[0.029083245]],"model_test_loss":0.0059767006896436214,"input_size":18,"current_date_and_time":"2023-08-12_18-56-01","input_mean":[[21.154913],[0.010469119],[0.00451821],[0.020266687],[0.009149304],[0.0099420305],[0.010431521],[0.011106589],[0.013026866],[0.015419768],[0.018629367],[0.020197067],[0.020221224],[0.020262599],[0.020369908],[0.020377211],[0.02038677],[0.020427668]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.032562368],[0.2667309],[-3.3975918],[-0.16405424],[3.4655445],[-7.2675724],[-1.1106223]],"dense_1_W":[[0.2530883,0.53237253,0.022144921,-0.20935972,-0.5053756,1.1278487,-0.7458744,-0.03808766,-0.08444307,0.12516658,-0.025194744,0.5732315,-0.14615831,-0.35127425,-0.15609278,-0.081573084,0.2889299,-0.056264035],[0.34920308,0.17837015,-0.018961329,0.22636858,0.41322023,-1.1747947,0.8681209,-0.53292376,-0.44061154,0.23169354,0.09196306,-0.4216225,-0.040040225,-0.028847596,0.5770588,-0.04013367,0.15739974,-0.29588875],[-1.2440773,2.9741986,-0.015545401,0.6699104,0.10026246,2.3330846,2.2823873,-0.6999431,-3.0649312,0.6264743,1.9608381,0.023817599,-0.6748272,0.24278682,-0.4272999,0.48700577,-0.053938422,-0.14937739],[0.12704581,-0.74948984,-5.975789,-0.3972795,0.97803533,-0.7561826,0.34060618,-1.0813448,-0.4782963,0.5196659,0.56873465,-0.14966846,-0.20922862,0.39868122,-0.17166515,-0.09302081,0.5862183,0.30957884],[1.4973711,-1.017241,0.020719383,-0.7863886,0.08703435,0.023158638,0.9363649,0.34963033,0.030911481,0.08855366,-0.034877688,0.09213344,-0.2908485,0.6495234,0.08364163,0.039586175,0.41629386,-0.2841797],[-2.6902182,-1.454271,0.010997178,-0.28280547,0.757442,-0.34354633,1.3582447,-0.3404384,-0.058033567,0.22861616,0.13654716,-0.35976127,0.3847413,0.6788782,-0.13538547,-0.715732,0.10295989,0.2687211],[0.7631619,-3.5063555,-0.0073654596,-0.5252896,-2.02067,-3.7005508,-1.8967742,-0.3488098,-0.4290062,-1.0894184,-0.8274565,0.20361504,-0.06869336,-0.00241295,0.15396996,0.13525395,0.19794835,-0.16415168]],"activation":"σ"},{"dense_2_W":[[-0.48136654,-0.9834331,0.32757175,-1.0854254,-1.5122548,0.03486615,-0.36054364],[-0.54480904,0.4169905,-0.61831635,0.10131936,0.5399218,0.059965108,0.30036604],[-1.655585,0.38479826,1.2823216,0.40274566,-0.2841753,2.3214834,-0.7712572],[0.61412394,-0.25269333,0.42487213,0.27490515,-0.10738923,-0.2351683,-0.027205668],[0.016566647,-0.8527608,-1.2557126,-0.6651972,-0.2184166,-1.6755227,0.7370958],[0.87999916,-0.8127039,0.2320283,0.12997639,-0.026233492,-0.923599,0.28825673],[1.0059335,3.5542972,-2.7622373,0.606758,2.7553868,-3.272648,3.1044261],[1.2445208,-0.57529145,-0.018139282,0.16910729,-0.47984317,-0.32202503,-0.40446222],[0.59024185,-0.15905726,-0.0014694524,-0.13362607,0.05351007,-0.23868667,-0.34731996],[1.6630312,0.10935514,2.5811799,-0.5959014,1.0950274,-2.4247248,-0.32879606],[0.42110145,-0.5520846,-0.30354732,0.4258476,0.12350095,-0.42948973,-0.33731243],[-0.10480609,1.0622531,-0.70043504,0.7745802,1.81419,-0.5862416,0.9866968],[0.892946,-0.8087333,0.85307103,0.16791096,-0.089219026,-0.49379104,-0.23497693]],"activation":"σ","dense_2_b":[[-0.15048273],[-0.005168303],[-0.033159684],[-0.1512387],[-0.26582178],[-0.069072716],[0.8422594],[0.08777569],[-0.010337959],[0.4020618],[-0.13930158],[0.27973402],[0.022490095]]},{"dense_3_W":[[0.023880383,-0.64809823,-0.04122315,0.5025599,-0.37605396,0.44815058,0.2004994,0.12245838,0.060301386,-0.092283376,0.20429155,-0.4129402,0.1394047],[0.13174233,0.12339004,-0.77201855,0.41352215,0.20950833,0.6537427,-0.7955242,0.025324047,0.0014908814,0.63648015,-0.014125444,-0.052981257,-0.31764406],[0.73352814,-0.40766987,-0.43053687,0.12957405,0.37287924,0.381178,-0.84177256,0.78270406,0.44731426,0.5089168,0.26753783,-0.45765585,0.35287583]],"activation":"identity","dense_3_b":[[-0.03262107],[-0.05573517],[-0.069711655]]},{"dense_4_W":[[0.03428719,0.48351324,1.3998046]],"dense_4_b":[[-0.06378867]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json deleted file mode 100755 index e7ee2b96ae..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.59677],[1.2723572],[0.5889571],[0.044212513],[1.2523131],[1.2586851],[1.2638719],[1.2450465],[1.227399],[1.2008731],[1.1704836],[0.044007845],[0.044053588],[0.04408408],[0.044052377],[0.043957964],[0.043728314],[0.043399837]],"model_test_loss":0.007355204783380032,"input_size":18,"current_date_and_time":"2023-08-12_19-23-58","input_mean":[[22.276354],[-0.037774753],[-0.007627978],[-0.011369784],[-0.037570585],[-0.038871903],[-0.040346414],[-0.040468186],[-0.040564455],[-0.03907898],[-0.037528113],[-0.011408063],[-0.011410129],[-0.011406415],[-0.0112786535],[-0.011247568],[-0.011202381],[-0.011247169]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.5261913],[-3.268581],[-0.029488502],[0.19144095],[-0.13675566],[0.12416384],[3.4747343]],"dense_1_W":[[-0.05226453,-0.24290532,-0.006649759,-0.2001671,0.09439727,-0.8264187,0.89495164,0.10392995,-0.09171039,-0.025333034,-0.018208345,-0.0045733196,0.07264264,0.17861007,0.2659576,-0.2747786,-0.35005352,0.31092092],[-1.4148408,-0.5394024,-0.25498414,-0.19303249,-0.2991067,-0.4224668,1.5064957,-0.47802028,-0.10831802,-0.091429316,-0.19356096,-0.3577177,0.48197216,0.13847184,0.45745626,-0.6015107,-0.19103733,0.25586933],[-0.015936209,-0.49370927,0.019225124,0.28393698,0.3275402,-1.0504159,0.8342227,-0.47017115,0.261455,0.11170544,-0.2031133,-0.6536298,-0.1680887,0.4808763,-0.014751369,0.033018075,0.37287006,-0.33709157],[-0.058008436,0.2024408,0.010655787,0.08164171,0.07408095,0.9617647,-1.2104056,0.081101894,0.20298839,0.08843122,-0.038386825,0.12976207,0.15168756,0.2055462,-0.6481027,-0.41196758,0.44144708,0.039478734],[0.006327593,1.225342,5.0604053,-0.32776642,-0.7639897,0.25207078,-0.25701052,0.27489042,0.7114278,-0.030908214,-1.028742,0.5304315,0.58392227,-0.3043921,-0.20152508,-0.217611,-0.5092573,0.44345003],[-0.005554315,0.6300724,-0.008829019,0.120132565,-0.0025714925,0.65304613,-0.54008144,0.36489114,0.60639745,-0.013963489,-0.41547593,-0.08670717,-0.31030667,0.011262129,0.0887775,-0.084896035,-0.3349578,-0.08532151],[1.4905181,-0.054565854,-0.26902393,0.3803058,-0.16003686,-0.19756374,0.59131384,-0.33023885,-0.21001525,-0.16574259,-0.14300068,-0.40850276,0.3227794,-0.06551579,-0.043412447,-0.26335156,0.075089745,0.0049520573]],"activation":"σ"},{"dense_2_W":[[0.6818973,0.09662785,0.85118216,-0.5597033,-0.51376563,-0.54998875,1.1681647],[0.11423674,1.5319918,0.5061838,-0.93979394,-0.83879524,-0.30968133,-0.8372116],[0.10013085,0.99290025,0.58343273,-1.0841141,-0.051542744,-0.5877158,-0.34524262],[0.30525035,2.2245643,0.78550303,-1.3862584,-0.86583656,-1.0520891,-0.75581723],[0.42648727,0.535297,0.8396946,-1.0172952,0.33770114,-1.0176997,-0.2623012],[-0.8693874,-0.047947355,-0.5417374,0.7271871,0.28763005,0.6387064,-1.211415],[0.24115744,1.5529282,0.49222645,-1.2373098,-0.4833875,-0.2019102,-0.48312268],[0.067739554,1.5064629,0.62205225,-0.7509757,-1.1738783,-0.25657117,-0.88183194],[-0.8212304,-0.18271463,-0.057214897,-0.032312606,0.24952747,-0.11964027,-1.2044641],[-0.93778396,0.48313844,-0.7947098,0.005431058,0.4053761,0.51689285,-1.1750771],[-0.97015196,0.19310886,-0.8617701,0.16075231,0.02563181,0.19641571,-0.2102881],[-1.4093407,1.1116021,-1.282566,0.67514616,0.7852251,0.6313887,-1.5295231],[-0.7758126,-0.17416649,-0.65078825,0.99865323,-0.19658208,0.2925777,-0.52684647]],"activation":"σ","dense_2_b":[[-0.007298762],[-0.5215708],[-0.26419812],[-0.39559385],[-0.1565479],[-0.04413851],[-0.48452112],[-0.63588786],[-0.060304374],[-0.08904473],[0.00323588],[0.005885602],[0.16125442]]},{"dense_3_W":[[0.6738338,0.24916402,0.48290968,0.9055114,0.4307571,-0.6490499,0.77687776,0.041201606,-0.46112925,-0.6019568,-0.7511755,-0.5311844,-0.9066927],[0.55784255,-0.05097351,0.6607086,0.01611087,0.48693258,-0.5370103,-0.2871033,0.40592095,-0.09984769,-0.1430968,-0.6162407,-0.5603644,-0.298156],[0.056438137,-0.6330188,-0.16844268,0.7197222,0.15123138,0.111305945,0.41622633,0.04650888,0.45203698,-0.6876475,0.39633313,-0.6461186,-0.060092986]],"activation":"identity","dense_3_b":[[-0.07432213],[-0.06564714],[-0.075471886]]},{"dense_4_W":[[-0.7008827,-0.1666988,-0.049054958]],"dense_4_b":[[0.071705334]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json deleted file mode 100755 index b61e726f55..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.78665],[1.1481314],[0.5406096],[0.039362922],[1.122932],[1.1308159],[1.1390376],[1.132657],[1.116679],[1.0969441],[1.0693002],[0.03927925],[0.039297566],[0.03930563],[0.0391093],[0.038840305],[0.03844836],[0.03801854]],"model_test_loss":0.006799423601478338,"input_size":18,"current_date_and_time":"2023-08-12_19-50-55","input_mean":[[22.356323],[-0.06985197],[0.00034995607],[-0.006157977],[-0.06978653],[-0.070587754],[-0.07151841],[-0.06944062],[-0.0665041],[-0.06379645],[-0.056661922],[-0.006219425],[-0.0062195924],[-0.0062180334],[-0.0062626824],[-0.006254376],[-0.0062909345],[-0.0063469317]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.26157844],[-3.8585093],[-0.056915253],[0.4083386],[0.12701957],[3.294551],[-0.011678797]],"dense_1_W":[[-0.017985545,-0.8749716,-0.05120776,0.67056817,0.1291728,-0.97086567,0.46367484,-0.20084848,0.33947694,0.118452,-0.07002966,-0.34398422,-0.027073678,0.5324926,0.094694346,0.5049914,0.31055605,-0.0054265293],[-1.4531353,0.09739576,-0.27593565,-0.3858397,0.09826383,-1.2416679,1.3741181,-0.5542574,-0.5062809,0.07726387,0.020567052,-0.49037158,0.21178146,0.7057941,0.033919472,0.1661194,-0.23747294,0.034861527],[-0.0022317865,1.2110817,5.054823,-0.3174173,-0.5742262,-0.15558177,-1.1665634,0.4472988,0.7720721,0.88218236,-1.1828778,0.6001719,-0.02098756,-0.3855406,-0.040552955,0.013535376,-0.0024735162,0.12027036],[-0.11180433,0.16049975,0.03677955,0.12961647,-0.2533068,1.1377895,-0.8505473,0.22427894,-0.13692026,-0.008696595,0.07835157,0.09832897,-0.14512521,-0.122960515,-0.024571015,0.11796106,-0.04595939,-0.025691045],[-0.3685039,-0.23575602,0.066452056,-0.07549508,0.41795194,-0.64417434,0.42375267,0.11620539,-0.27086356,-0.21933734,0.3035312,-0.105002984,-0.06251225,-0.01299668,0.26163852,-0.068665646,0.29290092,-0.22712018],[1.2734846,0.058355737,-0.24286984,0.37113938,-0.109489724,-0.5431782,0.74100715,-0.44564164,-0.23814303,0.03617263,-0.045741204,-0.4850852,0.37123144,-0.04264438,-0.179189,0.18089756,-0.20485662,0.024584953],[-0.008104353,-0.44774678,0.017182589,0.25728852,-0.18980739,-1.1090665,1.0207343,0.018984688,-0.23286112,0.07714398,-0.066708885,-0.42167252,0.033037923,-0.10394543,0.2788337,0.29151297,-0.11658049,-0.12395523]],"activation":"σ"},{"dense_2_W":[[-0.006371241,0.07629968,0.4152738,0.45680737,-0.399096,-1.0571772,-0.77203304],[-0.114975244,-0.78080434,0.33340687,0.5302852,-0.30048347,-0.95070535,-0.059019156],[0.0917907,-0.6346803,-0.03395308,0.27547774,-0.5208018,-0.56345195,-0.42710516],[-0.53994197,-0.08138468,-0.10966242,1.0073916,-0.22134155,-0.4202999,-0.558325],[-0.0911323,0.1374469,-0.05927406,-0.18155636,0.46053857,0.037110776,0.6041021],[0.044924278,1.207312,-0.80209786,-1.0643513,-0.19404407,-0.4108685,0.552001],[-0.20629992,0.87369746,0.38171571,-0.8638534,0.297487,0.10098056,0.809521],[-0.112105414,0.162961,-0.2513493,-0.67849934,0.5619054,0.33094102,0.75464505],[0.27615786,0.43389356,-0.113371626,-1.0247736,0.27918342,-0.2875816,0.69900244],[0.09716652,-0.2904934,0.36968207,0.40281,-0.42739582,-1.1725587,-0.46363854],[0.013255812,-0.4462732,0.1877262,0.54117006,0.09497548,-0.9675889,-0.5686861],[0.2776247,-0.28995666,0.21805735,-0.6418641,-0.6156117,0.044422686,2.309031e-5],[0.26508242,0.77385896,0.0650336,-0.37672806,0.4043684,0.22012536,0.032721337]],"activation":"σ","dense_2_b":[[-0.10330615],[-0.033679716],[0.045983385],[0.11898316],[-0.08782593],[-0.23800431],[-0.1865168],[-0.00038356465],[-0.15165646],[-0.14285177],[-0.032520227],[-0.14164776],[-0.17053805]]},{"dense_3_W":[[-0.45539868,-0.3461434,-0.62710863,-0.75514674,0.14802113,0.7396569,0.13793553,0.5599326,0.21306054,-0.16648014,-0.70004004,-0.02903243,0.519504],[-0.3650457,-0.3078859,0.5707353,0.12494614,-0.4517208,0.6094919,-0.27713495,-0.5677946,0.530929,0.026477134,0.34963655,0.25523546,0.07211842],[0.40082094,0.29107258,0.15391554,0.028763723,-0.07464035,-0.20093055,-0.6449461,-0.21919955,-0.18354571,0.67392844,0.4189149,-0.19322155,0.3498275]],"activation":"identity","dense_3_b":[[-0.002849253],[0.04010156],[-0.008000429]]},{"dense_4_W":[[-1.1442624,-0.018074226,0.46292245]],"dense_4_b":[[0.00046221056]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json deleted file mode 100755 index cbba3e3e97..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.339975],[1.3256136],[0.593127],[0.04754541],[1.3010378],[1.3100988],[1.3191553],[1.2989383],[1.2751849],[1.242973],[1.2088765],[0.047443245],[0.04748061],[0.04751091],[0.047400266],[0.047291804],[0.0470829],[0.04672949]],"model_test_loss":0.007941454648971558,"input_size":18,"current_date_and_time":"2023-08-12_20-18-02","input_mean":[[22.804787],[-0.0012492489],[0.0049283556],[-0.0027200934],[-0.0009171635],[-0.0005450689],[-0.00045307644],[0.0014277239],[0.0042266008],[0.004571549],[0.007173938],[-0.002649595],[-0.0026737156],[-0.002687819],[-0.0027264915],[-0.0028076714],[-0.0028791525],[-0.0030240817]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.05866234],[4.095448],[0.05124582],[-4.5607123],[-0.5631151],[0.019527452],[-0.044129238]],"dense_1_W":[[-0.030550428,-0.08043591,0.08307903,0.24843186,0.23929211,0.71641713,-0.8338393,0.16555603,0.2527681,-0.11340044,-0.034163836,0.21635275,0.48766017,-0.4958458,-0.12009069,-0.45047837,-0.40487534,0.5188204],[1.3933464,0.39291653,0.20624635,0.28392497,-0.20537527,0.33041698,-0.82583904,0.5374484,0.5927526,0.05136005,0.06089886,0.0043515163,-0.0073857335,-0.6039868,0.1363052,0.13789289,-0.076400414,-0.2556218],[0.00040147355,-1.2506115,-4.6456604,0.022542994,0.6865295,0.030435719,0.6394426,0.289509,-1.2726502,-0.48925576,1.074512,-1.0973631,-0.17780465,0.30962852,1.0192771,0.8037391,-0.07365006,-0.7483875],[-1.4990337,0.4968039,0.22349183,0.32746932,0.12910442,0.20665137,-1.306896,0.6917486,0.79503983,-0.16803351,0.15006495,0.06984487,-0.42613754,-0.23034474,0.035791446,0.18769096,-0.095758244,-0.27291724],[0.17470996,0.32795563,0.034444466,0.06723942,-0.6096647,0.8110515,-0.2520832,0.11456141,-0.15719128,0.21490517,-0.105078675,0.40423924,-0.10924174,-0.4147324,0.01310793,0.060144518,-0.13492018,0.059378713],[0.006133638,-0.3088513,0.04955513,0.17181134,-0.07184565,-1.4350437,1.1074777,-0.13354936,0.06834596,0.08551515,-0.19919638,-0.08143802,-0.55520076,0.52157044,0.25806877,-0.13898116,-0.09956009,0.13659504],[-0.508209,0.31000626,-0.037681013,-0.057895504,-0.75460684,1.1465745,-0.8317998,0.35057747,0.09632918,-0.20959972,-0.16074719,0.056147385,0.076875456,0.13462108,-0.33426112,-0.027258357,0.3241483,-0.0732327]],"activation":"σ"},{"dense_2_W":[[0.25001925,-0.5711229,-0.88617605,-0.18417396,0.33657238,-0.07999938,0.10933263],[-0.015448602,-0.8196552,-0.31138465,-0.77860475,-0.6738751,-0.08348504,-0.19269453],[-0.41236618,-0.9773098,0.30927274,-0.60864997,-0.016705617,0.75516015,-0.3620944],[0.51392204,-0.35382575,-0.71654284,0.69806784,0.35409018,-0.7125174,-0.3585419],[-0.34544718,-0.212541,-0.46838158,-0.348286,-0.4673545,0.73423237,-0.7466479],[-0.2571807,-0.87686163,-1.0323783,-0.3470508,-0.44749308,-0.8353898,-0.72766614],[-0.8385732,-0.82968605,0.104628935,0.20757905,-0.32339612,0.497941,-0.26445195],[-0.80247515,-0.6636023,-0.5110591,0.2453179,0.20732372,-0.01901174,-0.82556474],[-0.76035863,0.0074476735,0.33188587,-0.31674412,-0.50591946,0.853444,-0.20236208],[0.0013595351,1.0197767,-0.6925592,0.45688447,0.60580957,-0.26385808,-0.050980914],[0.06841057,0.7079414,-0.087536745,0.8707849,0.67308784,-1.2102008,-0.31384364],[-0.089014076,0.22765215,-0.22885361,1.1801783,0.64802265,-0.72977227,0.076044604],[-0.2654659,-0.74361503,0.40524837,-0.32977498,-0.7657364,0.167108,-0.52621794]],"activation":"σ","dense_2_b":[[-0.4408888],[0.090220116],[0.09630298],[-0.30440426],[0.0277946],[-0.4173861],[-0.08740925],[-0.4363536],[0.07060309],[0.0055395924],[-0.32225478],[-0.42043456],[0.027541628]]},{"dense_3_W":[[0.009158828,-0.64987886,-0.32672417,0.33792084,-0.6813809,-0.12942642,0.0065088505,0.36009103,-0.46551788,0.650782,0.3398156,0.33237734,-0.29790145],[0.17885834,0.018317161,-0.103069186,0.0333603,-0.009732622,0.43167624,-0.27477983,-0.29342014,-0.64711416,0.37721634,0.38430053,0.1257458,-0.2783452],[-0.06386373,-0.34565896,-0.5648887,-0.14779678,-0.1418012,-0.085997246,-0.26618838,-0.57671523,-0.24667156,-0.3074685,0.5998481,0.28325394,-0.39654872]],"activation":"identity","dense_3_b":[[0.06877291],[0.064048566],[0.089000046]]},{"dense_4_W":[[1.4214735,0.3623055,0.6621128]],"dense_4_b":[[0.07191435]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json deleted file mode 100755 index 0380b8728e..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.323066],[1.4018469],[0.567659],[0.04745886],[1.371474],[1.3818233],[1.3930135],[1.3780496],[1.353553],[1.3199772],[1.2810564],[0.047208063],[0.047284752],[0.047346227],[0.047340184],[0.04724789],[0.04699337],[0.046616953]],"model_test_loss":0.009241282939910889,"input_size":18,"current_date_and_time":"2023-08-12_21-15-20","input_mean":[[22.710884],[-0.02667767],[-1.9947951e-5],[-0.0022435884],[-0.024858162],[-0.025795942],[-0.027008465],[-0.025401326],[-0.024992129],[-0.02418946],[-0.022016376],[-0.0023103587],[-0.0022975747],[-0.0022888356],[-0.0022831862],[-0.002328815],[-0.0024200957],[-0.0025149914]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.02660969],[1.042771],[-0.033824593],[1.3177401],[1.2243396],[-1.3144829],[-0.029618222]],"dense_1_W":[[-0.042961396,0.8769499,-0.0041193925,-0.28560525,-0.20101343,1.1051995,-1.3274776,0.1784311,0.15195456,-0.25092003,0.06740475,0.2186879,0.265752,-0.15826978,-0.30693996,-0.28658256,-0.040432233,0.227988],[1.1160629,-0.5995385,0.025996689,-0.15590227,0.013243591,0.6837929,-1.4657838,0.23292334,0.066290066,0.086385906,-0.117085874,0.44104484,0.1790555,-0.29690143,0.2645984,-0.15013884,-0.1352086,0.2450129],[-0.02550995,0.11425251,-0.048323117,-0.21157871,0.07942085,1.3628405,-0.7377691,0.13772115,0.07743978,0.10179341,0.021651335,0.009930128,0.03140351,0.24963082,-0.17956105,-0.049760547,-0.19708844,0.121905],[0.50287706,-0.59522426,-0.072128914,-0.17238382,0.056527812,-0.6922978,0.4801964,-0.17814112,0.054864608,-0.046747845,-0.015958516,0.41250488,0.111997865,-0.242329,0.1574411,-0.18989699,-0.24354196,0.31047294],[1.2728062,0.9029083,-0.02995525,-0.11530327,0.19549532,-0.72583985,0.97019637,-0.023350935,-0.13342142,-0.09830459,0.11504367,0.004033683,-0.5631423,0.33631292,0.20850284,-0.13248868,-0.19359264,0.02700284],[-0.5022331,-0.4029477,-0.07267978,-0.032978907,0.123317115,-0.6608719,0.2172116,-0.2220228,0.036327496,0.036248263,-0.05348906,0.4633486,-0.45709947,0.35074022,-0.29431617,-0.015300724,-0.047331363,0.17334145],[-0.005675072,-1.177238,-4.175773,-0.33227032,0.593491,0.33732134,1.1989933,-0.018660717,-1.6915731,-0.8134577,1.1082839,-0.6968372,0.13508995,0.6501428,0.17571086,0.43262443,0.23011513,-0.2609291]],"activation":"σ"},{"dense_2_W":[[0.51582694,0.3121973,-0.20595367,-0.63976544,-0.6190774,-0.11476523,-0.161778],[0.45226112,-0.5900978,0.6664454,-0.98015857,-0.76075673,0.20415324,-1.0172082],[-0.049352575,0.030535527,0.5126004,0.26862317,-0.54523516,-0.68212223,-0.4634505],[-0.83752614,-1.6723628,-0.9174441,0.15394925,-1.029886,0.93452585,1.3628161],[0.738823,0.61842084,0.71415186,-0.6888037,0.3717006,-0.7639032,-0.1672679],[-0.1399503,-0.10095283,-0.25007892,0.39840633,-0.08607292,-0.25998384,0.64788043],[-0.40224734,-0.39391443,-1.0630914,0.5171268,0.2898641,0.81633,0.23264134],[0.609244,0.6181232,-0.078675106,-0.6184327,-0.21231276,-0.59661895,0.102545284],[-0.1669277,-0.58635,-1.1015649,0.32143387,0.4936339,0.83028847,-0.030035142],[-0.77541274,0.023090886,-0.23716073,-0.05367684,0.49773395,0.6787877,-0.16148227],[0.47024024,0.56257,0.45200762,-0.5773873,-0.18297487,0.20356469,-0.52002436],[-0.8596537,-0.06697396,-0.8024254,1.0830293,0.670211,0.6720701,-0.12708642],[-0.9127519,-0.6879708,-1.4161041,0.90650314,0.4792091,0.8929421,-0.01189748]],"activation":"σ","dense_2_b":[[-0.0045747017],[-0.077190444],[-0.013206014],[-0.31438816],[-0.02210615],[-0.08498061],[-0.032835722],[0.025921185],[-0.028608063],[-0.055094685],[-0.04353595],[-0.02340338],[0.2846957]]},{"dense_3_W":[[-0.2833135,0.49971643,0.15789203,-0.111222304,0.68173003,-0.12306065,-0.61054754,0.4364152,-0.17824891,-0.3612262,-0.08212228,0.32567462,-0.21418424],[0.30719173,0.6395363,0.45663902,-0.17605212,-0.032707606,0.09329482,-0.21607205,0.60278416,-0.2559459,-0.30606645,0.6160812,-0.65490466,-0.6537213],[-0.6911255,-0.28356558,0.35187447,0.69251335,-0.65796524,0.4204575,0.1600814,-0.36455095,0.5097029,0.23778544,0.05235907,0.61762905,-0.26800236]],"activation":"identity","dense_3_b":[[0.018074159],[0.02200104],[-0.036768977]]},{"dense_4_W":[[0.5857301,0.756474,-0.43159783]],"dense_4_b":[[0.022468269]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022.json deleted file mode 100755 index 7faefe92f7..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2022.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.322998],[1.4015561],[0.56837523],[0.047588255],[1.3709389],[1.3817663],[1.392611],[1.3754411],[1.3496559],[1.3185683],[1.2769405],[0.047354497],[0.047422595],[0.04747648],[0.047421742],[0.04731572],[0.04706673],[0.046611268]],"model_test_loss":0.009539897553622723,"input_size":18,"current_date_and_time":"2023-08-12_20-46-44","input_mean":[[22.711828],[-0.026689535],[0.0019039834],[-0.0023329535],[-0.024924988],[-0.026026027],[-0.027174095],[-0.025406003],[-0.025057424],[-0.02285188],[-0.021524802],[-0.002410757],[-0.0023985708],[-0.0023895558],[-0.0023493334],[-0.0024011184],[-0.0025043534],[-0.0025892218]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.5169857],[-0.019987362],[-3.749348],[0.010026661],[-0.07288319],[0.014374224],[0.010394186]],"dense_1_W":[[-1.2820761,0.20072974,0.28769934,-0.07435872,-0.10807912,0.6839909,-1.0163846,0.37361157,0.5963772,-0.31447622,0.15329885,-0.29130152,-0.0077871936,-0.13540648,0.14956757,0.20259517,0.4827459,-0.44082355],[-0.008706593,-0.7106983,0.03615078,0.13008897,0.39616287,-1.198108,0.67986196,0.049107697,-0.19745559,0.070653826,-0.037179824,-0.00992897,0.018150264,-0.28345117,0.20144904,0.027271744,-0.083591945,-0.0077789472],[-1.3841774,-0.2729697,-0.30312338,0.5021227,0.23227558,-0.45030138,0.8180279,-0.7582951,-0.41165656,0.3703149,-0.16755953,0.225867,0.30567566,-0.33227664,-0.07867405,-0.69357836,-0.29660326,0.48716295],[-0.0034431356,1.3253504,4.6872225,0.084131904,-0.59782314,-0.17502293,-0.47418714,-0.65568554,1.4080468,0.6040854,-0.9347265,0.4309358,0.28160667,0.031666335,-0.7668144,-0.26228446,-0.5334342,0.37789625],[-0.0055039516,-0.13755332,-0.12223849,-0.0004576334,0.25474504,-0.90248924,0.681393,0.083114035,-0.14821497,0.05615389,-0.06942857,0.052075684,-0.45403334,0.34004426,-0.10621758,0.33911383,0.07355,-0.19579107],[0.0022961085,0.30488324,-0.012825079,0.15088055,0.25583294,0.82652,-0.5459587,0.006714368,-0.06636212,-0.011478057,0.13315733,-0.13348693,0.26344913,-0.5412785,0.04283553,-0.078943126,-0.052557122,-0.14758898],[0.007984359,-0.050624616,-0.18312733,-0.16847509,0.16566466,0.73899466,-1.2472594,0.7888025,-0.095765956,0.24871819,-0.35101566,0.25908372,0.4248216,-0.13882114,-0.539588,0.09347688,0.009110203,0.12744854]],"activation":"σ"},{"dense_2_W":[[0.047095604,-0.786255,-0.43614712,-0.1504697,-0.13834186,-0.024430595,0.0504824],[0.2510971,0.02496833,-0.60852563,-0.27171785,-0.44349307,-0.37497228,0.2656754],[0.28042302,-0.2812965,-0.31852126,0.30789006,-0.85707706,0.3475367,0.22547512],[-0.6652303,0.2685998,0.56206954,-0.054037236,1.0446018,-0.94967777,-0.26615182],[0.23373616,0.18673655,-0.45725107,0.29477727,-0.89968127,0.6454618,-0.22106493],[0.054909028,0.77692455,0.18391721,-0.56115776,0.6095855,-1.0184323,-0.054039475],[-0.84752804,0.4618774,0.51274276,-0.06157674,0.38322848,-0.5445789,-0.17847438],[-0.8735806,0.71639836,0.74420905,0.16857065,0.51909196,-0.18970433,-0.87218684],[-0.09599941,-0.16308807,-0.72261167,0.5550224,-0.5297689,0.14774127,0.56100655],[0.30483237,0.093027264,0.029969638,0.47540987,-0.028077623,0.3474491,0.4557833],[0.60824394,-0.52072644,-0.110552855,0.2341221,-0.5425136,-0.15664087,0.18335746],[0.008110846,-0.3940828,-0.4749819,0.22577456,-0.6206534,0.53349996,0.64064765],[-0.74949837,1.0148553,0.08895356,-0.13594577,1.1833395,-0.5525545,-0.9272946]],"activation":"σ","dense_2_b":[[-0.1841836],[-0.052291494],[0.004210325],[0.03117083],[-0.052975487],[-0.009141316],[0.013354279],[-0.12768534],[0.007850721],[-0.096758544],[-0.02351333],[0.018209793],[0.07525378]]},{"dense_3_W":[[-0.0678166,0.21374278,0.4509247,-0.2507948,0.084760554,-0.25701937,-0.32002988,-0.6438867,0.6636694,-0.3464606,0.4619562,0.6215613,-0.7515956],[0.33497885,-0.19614214,0.75088036,-0.6965934,0.5644902,-0.62339765,-0.6473526,-0.04877687,-0.393787,0.60633105,0.18677856,0.23221537,-0.17749654],[0.24782819,0.56990445,0.7100961,-0.45507297,-0.18671395,-0.074338615,0.12664238,-0.111063465,-0.045501217,0.53268576,-0.52613497,0.3934995,-0.4127442]],"activation":"identity","dense_3_b":[[0.042554773],[0.03558463],[0.009918687]]},{"dense_4_W":[[0.7852306,0.58427215,0.16980867]],"dense_4_b":[[0.036531795]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42103x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42103x00x00x00x00x00x00'.json deleted file mode 100755 index 1b9584e460..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42103x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.390216],[0.84026754],[0.39660537],[0.037251078],[0.83123314],[0.8328986],[0.8354399],[0.822756],[0.8147103],[0.80181575],[0.78955364],[0.037153445],[0.037165854],[0.037180226],[0.03709188],[0.03697379],[0.036808748],[0.03657089]],"model_test_loss":0.007443552371114492,"input_size":18,"current_date_and_time":"2023-08-12_22-11-54","input_mean":[[24.564423],[-0.06033352],[0.0029696382],[-0.0023700444],[-0.06267781],[-0.062956646],[-0.063214496],[-0.06121789],[-0.061873104],[-0.061438877],[-0.056952965],[-0.0024559235],[-0.002469215],[-0.0024863363],[-0.0025515505],[-0.0025991164],[-0.002534291],[-0.0024238043]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.4287386],[0.019522702],[1.9977351],[-0.22490804],[-0.00035819423],[-1.3152059],[-2.3214567]],"dense_1_W":[[2.235888,-0.26963252,-0.03326692,-0.9078663,-0.48077253,0.22492908,-0.74574095,0.02163033,0.6287117,-0.25593862,0.09319266,0.390934,0.1455112,-0.0051882155,-0.2294125,0.2772641,0.3833548,-0.17655341],[0.004162867,-1.5029143,-5.1802254,1.005789,1.1220849,-0.0038114812,1.1423911,0.71593577,-1.1323463,-0.51543945,0.057678428,-1.4371938,-0.40754506,0.74080026,-0.4787524,-0.1676612,0.6316797,0.10258097],[0.61579907,1.0638666,0.04497473,0.09790652,-0.4580042,0.9214267,-0.55226237,0.22255155,-0.25152695,-0.018994743,-0.007784131,0.26833034,-0.3185435,-0.3745735,0.38645062,0.03690509,0.07226961,-0.15759337],[-0.0004868086,0.7452519,-0.03411571,-0.44577497,0.2982549,0.91406643,0.0184842,-0.18046862,-0.3266196,0.34877545,0.17070878,-0.03970848,-0.042621415,-0.27128893,0.15533158,0.07834085,0.19639981,-0.056854397],[-0.012567584,0.03624396,-0.022384563,-0.15523447,0.24661978,-1.2377284,1.1350765,-0.25249532,-0.41498,-0.020347659,0.095791966,-0.7473384,-0.26062834,0.5146696,0.54036754,0.4569565,0.22637187,-0.22997549],[-2.1634111,-0.916687,-0.03673605,-0.120667666,-0.4033444,0.7786477,-0.820325,-0.012360253,0.54780203,0.06107094,-0.004244052,0.3578701,0.32064012,-0.44154793,-0.6163029,0.25897467,-0.08404478,0.20366065],[-0.6153432,0.9540124,0.04409643,0.20857342,-0.50645894,1.0762684,-0.49672195,0.107468456,-0.2148415,0.042631213,-0.024798885,0.28167915,0.2179913,-1.0020694,0.40323436,-0.11873269,0.08794277,-0.07572256]],"activation":"σ"},{"dense_2_W":[[-0.20823282,0.30093265,-0.029201774,-0.5920709,0.8807932,0.014832234,-0.7206485],[-0.2707333,-0.5349684,0.03885923,0.4568763,-1.0975108,0.52590406,0.56699604],[-0.1763585,-0.044517048,-0.7223775,0.46382907,1.3813398,-0.90656126,-0.46228075],[0.4402428,-0.08579828,0.62238526,-0.026679713,-0.23692939,0.5986996,-0.044020038],[-0.11785757,0.55059844,0.21553627,-0.38685504,0.37269825,-0.05641884,-1.0433837],[-0.073115595,-0.13483381,-0.57452166,-0.34301227,1.1377032,0.18396655,-0.65384805],[-0.06759611,0.40847486,-0.54294467,-0.6230027,0.5551045,0.12885416,-0.6015846],[-0.1075689,-0.82133925,-0.4100264,-0.5740279,0.077124596,-0.84148127,-0.35156497],[0.43155265,-0.44616547,0.5199837,-0.24253757,-0.28942013,0.07995831,0.80747086],[0.5655305,-0.6049346,0.7769178,0.6401317,-0.036156356,0.12338241,-0.09606122],[-0.11682955,0.37032342,0.6814937,0.08761088,-1.1991022,0.3395861,0.4455738],[-0.061593946,-0.10245612,-1.1362522,-0.90115947,-0.10694025,0.27360564,-0.38288185],[-0.85389346,0.7123888,-0.9063807,-0.5282727,0.84775126,0.14558455,0.10813089]],"activation":"σ","dense_2_b":[[0.09443781],[-0.22529183],[0.0031277924],[-0.038756464],[0.06911136],[0.16423716],[0.047135442],[-0.06203192],[-0.09895892],[-0.08908262],[-0.30888662],[-0.045908593],[-0.13323098]]},{"dense_3_W":[[-0.28149396,-0.09962505,0.47546953,-0.31420928,0.2905342,0.266794,0.43754667,0.3859919,0.06822508,0.23275743,-0.6660929,0.19498697,0.3011593],[-0.13796176,0.40359095,0.29825932,0.018519647,-0.59591174,-0.73205596,-0.19215392,0.27951568,0.3280459,0.19260992,0.36450627,-0.50515145,-0.546314],[0.399765,-0.5717706,0.59745455,-0.24058248,0.049411856,-0.11578697,0.25948843,0.5037258,-0.33800462,-0.35749623,-0.026326528,0.09737147,-0.09119536]],"activation":"identity","dense_3_b":[[-0.10628814],[0.07634368],[-0.05583109]]},{"dense_4_W":[[-0.31794876,0.80048394,-0.76268446]],"dense_4_b":[[0.06573924]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42162x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42162x00x00x00x00x00x00'.json deleted file mode 100755 index 4c63096684..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42162x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.153396],[1.1424059],[0.5273411],[0.0418866],[1.1337891],[1.1363932],[1.139454],[1.1177284],[1.1015002],[1.0786083],[1.0526011],[0.04153589],[0.041622877],[0.04170686],[0.041838918],[0.04179161],[0.04151654],[0.041096594]],"model_test_loss":0.009716987609863281,"input_size":18,"current_date_and_time":"2023-08-12_22-38-30","input_mean":[[24.196396],[-0.016029745],[0.028096095],[-0.0038994509],[-0.022461733],[-0.0211682],[-0.018945228],[-0.009469113],[-0.006013518],[-0.0003690735],[0.00038850226],[-0.003962722],[-0.003939994],[-0.003924277],[-0.0039717006],[-0.004034121],[-0.004135311],[-0.0043619256]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.06441673],[2.26378],[-0.10552989],[0.33980003],[-0.04298246],[-0.098494254],[2.4262064]],"dense_1_W":[[-0.020790633,0.451921,-0.13652684,0.12763585,-0.031029783,1.2042981,-0.5776046,-0.1012677,0.17831358,-0.05581121,-0.06692354,0.54666835,0.40911138,-0.8721234,-0.39267784,-0.08157101,-0.4079901,-0.2989372],[0.5509748,0.9363097,0.059841122,-0.4140256,-0.41639903,0.33078,-0.40445128,0.36929476,0.018607832,0.00700337,-0.0038795248,0.7061042,-0.23580593,-0.48158726,0.12674259,-0.06382707,0.43820915,-0.17950895],[0.018348062,0.6468131,0.0042748065,0.16133198,-0.015959706,0.9301354,-0.20905271,-0.29754588,-0.28253144,-0.119799875,0.3632876,0.3290482,-0.18916254,-0.41337168,0.0010071574,-0.15450883,0.20074505,-0.026081141],[0.006989476,0.27034685,6.5836134,0.55647486,-1.4171077,-1.1925769,-1.0201753,0.29032436,1.358197,1.2209818,0.37050742,0.6416425,0.6711937,-0.31485364,-0.34857285,0.17685159,-0.7824757,-0.4657348],[-0.004080293,0.029588899,1.3128351,-0.36318135,-0.11356612,0.5806577,-0.36066183,0.4649574,0.5240905,-0.05959767,-0.91840315,0.62454647,0.050267532,-0.14082994,-0.2595877,-0.31785563,-0.02562985,0.34429887],[0.034001444,-1.9677832,0.15466869,-1.0032327,-0.30988127,0.71767926,-0.89187795,0.6676458,0.9369056,0.2786462,-0.53612363,0.7342473,0.12932669,-0.29018465,0.3984834,0.23467675,-0.1234937,0.84723073],[0.47908032,-0.5793737,-0.05230327,-0.0138418805,0.2010647,-0.5434213,0.59695786,-0.19498722,-0.2230812,-0.15169947,0.102158435,-0.18281807,-0.1266235,0.3866273,-0.04928129,0.37241444,-0.2728808,-0.01607883]],"activation":"σ"},{"dense_2_W":[[0.12734035,0.5242563,0.6692459,0.2905278,0.0014169036,0.29576495,-0.61192167],[-0.12615293,-1.2116686,-1.2169276,-0.08875717,0.3729457,-0.5249831,0.34974018],[-0.9393932,-0.38383678,-0.8133937,0.24458236,-0.24640957,0.16986968,0.9259673],[-0.28856096,-0.31797957,-0.9315826,0.04405637,-0.012435744,-0.11371028,0.5239803],[-0.17659293,0.15572147,0.07663236,0.62253284,0.64720607,0.19781266,-1.2869947],[-0.7894623,-0.90204525,-1.0353638,-0.03617179,0.39140046,-0.0017340467,1.1151788],[-0.32219446,-0.49881086,-0.56797916,-0.5200566,0.049211055,-0.27014527,-0.47646534],[0.3827617,0.09625169,0.6359473,0.20220737,0.0765475,0.69139665,-0.014074824],[-0.8888096,-0.9244012,-0.20213692,0.16941886,-0.42035094,-1.047354,0.65089625],[-0.073977485,-0.9904051,0.21814822,-0.85800076,-0.380841,-0.41185415,-0.34316978],[0.50580156,-0.14019777,0.41091344,0.45879292,0.5243499,0.04470857,-0.118686885],[-0.91301054,-0.10051312,-0.76313204,-0.36933228,0.123890385,-0.41707304,1.4737208],[0.48200563,0.30155873,0.6166662,-0.19214527,0.3604119,0.848134,-0.66118497]],"activation":"σ","dense_2_b":[[-0.06378894],[-0.063377954],[0.21705978],[-0.124884605],[-0.31138632],[0.15949029],[-0.06504713],[-0.06639504],[0.29782426],[-0.05916866],[-0.19573724],[0.39589995],[-0.13240384]]},{"dense_3_W":[[-0.4349006,0.30896667,-0.45529953,0.1588749,0.6099583,-0.048744787,0.14831127,-0.09553297,-0.5638598,0.47571346,0.3784129,-0.65802926,0.6003008],[-0.2129697,0.480156,-0.606263,0.4075848,-0.41933286,0.38288692,0.22861128,-0.4790269,0.32494992,0.45159003,0.52394915,-0.10827983,0.009361509],[0.5089469,-0.5202948,-0.5322368,-0.31337965,0.3283847,-0.80532163,-0.12003918,0.3517128,-0.7536064,-0.36008325,0.43078935,-0.49509677,0.43837455]],"activation":"identity","dense_3_b":[[-0.009116715],[0.03737127],[0.07403617]]},{"dense_4_W":[[0.08990676,0.013356972,1.3498625]],"dense_4_b":[[0.06698501]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42163x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42163x00x00x00x00x00x00'.json deleted file mode 100755 index 98c89380a7..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017 b'8965B42163x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.507092],[1.2815679],[0.4975071],[0.04506459],[1.2720965],[1.2750745],[1.2772884],[1.2503124],[1.2223599],[1.1884838],[1.1560506],[0.045019273],[0.045028828],[0.045024503],[0.04477106],[0.04448406],[0.044080965],[0.04363627]],"model_test_loss":0.013042495585978031,"input_size":18,"current_date_and_time":"2023-08-12_23-07-05","input_mean":[[21.98877],[-0.12335238],[-0.016078657],[-0.0077544143],[-0.121013075],[-0.122396156],[-0.12400471],[-0.12926798],[-0.13365853],[-0.13634436],[-0.13445592],[-0.0078579085],[-0.007848383],[-0.007836665],[-0.007821644],[-0.007856283],[-0.00794595],[-0.00799864]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.41238108],[-0.15647191],[-3.19432],[1.3473346],[0.72033656],[0.011768298],[3.205428]],"dense_1_W":[[-0.027973145,1.7576972,4.767511,-0.4176633,-0.96818715,0.33926827,-1.0864245,-0.23734152,0.9877473,0.7952857,-0.8853347,0.93019867,0.32556108,-0.028436413,-0.0046930364,-0.50567764,-0.89116305,0.34441304],[-0.3286742,0.7296152,0.15975942,-0.23465723,0.054107532,1.2600936,-1.2999637,0.3027219,0.21823524,-0.3015546,0.21093197,0.35624585,0.20739715,-0.53436106,-0.06674817,0.018904384,0.45141223,-0.23347045],[-1.2369081,0.5949384,0.27328587,0.05338651,0.4156267,0.92539907,-0.40590262,0.5744456,0.15448196,0.049225725,0.112136096,0.061936796,0.36455524,-0.20739433,-0.5574245,0.020741934,0.3043354,-0.060525723],[1.3975302,-0.2660883,-0.2528151,0.12209471,-0.45779967,0.37982872,-1.2621626,-0.12645462,-0.08675239,-0.024192654,-0.16114336,0.3574039,0.14576891,-0.5411478,-0.4881046,0.29857686,0.3050295,-0.16263439],[0.0261585,-2.65415,0.1102068,-0.6355408,-0.6825635,-1.95765,-0.7815007,-0.8075244,-0.2593319,-0.6009522,-0.52111167,-0.20022257,0.03889839,0.62920535,0.33383593,-0.2175719,-0.4684548,0.3459961],[-0.0150678735,-0.58271044,0.0061610206,0.074883945,0.10804738,-1.421328,0.79250294,0.15533687,-0.24172942,-0.074691884,0.00076515594,-0.6798396,0.08621879,0.7514697,0.10140082,0.41893494,0.28425518,-0.33354664],[1.1115061,0.61985224,0.30767944,-0.09303943,-0.12909113,1.6447747,-0.4437529,0.77997494,0.2406031,0.19338164,-0.04269769,0.74130315,0.023670241,-0.60373497,-0.42885965,0.09291059,0.30503675,-0.0505794]],"activation":"σ"},{"dense_2_W":[[-0.03447381,0.61961925,0.46783054,0.008025974,0.034218326,-0.785008,-0.2436927],[-0.34576592,0.38208163,0.9075677,0.4188659,-0.6523994,-0.6328571,0.014269962],[-0.028170645,0.8463806,0.044915676,-0.021030001,-0.27790257,-0.61671126,-0.099155694],[-0.8248011,-0.376545,0.11962283,-0.8207945,-0.021737516,-0.06406078,-0.106754884],[0.424725,0.6510974,0.31296447,-0.26330495,0.11321596,-0.8308737,0.19026594],[0.16454563,-0.45808515,-0.61525315,-0.2313238,0.42379624,0.49528188,-0.15805322],[-0.74735767,0.06545445,0.26230517,-1.1391616,0.6482181,-0.25901437,-1.0564803],[-0.17673826,0.0071658455,-0.8479469,-0.26447105,0.51856095,0.9599089,-0.22698504],[0.07695655,-0.6020192,-1.0648273,0.57120943,-0.60580045,0.48599684,-0.74983746],[-0.18215203,-0.03673277,-0.69181716,-0.50174606,-0.3967317,1.0757489,0.10837832],[-0.2219305,0.5985485,0.3430551,0.27103543,-0.28647742,-1.2267803,0.3110115],[0.23252928,0.35021362,0.506134,0.11031795,0.09378154,-0.5229496,-0.49675792],[-0.894196,-0.11130605,-0.021763802,-0.79576594,0.048987858,-0.18540877,-0.7740312]],"activation":"σ","dense_2_b":[[0.059486043],[-0.29280654],[0.011379277],[-0.07390214],[-0.06469096],[-0.07824884],[-0.121937186],[-0.020077355],[-0.14607991],[0.071507566],[-0.04043437],[-0.32625166],[0.005049509]]},{"dense_3_W":[[-0.21808244,-0.08183334,-0.6193853,0.14346945,-0.64549166,0.034775525,0.62263674,0.60656494,0.05402613,0.4803536,-0.057502307,-0.57187694,0.48039675],[0.20010938,0.29857892,0.29031074,-0.4493723,-0.27534932,-0.4271697,-0.3127123,-0.31985202,-0.5051126,-0.20012727,0.63287383,-0.42268178,-0.5962557],[0.7221426,-0.17602918,-0.24287237,-0.1045422,0.59664446,-0.3091623,-0.07306638,-0.6027462,-0.04207753,0.22870076,0.12455155,-0.058088508,-0.5303505]],"activation":"identity","dense_3_b":[[-0.026025277],[0.054520532],[0.04151487]]},{"dense_4_W":[[-0.88442326,0.62185794,0.34921297]],"dense_4_b":[[0.04022765]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42170x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42170x00x00x00x00x00x00'.json deleted file mode 100755 index 3009213f5c..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42170x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.505826],[1.3050952],[0.6105025],[0.049911283],[1.2774526],[1.2882336],[1.2985959],[1.2796075],[1.2540187],[1.2308307],[1.2028455],[0.049641605],[0.049726453],[0.049802125],[0.049885124],[0.049843974],[0.049564064],[0.048945032]],"model_test_loss":0.008349043317139149,"input_size":18,"current_date_and_time":"2023-08-13_00-13-34","input_mean":[[23.119398],[-0.014665721],[0.002875712],[0.0022761677],[-0.016781015],[-0.015601292],[-0.015216634],[-0.012974441],[-0.008985644],[-0.0026411372],[-0.0011595195],[0.0021324658],[0.002156456],[0.0021819477],[0.0022379826],[0.0022811887],[0.0022112585],[0.0020355321]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.04593338],[-0.40499118],[-1.7993592],[-0.11991043],[2.4969063],[-0.08359504],[0.15138367]],"dense_1_W":[[-0.0020456694,-0.15232417,-0.05632091,-0.37705573,0.022051271,-0.8565281,0.39108163,0.056849197,0.05130677,-0.05407012,0.001970357,-0.22110374,-0.05739019,-0.06787392,0.8160874,0.24165699,0.05984952,-0.26877397],[-0.059527796,-1.783515,-5.029247,0.35492274,0.46516266,-0.4962219,0.74547374,-0.1391693,-0.44948098,0.77305996,0.5585137,0.21553893,-0.4055475,-0.05447692,0.26631886,0.058942422,-0.016789235,-0.27207494],[-0.76922256,0.6301251,0.22935481,-0.025813706,-0.33578226,0.67003363,-0.88640255,0.46430328,0.027061734,-0.1746217,-0.0022712015,0.16300617,0.0046104635,-0.4206955,0.33701143,0.087930895,0.08343968,-0.18054911],[0.0011171654,-0.58213556,-0.021455938,0.26902542,0.37316513,-1.3450648,1.1398438,0.1091337,-0.28341073,-0.118193135,0.124231465,0.05864356,-0.6355348,0.1833971,0.3096016,0.34548208,-0.011865895,-0.18107612],[0.87095094,0.6937185,0.29325077,0.020749068,-0.025415676,0.699841,-1.3742945,0.7242314,-0.06749853,-0.070331104,-0.0636034,0.06533873,-0.16280279,0.042507485,-0.029019153,0.26980522,-0.09153442,-0.093001485],[-0.31021908,-1.142416,0.11011055,0.43387893,0.5260836,-1.5303199,0.5066911,-0.27706015,0.39043495,0.15309733,-0.28572637,-0.22430675,0.061929535,-0.06383185,0.13644171,-0.50511664,0.041031726,0.31161213],[1.0897267,1.1825744,-0.14236324,0.063672036,0.06294053,-0.3706379,1.0601782,0.5527051,-0.27595088,-0.113671936,0.13686246,0.17960225,0.20145352,-0.13296105,-0.40037417,-0.01056886,-0.13461137,-0.055430967]],"activation":"σ"},{"dense_2_W":[[-0.19825721,-1.1104169,0.98295814,-0.30515158,-0.34692875,-0.6190782,-1.297581],[0.24416888,0.3588734,0.103677236,0.240873,-0.813537,0.07612628,-0.08107244],[-0.5474003,-0.28213567,0.1666674,-0.42624155,0.64944845,-0.26346406,-0.14706588],[0.1518272,-0.21466658,-0.17855105,0.013723676,-0.58607084,0.6483515,0.43216375],[-0.6230994,-0.08837661,0.33257806,-0.85847354,0.36574784,0.04634162,0.05514991],[-0.8296199,0.77100873,-0.939359,-0.8922866,0.084815726,-0.6143975,-0.10045844],[0.4623184,0.1270895,-0.16754854,0.15027253,-0.4147221,0.39358157,0.57891953],[-0.08295878,0.5129586,0.06648533,0.40620163,0.24548061,0.40838754,0.21267301],[-0.23169038,0.43309572,-0.070394635,0.019800762,-0.65996474,0.6055871,-0.12044358],[-1.0342672,-1.0465121,3.6257296,-0.50793505,0.29782388,-1.7741984,-1.0927168],[-0.19204512,-0.32931063,0.18198438,0.8573456,0.06693234,0.6510411,-0.32572392],[-0.4673864,0.10762463,0.07421527,-0.38329086,0.7058981,-0.927119,0.115484424],[-0.42056227,-0.11796782,0.49156794,-0.7097843,0.6934195,-0.5626611,-0.34439513]],"activation":"σ","dense_2_b":[[0.11909162],[-0.07600877],[0.10223283],[-0.031305008],[0.09945486],[-0.17963581],[-0.061995212],[-0.07555241],[-0.102682784],[-0.05191523],[0.024158236],[0.076784156],[0.23109515]]},{"dense_3_W":[[-0.14342636,-0.72422844,0.40396285,0.1636829,0.18247479,0.0045734644,0.057036284,0.36054525,0.31516632,0.5773821,-0.34730205,0.015506951,0.8143722],[-0.22141175,0.0249754,0.18519108,-0.5960891,0.10534475,-0.34004185,0.30922064,-0.64269876,-0.39353377,0.61196244,-0.6038087,-0.2218613,0.8060632],[-0.8372558,0.52254903,-0.14625306,0.0066804006,-0.65099746,-0.46298012,0.46928817,0.3031862,0.21476059,-0.113657326,0.57816565,-0.66892457,-0.68522847]],"activation":"identity","dense_3_b":[[-0.08646373],[-0.0014501116],[0.010766292]]},{"dense_4_W":[[0.20907876,0.4356881,-1.1967267]],"dense_4_b":[[-0.009264721]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42171x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42171x00x00x00x00x00x00'.json deleted file mode 100755 index ba9f61741d..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42171x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.125968],[1.2157676],[0.56877077],[0.046634678],[1.1819986],[1.1939226],[1.2050095],[1.1772536],[1.1490384],[1.1173652],[1.0877764],[0.046458516],[0.0464915],[0.046519432],[0.046424575],[0.04630696],[0.045947377],[0.045457695]],"model_test_loss":0.012017198838293552,"input_size":18,"current_date_and_time":"2023-08-13_00-43-28","input_mean":[[23.038973],[-0.011042334],[0.015974972],[-0.0052252584],[-0.012621144],[-0.012206042],[-0.011473829],[-0.00436382],[0.0011708968],[0.011603617],[0.018078573],[-0.0053275926],[-0.0052903076],[-0.0052520954],[-0.00510947],[-0.005104932],[-0.005200319],[-0.0053668055]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16457097],[-0.11783356],[-0.16341795],[3.2603662],[-0.11788801],[1.6720974],[-1.0769079]],"dense_1_W":[[-0.008061046,-0.295763,-0.04102052,-0.44582197,0.39850467,-1.5092795,0.88803405,-0.14117628,0.17673199,0.06661456,-0.08764483,-0.07910116,0.064918116,-0.28363875,0.80435836,-0.029273244,0.083623365,-0.0926666],[0.011789304,-0.77010036,0.030322142,0.47716776,0.3228661,-0.5643698,-0.085420124,-0.41520515,0.04144654,0.18603072,-0.072190225,-0.2096561,0.25008512,0.047287993,0.78376484,-0.09255421,-0.073869705,-0.38755554],[0.006866006,-0.39707738,0.047982275,-0.09235436,0.2033491,-1.5095443,0.76461095,0.12706165,0.05459054,-0.31473687,0.017124869,-0.15846905,0.28620297,-0.29356283,0.010996088,-0.26782978,0.30223924,0.19818383],[1.3136203,0.7605802,0.22921574,0.06950313,-0.27827767,0.22789046,-1.1831415,0.2888181,0.45472026,0.30679116,-0.029124122,0.3591454,-0.12775579,-0.19236758,0.06478377,-0.32875076,0.39650252,-0.22568668],[0.021136647,-0.8797861,-3.4817855,0.9336127,-0.29945964,-0.40648848,1.0025306,-0.4041235,-0.4894749,0.32140172,0.98608655,-0.13395874,-0.5486662,0.09900147,0.16774903,-0.088785864,-0.46660814,0.12422624],[0.9725118,-0.5041138,-0.16343966,0.08840967,0.2979326,-0.2553426,0.70889497,-0.26950783,-0.24307638,-0.10193795,-0.11072658,0.07021681,-0.61530876,0.015428448,0.33534184,0.2460765,-0.04016938,-0.10249991],[-1.8274829,-0.48919293,0.2956331,0.39662004,0.3197019,-0.5691079,0.461544,0.13920702,0.03986025,0.75838494,0.20281333,-0.204162,0.19350567,-0.25525728,0.18195486,0.062684454,-0.19634059,-0.13966343]],"activation":"σ"},{"dense_2_W":[[-0.46026543,-0.608524,0.043432627,0.47561055,0.066570684,-0.41968626,-0.6702784],[-0.25002444,0.014399548,-0.84623957,0.022399414,-0.2874369,-0.7324391,0.20420226],[0.36980322,0.15331481,-0.09735177,-0.85721236,0.24727485,0.24951531,0.50254786],[-0.8673788,-0.17667994,-0.68422544,-0.1418402,0.18743204,-0.44421887,-0.13782015],[0.04130671,0.52854437,0.24590105,-0.88267916,0.22531076,0.38659257,-0.17606324],[0.47478884,0.31884965,0.3388871,-0.9468022,0.5066021,0.0700175,-0.5095112],[-0.113112666,0.25730982,-0.9881957,-0.13247137,-0.033958793,-0.93955487,-0.48982602],[-0.04127802,0.087856285,0.5223571,0.24392658,0.39105633,0.49048007,-0.34004813],[-0.31157398,-0.13790639,0.34548154,0.029981874,-0.55449915,-1.4152876,0.07108483],[0.53556556,-0.18784468,0.8590173,0.0057014013,-0.19763845,-0.011888355,0.5876402],[-0.48912835,-0.36501917,0.115229115,0.32207936,-0.6014716,-0.7109084,0.3919979],[0.55365634,0.6837242,0.3347094,0.0687382,-0.3462548,-0.11737208,0.63489527],[-0.256118,0.059573215,-0.7375444,0.06857301,-0.15573148,-0.7817235,-0.32100102]],"activation":"σ","dense_2_b":[[0.14656128],[0.087247714],[-0.28482375],[0.10210237],[-0.26355878],[-0.3669566],[0.15538138],[-0.17240496],[0.09014895],[-0.113779716],[0.14317818],[-0.071496926],[0.0718679]]},{"dense_3_W":[[0.6229111,0.31968972,-0.28705767,0.11074303,-0.087110974,-0.48348424,0.6785927,-0.21872982,0.61053604,-0.4666131,0.5098173,-0.06363553,0.3394026],[0.084205516,-0.3369105,0.17392462,0.37095436,-0.38174987,0.6008199,-0.80774736,0.06431271,-0.50171995,-0.010040611,-0.4184066,-0.22164747,-0.5402119],[0.7551455,0.14914666,-0.12843245,0.7057249,-0.5243644,-0.43565202,-0.35526338,-0.08234922,-0.33515534,-0.21625134,-0.07045235,-0.556805,-0.119567014]],"activation":"identity","dense_3_b":[[0.0821533],[-0.058999702],[0.09296355]]},{"dense_4_W":[[1.1875242,-0.45130086,0.9210134]],"dense_4_b":[[0.08483955]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42181x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42181x00x00x00x00x00x00'.json deleted file mode 100755 index c5393c2cfd..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'8965B42181x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.851226],[1.0239326],[0.42911518],[0.03646196],[1.0106101],[1.0142277],[1.0175295],[1.0065211],[0.9916179],[0.9649314],[0.936436],[0.036384404],[0.036382284],[0.0363779],[0.03632052],[0.036259472],[0.036110133],[0.035911527]],"model_test_loss":0.014339322224259377,"input_size":18,"current_date_and_time":"2023-08-13_01-37-39","input_mean":[[18.550402],[0.06708315],[-0.003807479],[-0.0036194513],[0.068546236],[0.06752569],[0.067004055],[0.06809232],[0.0652104],[0.06113437],[0.0540162],[-0.0034877174],[-0.00351821],[-0.0035523246],[-0.0035503684],[-0.00347457],[-0.0034314597],[-0.003328863]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.058229167],[0.03463576],[0.4540118],[1.0585605],[0.82972604],[0.01061339],[-0.5384203]],"dense_1_W":[[-0.0014019154,0.37237298,6.008196,0.10171012,-1.7093086,0.036843814,-0.20425557,0.1546206,1.5322132,0.7762833,-0.7004276,0.312089,0.124471225,-0.10561013,-0.39252156,-0.061603494,0.14343801,0.048062187],[0.0053725736,0.83909684,-0.0058439635,-0.038102146,-0.6833011,1.3762548,-0.708113,-0.18666978,0.28403822,0.08537209,-0.20133755,-0.044063088,-0.053310566,0.03235708,0.1398986,-0.097352564,0.09996585,-0.05572039],[-0.009760258,1.0888057,-0.07141774,-0.47450888,-0.5601016,-0.01604505,-0.34092116,-1.0678765,-0.96493465,-0.7642926,0.8836851,0.19161814,0.06547918,-0.6535186,0.62695867,-1.0349063,-2.439145,-2.184206],[0.38358867,0.6065362,0.0034230966,-0.3828624,-0.75266975,0.75344396,0.07208741,-0.2282329,0.0915009,-0.26476312,0.2233056,0.0923892,0.22786996,-0.26453176,0.20961368,-0.105665825,0.098848045,-0.0052204602],[0.381848,-0.5390429,-0.00251121,0.20975311,0.26914105,-0.78149796,0.5001158,-0.06125975,0.40894818,-0.08970213,-0.18330403,-0.053460885,-0.57413,0.7126597,0.09718345,-0.40182889,0.18284002,-0.04926136],[0.0041610664,1.9413497,-0.9496216,-0.33759737,-0.95122117,-1.5848461,1.3404186,-0.7097838,-0.8721945,-0.06395329,0.80500317,-0.93806756,-0.47362727,0.22262034,1.3678228,0.64397407,-0.2728229,-0.33648926],[0.07239537,-2.7810628,-0.00035733246,-0.39048576,-1.7811499,-1.8262695,-1.4524763,-1.5749454,-1.0985239,-0.97433126,-0.9762156,0.10516947,0.041831885,0.557803,-0.3139855,-0.11231197,-0.24730888,0.28285852]],"activation":"σ"},{"dense_2_W":[[0.88501614,0.7960339,-0.0854282,1.473172,0.73403573,-0.030489994,-1.0748231],[-0.012086651,-0.61050624,0.18473598,-0.7041298,0.37165922,0.31777894,0.18531682],[0.3662147,-0.029098487,0.76151365,-0.13395014,-0.36695877,-0.49297136,0.38819385],[-0.35389823,-0.3027185,0.12915866,-0.13196456,-0.059434127,0.3337308,-0.5366898],[-0.68380296,0.7094547,0.3467085,0.62269133,-0.8350407,-0.20502584,0.26055062],[-0.34221599,0.09894911,-0.22930774,-0.48179337,0.20150964,-0.77290064,0.09458423],[-0.36280394,-0.65553576,0.14078282,-0.3023727,0.36085516,0.2819732,-0.43386218],[-0.19083975,-0.34192124,-0.43045238,-0.62081045,0.30931103,0.030700095,0.38528338],[-0.12913164,-0.05824346,-0.19918932,-0.6585686,0.64329416,-0.39228633,0.38834023],[-0.06803785,-0.71117616,-0.09132568,-0.98075783,0.06334288,0.49681652,0.34164643],[0.2180745,0.36604738,0.06154819,0.24362233,-0.8302129,-0.26283228,-0.009614421],[0.90993303,0.8324408,-0.153028,-0.3565887,-2.4188988,-0.39102378,-0.83334637],[0.49228296,1.0891999,0.14682251,0.06525131,-2.3566296,-0.27929735,-0.59872884]],"activation":"σ","dense_2_b":[[0.026272422],[-0.027382316],[-0.06374873],[-0.0018913196],[-0.10611498],[-0.28934753],[0.048449446],[-0.029426448],[0.03910206],[-0.061729193],[-0.17011756],[-0.19914334],[-0.35818344]]},{"dense_3_W":[[0.24681666,-0.43185285,0.43248656,0.446498,0.33516178,0.33663905,-0.33765137,0.12410014,-0.0055404617,-0.5735319,0.17945813,0.35185724,-0.14598772],[0.53883415,-0.66247576,0.09985266,-0.6038839,0.5757858,-0.11846804,-0.5524721,-0.14494437,-0.50289154,-0.5902578,0.45613047,0.08691653,0.45961568],[-0.016912147,-0.4347032,-0.2132421,0.42222002,0.053901196,0.26849094,-0.52274466,0.45093128,0.11547074,0.5519499,0.23178731,-0.7015563,-0.14213508]],"activation":"identity","dense_3_b":[[-0.047897134],[-0.038441896],[0.028599853]]},{"dense_4_W":[[0.7028314,1.0645722,-0.27114505]],"dense_4_b":[[-0.04197308]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json deleted file mode 100755 index d92c39429b..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01200x00x00x00x008965B0R02200x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.6717544],[1.0947602],[0.46523303],[0.04071385],[1.0781838],[1.0831677],[1.0886382],[1.0836236],[1.0735654],[1.0567871],[1.0353881],[0.040535703],[0.04058452],[0.04062954],[0.040666204],[0.040554516],[0.040246446],[0.03986381]],"model_test_loss":0.006968128960579634,"input_size":18,"current_date_and_time":"2023-08-13_02-03-42","input_mean":[[25.24135],[0.03279265],[-0.008847487],[0.006320684],[0.035298277],[0.03512001],[0.033641964],[0.029695673],[0.029064743],[0.02506108],[0.02039471],[0.00622451],[0.0062250104],[0.0062315515],[0.006241794],[0.006244377],[0.00616693],[0.0059778835]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.4494311],[-0.19496632],[-0.26350814],[-0.56510746],[-0.21877296],[-1.3355609],[-0.29426798]],"dense_1_W":[[0.5206159,0.10576821,-0.11247911,0.20491163,0.33990794,-1.2525518,1.0583574,-0.34753868,-0.06646643,-0.14601575,-0.14929412,-0.29487255,-0.06879391,0.50932205,0.11869424,-0.58628404,-0.042017702,0.17407125],[-0.031322703,0.5768025,-0.0025023601,-0.21647467,-0.082024425,0.88715947,-0.71050763,-0.072764166,-0.051216543,0.09057434,0.05977775,0.19192873,0.29378706,-0.26843268,0.13159594,-0.41493884,-0.08635731,0.19498013],[-0.035252336,-0.9459374,-4.970837,-0.084247485,0.27099663,-0.059329633,0.52409726,0.007877367,-1.1663415,-0.26411596,1.3571975,-0.31273174,-0.3185127,0.23015912,0.062651314,-0.25624627,0.57898873,-0.027787916],[-0.0215698,-0.50061035,-0.0036015501,0.046023894,0.2602722,-0.871437,0.46986884,0.06857351,0.1074371,0.086234815,-0.19308428,-0.04312489,0.029021757,-0.003684175,0.14100845,0.042754482,-0.21663295,0.14043325],[-0.9751645,-0.12289358,-0.1406582,0.13687797,-0.35888916,0.6194974,-0.6489919,0.38132963,-0.07326873,0.23100159,-0.6815848,-0.007814461,0.26971263,-0.07363272,-0.1855483,-0.18125555,-0.049100105,0.115237534],[-0.50956905,0.48556384,-0.10785587,-0.2540192,-0.032906525,-0.49255675,0.41026026,-0.14745457,-0.5306201,-0.008835799,-0.08571492,-0.25413102,-0.05079176,0.53850764,0.27346227,-0.18674931,-0.07856052,0.025163196],[-1.0250858,-0.32162967,0.13932756,0.28023055,0.23404084,-0.4745412,0.6844042,0.0050328784,-0.06439692,0.17258103,0.4165711,-0.16924205,-0.4714274,0.1771986,0.08547189,-0.1035464,0.5452405,-0.35472986]],"activation":"σ"},{"dense_2_W":[[1.1859789,-0.51215285,0.9208667,0.011160324,-0.26782367,0.1654521,-0.27158707],[-0.12362681,-1.2787738,0.076242216,0.5843017,-0.26689935,1.0748321,-0.3880148],[-0.40252876,1.0881231,0.25295937,-0.93297756,0.32773137,-0.5535702,-0.67666596],[-0.7580509,0.71760464,-1.0216886,-0.1978493,0.4836637,-0.17133161,0.036033805],[-0.75000304,0.63558036,0.32057714,-1.0511792,-0.3177557,-0.044755217,-0.11034487],[-0.5645773,0.27898332,0.47402716,-0.738025,0.3021792,-0.9873278,-0.7891343],[0.11762674,0.73939085,-0.3103913,-0.98226845,0.64397097,-0.80232793,-0.652079],[-0.9045628,0.8587723,0.80991477,-0.8700875,-0.65929556,-0.4393104,-0.4573712],[-0.8187899,0.97374254,-0.38434175,-0.96596724,0.19627793,0.10464935,-0.12969106],[-0.04873503,0.14666314,-0.10507614,-0.78823173,-0.57198745,-0.65050966,-0.39800155],[-1.3525742,0.27251542,-0.61843866,0.19277906,0.55250853,-0.57587695,-0.25846016],[0.09460951,-1.0067326,0.18680768,0.6701155,-0.7826965,1.0157732,0.62720263],[-0.056878928,-0.9902501,0.07337474,0.5947333,-0.14998591,0.9698875,-0.47638628]],"activation":"σ","dense_2_b":[[-0.08574547],[-0.25192508],[-0.1600956],[-0.2021993],[-0.12500837],[-0.014394304],[0.12166485],[-0.097488604],[-0.09498941],[-0.23732203],[-0.0033244065],[-0.18101275],[-0.42470968]]},{"dense_3_W":[[0.70182776,0.90544015,-0.27932724,-0.49617624,-0.51897824,-0.6904145,-0.59277976,-0.5324393,-0.26049465,0.16030513,-0.42422092,0.3099378,0.20038018],[0.46004465,0.14226505,-0.016798219,0.26416388,-0.23000899,-0.043261927,-0.18217951,-0.56936485,0.18854964,-0.40769655,-0.5120887,0.026711667,0.48702645],[-0.44730246,0.035538714,0.6696084,0.078126684,-0.28074992,0.32122174,0.87967885,0.15473741,0.48827088,0.37981582,0.6514756,-0.90970725,-0.3196454]],"activation":"identity","dense_3_b":[[0.14994316],[-0.13599911],[-0.09733387]]},{"dense_4_W":[[-0.89249825,-0.056084827,0.3851996]],"dense_4_b":[[-0.14319709]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json deleted file mode 100755 index 23317a11ef..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01300x00x00x00x008965B0R02300x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.1625595],[1.2922298],[0.62139535],[0.04567073],[1.2632741],[1.2715808],[1.280602],[1.2693822],[1.2542087],[1.2247165],[1.1909277],[0.045397192],[0.045449946],[0.04549305],[0.04545042],[0.045387167],[0.045147583],[0.044744927]],"model_test_loss":0.007525489199906588,"input_size":18,"current_date_and_time":"2023-08-13_02-31-54","input_mean":[[23.119978],[-0.008106127],[-0.0062186965],[-0.0048029637],[-0.007028825],[-0.0070267622],[-0.007759125],[-0.008229643],[-0.0065412563],[-0.0032345948],[-0.0015808723],[-0.0049269847],[-0.004904426],[-0.004871379],[-0.0047452976],[-0.0047200844],[-0.0047071795],[-0.004768657]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.01577489],[-0.036651418],[-0.53623146],[-0.43403396],[4.226777],[0.031024184],[-4.773621]],"dense_1_W":[[0.005327244,-0.8355596,-5.362093,-0.048572045,0.7178633,0.06106064,0.8468096,-0.2571259,-1.327196,-0.44217587,1.058469,0.056455363,0.14608839,-0.098923415,-0.23918279,0.04020538,0.23786233,-0.12770446],[-0.010223876,-0.72655255,0.016186269,-0.11808472,0.2876596,-1.2712218,0.5667468,-0.06084051,0.22512656,0.3755652,-0.40249628,-0.25125036,-0.21778338,0.5746524,0.078327455,-0.24237496,0.3175813,-0.17065156],[-0.6298655,-0.17408815,0.042584803,-0.12974305,-0.13674054,-0.59153414,1.1252804,-0.2748757,-0.054158274,-0.23418744,0.4553317,-0.65346336,0.012844898,0.62550545,0.32781297,0.10481739,-0.13386554,-0.13798119],[0.114467114,0.24316245,-0.021615224,0.023694778,-0.035225637,-0.8642168,0.8294254,-0.25606933,-0.040379446,-0.3500701,0.15988775,-0.56249446,-0.18230355,0.151895,0.51403975,0.42919087,0.06891423,-0.40883803],[1.7820107,-0.8729092,-0.18928063,0.09309557,0.3607095,-0.41220948,1.5652144,-0.46717206,-0.41226682,0.0013491283,-0.41942984,-0.089314334,0.004005952,-0.0747852,0.009556638,-0.010365505,-0.1098569,0.17348874],[0.0044284705,0.6163098,0.00083640264,-0.094127156,-0.18054871,0.9881279,-1.0137135,0.20937717,0.24207658,-0.08428015,-0.07552825,0.14980052,0.254931,-0.3509042,-0.14109994,-0.101399794,0.15016933,-0.14891316],[-1.9707493,-1.1365594,-0.2105259,0.37518528,0.6739353,-0.65524983,1.7848158,-0.51781315,-0.5952709,0.22437507,-0.5128836,-0.91568863,0.3721105,0.59358186,-0.64745224,0.10847048,-0.029750574,0.1424494]],"activation":"σ"},{"dense_2_W":[[0.1586283,0.49743327,-0.28523076,0.49164057,0.5328539,-0.36973375,0.12624636],[-0.48587608,-0.2487463,-0.402463,-0.3060397,0.36550063,0.62413186,-0.34166646],[-0.061889086,0.13580354,-0.05768418,0.19577123,0.74825233,-1.5275799,0.7398382],[-0.065775804,-0.68621314,0.34632745,-0.27306333,0.108429216,0.30584174,0.09895851],[0.062699154,-0.16094007,0.20373204,0.34869027,-0.24647439,-0.14964825,0.15067333],[-0.52050513,-0.28144282,-0.36549205,0.21830845,0.17705248,0.3885603,-0.4208156],[0.65049803,-0.7067532,-1.0366768,-0.71617734,-0.26613158,0.028896019,-0.6025038],[0.040614616,-0.5860749,0.0055378075,0.17320454,-0.3445164,-0.19920291,-0.76159173],[0.022094827,0.30371666,0.29163453,0.4747085,0.30273658,-0.80259377,0.18885104],[-0.5191858,-0.3626201,0.04160303,-0.24516961,0.25270674,0.3344741,-0.085464925],[-0.51586235,0.04108749,0.4809453,-0.68286794,0.22329661,0.64296246,-0.6787596],[0.71542096,0.24909717,0.18110462,-0.456406,1.59483,-0.40047887,-0.29970673],[0.09926485,-0.012050363,-0.00902432,-0.5706574,-0.62320197,0.99470526,-0.5348278]],"activation":"σ","dense_2_b":[[-0.28907308],[0.14058612],[-0.22265932],[-0.031506367],[0.011181118],[0.09338642],[-0.19179444],[0.025182663],[-0.16790742],[0.019717962],[0.025871284],[-0.48104918],[0.13777581]]},{"dense_3_W":[[0.39214996,-0.45933616,0.5931434,-0.14438477,0.025445614,-0.21986714,-0.4073649,-0.526483,0.32142904,-0.43845606,-0.5522683,-0.45861238,-0.23599972],[0.3541214,-0.12390408,0.65992594,-0.17913954,0.17470582,0.14348052,-0.46156922,0.09727183,0.47791806,-0.44638395,-0.35680237,0.28284937,-0.6322599],[-0.53958935,0.40429562,-0.25718197,-0.016856665,0.27269888,0.5572323,-0.11033956,0.29808432,-0.63412243,-0.18738142,-0.13287298,-0.55771834,0.74253505]],"activation":"identity","dense_3_b":[[-0.011752912],[-0.028205017],[0.029930305]]},{"dense_4_W":[[-0.4310748,-0.71519667,0.99503374]],"dense_4_b":[[0.028201103]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json deleted file mode 100755 index 854e30f3d9..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019 b'x028965B0R01400x00x00x00x008965B0R02400x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.595562],[1.3557196],[0.6436131],[0.045093063],[1.3374771],[1.3439865],[1.3497798],[1.3293898],[1.3081594],[1.2773685],[1.2442381],[0.044867057],[0.044940565],[0.04499815],[0.04493182],[0.04476657],[0.044359777],[0.043740414]],"model_test_loss":0.00823762733489275,"input_size":18,"current_date_and_time":"2023-08-13_02-59-30","input_mean":[[22.373413],[-0.041675597],[0.0139935],[-0.0017189209],[-0.04186074],[-0.041701995],[-0.04159802],[-0.031264056],[-0.02419872],[-0.014140531],[-0.0053126486],[-0.0018288051],[-0.0017968336],[-0.0017687711],[-0.0016978089],[-0.0016784823],[-0.0017457763],[-0.0018253779]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.2825171],[0.29270795],[-0.14191557],[4.8880744],[4.643753],[-0.022068096],[0.0074948124]],"dense_1_W":[[0.0032524515,-1.6502666,-5.143319,-0.08653302,0.74940306,0.079409406,1.0887363,0.55024517,-1.8755168,-0.37473255,1.0061337,-0.0072490247,-0.48503035,0.05145903,0.46511993,0.12256152,0.18945718,-0.26970908],[-0.5688282,0.3378242,-0.0820345,-0.35314164,-0.569916,-0.80707407,0.8573667,-0.4934631,-0.2502392,-0.106414326,0.23248182,-0.14921708,-0.1386045,0.47708175,0.50700176,0.44248942,0.027855754,-0.38461936],[0.21959259,-0.71326935,-0.07979012,0.34530672,0.636172,-1.2988864,0.6678013,-0.25917116,0.09184474,-0.032171894,0.1220121,-0.3971508,-0.46033743,0.8975076,0.10354636,0.072543696,-0.05976872,-0.14628923],[1.9510422,0.3866497,0.3618337,-0.12621135,0.20156476,0.15090744,-0.80365545,0.43618965,0.8912262,-0.21278769,0.53434885,0.22536062,0.21662591,-0.8340567,0.9400496,-0.24009539,-0.18682937,0.011327647],[1.9101932,-0.09988753,-0.35090855,-0.0016594501,-0.08788997,-0.25584847,0.5387623,-0.55900645,-0.7354033,0.11941465,-0.518064,-0.06519748,-0.0017339309,0.3745017,-0.6524051,0.06342098,0.34091005,-0.067744955],[-0.006107121,-0.09839651,-0.012231088,0.30222625,0.07460135,1.6269959,-1.7014208,0.03040909,0.22550346,0.044197246,0.0017101751,0.50942785,-0.16438055,-0.020442167,-0.1508841,-0.29599234,0.049566567,-0.19760182],[-0.020232651,-1.0527381,0.08056227,0.20597994,0.33630684,-1.5990256,0.97233945,-0.28341347,0.16153534,0.3039094,-0.3701453,-0.06703333,-0.18289685,0.3205004,0.21156645,-0.1997296,0.00204575,-0.10895797]],"activation":"σ"},{"dense_2_W":[[-0.57049316,-0.47958663,0.20998815,0.5900954,0.1954957,1.0093216,-0.37459356],[0.0711123,-0.05547968,0.24755229,-0.36353877,0.09672807,-0.2401484,0.6095298],[0.51119304,0.41856906,0.05460875,-0.19852686,0.20700233,-0.63960356,-0.03614955],[-0.44700778,0.22197174,-0.80856746,0.64109397,-0.5748055,0.7630393,-0.5093563],[-0.119287774,0.29882818,0.78802735,-0.5391423,-0.01341688,-0.67587036,0.41711807],[0.18750283,-0.7311276,-0.3832002,0.37338614,-0.50132436,0.13879292,-0.27468982],[0.2099454,0.06710706,0.49674693,-0.27869275,-0.057731844,-0.3134266,0.05398349],[-0.34767157,0.12649035,-0.82919586,0.03299373,-0.30653405,0.2602203,0.034945954],[-0.19299687,0.18560947,0.3825491,-0.08262691,-0.022920206,-0.03981069,0.5391385],[0.06231773,-0.6864966,-0.21304713,0.72882277,-0.8002371,0.68702626,-0.5636007],[-1.1283545,0.66055053,-0.60280657,-0.44466072,-1.1954936,-0.02034466,0.1492789],[0.054777786,0.22702163,-0.23401575,0.25109196,-0.7091251,-0.12651615,-0.074743904],[-0.23125705,-0.038868073,-0.0094622,-0.45092142,-0.56356156,0.11221505,-0.08776925]],"activation":"σ","dense_2_b":[[0.1788275],[-0.029162887],[-0.05410552],[0.14040445],[-0.05081904],[0.03014496],[-0.0008108878],[-0.2395291],[-0.0013514905],[0.25322255],[0.14901285],[-0.2634512],[-0.23830526]]},{"dense_3_W":[[-0.5489028,0.18956307,0.20569573,-0.6213917,0.7467413,-0.54990596,0.4036336,-0.026636245,0.5315489,-0.5165829,-0.7388474,-0.1318045,-0.034361653],[0.380212,0.4771973,-0.44244605,-0.54885596,-0.39711758,0.59357476,0.23979527,0.008609023,0.44370395,0.27729112,0.04513358,0.52764195,-0.15440719],[-0.27805048,0.48927543,0.31558773,-0.2270046,0.21011017,0.098380476,0.47707695,-0.25754115,0.26487526,0.0036550455,-0.24167007,0.37545148,0.19212462]],"activation":"identity","dense_3_b":[[0.028461946],[0.00041110683],[0.007205736]]},{"dense_4_W":[[-1.1770037,-0.121750355,-0.17705767]],"dense_4_b":[[-0.025750196]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019.json deleted file mode 100755 index 771d0d0b45..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2019.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.56172],[1.5150591],[0.61463565],[0.048025005],[1.4822352],[1.4941419],[1.505296],[1.4785786],[1.4448495],[1.4001503],[1.3552352],[0.047890753],[0.047929697],[0.047957852],[0.0478742],[0.047784578],[0.047500774],[0.04700782]],"model_test_loss":0.013011353090405464,"input_size":18,"current_date_and_time":"2023-08-12_23-45-39","input_mean":[[22.329546],[-0.045605175],[0.01592502],[-0.0018784865],[-0.045549437],[-0.045191955],[-0.044704963],[-0.035537414],[-0.026267633],[-0.0157286],[-0.00838497],[-0.001896298],[-0.0018774128],[-0.0018634307],[-0.0018498951],[-0.0018851961],[-0.0019609453],[-0.0019896321]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-4.30314],[-0.14142546],[-0.013767572],[1.194878],[-1.2208039],[-4.3557434],[0.08794612]],"dense_1_W":[[-1.8972677,0.9672059,0.25824386,0.0828847,0.3341447,0.69297504,-1.9695483,0.038245548,1.0612612,0.13501422,0.27874982,-0.09969699,0.0374315,0.48933214,-0.011004679,0.017130712,-0.2716565,-0.23346075],[-0.007528385,2.1774812,-0.114808366,-0.39051452,0.7741447,1.1673083,0.13397868,0.44196582,0.9315971,0.6791667,0.5054393,0.15570343,0.23017462,-0.031832017,-0.076586366,0.25111264,0.24159965,-0.33496174],[0.0030608005,1.4381056,0.11511048,-0.7743296,-0.7203884,1.597554,-0.99584186,0.5960368,-0.19229466,-0.2975349,-0.011686272,0.49059817,0.1897865,-0.60492635,-0.6754905,0.101577304,0.31291947,0.25055414],[-1.0824282,-0.3043732,0.008584764,-0.018848956,-0.2089088,-1.0749328,1.0982482,-0.045640092,0.044488285,-0.11731847,-0.026736904,-0.57326096,-0.046581715,0.0950547,0.23073886,0.3822833,-0.2204155,0.1618918],[1.0632011,0.031152897,0.009230802,-0.39440817,0.18390684,-1.6168276,0.77715576,-0.050903037,0.16450162,0.124611534,-0.24373147,0.17009573,-0.5080612,-0.038760606,0.6419307,-0.1795093,0.24181002,0.07538436],[-1.9245406,-1.2917063,-0.26165596,0.39217517,-0.32974318,-0.9253293,2.608757,0.04103854,-1.2233304,-0.3679585,-0.086496115,-0.66351557,0.284825,-0.11610917,-0.6876215,0.44495583,0.12274311,0.21472873],[-0.0011509256,1.924439,4.888321,-0.34858927,-1.0936936,-0.2615667,-0.22090028,0.51795596,1.1996402,-0.060851824,-1.5311006,0.81339735,-0.17505,-0.25228173,-0.29199755,-0.48492575,0.2323905,0.3359508]],"activation":"σ"},{"dense_2_W":[[-0.04723237,-0.5713439,-0.44814402,-0.3774354,0.23023804,-0.20165691,-0.4617632],[0.81059057,-0.33529666,0.6886719,-0.47035518,-0.55307055,-0.28818864,0.12439424],[-0.11119899,0.1494808,-0.64621824,-0.3822803,-0.10293467,-0.13095938,-0.5011403],[-0.7855487,-0.074596755,-0.277924,0.6098594,0.39072365,0.54389304,-0.04757158],[-1.0348403,-0.13555157,-0.79879016,0.699813,0.8297562,0.72075176,-0.1580287],[-0.12593223,-0.5242968,0.0027506559,-0.9838703,-0.14292116,-0.21127757,-0.4181084],[0.6277679,-0.06471201,0.2519138,-0.44575757,0.0035869328,-0.8165587,-0.14451581],[0.60958606,0.1644053,0.5917127,-0.34198347,-0.19222917,-0.6290825,0.20473154],[-0.29616356,-0.008838329,-0.56584114,-0.01621055,0.6894716,0.5036691,-0.23140316],[0.3176332,0.55119896,0.49262676,-0.6794437,-0.6079304,-0.71099347,0.47087783],[-0.001160002,0.21010941,0.29942355,-0.37181187,0.101982266,-0.29694918,0.7613698],[-0.57210505,-0.40474287,0.14816071,0.5515802,0.71525896,0.29420164,-0.41057208],[-0.031878855,0.1834812,-0.557275,-0.16315645,0.73640525,0.5667018,-0.106642045]],"activation":"σ","dense_2_b":[[-0.28198278],[-0.031724684],[-0.2700433],[-0.14344712],[-0.0712461],[-0.207197],[-0.1985745],[-0.07992782],[-0.09112537],[0.012330677],[0.035785448],[0.029941175],[-0.07723248]]},{"dense_3_W":[[-0.41012377,-0.0750153,-0.51992136,-0.575433,-0.15829727,0.14711393,-0.2113123,0.6098498,0.2744829,-0.19297485,0.11055155,0.11664247,-0.42073438],[-0.42603567,-0.2637008,-0.4624474,0.37126887,0.3297134,-0.24870478,-0.71104676,-0.42295957,0.09491146,-0.68906903,-0.06497983,0.4588389,0.36360323],[0.0015361789,-0.27568248,0.044544894,-0.35505277,0.5103815,0.18121512,0.29294804,0.0725655,0.60120976,-0.026808323,-0.29816794,0.5696804,-0.28550223]],"activation":"identity","dense_3_b":[[0.050192077],[-0.035694942],[-0.053834025]]},{"dense_4_W":[[0.8585161,-1.0563794,-0.6090095]],"dense_4_b":[[0.04216754]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42172x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42172x00x00x00x00x00x00'.json deleted file mode 100755 index f40d2fa792..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42172x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.412672],[1.1979997],[0.6317731],[0.044134922],[1.1613084],[1.1757178],[1.1884606],[1.1675756],[1.1450535],[1.1208285],[1.0900035],[0.043903794],[0.043967567],[0.04402576],[0.044101108],[0.044096585],[0.043959502],[0.04365427]],"model_test_loss":0.009366453625261784,"input_size":18,"current_date_and_time":"2023-08-13_04-00-19","input_mean":[[22.805677],[0.042888522],[-0.002057468],[-0.017817942],[0.045564543],[0.04457066],[0.04343476],[0.04418247],[0.042020433],[0.034090705],[0.033118203],[-0.017768152],[-0.017786173],[-0.017803175],[-0.01795426],[-0.017958898],[-0.018003935],[-0.018080201]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.110753275],[-3.7608747],[0.0069373823],[-0.4614981],[-3.301801],[-0.014949581],[0.13146858]],"dense_1_W":[[-0.0036052228,-0.9134565,0.011775863,-0.104338825,0.50702333,-1.3347127,0.43979335,0.32727206,-0.3549518,0.1707619,-0.06355575,-0.42169005,0.11168042,0.32078785,0.16003191,0.22976972,-0.3087875,0.02821579],[-1.5740833,-0.5183325,-0.25200287,-0.1016893,0.21293215,-0.26341066,0.8987055,-0.7441156,-0.34343657,0.10333513,0.015100161,-0.025416875,-0.34263033,0.3139959,0.31424755,-0.0986391,-0.1432429,0.2556411],[0.012172019,0.7366857,4.0765634,0.5199466,0.5682854,0.4320513,-1.0643913,-0.4115053,0.25080773,0.15999946,-0.6883774,0.4775558,-0.14264597,0.25075626,-0.79590684,-0.5458843,0.14667971,0.2089872],[-0.006554994,-0.65382326,-0.0152408695,0.45012295,0.43787235,-1.2492634,0.96254647,-0.0071797133,0.20040128,0.052020404,-0.12437481,-0.55438083,-0.17110933,0.1521984,0.3463892,-0.29791614,0.38824236,-0.24384183],[-1.5182815,0.36061874,0.24495271,-0.28876624,-0.054025646,0.09653467,-0.6130963,0.58099127,0.13013393,0.15593274,-0.05823013,0.42072526,0.30042237,-0.8197303,0.4167901,0.12898338,-0.19402294,-0.1354475],[-0.0022215121,-0.35342693,0.05437431,0.07748616,0.15085074,-0.74330544,0.8852311,-0.09556112,0.18634337,-0.15945065,-0.00033352937,-0.1618802,-0.19378874,0.112232834,-0.2201298,0.32024163,-0.07431912,0.20214744],[-0.012104868,0.06879351,0.20518698,-0.3500171,-0.54368746,0.8862013,-0.4934571,0.2377762,0.40319738,-0.15937808,-0.36041725,0.014896415,-0.16455528,-0.76308006,0.1687108,0.33528942,0.39151073,0.23726699]],"activation":"σ"},{"dense_2_W":[[0.40863213,1.09518,-0.25529328,0.31099716,-0.23821151,-0.1252298,-0.5552002],[-0.42047146,-0.4827329,0.2864231,-0.765981,0.47332808,-0.15582423,0.40268713],[0.63550895,-0.029280502,0.17191784,1.1201406,0.10288998,0.7509795,-0.70378363],[0.15874045,0.1510755,-0.3895043,0.6858349,0.16745095,0.3997049,-0.4700419],[-0.29952693,0.22967328,0.2863864,-0.810409,0.6171967,-0.8057256,0.08393511],[-0.6486345,-0.023099914,0.4675164,-0.6659177,0.25236258,-0.71584076,0.3096002],[0.71282494,0.33055237,-0.11847034,0.60865057,-0.772154,0.49154654,-0.5714387],[-0.78605217,-0.00037871118,-0.3303249,-0.6224991,-0.14092278,-0.09522645,-0.30699593],[0.8150833,-0.19859204,-0.2607902,0.5500899,-0.53263944,-0.09620078,-0.07882722],[-0.6767907,0.010670528,0.32155117,-0.08829821,0.5477537,-0.07313992,-0.5654307],[-0.09579456,-0.42669368,0.27080974,-0.6856269,0.4908146,-0.70633966,0.13399492],[0.45092934,-1.0722996,-0.5651186,-0.8076614,-0.44906232,-0.43937942,-0.30797964],[0.330296,-0.6318943,0.30196452,0.08447742,0.35562196,-0.72430176,-0.7196764]],"activation":"σ","dense_2_b":[[-0.10103021],[-0.07237988],[-0.10848336],[-0.036251254],[-0.06057428],[0.2591175],[-0.13453443],[0.038662404],[-0.03901396],[-0.10080519],[0.21275711],[-0.16303454],[-0.122491874]]},{"dense_3_W":[[-0.438746,-0.2728812,0.045525227,-0.3864609,0.36935923,0.21368839,-0.5939579,0.16156128,0.114174105,0.013049866,-0.008147875,-0.4032706,0.18928905],[-0.54620934,0.5383141,-0.4279512,-0.4393462,0.6210919,0.52767473,-0.47722214,0.66437435,-0.2349947,0.24046247,0.7181641,0.4821915,0.1510222],[0.63923234,0.064001255,0.62742436,0.21747853,-0.37516952,-0.08939772,-0.07508889,-0.52245426,-0.36398694,0.08213987,-0.6971847,-0.47528505,0.28324062]],"activation":"identity","dense_3_b":[[-0.016175348],[-0.045647956],[-0.029259264]]},{"dense_4_W":[[0.4314022,1.2294345,-0.15208964]],"dense_4_b":[[-0.03797295]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42182x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42182x00x00x00x00x00x00'.json deleted file mode 100755 index 7e99b3ee34..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'8965B42182x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.038209],[1.09115],[0.58841705],[0.04120297],[1.0650965],[1.0757538],[1.0846869],[1.0705407],[1.0502529],[1.0200819],[0.9942558],[0.041278385],[0.041227303],[0.041172404],[0.04093896],[0.04077007],[0.040474173],[0.04011864]],"model_test_loss":0.008322028443217278,"input_size":18,"current_date_and_time":"2023-08-13_04-26-29","input_mean":[[19.35511],[0.030055698],[-0.016438086],[0.010118738],[0.034582045],[0.03268271],[0.030520633],[0.024380086],[0.01949945],[0.009070484],[0.0008187817],[0.010378993],[0.0103315525],[0.010291569],[0.0102992],[0.010390825],[0.010437563],[0.010471735]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.71080106],[-0.39767665],[-1.0195663],[-2.4454567],[2.2261577],[-0.09989114],[0.12794948]],"dense_1_W":[[-0.6734729,-0.28932476,0.0138231935,0.6177876,-0.15232189,-1.1696538,0.730194,0.022715418,0.6191517,-0.14222449,-0.26050287,-0.4294454,-0.33338618,0.43053976,0.0796189,-0.26277167,0.2849497,-0.15557633],[-0.05414103,-2.266047,0.00613671,0.03952902,-1.5264792,-1.9569396,-0.6220431,-1.4173054,-0.75115013,-0.51321524,0.081751466,-0.010653298,-0.18178755,0.30361202,0.1966698,0.10920531,-0.1763718,0.46204364],[0.59744245,-0.45304865,0.01262204,0.17445521,-0.24134386,-1.0839043,0.67658186,0.4959112,0.036302716,0.21944934,-0.37493265,0.031681668,-0.380639,-0.016364183,0.47792554,0.2549743,-0.2674703,-0.011161444],[-0.6851998,-0.400606,-0.49484125,-0.214028,-0.1954561,-0.20455971,0.19458835,-0.62406296,-0.24194877,-0.17115325,0.3458003,-0.38039616,-0.19315414,0.7750066,0.27001703,-0.032702632,0.17871174,-0.09447013],[0.68511105,-0.46930492,-0.49280137,0.10116556,-0.2338568,-0.67072135,0.66908896,-0.36548007,-0.45608816,-0.055914342,0.27099574,-0.15043867,-0.3710818,0.33710575,0.39674795,-0.10886804,0.23883794,-0.13643274],[0.029596586,-1.8378116,-4.835868,-0.117306955,0.68529356,-0.2723494,0.8876275,-0.08609639,-0.17212754,-0.0016869277,0.6372433,-0.34045476,-0.32072458,0.5590455,0.019711575,0.08534893,0.22889003,-0.008147916],[0.12550998,-0.5612814,-0.015401064,-0.12878568,1.311814,-1.4296403,1.0471376,-0.05140145,-0.37987107,0.057461046,0.23428072,0.10266636,-0.17472467,0.22596104,-0.0015113074,-0.029831069,-0.23511468,0.16630976]],"activation":"σ"},{"dense_2_W":[[-0.16429533,-0.37868544,-0.86968327,0.038888782,-0.6123927,0.0023984741,-0.057672873],[-0.8476257,-0.29583248,-0.67205304,-0.36270946,0.27317914,0.37164906,-0.2357329],[0.4565083,-0.055655904,0.442506,0.36896625,0.50816137,-0.031650446,-0.08521712],[0.9475783,-0.42539543,0.16942857,0.6493747,-0.1678662,0.084014334,0.41585678],[0.19024913,-0.35226712,-0.28252858,0.41698533,-0.87595725,-0.58208317,-1.0035533],[0.7211048,0.63076013,0.3922959,1.2696142,-0.70998734,-0.14198317,0.2581067],[-0.83778936,-0.04513129,-0.14693034,-0.14507426,-0.40756947,0.13452101,-0.7361817],[-0.29602185,0.040760204,-0.41493273,-0.40465754,-0.08350711,-0.33569443,0.19498646],[-0.15095061,0.33132613,0.5001891,-0.11200301,0.5794387,0.57178,0.43034536],[-0.67328364,-0.6793664,-0.3576356,0.018860316,-0.34526905,0.2174788,-0.77950203],[0.3714874,0.3679473,-0.5132016,-0.37143388,-0.82780284,-0.5017991,-0.6383511],[-0.10127275,0.23966174,-0.2606357,-0.6428221,-0.50568867,-0.20557041,-0.23762174],[0.020065116,-0.2712377,0.249374,-0.14273904,-0.64751804,-0.7200119,-0.34964135]],"activation":"σ","dense_2_b":[[0.012003523],[0.0066150334],[-0.19111954],[-0.22128096],[-0.17908531],[-0.7933061],[-0.027471995],[0.122777395],[-0.33527485],[0.06287324],[0.14836572],[0.06252556],[0.09372547]]},{"dense_3_W":[[-0.23665334,0.723523,-0.63925576,-0.6986978,-0.17180254,0.12065741,0.11170402,0.09213536,-0.72547287,-0.060505576,-0.07866674,0.598629,0.61649084],[-0.5524962,-0.6655416,0.49857664,0.40452972,-0.23933083,0.37202802,-0.18277252,-0.3782749,0.18721648,-0.7559194,-0.61349714,-0.63339907,-0.47192994],[-0.59970725,-0.032464698,0.5048768,0.3264773,-0.12589443,0.22296196,-0.11026481,-0.4933927,0.17230077,0.19409345,-0.5158414,-0.41455555,-0.16241634]],"activation":"identity","dense_3_b":[[-0.030606706],[0.07558715],[-0.078843266]]},{"dense_4_W":[[0.48447892,-1.2192938,-0.18857154]],"dense_4_b":[[-0.0684882]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json deleted file mode 100755 index e44065aaf6..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022 b'x028965B0R01500x00x00x00x008965B0R02500x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.7215185],[1.5296972],[0.6329213],[0.048140034],[1.5023713],[1.5115433],[1.5213315],[1.4992337],[1.4733845],[1.4334533],[1.382772],[0.047901835],[0.047970153],[0.04804064],[0.048103515],[0.048074424],[0.04788978],[0.047572568]],"model_test_loss":0.007313914597034454,"input_size":18,"current_date_and_time":"2023-08-13_04-58-50","input_mean":[[24.426073],[0.0035376903],[0.010450098],[-0.0058580884],[-0.0003155768],[0.0006170886],[0.000841817],[0.008119883],[0.013678599],[0.016964255],[0.018914642],[-0.005899203],[-0.0058827517],[-0.0058742235],[-0.00586261],[-0.005887352],[-0.006023831],[-0.006199134]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.9262018],[0.6111764],[-0.21979779],[-0.08344832],[0.022952111],[2.2652647],[-0.055222925]],"dense_1_W":[[0.9477257,-0.010930782,0.2693092,-0.45176712,0.17638065,1.0103005,-1.1566194,0.1956058,0.48887056,-0.27086145,0.17099643,0.25299495,0.017165674,0.022744065,-0.2071281,0.51604414,-0.05360476,-0.08305532],[1.0653174,-0.19370075,-0.025619261,-0.07976432,0.21888945,-0.01620505,1.3145335,0.19960856,-0.16116017,-0.078303546,0.18846263,-0.4369984,0.07841701,0.5242291,0.21971513,-0.06500557,-0.6251961,0.35055155],[-0.010343126,-1.5992315,-5.575023,0.1296738,0.96921855,0.65707296,0.41981772,-0.39755943,-0.6237099,-0.5377202,0.82652205,-0.46393546,-0.0025167326,0.041792773,0.53836185,-0.20812295,0.23478688,-0.22422998],[-0.06835915,-0.6826863,-0.015550686,-0.1606268,0.49856377,-1.4255869,0.9663564,-0.13549313,0.11399871,-0.09810915,0.016424825,-0.27376917,0.32651708,-0.062065434,0.25883147,0.07828936,-0.12748928,-0.020732597],[0.1960928,0.63389885,-0.03986251,-0.14436735,0.3994569,1.0923187,-1.275591,-0.005756016,-0.022560176,0.09950554,0.08471099,0.21786727,0.053738844,0.26008365,-0.37622976,-0.28200307,-0.0041179312,0.25905907],[0.88009626,-0.059545647,-0.22990677,0.07681021,-0.3075392,-0.30781925,0.5865939,-0.20266494,-0.2824905,0.08512942,-0.08384962,-0.23466583,0.10275819,0.017015647,0.14026842,-0.11592076,0.022960545,-0.014085652],[-0.0016292254,-0.029161997,0.011123573,0.08816466,0.2067326,-1.0287801,0.82265383,-0.50439996,-0.41555846,0.018268801,0.21765414,-0.426295,0.08660844,0.20978588,0.32856998,-0.16593574,0.3182436,0.065723486]],"activation":"σ"},{"dense_2_W":[[-0.661899,0.42421028,0.1291513,0.5268525,0.27374566,0.14350797,0.048248857],[-0.11925823,0.11275892,-0.41860747,0.54141617,-0.53575426,0.08692167,0.5685374],[-0.47604066,0.40048516,-0.20540014,0.2697244,-0.59070647,0.4921443,0.2070969],[-0.32401973,-0.38705194,0.27830896,0.67634106,-0.7964134,-0.31952748,0.38753203],[0.24913147,-0.6288573,-0.30587563,-0.6941863,0.49562398,-1.0631434,0.14025775],[0.38366526,0.10850745,-0.16820778,-0.61344117,0.7374608,-0.6747489,-0.4225247],[-0.92967755,-0.35374784,0.19986466,-0.42288387,0.06183304,0.25832188,-0.25597203],[0.37240422,-0.8985459,-0.7266072,-0.50966,0.232016,-1.608445,-0.05613529],[-0.48152244,-0.6014514,0.05382254,-0.49254656,-0.49155635,-0.2361675,-0.46588454],[0.1545446,-0.4907671,0.5083054,-0.2939329,-0.4241678,-0.30181906,0.023612102],[0.5494282,-0.58802557,0.2443711,-0.25153464,1.2320807,-0.1922564,-1.3002108],[1.0176622,-0.21668118,-0.57886964,0.23822442,0.5329754,-0.22148608,-0.86639875],[-0.64741355,-0.27867457,-0.3316186,0.47602695,-0.22179708,0.23058596,-0.22336796]],"activation":"σ","dense_2_b":[[-0.014282428],[-0.015652178],[-0.049183264],[-0.036203776],[-0.056914896],[0.044381518],[-0.24765426],[0.18313628],[-0.24192591],[-0.027628785],[0.10131799],[0.16464141],[-0.029622875]]},{"dense_3_W":[[-0.30585924,-0.29776183,0.017245587,-0.13364966,-0.03414496,-0.038568087,-0.4033021,0.49503553,-0.28328845,0.058581755,-0.52184415,-0.048386358,0.3499786],[-0.4463572,-0.28294104,-0.3023481,-0.6776053,0.3948947,0.5377114,-0.4929832,0.6458604,-0.41316226,-0.25560462,-0.017290222,0.52392954,-0.13529858],[-0.31588498,-0.4325672,0.013085138,-0.35966408,0.3466711,0.64089996,0.41701752,0.48426676,0.4087031,-0.117455825,0.54724884,0.014698518,0.3365335]],"activation":"identity","dense_3_b":[[0.03199178],[-0.015016341],[-0.030428993]]},{"dense_4_W":[[-0.47214445,1.2712222,0.7399426]],"dense_4_b":[[-0.017716983]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45070x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45070x00x00x00x00x00x00'.json deleted file mode 100755 index 1d00c216e5..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45070x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.280848],[1.1441286],[0.49247316],[0.043405242],[1.1318773],[1.1372043],[1.1416951],[1.1172512],[1.0926574],[1.0570114],[1.0212463],[0.043282885],[0.0433304],[0.04336672],[0.043335043],[0.043221824],[0.042944487],[0.042431764]],"model_test_loss":0.016205428168177605,"input_size":18,"current_date_and_time":"2023-08-13_05-56-46","input_mean":[[22.453661],[-0.009690426],[0.0065032323],[-0.011651958],[-0.011165308],[-0.010400566],[-0.010001306],[-0.006500233],[-0.0026201021],[-0.00101425],[0.0021699886],[-0.011677432],[-0.011668723],[-0.011660133],[-0.011728811],[-0.011773433],[-0.011841056],[-0.011894497]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.45916697],[0.17990263],[2.2869246],[-0.1486742],[2.143754],[-0.3825331],[0.16539572]],"dense_1_W":[[0.10585518,-0.46735394,-0.009863335,-0.021381542,-0.4244482,-1.2823756,1.3433533,-0.017593514,0.100421146,0.03068365,-0.19143356,-0.8520446,0.08467846,0.82457775,0.26455942,-0.011366051,0.06678089,-0.16026749],[-0.06685822,-1.7700669,0.11150118,-0.28181335,-1.0776445,-2.2213879,0.06633769,-0.15360656,-0.8972572,-0.9021122,0.29181656,-0.7535559,0.32498777,0.30637822,-0.28905466,-0.0010783104,-0.22794016,0.15364477],[1.2818815,0.109987624,0.2811549,-0.068773136,0.79602146,1.4748589,-1.2838098,0.6895842,0.17164242,-0.20557097,-0.15411322,0.64261883,-0.10280259,-1.076077,0.26151523,-0.14356074,0.22765741,-0.1712026],[0.00041574636,-0.8197861,-7.5684586,-0.20047867,1.8402718,1.5231626,1.8098993,-0.22563997,-3.465762,-1.2912288,0.45179537,-1.9075481,-0.4387407,0.33126295,0.9639218,0.17788078,0.9106507,0.21989372],[1.3135848,-0.7858198,-0.29094377,0.46257696,-0.6470547,-1.1060529,0.93220985,-0.29039016,-0.13737987,0.22807792,0.091788515,-0.4748053,0.29867622,0.10891013,0.1858073,-0.2401894,0.0743765,0.03681374],[0.17066078,0.8237773,0.015143466,-0.29137167,0.4125562,0.54849124,-1.2481003,0.22669321,0.16218764,0.29865333,-0.25207785,0.55817974,0.21856284,-0.39747208,-0.28270063,-0.124221325,-0.20349917,0.31628203],[0.009792184,1.0716915,2.69444,-0.35925958,-0.23096997,0.36079913,-0.89602,0.5258335,0.7044103,0.23169777,-1.0493258,1.1821613,0.088788554,-0.035593744,-0.9683611,-0.04424868,-0.010434928,-0.043576322]],"activation":"σ"},{"dense_2_W":[[0.88951546,-0.42895758,0.10749227,-0.3381338,0.09804924,-0.3220585,-0.34573475],[-0.17474814,-0.7170482,-0.4465272,-0.64623255,-0.80796534,0.3396964,0.07690326],[-0.5762065,-0.6574665,-0.29811725,-0.5354601,-0.6161121,-0.66814727,-0.2610467],[-1.3073108,0.15640761,-0.30923235,-0.17911297,-0.16084199,0.69541067,-0.20413654],[0.90569836,0.4278247,-0.25071362,-0.5082455,0.06064604,-0.63132465,0.46831772],[-0.094200686,-0.14353256,-0.27645656,-0.27311286,-0.14429812,0.091689125,-0.28688306],[-1.1108559,-2.1028638,2.165349,-0.4345446,1.483305,1.620506,0.45829046],[0.09066979,0.10443071,-0.6832421,0.356451,-0.74987555,-0.29007706,-0.6587826],[-1.3760568,0.9482072,-0.18900378,-1.0709974,0.0681376,1.1254492,0.5331122],[-0.07830287,-0.39997748,-0.14344335,0.5135632,-0.47504225,0.22800393,0.12365315],[0.63020027,0.13533631,-0.3766346,0.527763,-0.6002866,-0.6792991,-0.053642306],[-1.2443005,-0.5468849,-0.62122345,0.013166506,-0.86239994,0.025351316,0.6255306],[-0.8236448,-0.8727682,-0.48299453,-0.04941957,-0.7763088,0.8878766,-0.12215169]],"activation":"σ","dense_2_b":[[0.0247172],[-0.06766249],[-0.24181516],[0.13942689],[-0.0052647507],[-0.0077950996],[0.6178939],[-0.27566597],[0.032193415],[0.014206651],[-0.071907036],[-0.05319885],[-0.047229856]]},{"dense_3_W":[[0.47991514,-0.21854271,-0.1804915,-0.48911753,-0.10791347,0.23705998,-0.4666875,-0.48106343,0.2307863,-0.26415148,0.40653455,-0.6642067,0.26701903],[-0.28657764,0.53769946,-0.40891734,-0.02096517,0.2780794,0.44527766,-0.24414495,0.3990269,0.20819953,-0.3683124,-0.29138583,-0.5663968,0.52042514],[-0.3011377,0.5968053,-0.0044070026,0.30039677,-0.6778224,-0.44649825,0.21434684,-0.3961862,0.7583285,-0.32607108,-0.66463107,0.40846905,0.67910755]],"activation":"identity","dense_3_b":[[0.035978876],[-0.011928141],[-0.029860198]]},{"dense_4_W":[[-0.5814999,0.06673667,1.1037177]],"dense_4_b":[[-0.030712485]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45080x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45080x00x00x00x00x00x00'.json deleted file mode 100755 index fcae3d72da..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45080x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.146588],[0.95418143],[0.43340117],[0.03905011],[0.9479113],[0.9499558],[0.9510725],[0.94235235],[0.9326399],[0.91747427],[0.90183586],[0.039001305],[0.03900259],[0.03900094],[0.03879979],[0.0386242],[0.038319785],[0.037957985]],"model_test_loss":0.011259999126195908,"input_size":18,"current_date_and_time":"2023-08-13_06-22-55","input_mean":[[24.366568],[0.0021789675],[0.0025915417],[-0.0051793563],[0.00033371797],[0.000241019],[0.00014475512],[0.0025261848],[0.007706368],[0.008204942],[0.0068165124],[-0.0052624918],[-0.0052542],[-0.0052515985],[-0.0052647493],[-0.0052907555],[-0.005419828],[-0.0056095705]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.7336471],[0.02469658],[0.35684168],[-0.3532868],[-1.130788],[-0.080318995],[-1.5789121]],"dense_1_W":[[-0.64860713,-0.5713194,-0.0010171949,-0.8196765,0.5477699,0.7899214,0.23730105,0.33738092,0.032365516,0.044066656,0.112801746,0.04844126,0.52755666,-0.16293125,0.2042048,0.385338,-0.20983423,0.022781417],[0.01108318,0.46447736,0.031032741,-0.6179811,0.24768326,0.91782635,-1.3839803,0.19786762,0.18436638,0.3508326,-0.30270633,0.1014005,0.5165744,0.25080827,-0.654024,-0.83023304,-0.030366233,0.38658044],[1.1167343,-0.5371559,8.987758e-6,-0.21433865,-0.07572796,0.5795516,-1.3121548,-0.58627963,0.30778974,-0.009247612,-0.023929322,0.62669486,-0.02801999,-0.54888064,-0.2571279,0.40885362,0.01660022,-0.031134106],[-0.07193165,1.1033614,4.970244,-0.30471626,-1.0119324,-0.46201298,-0.7883615,-0.069143996,1.3630129,0.77040046,-0.84834325,1.7408925,-0.05897951,-0.097375624,-0.20112686,-1.0965652,-0.44313067,0.49282008],[-1.170487,-0.874422,-0.00026626769,-0.28228784,-0.088807434,0.43260026,-1.0325773,-0.096812546,0.17837521,0.109854095,-0.14968073,0.12017141,0.53054005,-0.51490897,0.024915364,0.15639779,-0.2467258,0.1595003],[0.022389904,1.0608602,-0.00092857826,0.28875074,0.21020184,0.5167493,-0.5882544,0.021157121,0.032180592,-0.2136807,0.19360738,0.55395454,-0.30576155,-0.51958877,-0.11451182,0.04725566,0.11142395,-0.04842062],[-0.7362178,-1.3755006,0.00096091843,-0.22289632,-0.1438102,-0.9025203,1.0324214,-0.18327402,0.08280124,0.023658695,-0.08867019,0.047302973,0.25789154,0.040970705,0.12989049,-0.39808056,-0.12234827,0.25104594]],"activation":"σ"},{"dense_2_W":[[0.78154695,0.21511142,-0.43714777,-0.030767908,-0.009173835,0.7183903,-0.14342828],[-0.54066896,-0.20156115,-0.35385814,-0.26441637,-0.02107599,-0.84845865,0.29214594],[0.3124417,0.21180186,0.063465446,-0.20406622,0.40963924,0.59125894,-0.7869325],[-0.7548771,-0.43420765,-0.02560193,0.41974467,-0.51081544,-0.7608768,0.20380737],[0.1265696,-0.17943808,-0.43707883,-0.28236973,-0.8968599,-0.34403643,-0.035097532],[-0.101388685,0.3316813,-1.1519573,-1.6520184,0.3636926,-0.7423692,1.2117586],[0.15023874,0.345581,-0.46650666,0.11859452,-0.2518907,0.79158175,0.23256831],[-0.10569177,0.5604173,0.68333226,0.8951173,0.042214226,0.38135228,-0.8231335],[-0.8847682,-0.68416154,0.4569707,0.47695133,-0.38582966,-0.57144934,0.7719593],[0.27912247,0.13382833,-0.7093698,-0.68917704,-0.6986833,-0.71800274,0.44724673],[-0.24284345,-0.20109548,-1.1195686,-0.67754227,-0.48026723,-0.24137561,-0.04529532],[-0.038835,-0.9078514,0.17316182,0.119565316,-0.9398113,-0.016460646,-0.50889707],[-0.50108016,-0.11253731,0.23106413,0.06696553,-0.15908737,-1.1488036,0.34958452]],"activation":"σ","dense_2_b":[[-0.1418599],[-0.19710542],[-0.110050105],[0.1076101],[-0.12195556],[-0.021285616],[-0.07804289],[-0.14162357],[0.061964434],[-0.079768986],[0.12962815],[-0.0064196354],[-0.016493268]]},{"dense_3_W":[[-0.72732776,0.14124086,-0.20111452,0.42510116,0.15858391,0.57676667,-0.5278801,-0.6789197,0.5398626,0.54049456,0.6322282,0.3313076,-0.17548639],[-0.21989414,-0.5007377,0.73611426,-0.5268293,-0.031320885,-0.20501229,0.061116677,0.49025694,-0.24863736,0.5271555,-0.5499532,-0.14880382,-0.44022956],[-0.7556335,-0.42262074,0.31918573,-0.032287117,0.20668483,0.54373014,0.04109339,-0.082154974,0.545164,0.57818425,0.51500225,0.51791734,0.3929478]],"activation":"identity","dense_3_b":[[-0.06250194],[0.06764598],[-0.09165578]]},{"dense_4_W":[[-0.7602953,0.7817076,-0.72182196]],"dense_4_b":[[0.06962905]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45082x00x00x00x00x00x00'.json b/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45082x00x00x00x00x00x00'.json deleted file mode 100755 index d639277c31..0000000000 --- a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018 b'8965B45082x00x00x00x00x00x00'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.3108945],[0.9977488],[0.42284822],[0.037617117],[1.0103788],[1.0064898],[1.0015848],[0.96092135],[0.9357677],[0.9055774],[0.8795561],[0.037663084],[0.037589002],[0.037515257],[0.037092976],[0.03673727],[0.03622884],[0.03562327]],"model_test_loss":0.015439342707395554,"input_size":18,"current_date_and_time":"2023-08-13_06-49-13","input_mean":[[29.371658],[0.12545165],[-0.0012615778],[0.0063813236],[0.12261632],[0.12388965],[0.12581488],[0.12562975],[0.12590235],[0.12706079],[0.12586853],[0.0063036233],[0.0063308002],[0.006360097],[0.00641069],[0.0063860607],[0.006380691],[0.0061025573]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.0672929],[-0.002385034],[0.046296448],[0.73421615],[-0.6588893],[-1.5203205],[1.178525]],"dense_1_W":[[0.0065662013,-0.6906884,-8.1669035,-0.22963533,1.287303,0.5623414,0.97596943,0.16876543,-1.4308753,-1.2607023,0.13512084,-2.2520604,-1.0734065,-0.38555807,1.2478017,1.5954043,1.0332317,0.11683866],[-0.0008281875,-0.12043914,0.46533456,-0.1880658,0.27793694,0.32328263,-0.9494933,0.4474304,0.47546932,0.075196765,-0.5856884,0.67132443,-0.33427218,-0.5053345,0.52054983,-0.190718,-0.0054882555,0.030913128],[0.004268137,0.87534344,-0.0032283473,-0.4999181,0.051706053,1.3251885,-1.0996927,-0.11573633,0.022052824,0.030778117,0.095333256,1.2366601,0.09371897,-0.86040866,-0.4691007,0.45319134,-0.14319059,0.20172225],[-1.4501123,-0.6050599,0.0043176105,0.12684159,0.17847362,-0.49170303,0.61515486,0.041966554,-0.15754142,-0.12259134,-0.02399008,-0.122417435,-0.5506387,-0.10183553,0.4896619,0.68033147,0.18162476,-0.11971624],[1.4376184,-0.5808021,0.004164574,0.04148571,0.017012099,-0.06272477,0.43186155,-0.13221015,-0.15635422,-0.038162798,-0.035955418,-0.5861744,-0.56593215,0.43877664,0.59369725,0.7450232,0.041334633,-0.12955528],[-0.1895313,0.7552585,-0.0040314286,-0.048676625,0.5563838,1.239188,-0.71320075,0.004504845,0.09257285,0.088156074,0.09986293,0.47695497,-0.39355606,-0.7343243,-0.06684374,0.1638444,-0.09659141,0.051680643],[0.14741042,0.5720669,-0.0017892478,0.07270701,0.6063258,0.8279095,-0.346793,-0.025372941,0.23078395,-0.065968886,0.13636668,0.4493458,-0.5984418,-0.52184445,-0.11649629,0.032802615,0.11504312,-0.050546043]],"activation":"σ"},{"dense_2_W":[[-0.8641727,0.50495005,0.40094075,-0.34386104,-0.5465309,1.390671,-0.37600058],[0.11031162,-0.6909326,-0.5312116,0.61976224,0.24802525,-0.16967447,-0.14283815],[-0.8193451,-0.1972297,-0.214771,-0.73892933,-0.30986032,0.15499435,-0.501575],[0.5308305,-0.24228737,-0.016963648,-0.43746594,0.35429764,0.046517015,-0.042451978],[-0.22441098,-0.120023474,-0.49286667,-0.018089095,0.29138842,-0.5673456,-0.48546997],[0.13753492,-0.1153832,-0.55610204,0.15406573,0.006365648,0.17939411,-0.6658586],[-0.65625983,0.09770354,0.78839475,-0.38033855,-0.27879944,0.659594,-0.27876693],[-0.3875123,0.5326739,0.75927013,-0.44852605,-0.32855642,-0.25641,0.7448988],[0.5429655,-0.13947411,-0.4124438,0.27981234,0.3692258,-0.5504224,-0.14990781],[0.106620625,-0.45364022,-0.6481817,0.6618234,-0.06181281,-0.22667481,-0.30472475],[-0.5421591,-0.2735785,0.92352885,-0.058677003,0.48104942,0.3428449,2.177085],[-0.1457072,-0.10735246,0.016251013,0.42414185,0.43490586,-0.6780911,-0.6813793],[0.06390021,0.47467482,0.009300271,-0.14595152,-1.045413,0.53024256,0.597365]],"activation":"σ","dense_2_b":[[-0.6563135],[0.040393732],[-0.24838637],[-0.0036740543],[0.15817301],[-0.25935638],[-0.4186771],[-0.058852207],[0.024473231],[0.120795585],[0.114583485],[0.12427014],[-0.21818934]]},{"dense_3_W":[[0.46204138,0.5743686,0.6254067,0.2262725,0.5390763,0.086523645,0.22651961,-0.07199567,0.16185366,0.031094545,-0.34022743,-0.4233551,-0.067053996],[-0.2599459,0.352036,-0.20220354,0.19399881,0.23690616,-0.14081447,-0.55412626,-0.6064963,0.34574237,0.33883986,-0.18335809,0.6122457,-0.54077035],[0.77093464,-0.4317505,-0.47253096,0.28200352,-0.36024985,-0.5413245,-0.50765145,0.5250093,-0.31016317,-0.49643394,0.35564622,0.0021692468,0.07358482]],"activation":"identity","dense_3_b":[[0.007873758],[0.034414034],[-0.0254829]]},{"dense_4_W":[[-0.17727825,-1.1712774,0.5170622]],"dense_4_b":[[-0.03209859]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016.json b/selfdrive/car/torque_data/lat_models/TOYOTA_AVALON.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2016.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_AVALON.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA_AVALON_2019.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2019.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_AVALON_2019.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA_AVALON_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA AVALON 2022.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_AVALON_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA_CAMRY.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2018.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_CAMRY.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021.json b/selfdrive/car/torque_data/lat_models/TOYOTA_CAMRY_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA CAMRY 2021.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_CAMRY_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA_CHR.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA C-HR 2018.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_CHR.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA_CHR_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA C-HR HYBRID 2022.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_CHR_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_COROLLA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA COROLLA 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_COROLLA.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA_COROLLA_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA COROLLA TSS2 2019.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_COROLLA_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_HIGHLANDER.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_HIGHLANDER.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020.json b/selfdrive/car/torque_data/lat_models/TOYOTA_HIGHLANDER_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA HIGHLANDER 2020.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_HIGHLANDER_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA MIRAI 2021.json b/selfdrive/car/torque_data/lat_models/TOYOTA_MIRAI.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA MIRAI 2021.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_MIRAI.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA PRIUS 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS TSS2 2021.json b/selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA PRIUS TSS2 2021.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA PRIUS v 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS_V.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA PRIUS v 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_PRIUS_V.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_RAV4.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_RAV4.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017.json b/selfdrive/car/torque_data/lat_models/TOYOTA_RAV4H.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2017.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_RAV4H.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019.json b/selfdrive/car/torque_data/lat_models/TOYOTA_RAV4_TSS2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA RAV4 2019.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_RAV4_TSS2.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022.json b/selfdrive/car/torque_data/lat_models/TOYOTA_RAV4_TSS2_2022.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA RAV4 HYBRID 2022.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_RAV4_TSS2_2022.json diff --git a/selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018.json b/selfdrive/car/torque_data/lat_models/TOYOTA_SIENNA.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/TOYOTA SIENNA 2018.json rename to selfdrive/car/torque_data/lat_models/TOYOTA_SIENNA.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020800'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020800'.json deleted file mode 100755 index aee9fbdaff..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020800'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.774439],[0.68836546],[0.39663407],[0.035043336],[0.67726237],[0.6812185],[0.6851642],[0.67571765],[0.6658719],[0.65097946],[0.6362429],[0.034919888],[0.034944225],[0.034970142],[0.034958802],[0.035017386],[0.035055906],[0.03502549]],"model_test_loss":0.007673596031963825,"input_size":18,"current_date_and_time":"2023-08-13_08-08-06","input_mean":[[26.031902],[-0.060294222],[0.00040313246],[-0.011659955],[-0.05902993],[-0.060128476],[-0.06107497],[-0.059999887],[-0.05612731],[-0.05281684],[-0.044799715],[-0.011695448],[-0.011712971],[-0.011732531],[-0.011664448],[-0.011644356],[-0.01155927],[-0.011499585]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.049030554],[-0.10284916],[2.1669703],[-0.7598165],[-1.5671357],[-1.0467316],[-0.21518126]],"dense_1_W":[[0.0015833939,0.3628037,-1.1379211,0.41206348,-0.3174675,-1.0719817,0.55315006,0.16118664,-0.72761345,0.085280344,0.51755583,-0.20497443,-0.31990555,0.07199009,-0.022201924,0.29279125,0.027291393,-0.22479561],[-0.22103259,-2.2058318,0.0018786002,-0.12338179,0.040423285,-0.77381456,-0.7999449,-0.89398247,-0.15317886,-0.14315447,0.18191607,-0.29653367,0.16505532,0.51925987,-0.23665445,0.14255223,-0.024358846,-0.018557316],[0.71575314,0.8240314,0.008927517,-0.42483628,-0.3114511,1.1394252,-0.5804155,0.11425652,0.18163292,0.13206053,-0.13476585,-0.11367035,0.26001,-0.5135676,0.54607356,0.48701724,0.28660864,-0.51631993],[0.66036284,0.59087783,-0.00230013,-0.2067205,-0.6735332,1.4597267,-0.45294723,-0.19073394,-0.2648436,-0.03875138,0.19050239,0.4679514,0.035935957,-0.15239997,-0.27455324,-0.70898926,-0.09578253,0.44405428],[-0.45520136,1.0866009,-0.0010808597,-0.14738974,0.096503034,0.46348053,-0.5462861,-0.075428344,-0.10546405,0.13248663,0.0108337905,0.44465065,-0.50142854,-0.17432131,0.08642302,0.38780424,0.2626273,-0.33542085],[0.7531839,-0.15485106,-0.00046390522,0.49195373,0.10571833,-0.8325452,0.35377154,-0.08773462,0.0057901233,-0.033657778,-0.024466574,-4.581234e-7,-0.05356497,-0.40087822,0.60264814,-0.18609272,0.31572378,-0.23848133],[0.06056683,-0.64557314,-8.907912,0.30529982,-0.09389138,-0.5915903,0.25837407,-0.05178803,0.11875724,0.40244415,1.1496543,-0.26229003,-0.46595177,-0.2651267,0.81698227,0.4063907,0.031472377,-0.27899668]],"activation":"σ"},{"dense_2_W":[[0.3929737,0.3355438,-0.24939334,-0.8681119,-0.47513258,0.7011935,-0.2938572],[-0.19074927,0.28745645,0.5773505,0.73283035,0.6470788,-0.24172986,-0.268829],[0.29614463,-0.3138745,-0.28980806,-0.0015691076,-0.111617155,0.232167,-0.67932785],[-0.7735293,0.051889855,1.011741,1.6678485,0.8912051,0.70964855,-1.0375358],[-0.5269584,-1.0374653,-0.4922506,-0.34657186,1.5273697,-1.3772768,-0.5722175],[0.615394,-0.06539898,-0.45568255,-0.20143689,-0.47749588,0.86022294,-0.21714544],[0.38749975,-0.022513922,-0.14868331,-0.25780904,-0.23281977,0.06569774,-0.25363374],[0.5056675,-0.32965812,0.019247672,-0.17208679,0.2147651,-0.095847994,0.45504293],[-0.16795017,0.27483287,-0.67279655,-0.41054696,-0.32219192,-0.067795895,-0.111805394],[-0.6812337,-1.2262623,0.059217807,0.2936333,0.25215864,-0.6689207,0.5118572],[-0.7462057,0.03548215,-0.48534322,-0.59371406,0.69966376,-1.1789167,-1.1984698],[0.066431336,0.2048392,-0.46290568,-0.10662247,-0.66402173,-0.15764749,-0.41801584],[-0.4591004,0.023616942,-0.31438425,-0.7513188,-0.28229564,-0.5397509,-0.2550711]],"activation":"σ","dense_2_b":[[0.14723389],[-0.13598567],[-0.113603],[0.3382584],[-0.26982328],[0.071502306],[-0.027666062],[-0.09013021],[0.0439448],[-0.4045584],[-0.16309273],[0.021524023],[-0.31809625]]},{"dense_3_W":[[-0.37160635,0.6519445,-0.2852499,0.3879301,0.13172154,-0.12497152,-0.57542557,-0.17398404,-0.6902231,-0.038447704,0.6596773,-0.16343056,-0.37051415],[-0.29400083,-0.2377071,0.08535129,0.26676917,-0.5493988,-0.351432,0.47058952,0.5485086,0.056337833,0.5403655,0.17921905,-0.11200504,0.41892666],[0.69202274,-0.34028688,-0.19272918,-0.38122672,-0.43775746,0.66532624,-0.38657436,-0.32455662,0.3592691,-0.45225328,-0.18025218,0.19789042,-0.41285962]],"activation":"identity","dense_3_b":[[-0.019216945],[-0.0018677257],[0.040205568]]},{"dense_4_W":[[0.8999063,-0.10676796,-0.8298675]],"dense_4_b":[[-0.022871539]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002MB4092M7N'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002MB4092M7N'.json deleted file mode 100755 index d0890c1ab4..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002MB4092M7N'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.2229753],[0.7611405],[0.44096765],[0.032897122],[0.7546119],[0.75747573],[0.7597603],[0.74507344],[0.73157114],[0.7157408],[0.70553976],[0.03276775],[0.032820396],[0.032851215],[0.0328969],[0.032961197],[0.03302519],[0.03315028]],"model_test_loss":0.014566068537533283,"input_size":18,"current_date_and_time":"2023-08-13_08-33-26","input_mean":[[24.0553],[0.05153281],[0.015448316],[-0.014650657],[0.04650553],[0.04824544],[0.049862176],[0.0546265],[0.053556256],[0.05162971],[0.04806687],[-0.014739772],[-0.014722749],[-0.014703085],[-0.014610224],[-0.014595721],[-0.014765067],[-0.014981542]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.16389364],[-0.09017541],[-1.1647506],[-0.6587049],[-0.060985837],[-0.21915653],[-0.11024977]],"dense_1_W":[[0.001650034,-0.92548645,0.0649104,0.028528351,0.5250701,-0.5574239,0.38432446,0.10459642,-0.35498068,-1.078298,0.8481259,-0.27305496,0.002911391,0.3782357,-0.14095218,0.0827578,0.32712424,-0.23005211],[0.0902557,0.32735464,-2.28293,-0.66071206,1.7252614,-0.43295604,0.38447145,-1.2641565,-1.1254754,0.601649,-0.22029242,-0.06569076,0.2504662,-0.36702126,0.3171216,0.8626499,0.028089207,-0.43380517],[0.5821453,0.15223487,2.6885037,-0.17222582,0.15152413,-0.9019428,0.38670883,-0.23797712,0.06278605,0.09316208,0.33182064,-0.1686998,-0.39460248,0.06328239,0.59990156,0.52030545,-0.05340852,-0.37717444],[0.38206068,-0.0565225,-2.2878838,0.27850866,-0.07075595,0.79982686,-0.42363936,0.40338862,-0.26033697,-0.11626149,-0.30429554,0.26288483,-0.033476517,-0.5080968,-0.3249822,0.20929106,0.270843,-0.18540776],[0.023973651,-1.1213268,2.1238108,-0.024581453,1.0142306,0.6209359,-1.075154,0.48566073,0.18506725,0.013205165,-0.1463418,0.35358152,-0.15770157,-0.08743086,-0.30606773,-0.042505883,0.46283403,-0.18692932],[-0.0021915815,-1.1354867,-0.06360406,0.447425,0.4746199,-0.28277287,-0.023870196,0.34384865,0.21172099,0.1064795,-0.13672785,-0.19995657,0.14958183,-0.23914275,0.06216524,-0.12911916,-0.055552065,0.043550123],[0.0017299546,0.8092503,0.05173706,-0.16951394,-0.479756,1.210766,-0.70967305,-0.10443872,-0.42421815,-0.4633462,0.4819916,0.41747493,-0.20445484,-0.2810944,0.10567981,0.15402447,-0.109205164,0.025440434]],"activation":"σ"},{"dense_2_W":[[-0.39135623,0.27202022,-0.6013986,-0.64582634,-0.6761625,-0.034833696,-0.47770235],[-0.6643015,-0.07582451,0.28175977,-0.17720482,-0.13394056,-0.57026803,-0.20838319],[-0.76068735,-0.03635872,-0.32094952,0.3875149,0.0033950128,-0.11746398,0.11166597],[0.09897547,0.34849387,0.34470668,0.32905695,-0.39746615,0.6536501,-0.73582923],[0.3257729,0.8186221,0.462827,0.206003,-0.791141,0.5543548,-0.55780596],[-0.59339374,-0.5604979,-0.37463582,0.15022774,0.08227588,-0.12084131,-0.72836936],[-0.10631841,0.64733845,-0.19081868,-0.8196671,-0.5185302,0.57588714,-0.8418388],[-0.28855416,-0.40788642,-0.22638142,0.039785244,0.42720664,0.08895065,-0.114857286],[0.7554024,0.09335394,-0.038691644,-0.51206696,-0.6964066,0.79751784,-0.5822203],[-0.36288157,-0.37563536,0.41425094,0.264427,0.41743213,-0.2764543,0.64417255],[-0.8176743,-0.010832012,-0.41458604,0.18923777,0.2012841,0.009667026,0.6762643],[0.11934642,-0.5864817,0.16600628,0.28051364,-0.13105674,0.22044942,-0.019528905],[0.5533989,0.66445804,0.31221595,-0.68456656,-0.24079095,0.7768225,-1.3347878]],"activation":"σ","dense_2_b":[[-0.31197193],[-0.031413633],[0.03965752],[-0.061369944],[-0.108691074],[-0.34241664],[-0.31260058],[0.0052420176],[-0.0034803348],[-0.009040426],[0.032145865],[-0.013744207],[-0.12510912]]},{"dense_3_W":[[0.2274993,0.5665878,0.22904979,-0.31244048,-0.177466,0.39304316,0.46666682,0.5655463,-0.40834668,0.123042084,0.28890088,0.24861963,-0.33083183],[0.5515104,0.4236585,-0.41383946,0.38279107,0.3648294,0.033724736,0.594795,-0.03362508,0.5668787,-0.33538687,-0.6832093,0.13241947,0.26189715],[-0.57273656,-0.6574504,-0.62127274,0.5114571,-0.2834754,0.5221384,0.058243714,-0.15925437,0.34103858,0.34175843,-0.36275822,-0.4356808,0.04839572]],"activation":"identity","dense_3_b":[[0.039760787],[-0.06425814],[-0.035501104]]},{"dense_4_W":[[0.95254374,-1.5316479,-0.5766585]],"dense_4_b":[[0.0464274]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002NB4202N7N'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002NB4202N7N'.json deleted file mode 100755 index f93202e113..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN b'xf1x875WA907145M xf1x891051xf1x82x002NB4202N7N'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[11.96429],[0.48755237],[0.3202853],[0.016136056],[0.47789466],[0.4800027],[0.4825725],[0.4900211],[0.4979344],[0.50082195],[0.509806],[0.015823891],[0.015903281],[0.015982913],[0.016349215],[0.016593793],[0.016913936],[0.017299606]],"model_test_loss":0.006491394247859716,"input_size":18,"current_date_and_time":"2023-08-13_08-58-34","input_mean":[[23.908133],[-0.009390707],[-0.004253836],[-0.025968479],[-0.00612068],[-0.007160293],[-0.007376146],[-0.009109003],[-0.0076243],[-0.0026939402],[0.0045118434],[-0.026125945],[-0.026092473],[-0.026057927],[-0.025872864],[-0.02570859],[-0.025540205],[-0.025320645]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.41294238],[-2.7690372],[-0.18349741],[-0.10760971],[-2.6992774],[0.32752463],[-0.67742026]],"dense_1_W":[[-1.3586515,-0.43871593,-0.060125872,0.14131355,0.91296524,-0.27596986,0.2190367,0.41157725,0.029709097,-0.2607309,-0.050010905,-0.11755934,-0.22254317,0.17312372,-0.3761272,-0.45554724,-0.2239468,-0.2360416],[-1.5048568,-0.7412387,-0.104529426,0.18972115,-0.04966916,-0.31632864,1.5387456,-0.68554825,-0.047455277,-0.09145563,0.011231757,0.1552257,0.14442553,-0.19027676,-0.3082216,-0.048122175,-0.08658755,0.17344293],[-0.06806865,-0.28421763,-0.061045542,0.29776254,0.017410226,-0.6256607,0.3693766,0.09203255,-0.20777148,0.16598798,-0.031423636,-0.14880905,-0.050573036,-0.18030158,0.34338558,-0.010559312,-0.1716994,0.0015558694],[-0.021257099,0.4201582,0.10567662,0.098136276,-0.5245343,1.1510786,-0.21176715,0.25107303,-0.10454084,0.2301715,-0.24894434,0.3596001,-0.34517595,0.058510073,0.0818201,-0.26276216,-0.14658763,0.21273282],[-1.5012898,0.6668104,0.10121657,-0.25168574,-0.0037740553,-0.2010022,-0.75998825,0.4218689,0.24208617,0.044093963,-0.037556846,0.1966981,-0.110668525,-0.14782344,0.35860345,-0.21139877,0.30253902,-0.16673942],[-1.2461659,-0.7911809,0.035795726,0.73150784,0.696571,0.49404347,0.11756719,0.5757391,0.09980145,0.16326262,-0.19388047,-0.6046584,0.21638776,-0.4022077,-0.12755662,-0.10812808,-0.34516883,0.16070507],[-0.19035971,-1.7321862,-5.0254865,0.22558816,0.1942134,-0.44183806,0.40744686,0.513804,-0.21384099,0.681004,0.10350117,0.047648296,-0.14447348,-0.0847752,0.09760403,-0.26012734,0.45971102,0.06473803]],"activation":"σ"},{"dense_2_W":[[-0.34405056,0.87975556,-0.11178791,-0.9415903,-0.22488657,0.38250393,-0.22682497],[0.6375331,-0.9361189,-1.0352612,0.23702581,-1.3226422,-0.70677704,0.60978687],[0.59013045,0.67570806,0.65553236,-0.24382202,-1.3824764,-0.136895,-0.021328399],[-0.91779196,-0.4002371,0.15189488,-0.1415177,-0.14752227,0.1649123,-0.6430806],[-0.25153294,0.27459243,-0.054157175,-0.5623544,-0.3548548,0.07935024,0.17336936],[-0.2654553,-0.39781526,-0.39670828,0.5024505,0.8163613,0.09423658,-0.06174219],[-0.439626,-0.122389056,-0.4051925,0.7102208,0.21351016,-0.21359682,-0.043064147],[-0.24681723,-0.75991267,-0.5213269,0.61109763,0.6579795,0.31300342,-0.19012727],[-0.32835272,0.27643317,0.80610013,-0.48940447,-0.6658583,-0.08905346,0.40121162],[0.014117802,1.0277611,0.9433537,-0.52780867,0.21137868,0.18057697,-0.51537097],[0.4187044,-0.18805541,-0.8279012,-0.13557853,0.1907715,0.12131266,-0.30106992],[0.16725653,0.75205564,0.8238714,-0.19580607,-1.0709527,-0.43005282,-0.1344186],[0.4120912,-0.67633796,-0.3733059,0.31897324,0.7961127,-0.1235923,-0.5691213]],"activation":"σ","dense_2_b":[[0.0015434292],[-0.42678097],[-0.12843466],[-0.2722911],[-0.17105557],[-0.11514613],[-0.06279293],[-0.019363822],[-0.009035881],[0.106273174],[-0.05945216],[-0.123012476],[-0.058660183]]},{"dense_3_W":[[0.6179223,0.6908968,0.23002878,0.16771492,-0.38249567,0.44911724,0.23442027,-0.46552494,-0.45699558,-0.35989794,-0.40735313,-0.31366763,-0.05994278],[0.32953018,-0.25569904,0.31176892,-0.058506478,0.055031825,-0.5803407,-0.41470534,-0.7076998,0.7423508,0.2604255,-0.3739903,0.5488002,-0.43356815],[-0.05421326,-0.34172624,0.28983295,-0.522155,0.034952227,0.36832595,0.34097177,0.4830782,-0.7160004,-0.70392597,0.16239382,0.029896518,0.6162823]],"activation":"identity","dense_3_b":[[0.12146979],[0.06732302],[-0.06318822]]},{"dense_4_W":[[0.04596985,-1.108794,0.22253986]],"dense_4_b":[[-0.060146004]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B60924A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B60924A1'.json deleted file mode 100755 index aed7db5c78..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B60924A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.683442],[0.98865986],[0.47218922],[0.03871906],[0.9749567],[0.97964174],[0.9846377],[0.96558553],[0.9452397],[0.9233499],[0.8986563],[0.038632676],[0.038636968],[0.038635172],[0.038416203],[0.03809765],[0.03765577],[0.03724798]],"model_test_loss":0.012059486471116543,"input_size":18,"current_date_and_time":"2023-08-13_09-53-13","input_mean":[[24.93752],[-0.045939222],[-0.016389137],[-0.004302249],[-0.041963723],[-0.043094873],[-0.044972997],[-0.049667895],[-0.05290968],[-0.058309894],[-0.05893371],[-0.004446903],[-0.0044335183],[-0.004419059],[-0.0043945634],[-0.0043718517],[-0.004439213],[-0.0045372355]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.1140616],[0.025871063],[0.2243207],[-0.46016932],[-1.4698206],[-0.71150887],[0.21343042]],"dense_1_W":[[0.50331783,0.11694233,-1.5816242,-0.32721916,-0.41283622,-1.0465689,0.7585539,-0.07061255,0.17088029,0.16865654,0.27171412,-0.29783547,0.005930493,0.8796375,-0.18076001,-0.22494902,0.14086941,0.02350371],[0.39964604,-0.06841097,1.284112,0.081528254,0.715496,0.9111793,-1.1611114,0.26898384,-0.17206313,-0.35275218,-0.06688733,0.2690601,0.17759158,-0.6246783,0.03650214,0.11638598,-0.18206348,0.107519194],[0.24504289,0.89508206,0.016166057,-0.112143464,-0.7020446,1.0947877,-0.17686859,-0.15869354,0.05293,0.12103868,-0.0552494,0.031484745,0.34501955,-0.08349311,-0.5022218,-0.09982318,0.2693678,-0.010383809],[0.007931579,3.6076553,0.031299092,-0.0632944,-0.36807698,0.44875357,0.65344036,1.8584886,2.0649836,0.52160025,-1.4293678,0.3685855,-0.015850615,-0.6611801,-0.09302336,0.15269071,-0.34181482,0.22311872],[0.27789986,0.4345057,1.7105428,0.3809664,0.23606543,-0.53605545,0.77079517,-0.18572022,0.029536983,-0.08425826,-0.53436494,-0.47137046,-0.49002567,0.6303357,-0.05725936,0.14865646,-0.024520583,-0.13768268],[-0.24115954,1.279325,0.006372729,0.082450144,-0.51617074,0.56547415,-0.2152657,-0.20878896,0.27892676,0.005575542,-0.08203108,0.26797956,-0.1609261,-0.31879193,0.0687177,-0.12210038,-0.02824459,0.04868769],[0.5532259,-0.31703275,-1.3693326,-0.39785337,-0.45586273,0.51413405,-0.8438991,0.35914817,0.0845233,0.27229154,0.1630712,0.5866208,0.14001441,-0.53064567,0.0022326964,0.3564542,-0.22063065,0.098910645]],"activation":"σ"},{"dense_2_W":[[0.07933149,0.24055447,0.4976298,0.04625589,0.39628196,-0.31187287,0.10486112],[0.16486526,-0.4745025,-0.41495293,-0.58882856,0.45950136,-1.0270692,-0.14418496],[-0.2165068,-0.40877748,0.31806844,-0.43342555,-0.16252048,-0.20286933,-0.24733812],[0.6930096,-0.32642758,-0.89015126,0.17958382,0.9937355,-1.6690918,-0.038145885],[-0.7482682,0.5658933,0.9042878,0.021569345,-0.48649457,0.5340851,-0.027348604],[0.67918,-1.904818,-0.8380397,-0.051741455,-0.28229547,-0.7634411,-1.8948066],[0.3247175,0.31701854,-0.2781933,0.43401104,0.49560198,-0.2726791,0.032593645],[-0.37467694,-0.03656642,-0.33198854,-0.31007978,-0.43297952,-0.59289163,-0.22284593],[1.024911,-0.6805027,-0.19422202,-0.32719725,0.83347833,-1.039209,0.82521194],[0.36815783,-0.5916512,-0.83911014,0.0574501,0.110373095,-0.5765434,-0.51522857],[-0.62331885,-0.17632262,0.8677081,-0.0120098395,-0.27507105,0.591978,0.29510972],[-0.2604249,0.23846155,0.89924765,0.49570164,-0.570918,0.73513013,0.07734572],[-0.08252068,-0.20023943,-0.6037063,-0.68478596,-0.30307132,-0.5236618,-0.34129605]],"activation":"σ","dense_2_b":[[-0.037471402],[0.020133492],[-0.030062372],[0.18862785],[-0.16345033],[0.6310636],[-0.04814403],[-0.13305083],[0.30672064],[0.09021095],[-0.015109793],[-0.09782],[-0.08616344]]},{"dense_3_W":[[0.00968849,-0.4974434,0.057221804,-0.05612671,0.44181606,-0.7102969,-0.08313611,-0.41528141,-0.5589184,-0.6598731,0.27019504,0.59793496,-0.1394197],[-0.18780659,0.013776527,0.097994566,0.082103886,-0.21989425,-0.19045697,0.17197673,-0.5449254,0.16991271,-0.09662889,-0.60549957,-0.5836056,0.31347692],[0.12937143,0.41864458,0.19149177,-0.6325805,-0.38940874,0.26463097,0.3983454,0.44313705,-0.57387125,-0.6276399,0.22248751,0.2585914,-0.04698139]],"activation":"identity","dense_3_b":[[0.031332195],[-0.011427722],[0.02366233]]},{"dense_4_W":[[1.1474994,-0.26583225,0.42394185]],"dense_4_b":[[0.028095849]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B6G920A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B6G920A1'.json deleted file mode 100755 index 8635448275..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x873QF909144B xf1x891582xf1x82x0571B6G920A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.9049487],[0.8561191],[0.4504596],[0.038353253],[0.84595364],[0.8492535],[0.8529379],[0.8561067],[0.85435045],[0.85641384],[0.85120344],[0.038395345],[0.038383085],[0.038364075],[0.038244415],[0.038174238],[0.038057357],[0.037874334]],"model_test_loss":0.007408166769891977,"input_size":18,"current_date_and_time":"2023-08-13_10-20-32","input_mean":[[22.704159],[-0.05434947],[-0.028899634],[-0.014197077],[-0.047043595],[-0.04961061],[-0.051511772],[-0.064129874],[-0.073261425],[-0.082883425],[-0.0892596],[-0.013961674],[-0.014019979],[-0.014073931],[-0.014204705],[-0.014272569],[-0.014375915],[-0.014562678]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.120744884],[-2.1077828],[-0.06055612],[0.39443776],[-0.22368135],[-0.65588754],[-2.6387818]],"dense_1_W":[[-0.88690495,-0.25811425,0.008988815,0.13833122,-0.08116928,-0.4481129,0.35815176,0.26801386,0.28154677,-0.40463963,0.053177662,-0.24901138,0.1963489,-0.17850944,0.4205931,-0.2479545,-0.09116836,0.04012526],[-1.2232169,0.21496952,-0.34511173,0.2337797,0.55760974,-1.4960742,0.57970977,0.05764135,0.00652666,-0.002710308,-0.022491196,-0.34730065,0.12834378,0.3231942,-0.5951289,-0.18041079,0.5969328,-0.17919765],[-0.013577242,0.72050744,0.043851886,0.08763659,-0.10938563,0.81028354,-0.49421427,-0.055606507,0.39534506,-0.21660888,-0.0038955023,0.6321912,-0.21082307,-0.73846775,-0.11770506,-0.23157798,0.33104023,0.0045754346],[-0.10664416,-3.9566016,-0.095965914,-0.019330999,-0.4638217,-1.5822362,-1.4879117,-1.5428027,-2.3343623,-0.8989189,0.15379162,-0.52634346,0.4945621,0.47638455,0.3022711,-0.2961842,-0.044219077,-0.15859331],[-0.8310568,-0.15923229,0.006822003,-0.018409794,-0.23237298,1.0993366,-0.29199913,-0.24162076,-0.079320475,-0.057994813,0.19191225,0.16130863,0.2252312,-0.2553471,-0.032364585,-0.12529343,-0.24044278,0.2582998],[-0.109629534,0.32457277,3.9654276,0.21012852,0.3246289,0.68227553,-0.13658419,0.3768019,-0.07727444,-0.74666935,-0.5759585,0.04406303,0.19795617,0.018164791,-0.26933455,0.050561618,-0.20878446,-0.047754884],[-1.363271,0.06545215,0.3758413,0.06491672,0.084676765,0.35959658,-0.32623026,-0.20922486,0.069487125,0.08547648,-0.04262586,0.3544595,-0.12652668,-0.37254444,0.21089934,0.008135089,-0.105872564,-0.008318545]],"activation":"σ"},{"dense_2_W":[[-0.72054654,-0.6050417,-0.7220704,-0.44005063,-1.0284771,0.8106998,0.014414875],[-0.058226008,-1.1631503,-1.027209,-0.75974965,-1.2817178,1.113419,-0.65957123],[0.50055337,0.83895123,-0.6208208,-0.57039124,0.28612334,-1.0834124,-0.38909918],[-0.99643636,-0.39019206,0.3543918,-1.5282012,1.0121741,0.5773511,1.208323],[0.12123124,-0.62592685,-1.1137303,-0.14054954,-1.0746346,0.25387576,0.21012427],[-0.028134568,-0.41023138,1.1109024,-0.29490876,-0.104959935,-0.028684778,-0.014831031],[0.3203809,0.69519943,-0.8536804,0.34720927,-0.41844305,-0.70005876,0.2783357],[0.65279526,0.26307833,-0.09818812,-0.14922686,0.0068492573,-0.6803769,-0.6562028],[-0.9916566,-0.746977,1.2095876,-0.28206152,0.77202094,0.09917717,0.53519136],[0.5871799,0.5488787,-0.85902935,0.29927683,-0.41470188,-0.034725975,-0.4221715],[0.8082283,0.6814313,-0.9875302,0.07708959,-0.33729747,-0.6126396,-0.3882399],[0.10397777,-0.37797046,0.6114876,0.4482404,0.23890285,-0.09893929,0.30193642],[0.65473473,0.6695784,-1.1461365,-0.09873656,-0.4201835,-0.4659413,-0.021572102]],"activation":"σ","dense_2_b":[[-0.22703657],[0.015636627],[-0.28062612],[-0.46867597],[-0.42662266],[0.10531475],[-0.27268052],[-0.117583275],[-0.03751292],[-0.21399282],[-0.15614581],[0.0078853285],[-0.041914072]]},{"dense_3_W":[[0.39234796,0.62153774,0.51387525,-0.25627816,-0.22709092,-0.7633196,0.4101854,0.35565174,-0.8346539,0.39193448,0.17382623,-0.03400133,0.12321009],[-0.29410705,-0.38960123,-0.062432252,0.44320828,-0.18776551,0.4824824,-0.18968157,-0.42845276,-0.26182756,-0.26892537,-0.3521713,0.6616498,-0.546959],[0.16058823,-0.86594164,-0.13168101,1.0188407,-0.5159865,0.19459534,-0.15246914,0.059648626,0.26894704,-0.32199717,-1.2184755,0.24150649,-1.0980307]],"activation":"identity","dense_3_b":[[-0.115189165],[0.12497786],[0.049071394]]},{"dense_4_W":[[-0.6646698,0.30865747,0.50033504]],"dense_4_b":[[0.12551612]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6080105'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6080105'.json deleted file mode 100755 index 48341be495..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6080105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.46098],[0.5805504],[0.4286228],[0.027327532],[0.5625607],[0.5664083],[0.572346],[0.55758566],[0.55044997],[0.53875524],[0.5324083],[0.027238432],[0.027249781],[0.027267734],[0.027059836],[0.026759954],[0.02641711],[0.026055066]],"model_test_loss":0.00871726218611002,"input_size":18,"current_date_and_time":"2023-08-13_10-46-07","input_mean":[[22.35009],[0.03588671],[0.030875545],[-0.009168813],[0.023282468],[0.025879717],[0.030697377],[0.036618296],[0.039199185],[0.036285438],[0.027312003],[-0.009021863],[-0.009056173],[-0.009087383],[-0.00929402],[-0.009451607],[-0.009612639],[-0.009819853]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.034004],[-0.89401245],[0.9897701],[-0.3193278],[1.1259059],[-0.15454224],[3.3354394]],"dense_1_W":[[0.44570363,-0.7825432,-0.061906625,-0.026865548,0.2508251,-0.017034708,0.3547928,-0.310705,-0.09453543,0.070832364,0.09877715,0.2973578,-0.35449862,-0.18486549,0.30955637,0.21419896,-0.4893967,0.23366004],[0.69126964,-0.25657803,-0.030580372,-0.6565601,0.2661697,0.9771365,-0.048998043,-0.5814566,-0.13185975,0.25074315,0.15406479,-0.01448358,0.6794868,0.028108925,-0.545066,0.20658419,0.050444037,-0.016133675],[-0.6743554,-0.028887114,-0.032645535,0.25018308,0.006226353,1.0695997,-0.18894264,-0.24792102,-0.1595514,-0.059550885,0.26033223,-0.07776964,-0.13275231,-0.08301031,-0.06557147,0.015360838,-0.14179525,-0.02958493],[-0.00023020334,-2.5403516,0.103054345,-0.036754318,-0.37462926,-1.2828135,-0.78215855,-0.5872427,-0.23358877,0.8133214,-1.7763032,-0.11175946,-0.5391298,0.14259054,0.08525794,0.6968644,1.1772321,-1.3956367],[0.4643646,1.0727947,0.06773056,-0.1627986,-0.44790077,0.43600535,-0.83087605,0.3373429,0.035555895,-0.039930362,-0.11480868,0.34158143,0.086424485,-0.3963858,0.077727064,0.026601842,0.16779198,-0.14299323],[-0.01659432,0.18239553,-2.4434328,0.4596415,-1.3727697,-0.45394266,1.580408,-0.23654598,-0.03745976,0.0920622,0.5134545,-0.4865392,0.24464038,0.4678696,-0.32076362,-0.84693116,0.43715867,0.037381206],[-0.011063157,-0.9861401,-0.049675927,-0.730512,-0.29446808,0.047909494,-1.549821,1.0472431,0.20591155,-1.2257841,0.35139507,-0.9356053,-0.8952574,-1.3479776,-0.92216295,-0.5816112,-2.177031,-2.7402952]],"activation":"σ"},{"dense_2_W":[[-0.9175717,0.7838937,0.18961704,-0.21025512,0.049619257,0.1847999,-0.13175379],[-1.3712368,-0.22107592,0.8426797,-0.54940265,0.37827617,-0.7331404,0.3816527],[0.879834,-0.07275896,-0.15078747,-0.084817156,-0.5905503,-0.0077536167,-0.026412051],[-0.16437627,0.7776934,0.16704066,-0.81203943,0.714978,-0.38184956,0.5668494],[0.36693972,-0.71004605,-0.4970682,0.41367897,-0.26275557,0.04859335,0.0019217964],[-1.1874106,0.44417366,0.4221658,-0.459451,0.9441592,0.028537316,0.44670618],[0.06823978,0.053194616,-0.32906988,-0.040382143,-0.74561256,-0.3759315,0.52331495],[-0.16486976,-0.63236946,0.17065576,0.6424932,-1.2657642,0.19909996,-0.30308995],[0.44445,-0.5825901,-0.4318686,-0.37460575,-1.2127082,0.11012628,0.7677005],[-0.46705374,0.7579557,0.43045595,-0.14844555,0.81806993,-0.3961867,0.082349285],[0.9047916,-0.027479485,-0.21539336,-0.26026043,-0.56305844,0.23231633,0.24555749],[-0.13455963,-0.793142,0.16952343,0.31437233,-1.4577682,0.7650801,-0.17605627],[0.78401864,-0.40363696,-0.7288144,-0.4528122,0.13153328,-0.089454,-0.4570649]],"activation":"σ","dense_2_b":[[-0.03731149],[-0.25853628],[-0.22449726],[0.050002333],[-0.07679642],[-0.27620718],[-0.040895026],[-0.17041162],[-0.12874831],[-0.1850663],[-0.06403408],[-0.31963417],[0.010012412]]},{"dense_3_W":[[0.43035418,0.62377286,-0.04799687,0.37535116,-0.2510285,0.435108,-0.4777117,-0.42720693,-0.16901441,0.34647202,-0.5691831,-0.47436827,-0.56257755],[0.50507265,0.812848,-0.0652019,-0.037624083,-0.2630056,-0.063649006,-0.17664024,0.6002492,0.23068571,0.061552785,-0.5704422,-0.3373628,-0.5592467],[0.020316904,0.6937366,-0.266464,0.46094483,-0.045586474,0.38334998,0.41075394,-0.3045877,-0.63142675,-0.3368865,0.11822097,-0.1788716,-0.461762]],"activation":"identity","dense_3_b":[[0.058974706],[0.07503411],[-0.08209236]]},{"dense_4_W":[[1.1198002,0.17802396,0.12900992]],"dense_4_b":[[0.055657092]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6090105'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6090105'.json deleted file mode 100755 index ed370ac904..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN b'xf1x875Q0909143P xf1x892051xf1x820528B6090105'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.303951],[1.1061448],[0.45519033],[0.03890334],[1.081259],[1.0887367],[1.0969497],[1.092481],[1.0865434],[1.0689224],[1.0470375],[0.038625997],[0.038678918],[0.038709994],[0.038684364],[0.03853108],[0.03823509],[0.037891388]],"model_test_loss":0.0091054392978549,"input_size":18,"current_date_and_time":"2023-08-13_11-14-36","input_mean":[[24.991106],[-0.052309062],[0.0040966566],[-0.011176246],[-0.052617952],[-0.052739866],[-0.053076603],[-0.053221803],[-0.052702937],[-0.052821293],[-0.04823078],[-0.01125922],[-0.0112718595],[-0.011276353],[-0.011362061],[-0.011423353],[-0.011574674],[-0.011701717]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.2000623],[-1.0601752],[0.02134417],[0.34618574],[-0.41577217],[-0.1728919],[-0.61339724]],"dense_1_W":[[0.6945757,-0.32359305,1.5179125,0.061160147,0.2037475,0.6379559,-0.12414423,0.0059865746,0.13593642,0.34044787,-0.6639205,0.08353744,-0.077323966,-0.28454944,0.04639403,0.20414786,0.3709197,-0.3463716],[0.05652898,4.1764426,-0.006069666,-0.7129519,1.8937668,1.5178504,0.3519152,1.7854784,0.39515916,0.91557574,0.47060627,0.37094897,0.3413073,0.2681898,-0.31728673,0.20122348,-0.028086334,0.15455683],[0.14809841,-0.17917761,-0.00034424284,-0.124425046,-0.1850857,-0.74427736,0.15511078,-0.120926015,-0.012820842,-0.117898285,-0.016289195,0.27818105,-0.09533491,-0.03304152,-0.04132924,0.0033757824,0.35598698,-0.11256063],[1.1169398,0.49344513,-1.6779064,0.31510845,-0.165833,-0.52853584,-1.2107238,0.38685435,0.2492109,0.36423388,-0.026242055,-0.092144534,0.22960894,-0.3682959,-0.17427671,-0.15931715,0.31591633,-0.12631632],[-0.09261426,-0.44354674,0.0025963027,0.11725519,0.5170039,-1.6007098,0.409791,-0.18131912,0.0033203233,0.25904283,-0.21513839,-0.4170825,-0.15698108,0.47902456,0.53502494,-0.31782442,-0.03569762,0.051992897],[0.0042456975,-0.47560015,-0.0026210295,0.031245418,-0.012764861,-0.92874646,0.6509197,0.33344513,-0.012610092,0.18168646,-0.2557554,-0.44327387,-0.13764408,0.42211333,0.23698005,0.37390047,-0.073409125,-0.17985323],[-0.8177616,0.6893316,1.3907503,-0.0023526286,-0.5415417,0.801563,-0.40723026,0.18662976,0.07481949,0.11865076,-0.6322875,0.23950732,-0.17827813,-0.16382805,-0.084146835,0.39538124,-0.09231756,-0.06298284]],"activation":"σ"},{"dense_2_W":[[0.30893767,-0.21597238,0.34375098,-0.25055024,0.3330617,0.38276237,-0.71425796],[-0.31416908,0.19624454,0.84980524,-0.6247502,1.137116,0.7904554,-0.74953896],[0.10519312,0.14832982,-0.26275882,0.2762413,-0.35890564,-1.246903,0.25022545],[-0.3228544,-0.06965771,0.24511589,-0.09088025,0.87480575,0.8223658,-1.0762371],[-0.6225081,-0.79335475,-0.77840954,-0.5098249,0.62632555,0.2364035,-0.94132584],[-0.26544946,0.19669403,0.33992356,-0.021165801,0.5467231,0.35932502,-0.86759907],[-1.9278108,-3.4194539,-1.5747315,-1.8566562,1.757728,0.4785611,0.38245028],[0.00854604,0.22411391,-0.98446316,0.5888375,-1.1318563,-0.63558984,0.21114045],[-0.042795878,-0.25286025,0.9120754,-0.47074848,0.21183152,0.8286851,-0.5500911],[-0.048500616,-0.39560843,0.108169064,0.030019483,-0.2797118,-0.8024904,1.1825333],[0.24435245,0.30188617,-0.8876096,0.32955825,-1.0187839,-0.70859,0.41195366],[0.2961078,0.036369283,-0.173866,0.25641084,-0.7356608,-0.51908946,0.9349239],[-0.8808378,-0.3808547,-0.36999512,-0.77035606,0.5030658,0.36325094,0.39363125]],"activation":"σ","dense_2_b":[[-0.07842559],[-0.09987076],[0.010018767],[-0.2822568],[-0.35917684],[-0.44091773],[0.33568865],[0.07248511],[0.07309797],[0.10989416],[-0.003620754],[0.0024933761],[-0.2047217]]},{"dense_3_W":[[0.26641047,0.5025841,-0.5746309,0.72528905,0.4545447,0.14570309,0.58782375,-0.8174622,0.7011326,-0.37532592,-0.8499182,-0.5160384,-0.10076714],[0.42193347,-0.2640134,-0.09260018,-0.47143674,-0.31873474,-0.070022374,0.0072793798,0.21706063,0.47843012,-0.12351305,0.057239983,-0.37678227,0.3790527],[0.31047106,0.072491184,-0.26496214,0.28195223,0.43037447,-0.17418887,0.37405774,0.15594256,-0.030484399,-0.10081656,-0.36806333,0.17099544,-0.57947606]],"activation":"identity","dense_3_b":[[-0.035134505],[0.035389643],[-0.0024598911]]},{"dense_4_W":[[-0.88231134,0.03782195,-0.036473993]],"dense_4_b":[[0.026110955]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144F xf1x895043xf1x82x0561A01612A0'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144F xf1x895043xf1x82x0561A01612A0'.json deleted file mode 100755 index 4d03bacbb7..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144F xf1x895043xf1x82x0561A01612A0'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.393678],[0.9507211],[0.515524],[0.03579411],[0.92671007],[0.9349327],[0.94223416],[0.93390805],[0.91419286],[0.9005691],[0.8817757],[0.035967667],[0.035894528],[0.03581829],[0.035463523],[0.035266362],[0.034894552],[0.034437038]],"model_test_loss":0.007279031444340944,"input_size":18,"current_date_and_time":"2023-08-13_12-09-05","input_mean":[[18.321695],[0.026961222],[-0.0035306585],[0.0042126137],[0.026481297],[0.025289914],[0.02407461],[0.022458786],[0.02010773],[0.01840629],[0.010958715],[0.004338949],[0.004328805],[0.004322178],[0.004482345],[0.0045845066],[0.0045210808],[0.0044681383]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.23433709],[-0.18828739],[-0.18552896],[-0.5719115],[-0.22013229],[-1.4444673],[-1.5718764]],"dense_1_W":[[-1.2401875,0.3811429,0.22920376,0.17823632,0.38709855,-0.66355306,0.8482343,0.49103037,0.5053358,-0.24420182,-0.092417374,-0.23246154,-0.050690368,-0.08148075,0.24395947,0.33181128,-0.24565633,-0.08007848],[-0.033186838,-0.018208645,5.2053638,0.40082926,0.12013276,1.3642305,-0.066606104,-0.2109344,0.056820087,-0.49343818,-0.73463804,0.0054429434,0.30579343,0.2644848,-1.104032,-0.3646586,0.40208718,0.09694821],[0.013673816,1.5230023,0.03033682,-0.35785833,-0.47244158,1.1692531,-1.2142229,0.21123275,0.20759322,-0.12557651,-0.024190914,0.18843181,0.42164597,-0.41802365,-0.1273723,0.11422493,-0.3571295,0.24296899],[-1.2805165,-0.03634216,-0.2315571,-0.33567777,-0.15831298,0.46170834,-1.3284832,-0.35208622,-0.3114747,-0.14607859,0.23413593,0.42039818,0.100040615,-0.11651754,-0.25472957,-0.18363725,0.25635332,0.046210147],[-0.1223163,0.39836767,2.1085758,-0.83522975,0.93836105,1.1645079,0.5623019,0.803997,1.619908,0.69255054,0.006743934,-0.027720656,0.22808708,-0.50816184,1.2988809,0.82322896,-0.54477817,-0.36819857],[-0.7315945,0.4780022,0.1772432,0.4104992,0.08421316,0.9401301,-0.49227592,-0.009742048,0.11372556,0.104266785,-0.019224092,0.4900326,-0.47639382,-0.6323555,0.24357527,-0.0516575,0.23969004,-0.19771135],[-0.76657575,-0.4302957,-0.18278445,-0.14294477,0.019147635,-0.83321804,0.18196133,0.0027990995,-0.101887345,-0.09481852,0.02363611,-0.10652451,0.29024073,0.12037951,-0.19053681,-0.002771024,-0.18999992,0.19319752]],"activation":"σ"},{"dense_2_W":[[1.1674703,-1.0795661,-0.83592135,-1.2450091,0.39534637,-0.23755772,0.6893884],[-0.8306515,0.5932858,-2.246159,-0.60801744,0.89207256,-1.3776426,-0.87655],[0.06655564,-0.3241597,0.68319845,0.5761408,0.07908217,0.17945948,0.24506673],[0.68613476,0.19972438,-1.3021669,-0.6668362,-0.6518976,-0.24746297,1.2003715],[-0.8004638,0.5167141,1.1191069,0.013375394,-0.2572823,0.93613464,-1.1853722],[-0.21710496,-0.35993806,-0.07203962,-0.6938927,0.18984064,-0.09594037,-0.2881428],[-0.6179966,0.46525648,0.5319194,-0.16893135,0.60552096,1.0496196,-0.51345116],[0.37096095,-0.56000143,-1.0920874,-0.23331793,0.05436759,-1.0298152,1.2464622],[-0.75719625,0.636631,0.13826808,0.05155059,0.22594887,0.8592017,-0.037603486],[0.20930098,-0.55796367,-1.2967436,0.6157302,-0.9854021,-1.511364,1.3654305],[-0.7381424,0.45607466,0.6661581,0.7688956,-0.33832595,1.0015503,-0.6602416],[0.2261951,-0.15274303,-1.3926961,-0.2749363,-0.19298306,-0.8495188,0.6840784],[-0.06774882,0.43374217,-0.59146774,-0.98507404,-0.005510673,-0.63316214,0.44423348]],"activation":"σ","dense_2_b":[[0.25605625],[-0.27236927],[-0.026778517],[0.31539285],[-0.36685586],[-0.16439182],[-0.1343443],[0.3629454],[-0.13780022],[0.39224806],[-0.23516674],[0.24514045],[0.062903486]]},{"dense_3_W":[[0.5346557,0.3789998,-0.2614574,0.4879767,-0.46347272,0.18811665,-0.5559382,0.5217684,-0.6780195,0.568179,-0.20284745,0.40725482,0.25554204],[-0.30582777,-0.6364137,-0.2515572,-0.53830695,0.23051241,0.7431814,0.15372244,-0.14764914,-0.21156888,0.0260592,0.5506795,-0.36910096,-0.12995946],[0.1502716,-0.7994257,0.5153921,-0.6199781,0.056621913,0.29504618,0.005925515,0.060055684,-0.36957523,-0.3707947,0.71017915,-0.45440555,-0.37977552]],"activation":"identity","dense_3_b":[[-0.04320616],[0.24266042],[0.06822999]]},{"dense_4_W":[[-0.8555905,0.09768048,0.3667474]],"dense_4_b":[[0.03568016]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566A01613A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566A01613A1'.json deleted file mode 100755 index d71ba156c3..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566A01613A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.674182],[0.8655689],[0.57967585],[0.040321745],[0.84932566],[0.85650927],[0.86215264],[0.87139815],[0.87453574],[0.874555],[0.8716648],[0.03994974],[0.040019948],[0.040080216],[0.04002835],[0.03998725],[0.03991318],[0.039837524]],"model_test_loss":0.007650585845112801,"input_size":18,"current_date_and_time":"2023-08-13_12-35-04","input_mean":[[23.87158],[-0.1436498],[-0.028368313],[0.009035347],[-0.13046499],[-0.13379243],[-0.13699822],[-0.1480593],[-0.15190914],[-0.15157087],[-0.14864737],[0.009231746],[0.009238965],[0.00924779],[0.00920954],[0.009201414],[0.009255218],[0.00909153]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.09592608],[0.9918901],[-1.2113507],[0.8661807],[0.05155025],[0.3214984],[-1.153684]],"dense_1_W":[[-0.017169934,1.1931341,-1.1062534,-0.19596136,-0.81572723,-1.2010746,1.5714276,-0.57053953,-0.8263804,0.052935984,0.73478985,-0.2280826,-0.21767642,0.2753641,0.1326998,0.45369527,0.07199933,-0.30603126],[2.1590579,-1.4124492,0.009337138,-0.21821123,0.84495044,-0.61482656,1.1536438,0.7080137,-0.04427048,0.10480956,-0.022087824,0.2886762,-0.07587974,0.070064016,0.14185634,-0.0007030371,-0.38303795,0.27994344],[-0.40794194,1.153379,-0.0024999902,-0.6986611,-0.20693888,0.6483961,-0.701288,0.039575372,-0.047968443,-0.08190851,0.07021685,0.14132965,0.2368701,0.14922713,-0.22505046,0.28357986,-0.06247636,0.056652017],[0.52197176,1.2478426,0.0009211915,-0.4745136,-0.1614392,0.40458196,-0.48290923,0.053574517,-0.095450394,-0.017885987,0.032721847,-0.090606876,0.14145781,0.2679699,-0.1473115,0.18667473,-0.008584987,-0.005414795],[-0.022690998,0.6585079,-0.005586868,-0.6780271,0.19687867,-1.1014344,-0.2943398,0.36450255,0.03506954,-0.08123903,-0.15920855,0.0505067,0.058525577,0.36120212,-0.21424536,0.46626067,-0.017863052,-0.085303724],[0.00013837297,-0.25373533,-6.435928,1.58516,0.6184224,-0.2115976,0.2892219,-0.71608067,-0.6071019,-0.20726296,0.9175523,-0.47211647,-0.2097295,0.15351994,-0.7116983,-0.63811296,0.23258395,0.08622454],[-2.0628932,-0.7452186,0.008288695,-0.31313533,0.67136544,-0.5808361,0.9877969,0.1444861,0.15634331,0.030246384,0.014997267,0.043635026,0.062175572,0.28663024,-0.13891469,0.3720139,-0.38673353,0.17359486]],"activation":"σ"},{"dense_2_W":[[-0.16763338,-0.47461554,0.10763972,-0.2838411,-0.52468586,0.44780418,-0.66006994],[0.5267072,0.10084127,-0.0030579919,-0.43386367,-0.58511466,-0.099385306,-0.19599876],[-0.0906234,-0.83193815,-0.66303736,-0.8964175,-0.2003442,0.35760805,-0.058140375],[-0.190499,0.07829508,-0.08322553,0.012610012,-0.15027554,0.07325327,-0.22076952],[-0.65134853,-0.6751714,0.38901326,-0.20597398,-0.49264622,-0.6020643,0.38099632],[0.3904269,0.8117801,-4.0269456,-2.344315,0.987539,1.1614928,1.1175928],[0.26499394,0.7727802,-0.99474823,-0.9302356,0.3447509,-0.4111184,0.08102163],[0.35695434,0.33521402,-1.2582849,-1.6280061,0.4927368,-0.14476238,0.5757368],[-0.37491873,0.25197625,0.22271682,-0.491189,-0.52316636,0.4666745,-0.10067969],[-0.34871188,0.033361014,0.14734446,0.31006506,-0.27586716,0.06688171,-0.3405154],[0.5929227,0.8162524,-0.9812328,-0.5239229,0.5872333,0.020790983,0.31533986],[0.24348359,0.39312568,-0.0214521,0.6143711,0.016012145,-0.42566973,-0.118630745],[0.1463825,0.07799967,-0.6324735,0.25962767,-0.5155253,0.076581135,-0.6227099]],"activation":"σ","dense_2_b":[[-0.27831843],[-0.0112905],[-0.27060327],[0.007902096],[-0.05577947],[0.6268199],[-0.053876836],[-0.049551494],[-0.029292142],[0.031467807],[-0.027137926],[0.055927135],[-0.26256073]]},{"dense_3_W":[[0.060232863,-0.5037746,0.018263955,-0.5830695,-0.23065938,0.7206465,0.25052637,0.66073346,-0.34804803,-0.2457851,0.56354797,0.1584851,0.14229323],[-0.017081043,-0.36273557,-0.21656403,-0.05546782,-0.48246115,0.02398911,0.24811241,-0.15399784,-0.1066594,-0.53166276,0.27734274,-0.5389266,-0.5232047],[-0.21170785,0.5739519,0.58981717,0.07041403,0.24331552,0.2217054,0.16948755,0.14839208,0.30543324,0.059965707,0.58376944,-0.4667308,0.47962144]],"activation":"identity","dense_3_b":[[-0.034093823],[-0.02758039],[-0.049317274]]},{"dense_4_W":[[-1.1292782,-1.1194721,-0.71209276]],"dense_4_b":[[0.03250581]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571A0J714A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571A0J714A1'.json deleted file mode 100755 index ea8bf79c9c..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144K xf1x895072xf1x82x0571A0J714A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.261855],[1.0054495],[0.44603008],[0.04906136],[0.9972159],[0.9997243],[1.0025296],[0.99329203],[0.98267734],[0.9657255],[0.9471463],[0.04888154],[0.048943646],[0.04899115],[0.04890786],[0.04878479],[0.04839674],[0.047833208]],"model_test_loss":0.007453115191310644,"input_size":18,"current_date_and_time":"2023-08-13_13-00-57","input_mean":[[25.69152],[0.10401062],[-0.019496834],[0.008966865],[0.10911976],[0.10757787],[0.10587171],[0.097837746],[0.09283788],[0.085548356],[0.07863567],[0.008932414],[0.008952776],[0.0089605255],[0.008813915],[0.008735177],[0.00846132],[0.00794868]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.13713238],[0.20321627],[0.7490122],[-0.38984767],[-0.015705755],[-0.5183053],[-1.6598694]],"dense_1_W":[[-0.016463742,-0.80616003,0.0065253316,0.830898,0.64298636,-0.5656381,-0.06751878,-0.63732654,-0.96067095,-0.42503732,-0.027717927,0.40051052,0.05184687,0.17363398,-0.085222274,-0.19231836,-0.08309723,-0.16269061],[-0.009811768,-0.65155673,-5.564333,0.506703,0.65423405,-0.3767845,-0.07368195,-0.62674314,-0.17415152,0.25860035,1.2521535,-0.79924744,-0.017620802,0.29095054,0.30994758,-0.4196323,-0.16702113,0.057845533],[-0.96295756,-0.31182382,0.00043095846,-0.058392283,-0.584871,-0.98906785,0.44015396,1.2223701,0.6097256,-0.030337319,-0.65342844,0.082843415,-0.2627854,0.36388263,0.5306976,0.18281356,0.38318297,-0.35831112],[-0.045849763,1.0797496,-0.00030220754,-0.07059503,-0.75782734,1.1085478,-0.84971356,0.5044923,0.2171235,-0.035467442,-0.21155863,0.10211848,0.19065809,0.15918909,-0.3584042,0.042742535,-0.10781619,0.071901545],[0.0019713347,-0.10772645,-1.2357202,0.10401833,-0.59948766,-0.6267504,0.51822174,-0.38673958,-0.18886894,0.34199828,0.7218928,-0.07034036,0.009723587,0.39160627,-0.32980394,-0.08204679,-0.2102608,0.20249581],[0.9227928,-0.69833463,0.001716081,0.3443532,-0.20834416,-1.1405655,0.5173991,1.1539986,0.6729235,0.12514886,-0.70969516,0.14161992,-0.40097812,-0.17782708,1.0813764,0.10388947,-0.08262546,-0.17301287],[-0.16219285,-1.3139731,-0.005380759,-0.11242274,0.21998426,0.14689903,0.20139551,-0.46337608,-0.41527465,0.06917474,0.2767211,0.0030106166,-0.27788752,0.102582745,0.1434504,0.07394607,-0.071815714,0.09023541]],"activation":"σ"},{"dense_2_W":[[-0.09534758,-0.20494337,-0.3384321,0.50142735,-0.2070578,-0.17975266,-0.47026268],[-0.080807835,-0.7693725,-0.33129126,-0.6481296,0.2961305,0.59115857,0.29982796],[-0.67640305,0.10868651,-0.40651622,1.251038,-0.35252488,0.069079645,-0.4344765],[-0.405377,0.46910697,-0.648163,0.5376939,-0.4130663,-0.20368347,0.10605837],[0.07806083,0.13273892,0.59590846,-1.2799983,-0.14798646,0.5163046,0.71807456],[0.2771363,0.0771471,-0.88079923,0.19846076,0.33752158,-0.63239664,-0.73708975],[0.384604,0.10437411,0.23125851,-1.506182,-0.06421899,0.8640644,0.4960929],[0.008516661,-0.14540984,-0.039332498,0.3648482,-0.4843125,-0.26544338,-0.19283234],[0.5896814,0.479453,0.07903197,-1.3779969,0.44292685,0.57847136,-0.047437504],[-0.109293275,-0.42078793,-0.39426482,1.4202753,-0.35743013,0.16971365,-0.7200603],[-0.5129918,-0.20219454,0.102802396,0.71803844,-0.24758278,-0.5028839,-0.4083767],[-0.5097355,-0.21850984,-0.28750372,0.014024571,0.07086597,-0.24340022,0.23649839],[-0.72368366,0.15557946,-0.2388718,-0.084316276,0.37256187,-0.16913413,-0.93164635]],"activation":"σ","dense_2_b":[[-0.16169836],[-0.42624626],[0.103336595],[0.09075817],[-0.34198973],[-0.17581685],[-0.73661387],[-0.029041702],[-0.36334386],[0.27201274],[0.079298005],[-0.038892936],[-0.31755415]]},{"dense_3_W":[[-0.32185918,0.23010239,-0.29461142,-0.20029086,0.09440893,0.6768535,-0.5149668,0.37832007,-0.40137282,-0.01920188,0.09111374,0.13883176,0.5203541],[0.4970465,-0.45029837,0.5610221,0.36681646,-0.7023499,0.60753286,-0.027918534,-0.16638023,-0.62392753,0.674149,-0.17300312,-0.16632567,0.13502161],[0.22802192,-0.10680726,0.023894504,-0.37220314,0.5496468,0.25617206,0.49781597,-0.38562778,0.7652926,-0.52234906,-0.40956378,-0.2859582,-0.0064916024]],"activation":"identity","dense_3_b":[[-0.017725911],[-0.009221329],[-0.0017763044]]},{"dense_4_W":[[0.06679463,0.77652645,-0.89682037]],"dense_4_b":[[0.003297589]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144L xf1x895081xf1x82x0571A0JA15A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144L xf1x895081xf1x82x0571A0JA15A1'.json deleted file mode 100755 index d28c64acc3..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144L xf1x895081xf1x82x0571A0JA15A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.9609013],[0.68010557],[0.3328183],[0.030046908],[0.67651325],[0.6776699],[0.67907083],[0.6744121],[0.6666261],[0.6520554],[0.6380237],[0.030044695],[0.03003401],[0.030022014],[0.030028066],[0.03002876],[0.03002293],[0.030003896]],"model_test_loss":0.008286223746836185,"input_size":18,"current_date_and_time":"2023-08-13_13-27-29","input_mean":[[27.427336],[-0.053844143],[-0.0010561344],[-0.0085596135],[-0.05380778],[-0.05453289],[-0.054989513],[-0.055681985],[-0.059845272],[-0.063087784],[-0.068856664],[-0.008624959],[-0.008624049],[-0.008617082],[-0.0086126095],[-0.008567826],[-0.008474123],[-0.008392853]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.5761452],[0.04077484],[-0.10482081],[-0.6708523],[0.021307532],[-0.9310431],[-0.00019539302]],"dense_1_W":[[0.72231996,0.18390898,2.4203904,-0.0030663384,0.18403961,-0.82045245,0.51870364,0.1788108,-0.06536024,-0.075233705,-0.018536722,-0.026407123,-0.017022373,-0.1641255,0.08881735,0.3791095,0.15368912,-0.30361718],[0.00531365,-0.94260526,0.019553717,0.16079119,0.6135709,-1.1629479,0.25475162,0.16275546,0.23717655,-0.7684713,0.269077,0.4080043,-0.31144062,0.070601925,0.010450419,-0.22756179,-0.16736664,0.18631667],[-0.03383979,0.58095545,1.7085242,0.07134275,-0.48016626,0.043425214,-0.5469088,0.44866776,0.65664923,-0.30118445,-0.3005833,0.13361159,-0.11855819,-0.35175917,0.46242264,0.1385892,-0.29124546,0.018451372],[2.3314073,-0.7370475,-0.1599346,-0.112356625,-0.1908801,0.16796266,-0.05533258,-0.10605465,0.0662108,0.10284821,-0.3036309,0.17438193,0.003727518,-0.38027525,-0.23749365,-0.8124727,-1.1274155,-1.5589621],[-0.0006869782,-0.042528924,0.05025561,-0.031743184,-0.22178772,1.016933,-0.50708455,-0.30513486,0.16629063,-0.23337619,0.21578076,0.41531077,0.26406106,-0.24498649,-0.53471065,-0.36644122,0.11139245,0.2798891],[0.5800486,0.17213458,-2.2770967,0.13273536,-0.15001313,0.24997446,-0.7256148,0.33752334,0.053435106,0.18205637,-0.21749948,0.3237458,-0.31033078,0.13797231,-0.37041757,-0.13781188,-0.038840763,0.20394051],[0.0049984013,-0.35607442,-0.30905604,0.40517208,-0.19288664,-1.2281868,0.16647166,0.44088066,0.40701556,0.12298187,-0.08295799,-0.07647913,-0.38256118,-0.048575446,0.47953144,-0.019423949,-0.0798172,-0.15896548]],"activation":"σ"},{"dense_2_W":[[0.17072913,0.5787543,0.16908416,-0.15344563,0.21352929,0.1036233,-0.16814779],[-0.04280792,-0.8720339,0.5860262,0.17910767,0.05812723,0.43166825,-0.40927374],[-0.25224444,-0.32741183,0.5557173,0.2577443,0.27441007,0.024975402,-0.18134333],[-0.17902452,0.7218189,-0.24128178,0.08938652,-0.5499739,-0.2853039,0.6032645],[-0.012645399,-0.10678161,-0.2497543,0.12273038,-0.2995278,-0.5155403,-0.12064403],[-0.05483617,-0.61829835,-0.024198718,0.29385313,-0.05762493,-0.13852271,-1.0283959],[-0.17513163,0.5525871,-0.34557396,0.40270397,-0.4239708,-0.36327696,0.22318624],[-0.3050681,-0.5609769,0.6848509,-0.14485584,0.41891348,0.23840618,-0.42206725],[0.3968867,-0.00579093,-0.7550544,0.1985394,-0.41320163,-0.6388418,0.68250275],[0.13954934,0.31490627,-0.79896843,0.12518695,-0.46648943,-0.10224329,0.8570033],[0.40961888,0.4413134,-0.67998093,0.32758147,-0.30693418,-0.39162624,0.6029714],[-0.39057493,0.04696759,0.76041484,0.46441597,0.06613202,0.19455153,-0.84763706],[-0.1115568,-0.48450366,0.6582964,0.43812597,0.7578292,-0.45037985,-0.6380507]],"activation":"σ","dense_2_b":[[0.022194395],[-0.03836468],[-0.058703274],[-0.013638688],[-0.012889619],[-0.117961474],[0.015166406],[-0.040138457],[-0.011272022],[-0.012204604],[-0.062101785],[-0.09131032],[-0.06450806]]},{"dense_3_W":[[0.29413998,-0.24403282,-0.21639973,0.017811967,0.28033993,0.18735097,0.23800737,-0.61772835,0.47691423,0.2947574,0.39353845,-0.30080277,-0.573409],[-0.59557885,0.16263157,-0.33032954,0.27123576,0.30058095,0.14316729,-0.57262224,-0.010264795,0.5258702,0.31621447,-0.29535997,0.38230023,0.18332578],[0.54958236,-0.64796954,-0.5860492,0.4647252,0.25805357,-0.39067873,0.6433446,-0.62534493,0.2620962,0.22722915,0.31812868,-0.29690334,-0.6393193]],"activation":"identity","dense_3_b":[[0.02814165],[-0.050614122],[0.03127771]]},{"dense_4_W":[[-0.7580981,-0.00726576,-0.8432115]],"dense_4_b":[[-0.029448459]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144M xf1x895082xf1x82x0571A0JA16A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144M xf1x895082xf1x82x0571A0JA16A1'.json deleted file mode 100755 index 9f716a09ec..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873Q0909144M xf1x895082xf1x82x0571A0JA16A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.415863],[0.8583176],[0.3856797],[0.031867158],[0.84238064],[0.8479653],[0.85318357],[0.8488065],[0.84401506],[0.83682716],[0.8221359],[0.03176191],[0.031782564],[0.03180224],[0.031836487],[0.03187497],[0.03179108],[0.031642724]],"model_test_loss":0.006253075320273638,"input_size":18,"current_date_and_time":"2023-08-13_13-54-43","input_mean":[[27.552174],[-0.011369959],[0.0032041054],[-0.005240609],[-0.0099758925],[-0.009811709],[-0.010034873],[-0.008717237],[-0.008171778],[-0.009641522],[-0.009617026],[-0.005033958],[-0.005085749],[-0.00514212],[-0.0053138044],[-0.005393524],[-0.005487565],[-0.0055648554]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-2.9255316],[-1.3106222],[-0.28385758],[-0.005533128],[0.8718399],[0.13129508],[0.65529805]],"dense_1_W":[[-1.3177696,0.19991967,-2.7236588,0.47501546,-0.20533472,-1.0557586,0.17047773,0.009924321,0.06776284,0.115778096,-0.17705421,0.32459033,-0.0209746,0.12562141,-1.2017485,-0.427539,0.047930263,0.45157415],[0.14440672,-0.63587517,0.04897055,-0.22241928,0.012585529,-0.9856927,0.060655825,0.10771243,-0.11834612,-0.2647466,0.041776862,-0.005160143,0.4143384,-0.08409255,0.38516775,-0.06466858,0.4800853,0.116947636],[-0.048163578,-0.15507038,0.10709546,0.05433569,-0.78400093,-0.10471941,-0.687971,0.24902299,-0.28871644,-0.15858674,-0.15051886,-0.07557398,-0.21722956,0.19256075,0.9204932,-0.025876911,0.377379,0.11786139],[-0.0023113806,-1.1656983,-0.016276661,0.3712625,0.26083446,-0.8202079,0.7635671,0.12174111,-0.3810017,-0.4706684,0.476022,-0.1495595,-0.17617117,-0.0334313,0.34056324,-0.12129183,-0.18112142,0.0017632246],[0.36963087,-0.08762645,-1.6472614,0.58248544,0.099876635,-0.68770367,0.1060096,0.01555146,0.21880303,-0.07295039,-0.04888322,0.11901441,-0.3384761,0.6579154,-1.1264246,-0.25798565,-0.2051824,0.49036825],[-0.001395127,0.31909215,0.038826507,-0.16812363,-0.41808403,0.78146785,-0.12594081,-0.050199978,-0.0973126,-0.31068856,0.23852174,0.42455164,-0.08920052,0.24407244,-0.54622006,-0.2538641,0.038934287,0.26070222],[-0.1450647,-0.5672448,0.046273015,-0.3383503,-0.18226248,-0.75000846,0.22487456,-0.1403406,-0.19991998,0.040012,-0.07465593,-0.30669475,0.20688607,0.35658067,0.7150998,-0.056518137,0.2800083,0.09291142]],"activation":"σ"},{"dense_2_W":[[-0.26085964,0.3516763,-0.17330408,0.661693,0.17870913,-0.16493158,0.19355819],[-0.13368994,0.024639409,-0.57033145,0.5646507,0.3874018,-0.6424429,0.5143024],[0.36197537,-0.4894154,0.86991316,-1.0450212,-0.8808762,1.005693,-0.50344414],[0.037066706,-0.30221042,0.07532641,0.059567153,0.41288042,-0.6703966,0.5937009],[-0.3279511,-0.5896927,0.04172026,-0.25627023,0.311046,0.46807423,-0.7380045],[-0.17663476,-0.15280105,0.25481316,0.22980238,0.32853058,0.026288528,0.4474023],[-0.6216895,-0.43472454,0.16474614,0.24401735,-0.009333907,-0.55698293,-0.4658436],[0.64419144,-0.21330142,0.9627268,-1.1507334,-1.3168378,0.21035595,-0.22476402],[-0.22558647,-0.076528445,0.7357744,-0.89835054,-0.7661023,0.90134853,-0.07517657],[0.35094383,0.18648076,0.03390864,0.4248296,0.04366893,-0.26929817,-0.26258168],[-0.62187046,-0.59535176,0.72753495,-0.94289756,0.049893454,1.2905704,-0.16296726],[-0.39337137,-0.90796244,0.8290803,-0.22699821,0.17312697,0.98712176,-0.73924625],[-0.27244756,-0.37847507,0.122294754,-0.34000623,-0.034100182,0.08922609,-0.2426594]],"activation":"σ","dense_2_b":[[0.101125225],[0.10885535],[0.20420383],[0.009535166],[0.31587136],[0.07603302],[-0.357305],[-0.0620017],[0.11676147],[-0.21882989],[0.2917003],[0.07597336],[0.053113062]]},{"dense_3_W":[[0.6511969,0.195776,-0.49096948,0.4126447,-0.74414754,0.26202098,0.05113331,0.17945053,-0.2824012,0.28811157,-0.43237004,-0.7557984,-0.2802274],[-0.087479815,-0.5842241,-0.22641535,0.16699481,0.14202616,-0.02455116,0.32574484,0.81653625,0.4594011,0.2965805,0.22684464,-0.10494171,-0.37137553],[0.40364054,-0.2642197,-0.114815384,-0.49680176,0.411435,-0.15565751,-0.42915186,0.5777007,-0.27192292,0.27795404,-0.49125576,-0.23119576,0.09542205]],"activation":"identity","dense_3_b":[[0.16922124],[-0.16786872],[-0.1235053]]},{"dense_4_W":[[-1.0848238,0.43780962,0.121263236]],"dense_4_b":[[-0.16589022]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873QM909144 xf1x895072xf1x82x0571A01714A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873QM909144 xf1x895072xf1x82x0571A01714A1'.json deleted file mode 100755 index c60cfc778d..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x873QM909144 xf1x895072xf1x82x0571A01714A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.499129],[0.6601068],[0.37126893],[0.035993777],[0.64755857],[0.650401],[0.6537066],[0.64798653],[0.6443389],[0.6342998],[0.62037724],[0.035718568],[0.035768334],[0.0358108],[0.03556472],[0.035507064],[0.035144154],[0.034718994]],"model_test_loss":0.008825271390378475,"input_size":18,"current_date_and_time":"2023-08-13_14-51-36","input_mean":[[28.12371],[0.0065643145],[-0.012259348],[-0.0308991],[0.0035661163],[0.0040573454],[0.0040573636],[-0.0018063665],[-0.0031446684],[-0.006249773],[-0.007770399],[-0.03104693],[-0.031047331],[-0.03104868],[-0.03136646],[-0.03136208],[-0.03151733],[-0.031626265]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.6165265],[0.067915596],[-0.45316094],[-0.16899234],[-0.14808252],[-0.8624182],[0.7455331]],"dense_1_W":[[1.7688528,0.032614052,-0.04258705,-0.40471157,0.0026211264,0.14383507,-0.76273596,0.055630405,0.21549416,-0.10156934,-0.018276177,0.42286775,0.06321405,-0.048351847,-0.3251357,-0.13999832,0.014422678,0.20865417],[0.018235689,0.8150084,-0.011439717,-0.017960383,-1.0395502,0.4898895,-0.04454969,0.46327382,0.7437933,0.06830239,-0.4826564,0.1393547,0.14606072,-0.28793386,0.07896613,-0.26915878,0.061934475,0.10996908],[-1.7670835,-0.14292058,-0.04067935,-0.13737008,-0.11408217,0.34066078,-0.65927386,0.3707693,-0.08453015,-0.277993,0.15899399,0.19312033,0.12644269,0.0016063079,-0.3582613,-0.41488636,0.22687747,0.14989714],[0.009283532,0.21346128,3.842557,-0.18832086,-0.32320932,0.6712642,-0.56471795,1.146071,0.9314705,-0.6850848,-1.6761949,0.767423,0.09417577,-0.23689681,-0.81722146,0.2585955,-0.04035137,0.21729858],[-0.0062285685,-0.5146245,-0.082685284,0.0031572075,-0.20794849,-0.6622915,0.6452885,0.32985207,0.40914443,-0.13983616,-0.12780568,-0.17184584,-0.1486529,-0.25821346,0.536185,0.2092422,0.23474011,-0.40814623],[-0.2992245,-0.43034312,0.014492514,0.6396918,0.20689917,-1.0586469,0.6380456,0.111478046,-0.013004605,0.027720524,-0.11885847,-0.17448127,-0.22942995,0.3940829,-0.28098577,-0.49394473,0.062754326,0.16152045],[0.3649246,-0.45967793,0.026177378,0.034597564,0.104035355,-0.4483116,0.45026922,-0.26696894,-0.030676577,-0.16899553,0.11374246,-0.42508754,0.41004568,0.118722625,0.1094624,-0.045650996,-0.21261446,0.10205266]],"activation":"σ"},{"dense_2_W":[[0.29746833,-0.9805263,-0.20373926,-0.5810894,0.822015,0.78565085,0.774397],[-0.28532717,0.23769815,0.060819168,-0.18559076,-0.5988815,-0.6324048,-0.13228494],[-0.05379423,-0.6090431,-0.6882858,-0.38678372,1.2622792,0.5061005,0.806397],[0.016906988,0.8676961,0.13297725,0.07773776,-0.9471627,-0.23707166,-0.12722206],[-0.9656899,-0.52974796,-0.8884889,-0.18769741,0.20580004,0.088316336,-0.3275884],[-0.83929497,-1.3246149,0.20151234,-0.20800409,0.644204,0.73422116,0.37904078],[0.17644885,-0.17937113,0.7630181,0.23492537,-0.9941054,-0.087052345,-0.80296385],[0.5275903,0.15053748,0.26323977,-0.45628256,-0.904721,-0.13627163,-0.72142714],[-0.36794254,-0.36518982,-0.72322273,0.15947448,-0.5001212,0.09817367,0.2520628],[0.65508115,0.14115669,0.63049525,0.093293644,-0.15200832,0.26687813,-0.0647521],[-1.2376599,-1.0406941,0.35769528,-0.58431584,0.07535975,1.1416343,0.19291566],[-0.22289965,0.40572295,0.72577405,0.16881567,-1.15984,-0.6175091,-0.18357803],[-0.5811096,-0.95013314,-0.33011654,-0.15803374,0.7887948,0.29292244,-0.002783515]],"activation":"σ","dense_2_b":[[-0.049079053],[-0.08643912],[0.10503918],[0.04620607],[-0.24959993],[-0.29486987],[-0.07451853],[-0.15858883],[-0.246627],[0.022139506],[-0.26383835],[-0.27304852],[-0.11335464]]},{"dense_3_W":[[0.27437788,-0.13480587,0.4028967,0.26457673,-0.049248666,0.3107791,0.40147588,0.68062055,-0.32741368,-0.33465502,-0.38290545,0.34771603,-0.4449348],[-0.5136515,0.16504014,-0.69426614,0.69784516,-0.10840683,-0.53815,0.55030924,0.049842075,-0.043087877,0.37305754,-0.47518057,0.18190123,-0.0713615],[-0.09406427,-0.12237694,-0.71659255,0.42452714,-0.2178768,-0.44793212,0.5866718,0.52974296,0.42568213,-0.0633519,-0.74072903,0.77244145,-0.24008119]],"activation":"identity","dense_3_b":[[0.0077823168],[0.07439971],[0.038980033]]},{"dense_4_W":[[0.13538235,0.9460461,0.2892883]],"dense_4_b":[[0.06883352]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144AAxf1x891081xf1x82x0521A00608A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144AAxf1x891081xf1x82x0521A00608A1'.json deleted file mode 100755 index e04086d5e3..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144AAxf1x891081xf1x82x0521A00608A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.057558],[0.9240797],[0.39042372],[0.04054577],[0.91198736],[0.91717815],[0.92098093],[0.91237575],[0.899855],[0.8780954],[0.86047786],[0.04041413],[0.04044436],[0.040472586],[0.040513117],[0.04048389],[0.04041956],[0.040282376]],"model_test_loss":0.009325800463557243,"input_size":18,"current_date_and_time":"2023-08-13_15-19-49","input_mean":[[22.28529],[-0.031808108],[0.0006169089],[0.0020743944],[-0.028572567],[-0.028636014],[-0.028830813],[-0.028213872],[-0.02719701],[-0.023936827],[-0.021230578],[0.0021741558],[0.0021642826],[0.0021512513],[0.002037396],[0.001988419],[0.0019436596],[0.0019510677]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.030092482],[-0.08966159],[0.7434682],[0.052508995],[-0.037241258],[-0.6811802],[0.08887462]],"dense_1_W":[[-0.016281815,-0.21513529,-0.5826629,-0.040725954,0.1220137,-0.74154484,0.22448872,-0.69602275,-0.044675313,-0.050951652,0.55438906,-0.14687209,0.10323754,0.10435016,0.28258827,-0.46545756,0.20151669,-0.041637793],[-0.038013637,0.4798638,0.035863526,-0.047271762,-0.3552868,0.736299,-0.44315857,0.093434595,0.026829336,0.022546915,-0.014716782,-0.2137455,0.72353894,0.13167273,-0.5572506,-0.17848228,-0.19980797,0.34290475],[-1.3190829,-0.16427143,0.03076943,0.18381341,-0.35874882,-0.6953364,0.63559276,0.56573445,0.12491954,0.34269994,-0.46494725,-0.57930934,-0.0077773347,0.29941487,0.49355614,0.52276766,0.039447572,-0.36896285],[0.0075827236,-1.8779591,0.07066059,0.09625603,0.42762265,-0.8998018,0.28209868,-0.30655807,-0.17634554,0.38442346,-0.3097632,0.15156893,-0.13291042,0.1254108,-0.11183744,0.33543125,-0.41085628,0.09713285],[0.02231647,0.4558223,0.04829613,-0.5974221,0.12706976,0.5712898,-1.1618217,0.004924739,0.25602806,0.34039888,-0.26809433,-0.13969776,0.005608404,-0.04935092,0.6085609,0.56621975,0.054403227,-0.41240177],[1.3177918,0.34837294,0.03489512,-0.1798878,0.07544648,-0.7564881,-0.25446817,0.41348827,0.38496748,0.18170023,-0.4120484,-0.012971901,-0.14837568,-0.11443646,0.6549086,0.7655774,0.095144756,-0.46527424],[0.003085306,-1.8520818,-5.775147,0.9801003,1.6440481,-0.41763654,0.0023244382,-0.368523,-0.5199194,0.19324827,1.0014604,-0.7281056,-0.59879243,0.4747877,0.2891212,0.09482188,0.009162863,-0.40084323]],"activation":"σ"},{"dense_2_W":[[0.7327416,-1.021178,0.6615702,-0.20163396,-0.3478265,0.22332166,-0.27881405],[-0.35193413,0.366607,-0.31837893,0.05043401,-0.12893029,-0.15935789,0.3549393],[0.21511331,-0.18085788,-0.40121323,0.32115334,-0.13333887,-0.5539215,-0.2487469],[0.0033335267,1.0552391,-0.62137043,-0.40063322,0.99995136,0.5781669,-0.58789635],[0.61077094,-0.3306075,-0.31027898,0.7346135,-0.8391994,0.847853,0.48013672],[-0.14262784,-0.741944,0.6622348,0.48902386,-1.3086324,0.098962665,0.45717558],[0.2415809,-0.84083027,0.5231141,0.65175545,-0.554833,-0.008785207,-0.17766568],[0.055044893,0.52781713,-0.5939338,-0.7540269,0.15011188,-0.420139,0.2981709],[-0.14237478,-0.29901835,-0.7485882,-0.21372531,-0.34447756,0.40902004,-1.1021607],[-0.54304063,0.012865376,0.31854355,0.17462453,0.26030272,-0.7394602,-0.7608907],[-0.44612113,0.36114553,-0.25402042,-0.0076143444,0.8201758,0.47841248,-0.45955038],[-0.004852833,0.57263273,-0.019337526,-0.75631505,0.4485348,-0.3326961,-0.3167996],[-0.15952389,0.4143726,-0.01947486,0.2718969,0.47909242,0.089936785,-0.45480072]],"activation":"σ","dense_2_b":[[-0.15473405],[-0.03545587],[0.011608688],[0.24255751],[0.028790355],[-0.44917503],[-0.07094555],[-0.062117405],[-0.16924906],[-0.10952014],[0.1554779],[-0.20075743],[-0.113302805]]},{"dense_3_W":[[0.3808469,-0.551099,-0.22391781,0.15603887,0.23546505,0.029905649,0.44500378,-0.19618921,0.22027779,-0.40315858,-0.14389955,-0.33602792,-0.12122436],[-0.59489226,0.2445008,0.11975124,0.48564222,-0.39224073,-0.272205,-0.54375273,0.009905357,-0.23434179,0.52072835,0.34248853,0.16348307,0.20279588],[-0.014571961,0.5323131,-0.5192708,-0.37823296,0.66229814,0.112855725,0.64537394,-0.30970648,0.31949428,0.11771956,-0.23411283,0.30479413,0.3693334]],"activation":"identity","dense_3_b":[[-0.037845407],[0.04069344],[-0.059178203]]},{"dense_4_W":[[-0.99151933,1.1575272,-0.65392774]],"dense_4_b":[[0.04349]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A07B05A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A07B05A1'.json deleted file mode 100755 index ce3c207e0e..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A07B05A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.563397],[0.8385782],[0.38159406],[0.0343706],[0.82969534],[0.8327079],[0.8353158],[0.8362094],[0.8282918],[0.8180939],[0.80514234],[0.0341284],[0.03419915],[0.034257572],[0.034370307],[0.034313396],[0.034115147],[0.03375072]],"model_test_loss":0.011564328335225582,"input_size":18,"current_date_and_time":"2023-08-13_15-45-22","input_mean":[[21.38968],[-0.041864436],[0.016576989],[-0.021341346],[-0.045225102],[-0.044813316],[-0.04361269],[-0.034834445],[-0.031572755],[-0.024205465],[-0.018740682],[-0.021514442],[-0.021450149],[-0.021384653],[-0.021149829],[-0.021141373],[-0.020979993],[-0.020896269]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.5755177],[0.03428629],[-0.71415836],[0.22175552],[-0.09201754],[-2.8689044],[-0.1045704]],"dense_1_W":[[0.9483997,0.9610236,0.20808627,-0.30212918,0.053525597,0.5834779,-0.93940276,0.65561306,0.36549884,0.3216295,-0.21082531,0.44739217,-0.29857454,-0.11884895,-0.15256537,0.60311323,0.081600666,-0.23139988],[-0.005265079,1.3001031,3.8029873,-0.32444727,-2.6160483,0.2214184,0.058062643,1.1854216,1.1538562,0.15885483,-1.0735705,0.3265351,0.5016962,-0.4941123,0.016058635,-0.25360242,0.15720944,0.08846265],[0.0012037685,-0.65408915,-1.5829769,0.33530995,0.7700829,0.047827095,0.5908282,-0.17494035,-0.26473024,0.51929754,1.1789833,0.0807209,-0.24442843,0.60358465,0.003373896,0.6164561,0.045661986,-0.14974658],[-0.0006085811,-0.6465432,0.0034944871,-0.15468381,0.67403156,-0.93398803,-0.13589555,-0.35583574,-0.57860667,-0.21501748,0.385936,-0.3407401,0.20494653,0.20552959,0.12731454,0.0399628,-0.2351022,0.091997944],[-0.0065293787,0.7746981,0.51969033,-0.5453975,-0.051220566,0.95546484,-0.24264541,-0.19263709,0.3042942,-0.4307904,-0.4401109,0.31372312,0.5982625,-0.32563445,-0.3293053,-0.076774836,0.30764472,0.03080843],[-0.9222714,0.65885305,0.20200571,0.0613283,-0.12522168,0.3155805,-0.17339218,0.62215847,0.3577474,0.3287558,-0.23576994,0.2977285,0.15171073,-0.54179823,-0.20839736,0.14107114,0.29692984,-0.17770605],[0.0037967945,0.9581507,-0.0014370086,-0.49775982,-0.13051113,1.0137179,-1.1507403,0.24028304,-0.79054755,0.17817192,0.17676984,0.99630857,-0.077027574,-0.20737489,-0.5133581,0.0631313,-0.34999797,0.48768488]],"activation":"σ"},{"dense_2_W":[[-0.48959735,-0.59383065,0.068969965,0.4048074,-0.09356656,-0.22178447,-0.008503189],[-0.47465578,0.046973683,-0.30203333,0.7319351,0.37943313,-0.7515599,-0.7609684],[-0.7812694,-0.1668936,0.34998512,0.6032413,0.2552332,-0.07198844,-0.9453271],[-0.1400433,0.56433755,-0.28285316,-0.5249183,-0.061916184,0.5938611,0.43950254],[-0.19838578,-0.120480634,-0.2613999,0.040656477,-0.57329947,0.035204634,-0.23756325],[-0.31026715,-0.91703445,0.5292604,-0.6104651,-0.35656053,0.19026318,-0.33533737],[0.362478,-0.6857054,-0.061543047,0.14211811,0.38036314,-0.5977386,-0.6514936],[0.28820255,0.014584735,-0.5350505,-0.664403,0.6750804,0.35808724,0.39167216],[-0.82168514,-1.1079371,-0.18080051,-0.79870147,0.12686022,0.18076727,0.08958418],[0.2513723,0.17902936,-0.30011544,-0.714674,0.51919776,-0.23153323,0.7435418],[0.30748522,0.12669975,0.081522584,-0.5034588,0.030012246,-0.017879713,0.6410725],[0.26371044,0.34655178,-0.59103256,-0.43619967,-0.687298,-0.7533559,-0.3246515],[-0.38202673,-0.58601105,-0.24320982,0.69089496,-0.5146493,0.17502482,0.060758125]],"activation":"σ","dense_2_b":[[-0.03921857],[0.20950015],[0.05701196],[-0.24196394],[-0.043847077],[-0.09972506],[0.084566765],[-0.11199834],[-0.23634689],[-0.19677764],[-0.08626865],[-0.08511737],[0.08237302]]},{"dense_3_W":[[0.2521058,0.05273895,0.14777374,0.2316707,-0.03372719,0.37708887,-0.22231328,-0.14752237,0.024881583,0.14600374,-0.36284056,-0.053377006,0.15762502],[0.17785782,0.65084356,0.653211,-0.65019035,0.20140639,0.38871175,0.24968603,-0.6089574,0.30058384,-0.08686883,-0.49139014,0.17155631,0.48726168],[-0.11656486,0.2625412,-0.3139385,0.10613407,0.4817832,0.19348018,0.08415106,-0.6385824,-0.2113412,-0.5868329,0.1681216,0.33424532,0.14378552]],"activation":"identity","dense_3_b":[[0.046604935],[-0.0675065],[-0.049730938]]},{"dense_4_W":[[0.40339613,-1.2102003,-0.3411253]],"dense_4_b":[[0.061254077]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A00442A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A00442A1'.json deleted file mode 100755 index b3b8b8db24..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A00442A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.8480306],[0.96037143],[0.56644064],[0.031923212],[0.9592892],[0.9607283],[0.9606423],[0.9418574],[0.9194964],[0.8982176],[0.87986463],[0.03180112],[0.0318301],[0.031843536],[0.031923328],[0.0321031],[0.032251816],[0.032379184]],"model_test_loss":0.007998951710760593,"input_size":18,"current_date_and_time":"2023-08-13_18-46-40","input_mean":[[17.83718],[-0.021548323],[0.008896963],[-0.020022377],[-0.027599646],[-0.026774092],[-0.025805676],[-0.021180406],[-0.0172894],[-0.014156764],[-0.015430601],[-0.020131098],[-0.020135172],[-0.020142682],[-0.02023454],[-0.020377133],[-0.020592311],[-0.020893447]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-3.234378],[-1.0114365],[3.3278525],[-0.043438543],[0.09898487],[-1.1228223],[-0.09896681]],"dense_1_W":[[-1.4481235,1.14371,-0.18619996,-0.014011254,0.5418801,-0.8123825,0.04581224,-0.31140676,-0.219098,0.009256715,-0.20572591,-0.24179928,0.121151835,0.17432994,0.046270356,-0.42792895,0.08374407,0.2014057],[-0.35328487,0.87328243,0.23025416,0.041772332,-0.19766848,0.65253824,0.007881493,0.10688904,0.25050953,-0.28640047,0.124380134,0.41151407,-0.20547412,-0.38162622,0.022347001,0.017873542,0.005152273,0.04886075],[1.4722439,0.974171,-0.19161922,0.20244934,0.61558235,-0.8968513,0.16112171,-0.25674978,-0.22722203,0.058710273,-0.23509592,0.16444913,-0.2827588,-0.03489349,-0.18735917,0.00018917536,-0.18949887,0.27490872],[0.012972494,1.2556565,5.9566135,-0.15130961,-0.4523947,-0.37081477,-0.91552794,1.1574521,0.47152543,-0.47953206,-0.55489933,0.099222064,0.38702163,-0.29589957,0.041597135,-0.03547445,0.022571348,0.027354982],[-0.003863914,0.22050343,0.0120630115,-0.25257105,-0.10205844,0.9146121,-0.7968388,-0.29547405,-0.17439528,0.46752262,-0.08055068,0.17053045,0.18076906,-0.1516316,0.055936866,-0.17291713,-0.10852507,0.16824071],[-0.4190413,-0.857921,-0.25096828,-0.28255612,0.19289751,-0.8734456,0.28353396,-0.37122184,-0.11925379,0.19329911,-0.06972643,0.25552443,-0.35699388,0.26851597,0.43666807,-0.24304788,-0.09045897,0.055230238],[0.0012014257,-0.54465014,-0.4546114,0.0631211,-0.18529981,-0.94013214,0.40706542,-0.23528938,0.075760044,0.8153893,0.17362785,-0.39601672,0.18890578,0.48059973,0.10882803,-0.22344732,0.16269675,-0.24009374]],"activation":"σ"},{"dense_2_W":[[-0.8621162,0.6375523,-0.121657215,-0.34696895,0.51134723,-0.642076,-0.43340936],[-0.39562237,-0.241824,-0.12310841,-1.2114509,-0.89629316,-0.012759714,-0.58896196],[-0.69110984,-0.09870509,-0.3375854,-0.09505871,0.97829163,-0.6490481,0.1399663],[-0.010694462,0.022776525,0.82732725,-0.15266539,-0.25287274,0.39495268,-0.39242798],[-0.120031275,-0.71853244,0.37485296,0.45275152,-0.9226145,0.1723915,0.045272652],[-0.5235272,-0.4945377,-0.18775977,-0.8348921,-0.25558534,-0.26095316,0.2460929],[-0.2680453,0.7991849,-1.2544307,0.6096642,0.8758116,-0.66279304,-0.44246507],[0.24853848,-0.009198416,-0.3490367,-0.27431184,-1.1257328,0.35145393,-0.30193186],[1.1962029,-1.1290612,0.23949686,-0.20245065,-1.1434972,0.53818357,0.60230476],[0.6036199,-0.45529002,0.9213078,0.03841346,-0.73413646,0.1718995,-0.2821352],[0.864308,-0.6686404,0.9973249,-0.19549038,-0.8948997,-0.10574349,0.5035874],[1.9524418,-0.022500906,-0.4884547,-1.4554193,-1.1326776,1.0094995,0.33511108],[0.35033834,-0.5318131,-0.72255147,0.07995676,-0.35800278,-0.5116459,0.3332227]],"activation":"σ","dense_2_b":[[0.108086385],[-0.31281564],[0.13146636],[-0.17104536],[-0.24870978],[-0.31226832],[0.08884647],[-0.3376938],[-0.33002087],[-0.14730828],[-0.17783853],[-0.38552558],[-0.093307]]},{"dense_3_W":[[0.18446985,0.21522333,-0.28989294,0.35959074,-0.16474617,-0.16107476,-0.9634279,0.63884085,0.33368322,-0.14383645,0.6392969,0.88589066,-0.57898635],[0.26163533,0.40219304,-0.5289297,0.11495239,0.29818106,0.17250255,-0.12519145,0.31459266,-0.38456517,-0.12500696,0.17287982,0.0887632,0.10183194],[-0.71430176,-0.40297222,-0.52635926,-0.07720518,0.369048,-0.03566161,-0.9068424,-0.46042228,0.2392488,0.73106444,0.27735183,-0.16808154,0.38387048]],"activation":"identity","dense_3_b":[[0.009075719],[-0.0069753183],[0.029595045]]},{"dense_4_W":[[-0.8512863,-0.071502104,-1.0336823]],"dense_4_b":[[-0.021940688]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QN909144B xf1x895082xf1x82x0571A01A18A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QN909144B xf1x895082xf1x82x0571A01A18A1'.json deleted file mode 100755 index e5182951ae..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN b'xf1x875QN909144B xf1x895082xf1x82x0571A01A18A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.188053],[1.1657922],[0.53592527],[0.040702485],[1.1630709],[1.1658245],[1.165898],[1.1360451],[1.1134317],[1.0845132],[1.0600443],[0.04062425],[0.0406608],[0.040687334],[0.04069575],[0.040612057],[0.040392578],[0.040035486]],"model_test_loss":0.014063029550015926,"input_size":18,"current_date_and_time":"2023-08-13_20-26-43","input_mean":[[21.149807],[-0.10974744],[-0.0031464333],[9.495444e-5],[-0.108882815],[-0.11035729],[-0.11167806],[-0.11192071],[-0.10970605],[-0.1038049],[-0.09687886],[-8.529318e-5],[-5.421513e-5],[-1.24803355e-5],[0.00014361751],[0.00017423068],[0.0003317356],[0.0004546588]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.27552018],[0.90119773],[-1.3030006],[-2.1216948],[0.18355446],[-2.4107463],[0.16562456]],"dense_1_W":[[0.12652385,2.4475446,-0.022650752,-0.69291824,-1.0016218,0.91486317,0.6336902,0.14477217,0.2598121,-0.20517316,0.36350495,0.39227563,0.0074457154,0.07074344,-0.19992946,0.0991527,0.04138881,0.06528243],[1.3323559,-0.7597325,-0.043890204,0.09516193,0.5088217,-0.21222521,0.38730863,-0.10672117,0.12993167,-0.12611133,0.17683442,-0.29292497,0.28472096,0.31997505,-0.07029694,-0.24922556,-0.0124233235,0.112814486],[-0.36201748,1.4186722,0.0062952894,-0.037926484,-0.5666642,0.72316504,-0.46085364,0.035363074,0.118354574,-0.11634284,0.10892351,0.28690028,-0.25633323,0.11827332,-0.110319726,-0.052415002,-0.08695773,0.13403927],[-0.57906187,-2.1076198,0.00707048,0.124392234,0.9577161,-0.652618,0.11178688,0.08233431,-0.10934392,0.15851316,-0.16079995,-0.200316,0.02980312,0.16383933,-0.19201891,0.07208879,0.0134847,-0.026035026],[1.6250517,-0.2035624,0.050559063,-0.27959144,0.02131727,1.4500656,-1.1230069,-0.13204305,-0.20134674,0.109666,0.105381586,0.33672488,-0.054919533,0.1381979,-0.37668028,-0.44266343,0.40978658,0.055366118],[-0.48616406,-0.09577948,0.030225683,-0.054680806,-0.4930565,-0.22118689,1.1458802,0.32909223,-0.3652297,-0.28851825,0.21014541,0.24283552,-0.11504994,0.41478232,-0.77871186,-0.2583162,0.44575816,0.024779651],[-0.06703918,0.022096574,-3.0616148,0.19644247,-0.7936287,-1.3313962,1.0172884,-0.14775673,-0.6005079,0.41182107,0.7640057,-0.037669305,-0.43755364,0.21248876,0.25767666,0.08838868,-0.38727447,0.116036914]],"activation":"σ"},{"dense_2_W":[[-0.5774166,0.3788837,-1.1512787,0.6045041,-0.30563933,0.1520524,0.4747448],[0.026152905,-0.40509266,0.71000934,-0.4843991,-0.20758377,0.18950084,0.37816125],[-0.13815251,-0.8893696,0.23316386,-0.113908656,-0.4585042,-0.46166483,-0.22798917],[-0.542509,1.2547107,-1.8032401,0.2135292,0.4327131,0.6078487,1.2712867],[-0.041001927,0.16597806,0.39927384,-0.54332757,0.23889625,-0.45043373,0.19426684],[0.16223486,-0.64652383,0.4093884,-0.6869164,0.015826961,0.18224072,0.40522045],[0.5264121,-0.81645095,1.0303737,-0.7750668,0.53066015,-0.18214639,-0.09689465],[0.47082463,-0.62583274,0.64610606,-0.17833126,0.48148805,0.086845286,0.11682811],[-0.7040258,1.2640396,-2.4362037,1.873551,-1.8753885,1.3339359,1.0496316],[0.14156407,0.5989012,-0.23044766,-0.097144015,0.12927,-0.010738458,0.6056361],[0.26921788,-0.1284144,0.007066244,-0.04917847,0.5776498,-0.47206506,-0.36211184],[-0.2055914,-0.48159376,-0.024098463,0.103931576,0.50089693,-0.06848274,-0.09180179],[-1.3385345,-1.9117901,-0.0011972345,-0.7033701,-4.2961745,2.4796546,2.848627]],"activation":"σ","dense_2_b":[[0.19726445],[-0.06158395],[-0.14339806],[0.12678884],[-0.14894912],[-0.04651775],[-0.14024791],[-0.15321352],[0.08253985],[0.18063237],[-0.049321633],[-0.08920167],[-1.457004]]},{"dense_3_W":[[0.7081014,-0.30889422,-0.49976626,0.32896045,-0.40754297,-0.45574123,-0.6064694,-0.4691866,0.5265183,0.6408709,-0.32701582,-0.34626913,0.5192711],[-0.32945433,-0.2021828,-0.43582925,0.21351081,0.51058686,-0.33781144,0.7423047,0.3941001,-0.71700716,-0.26396632,-0.5284645,0.20918335,-0.71266997],[-0.623438,0.35574603,-0.042172,-0.2322551,-0.21975967,0.4599549,-0.24270838,0.4056575,0.46420303,-0.31508285,0.5513475,-0.24558863,-0.28036433]],"activation":"identity","dense_3_b":[[0.10075232],[0.1357436],[-0.02601655]]},{"dense_4_W":[[-1.0338233,0.175015,-0.0050515365]],"dense_4_b":[[-0.102083005]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A10A01A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A10A01A1'.json deleted file mode 100755 index 23d7c217e4..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521A10A01A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.369346],[1.0345815],[0.48595738],[0.038879942],[1.0224149],[1.0270526],[1.0309867],[1.0154411],[0.9946685],[0.9673825],[0.9462645],[0.038886003],[0.03886903],[0.038842827],[0.038692325],[0.038516246],[0.03829045],[0.038023546]],"model_test_loss":0.011551334522664547,"input_size":18,"current_date_and_time":"2023-08-13_21-17-35","input_mean":[[24.614252],[-0.027011419],[0.0014726992],[0.008945528],[-0.02214811],[-0.023875551],[-0.025268542],[-0.021144817],[-0.020492183],[-0.01736523],[-0.01178769],[0.009003565],[0.009013808],[0.009026339],[0.009184481],[0.009248184],[0.009236562],[0.00922171]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.3147287],[-1.6872499],[-0.42541492],[-2.6292078],[0.028035024],[0.03459358],[0.07949542]],"dense_1_W":[[0.047803342,-1.4541457,-7.672288,1.0376374,0.90106887,-0.5459878,0.30515322,-0.08935539,-1.0962652,0.29930526,0.7711765,-0.47839776,-0.067261726,-0.31026986,0.096002005,-0.19196555,0.049338873,0.037196536],[-0.9811775,-0.78911555,-2.1510236,0.50958246,-0.4388312,-0.96856743,0.28030896,0.1779042,0.0768994,-0.13534106,0.16211012,-0.5117382,-0.4880125,0.4930607,0.42255047,-0.427145,-0.016792877,0.04354907],[0.24651746,1.9175419,-0.001038614,0.4657561,-0.7955447,0.28141394,-0.21989036,0.7032182,0.021002548,0.054642107,-0.25775212,-0.18840952,-0.19194557,-0.11614515,-0.2208172,-0.18785909,-0.100455984,0.11671375],[-1.110365,1.4617373,2.5632505,-0.6936042,0.18904822,1.2634845,-0.7143399,0.43131736,-0.6782005,-0.11955076,0.014935311,-0.053061865,0.60653067,0.2520773,-0.5539984,0.37587786,0.38024148,-0.29947954],[-0.049056992,3.2711048,-0.0012738818,-0.9280159,0.06959995,1.3438661,2.1296465,1.5839107,1.2994887,0.2974056,-0.4331058,0.5643816,0.17077604,0.46159738,0.13453983,0.32876533,0.29972157,-0.19157079],[-0.002617311,-0.26627848,0.00035574558,0.15850249,-0.51069593,-0.9413688,1.3242084,0.36154234,-0.037687466,-0.12007863,-0.103309914,-0.08942667,-0.49348807,0.24432492,0.19013445,0.090723045,0.09632228,-0.19452243],[-0.3788624,1.6411204,0.0010042163,-0.7426254,-0.9095712,0.5644892,0.10306167,0.37586528,0.35857487,-0.26580176,-0.07742835,0.38095754,0.35132152,-0.26794037,-0.5125942,0.26599923,-0.07368752,0.14955874]],"activation":"σ"},{"dense_2_W":[[-1.1191249,-0.44653374,0.3957576,0.20264097,0.8131554,-0.8871739,0.76233166],[0.24396768,-0.11242304,0.11703958,0.23683518,0.26508585,-0.8381617,-0.010156824],[0.95748633,-0.8170791,0.91270953,-2.2128932,-1.7108568,-0.3102869,-0.51243025],[-1.0560807,-0.18680175,1.0978043,-0.1330585,0.50391763,-0.61881065,0.40257195],[0.13224883,0.33161446,-1.2939858,-0.86368215,0.25465244,0.41896132,-0.4954958],[-0.9718114,-1.1362193,0.12704434,-0.7889261,0.67179495,-0.025664078,-1.2435114],[-1.0912126,-1.4135875,0.87950945,-0.07909115,0.74423045,0.08346314,-1.4557395],[-0.47076926,-0.09556143,-0.26575336,0.30210772,-0.032517277,-0.6874358,-0.28881064],[0.91966176,0.10665701,-0.91860026,-0.33751714,-0.06834981,0.93626994,-0.6571628],[0.5642148,0.49901268,-1.3865877,-0.5038256,-0.77347946,0.10353698,0.12781042],[-0.13634703,-0.63548046,-0.12139281,-0.35569352,-0.15445279,-0.60711306,0.38474676],[0.45710889,0.071052924,-0.6941922,-0.40552536,-0.2624531,0.30862984,-0.21026665],[-0.17136033,0.13013878,-0.56358737,0.017554766,-0.8674639,0.5193747,0.404817]],"activation":"σ","dense_2_b":[[-0.24010156],[-0.03701659],[-0.11688351],[0.0057563568],[-0.2258239],[-0.12888032],[-0.04495887],[-0.19279772],[-0.024947112],[-0.24512185],[-0.06996539],[0.002301173],[-0.18535274]]},{"dense_3_W":[[-0.3262236,0.2867189,-0.46465525,-0.12294561,-0.09975732,0.6389669,-0.06613567,-0.6155315,0.5748487,0.5216139,-0.4668207,0.35530105,0.2609643],[-0.63311577,-0.7085013,-0.31479278,-0.63713,0.32777005,0.2345535,0.7747577,0.2789224,0.3357283,0.53898865,-0.15058397,0.20608704,0.49955884],[-0.72667474,-0.25321692,-0.17046283,-0.11438071,0.5548703,-0.008387027,0.6999693,0.052387122,-0.2282906,-0.32617927,0.025806168,0.50178117,0.5016455]],"activation":"identity","dense_3_b":[[-0.09833234],[-0.08791367],[0.020298293]]},{"dense_4_W":[[-0.5844458,-0.98398805,-0.08582402]],"dense_4_b":[[0.08352287]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521B00404A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521B00404A1'.json deleted file mode 100755 index d52b43b372..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144B xf1x891081xf1x82x0521B00404A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[6.938926],[0.62772423],[0.29867607],[0.03094836],[0.6110426],[0.6159467],[0.62132204],[0.6395374],[0.64702064],[0.65667325],[0.65815526],[0.030817023],[0.030845646],[0.030863807],[0.030900748],[0.030872138],[0.030954026],[0.031025298]],"model_test_loss":0.02285374514758587,"input_size":18,"current_date_and_time":"2023-08-13_21-42-28","input_mean":[[23.255941],[-0.0039265477],[-0.0056222063],[-0.016524963],[-0.00218176],[-0.0024286949],[-0.0033278896],[-0.0040004114],[-0.0063022724],[-0.00994652],[-0.014132979],[-0.016437652],[-0.016452443],[-0.016481234],[-0.016730793],[-0.016982961],[-0.017188018],[-0.017422361]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.29317],[1.5267397],[0.08217149],[1.2452852],[-0.9688157],[-0.096829034],[0.39433828]],"dense_1_W":[[0.005915041,0.5450623,-0.0069149085,-0.46442664,-0.22601163,1.3387343,-0.7786973,-0.4650629,-0.40435264,-0.14188097,0.67670316,0.45593762,-0.2410964,-0.04123494,0.1702602,-0.18933693,-0.3188177,0.04489354],[0.47714752,0.6054337,0.13158876,-0.30294856,0.061013125,0.5564793,-1.1751397,0.35795754,0.6406297,0.2721367,-0.5613271,0.36031482,-0.25085223,-0.10549718,0.14662914,0.18818983,-0.24555802,0.12492779],[0.0003755121,-1.5311179,-4.3272233,-0.46309865,1.436148,-0.45119837,-0.93964314,0.4118978,-0.7870894,-0.7511141,2.7374241,-0.07799791,0.010225301,0.17858656,0.025200186,0.37682062,0.24588887,-0.32082075],[0.021538865,0.2234551,-0.05087945,-0.16210763,0.052253578,-0.5015178,0.86417854,0.56207055,0.14652875,-0.037124693,0.7986706,-0.625708,0.142645,0.052587703,-0.237036,-0.23684868,-0.4017891,-0.7608035],[-0.3722909,0.54145604,0.11193832,-0.41615248,-0.20452525,0.41731396,-0.56850874,0.445437,0.20962103,0.2034371,-0.38485476,0.40009347,0.0909534,-0.073908776,-0.31467494,0.08797947,0.012187805,0.13753214],[-0.07315742,-0.843601,-0.13284892,-0.21064427,0.813711,-0.6778223,0.09393603,-0.31476387,-0.33809435,0.31934786,0.11784876,-0.11346231,-0.50661373,0.81929815,0.41997102,-0.19574907,-0.10820584,-0.0013016728],[-0.0045597386,-1.876721,-0.6161992,0.29715562,-0.83337486,-2.280439,-2.1169722,-1.5114844,-1.9489485,-2.430094,-0.9096425,-0.92954713,-0.4385408,0.19880356,0.64660573,-0.46100757,0.17253575,-0.076600425]],"activation":"σ"},{"dense_2_W":[[1.009494,0.042049244,-0.7750519,-0.57728094,1.3917161,-0.9949108,-0.27987498],[-0.4912434,-0.22204591,-0.5417998,0.4574385,0.21495223,0.2710998,0.62334305],[-0.15153155,0.01599128,-0.45292535,0.012102149,0.23569047,0.4165612,-0.3426787],[-0.56857765,-0.48303458,0.17770454,-0.026586715,0.04770979,0.6940287,-0.04585979],[-0.6126955,0.12536684,0.023409514,-0.6668342,-0.094184265,0.01863304,-0.036869247],[0.37028855,-0.29489964,-0.3782998,0.44059175,0.4545478,-0.9325122,-0.28946736],[-0.5399863,-0.52101445,0.24559934,0.5746218,-1.1413286,0.71955156,0.4434971],[0.8772197,0.5362956,0.19421022,-1.0224069,0.7089293,-1.0749434,0.04264178],[-0.5255222,-0.03324677,-0.7210142,-0.38647947,0.19431087,-1.3739054,0.3249313],[1.1000354,1.0278201,-0.69191587,-0.50786847,0.5078231,-1.0587357,-0.24861221],[-0.2748495,-0.54516625,0.24361324,-0.37419957,-0.12278863,-0.0628238,0.17636348],[-1.0216668,0.054562744,-0.36077505,0.403067,-0.5215005,0.47245187,-0.31446433],[0.20261914,-0.18020427,-1.0289909,-0.08297991,-0.673349,-0.2813431,-0.43772835]],"activation":"σ","dense_2_b":[[-0.0071199946],[0.11808283],[0.012594512],[0.010172507],[-0.26932594],[-0.059178684],[-0.109771855],[-0.21241476],[-0.26554722],[0.051559977],[0.019238671],[0.06243583],[-0.2946492]]},{"dense_3_W":[[-0.09602511,-0.048682462,-0.18955606,0.4171001,0.066497065,-0.59586984,0.21584617,-0.37557873,0.27344728,-0.33525473,0.6279888,-0.39435863,0.46858945],[0.6317756,0.0002881869,0.19008896,-0.59359,0.3863359,-0.2528118,-0.1984929,0.5970809,0.3629511,0.3559985,-0.637736,-0.84007025,0.04686958],[0.750255,-0.24061574,-0.58244413,-0.24981315,-0.25377622,0.5355694,-0.30574042,0.5434507,-0.060648266,0.6019894,-0.6170493,-0.50975835,0.08353199]],"activation":"identity","dense_3_b":[[0.033729278],[-0.054734595],[-0.028816417]]},{"dense_4_W":[[-0.44288176,0.2882923,0.91610426]],"dense_4_b":[[-0.03074748]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A00642A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A00642A1'.json deleted file mode 100755 index 1d20a774f4..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A00642A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.884762],[0.81607556],[0.46235383],[0.04137435],[0.8147813],[0.8158872],[0.8164004],[0.80351764],[0.78805685],[0.7781327],[0.7716266],[0.041138463],[0.041208826],[0.041283675],[0.041592937],[0.04169671],[0.041762512],[0.04168417]],"model_test_loss":0.007246986962854862,"input_size":18,"current_date_and_time":"2023-08-13_22-07-07","input_mean":[[20.607279],[0.1291296],[-0.0037803883],[-0.0014043924],[0.13077764],[0.13015877],[0.12909429],[0.12892099],[0.12536412],[0.123454005],[0.11908713],[-0.0013121094],[-0.0013442688],[-0.0013850179],[-0.0015709468],[-0.0017340528],[-0.0019103661],[-0.0019895914]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-1.3721764],[0.084215105],[-0.055472832],[0.077813394],[-0.96163833],[1.1660722],[-1.6546477]],"dense_1_W":[[-0.58524305,0.029181788,-1.0521368,0.35033363,-0.39801714,-0.87713426,0.85987127,0.047615178,0.40549085,0.14911534,-0.2479689,-0.28950268,-0.14985971,0.07570249,-0.10249687,0.043796625,-0.07579884,0.10728671],[-0.001887957,1.4247402,0.0036300311,0.12278278,-0.2253377,0.36661762,-0.31705707,-0.45933437,-0.46282038,-0.053074382,0.29370224,-0.19806243,0.082440175,-0.45482296,-0.32952204,-0.011400758,0.10100219,0.10240154],[-0.059823256,-0.5745303,-4.452575,0.22918445,0.5550891,-0.79828143,0.61945033,-0.6684762,-0.09642584,0.21603544,0.6628456,-0.7397862,-0.2869019,0.0020030462,0.28633127,0.55959415,-0.33312178,0.28244367],[0.04614508,-0.11604671,-0.79724836,-0.491676,-0.14662114,0.52269655,-1.2130527,0.5618968,0.51555824,0.3292312,-0.45453092,0.42635924,-0.15188393,0.34045127,-0.57950723,0.22944026,-0.16212673,0.319651],[-0.2394283,1.0045947,-0.0012783561,-0.10012283,-0.3071191,0.7955691,-0.36835575,-0.008639509,0.3636069,-0.01755343,-0.10722917,0.19506188,-0.35370708,0.17400146,0.086988635,0.22335935,-0.32956237,0.11304717],[0.5236153,-0.15631859,-0.98424,-0.111111596,-0.60968053,-0.20851852,0.7218569,0.048679378,0.3039536,0.021387655,-0.09857831,-0.37517497,0.06802272,0.3579023,-0.045115247,0.09317572,-0.24613723,0.21383843],[-0.30168456,-1.2367435,-0.00061271444,-0.1381754,0.32092336,-0.6533606,0.5152246,-0.2438313,-0.31787005,-0.052657858,0.21278745,0.29981515,-0.35046533,0.14706951,0.1782125,-0.3582475,0.2180452,-0.01023163]],"activation":"σ"},{"dense_2_W":[[-0.4264956,-0.30409577,0.036205757,0.28041327,-0.17547563,0.22233264,-0.5563757],[-0.39062256,-0.8167799,0.66903347,-0.24326237,-0.939436,0.7294541,1.202365],[0.032040264,-0.06555011,-0.37881997,0.54659986,0.3044162,-0.0027152027,-0.30760282],[0.2730313,-0.7371839,-0.6369608,-0.0032412624,-0.6352998,-0.25697374,-0.6930982],[0.5224691,-0.3149151,-0.053694103,0.0010917719,-0.69223607,0.6271929,0.095157035],[0.3687945,-0.22422504,0.093919925,-0.06523741,-0.22843531,-0.14060488,0.26878905],[-0.04975786,0.3340523,-0.2715762,0.4248088,0.35888636,-0.35311514,-0.36247927],[-0.04869314,-0.50731874,-0.6262194,-0.68582696,-0.38477626,-0.62149537,-0.09445867],[0.50780857,-0.35911572,-0.28358296,-0.45811683,0.19999982,-0.47677487,0.1871591],[0.46753326,-0.48402148,-0.019163152,-0.4120921,-0.12853143,0.6621117,0.54874456],[1.0123298,-0.9825988,0.12905803,-0.8407654,-0.7416709,0.4597624,0.45862544],[-0.45890373,0.55880725,0.19543312,0.56986344,0.34912577,-0.1812731,-0.69188166],[-0.13247645,2.9199218e-5,-0.6082515,0.18595329,0.043651372,-0.49888754,0.29356086]],"activation":"σ","dense_2_b":[[0.0050273063],[0.13748644],[0.01580143],[-0.26208422],[-0.035189588],[-0.13114949],[-0.012246006],[-0.28205365],[-0.053524993],[-0.20919354],[-0.032046903],[-0.061223272],[-0.013682854]]},{"dense_3_W":[[-0.02703186,0.6016364,-0.45162404,0.15611896,0.50627923,0.51877177,-0.7800174,-0.054255366,0.33341834,-0.2897292,0.6872302,-0.0026089211,0.3239283],[-0.24794696,0.4848827,0.09518162,0.5067153,0.423029,-0.5145099,-0.12581715,-0.32483757,-0.06947478,0.23648755,0.5299817,-0.3650013,-0.47067726],[-0.06398943,0.0541899,-0.60453045,-0.51784617,0.38545498,0.32902572,-0.11962995,0.36440012,-0.1133295,0.17170249,0.073485106,-0.4394425,-0.34638456]],"activation":"identity","dense_3_b":[[-0.09188924],[-0.02956994],[-0.026732257]]},{"dense_4_W":[[-0.5402822,-0.8496468,-0.8664632]],"dense_4_b":[[0.03144883]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566B00611A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566B00611A1'.json deleted file mode 100755 index 1a1f451ac9..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x873Q0909144J xf1x895063xf1x82x0566B00611A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.962804],[0.7562036],[0.38428113],[0.033356115],[0.74190426],[0.7469579],[0.75150245],[0.7410608],[0.72982436],[0.7126891],[0.6949334],[0.033194255],[0.033214666],[0.03323774],[0.03321157],[0.033148184],[0.033052694],[0.0329442]],"model_test_loss":0.008441523648798466,"input_size":18,"current_date_and_time":"2023-08-13_23-24-03","input_mean":[[22.17462],[0.03106641],[-0.005453808],[-0.0050417427],[0.033787917],[0.03330055],[0.03320549],[0.03181684],[0.03000325],[0.026441913],[0.024252506],[-0.004972066],[-0.004947025],[-0.00493625],[-0.005049273],[-0.005097442],[-0.0051535596],[-0.0052144374]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.060010195],[-4.127207],[-0.025756951],[1.1371067],[-0.18480848],[-1.5460433],[-4.385164]],"dense_1_W":[[-0.012603463,1.2675081,0.26481828,-0.6390102,-1.312759,1.511266,-0.69735384,-0.42666143,1.017449,-0.5036708,-0.4066075,0.06250349,0.32637885,-0.21702744,0.29735997,0.16498649,0.032733943,-0.09865579],[-1.7240236,1.2846862,0.4235646,0.16218854,-0.0021448887,0.98084474,-0.9292698,0.3639735,-0.1823644,0.07235068,0.17636193,0.29514208,-0.5203855,-0.26677978,0.38333958,0.119583756,0.12173379,-0.24175833],[-0.009374525,1.6042166,4.722405,0.055045582,-0.5204036,0.028873047,-0.90108126,-0.09144464,0.5713409,-0.25763115,-0.5311292,0.15709037,0.37013984,-0.00975939,-0.2143132,-0.6385762,-0.13333312,0.44007307],[-0.9055522,-0.8628247,-0.040643092,0.3484062,-0.18693899,-1.1056893,1.3160697,0.010075687,0.14756401,-0.11564695,-0.025115244,-0.27166274,-0.19431637,0.1267001,0.09704567,0.5197097,0.03209645,-0.27001658],[-0.018839281,-1.290398,0.058688518,0.33156508,0.68419033,-2.4491622,1.7043401,-0.3630223,0.18457794,-0.2868806,0.049333274,-0.61860454,-0.14083372,0.66726494,0.33173916,-0.13214351,0.034108125,-0.08901106],[0.8751846,-0.28634623,-0.030397577,0.12990081,-0.330972,-0.9653466,0.7668182,0.37737978,-0.11113706,-0.35438588,0.10701755,-0.48095903,-0.12939374,0.6977727,0.16942686,0.02181331,0.10608403,-0.13171671],[-1.7585233,-1.5873438,-0.43496054,-0.2323169,-0.069673285,-0.9673478,1.2224542,-0.4760693,0.23799634,0.09720081,-0.27788097,0.12954445,-0.24112089,0.615078,-0.25901628,-0.25295392,0.00043022525,0.19755143]],"activation":"σ"},{"dense_2_W":[[-0.48768643,-0.13457146,-0.94332385,-0.015858617,0.3480726,0.09448187,0.10320337],[-0.20015644,0.5809371,0.22025663,-0.29464918,-0.39863232,-0.7891601,-0.33703023],[-0.14985067,-0.83543855,-0.5071646,-0.90759295,-0.3330416,-0.2905544,-0.27152473],[0.0032478045,-0.75732607,-0.82309675,-0.77273506,-0.13305809,0.10644364,-0.68221307],[-1.4204942,-2.3662848,-1.1431475,0.7174042,2.1057255,0.785913,2.2557228],[0.3001741,0.57693744,0.57035863,0.95958936,0.32337785,-0.09218264,0.13867925],[-0.5285859,0.3610803,-0.020290779,-0.2668336,-0.64541036,-0.09989579,-0.05994527],[-0.27520058,-0.7017016,-0.6802332,0.2792723,1.0755413,0.65584993,0.88514155],[0.05950802,0.12636684,-0.035091616,-0.32777858,0.28212768,-0.76370627,-0.5573967],[0.58700997,0.78871405,-0.10341003,-0.6230865,0.077733986,-0.7194054,-0.18458478],[-0.18768333,-0.49252254,0.027535807,-0.53566045,0.15138532,0.16044581,0.14787057],[0.6626681,0.8601064,0.60114187,-0.3327629,-0.58684623,-0.95519954,-0.5899526],[-1.0263729,-0.41759077,-1.0262698,0.040096123,0.08806692,-0.0133949425,0.72428477]],"activation":"σ","dense_2_b":[[-0.25272742],[0.14023453],[-0.014608332],[-0.33230057],[-0.40752354],[-0.041421413],[0.01844217],[-0.28299713],[0.06559437],[0.109856494],[-0.04810613],[-0.021127785],[-0.44977495]]},{"dense_3_W":[[-0.029548874,0.5103658,0.17107706,-0.29514194,-0.947415,-0.511465,0.32390937,-0.6248399,0.045778725,0.6936353,0.30394363,-0.10813219,0.36093238],[-0.02098016,0.3392484,-0.66028225,0.15492892,-0.023099247,0.008027363,-0.43149045,0.133276,-0.12618168,-0.120471604,-0.07336129,-0.116436034,0.08667111],[0.07088678,-0.26997882,-0.24363138,-0.67593896,0.42628843,0.19159117,0.115236744,0.18871395,-0.56831765,-0.28568426,0.27478302,-0.7448726,0.49073538]],"activation":"identity","dense_3_b":[[0.07825424],[-0.012723917],[-0.053086866]]},{"dense_4_W":[[0.73551875,-0.06301601,-0.56700844]],"dense_4_b":[[0.06256496]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143K xf1x892033xf1x820514B0060703'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143K xf1x892033xf1x820514B0060703'.json deleted file mode 100755 index 14415e081e..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143K xf1x892033xf1x820514B0060703'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.666501],[0.8200595],[0.4267363],[0.029060148],[0.8098353],[0.81299865],[0.8158713],[0.80811334],[0.80471945],[0.79804546],[0.78982925],[0.02891173],[0.028966159],[0.029011153],[0.02911869],[0.029185541],[0.02921757],[0.029190162]],"model_test_loss":0.006315805949270725,"input_size":18,"current_date_and_time":"2023-08-13_23-50-23","input_mean":[[25.293772],[0.004106909],[-0.013306409],[-0.005250305],[0.005468495],[0.004553356],[0.0038011023],[-0.0017266939],[-0.003917628],[-0.010417055],[-0.014121405],[-0.0053853025],[-0.0053633936],[-0.0053434907],[-0.0053283866],[-0.0053414376],[-0.005541431],[-0.005723747]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.28580254],[-0.23432341],[1.1156756],[-0.86002725],[0.11221744],[-0.26342744],[-1.8761094]],"dense_1_W":[[-0.25975057,1.0925561,1.0103881,0.036238585,-0.3607785,0.08896782,-0.5181012,0.20072389,-0.038183834,0.09980021,-0.4068494,-0.17393062,0.330586,-0.23314619,0.034675427,0.07329598,-0.15636317,0.05865833],[0.017393583,0.3741976,0.0030892517,0.18871218,-0.42910495,-1.2822627,-0.05155862,0.53394276,0.22852045,0.12027069,-0.5230852,-0.115542546,0.23333092,-0.042271625,0.047717366,0.050503843,-0.0035985464,0.032520477],[0.35676572,-1.1685232,-0.011553547,-0.24975727,0.24694973,-0.6117383,0.4092684,-0.27288175,-0.33223516,0.16621913,0.025712943,0.42010584,-0.31489658,-0.052690785,0.054999806,0.18088785,0.006976741,0.021856777],[-0.44594803,-0.8409663,-1.1404896,0.41818568,0.058727153,-0.21626356,0.7575016,-0.19471127,-0.09616215,0.1518164,0.25844562,-0.8136779,0.20843573,0.6002283,-0.23000686,-0.19357574,-0.022530245,0.04392898],[0.8572372,0.025385775,1.2609717,0.042114303,0.399061,-0.19249442,0.51250815,-0.12575161,-0.28613088,-0.19633885,0.07607506,-0.4094928,0.11277618,0.2009149,0.4207984,-0.18763435,-0.3462443,0.16364828],[0.7268745,-0.18285611,-1.3299872,-0.09213111,-0.217109,0.36897022,-0.8693468,0.41960382,0.019098964,0.28840658,-0.03882476,0.4372806,0.08356159,-0.23352197,-0.20746002,-0.2340454,0.11242141,0.14783],[-0.5003176,-1.7298814,-0.025057396,-0.051110655,0.17657964,-0.8302932,1.1969275,-0.42902136,-0.28651416,0.049032684,0.12503019,-0.073111385,-0.11944735,0.09518251,0.1635864,0.0545354,0.05875944,-0.038880356]],"activation":"σ"},{"dense_2_W":[[-0.12937793,0.76093704,0.20176205,-0.08243198,0.4225252,-0.68954825,0.8347276],[0.6415931,-0.049831085,-0.36734578,-0.71415675,-0.57440925,-0.53335655,0.15256901],[-1.1228914,-0.120415226,-0.59729034,0.8767655,-0.12896578,0.18779756,0.8045126],[-0.30790147,0.6392956,0.040560763,-0.12412736,0.22901759,-0.6460633,0.89982486],[0.42736927,-0.94990593,-0.5395771,0.13554287,-0.49102458,0.94958186,-0.6974517],[0.5491617,-0.18928741,-0.50987816,-0.6287503,0.08691802,0.33302802,-0.36628336],[0.27155477,-0.27820358,-0.9777661,-1.1842451,-0.30412066,-0.6699264,0.41161236],[-0.59314966,0.4599474,-0.19772863,0.52712804,0.32302898,0.19360131,-0.09676147],[0.58557266,-0.6139606,-0.558897,-0.14769661,0.050115813,0.5432267,-0.5170338],[-0.17028296,-1.033602,-0.076122455,-0.40448987,0.052614305,0.1912033,-0.07015176],[-0.68916506,0.3962156,-0.1657399,0.687493,0.060366802,-0.10516932,0.01300196],[0.276943,-0.9250079,-0.7488696,0.13571858,-0.036271952,0.5265197,-0.15073454],[0.14400741,-0.11341286,-0.3804518,-0.8804317,-0.071586706,-0.43452612,-0.3208466]],"activation":"σ","dense_2_b":[[-0.040302996],[-0.11010342],[-0.20677158],[-0.048647635],[0.120229416],[-0.0054608714],[0.058483347],[-0.03004292],[0.05187668],[-0.076424606],[0.0038315326],[-0.022529595],[-0.2090887]]},{"dense_3_W":[[0.008394337,-0.30972952,0.39671507,0.6184598,0.12630114,0.32693958,-0.76353675,0.2980328,-0.48589507,-0.59280705,-0.35038635,0.3186341,0.26545805],[-0.7789929,0.55391824,-0.2314275,-0.1026219,0.7185184,0.6306864,0.6643669,-0.32594445,0.37869594,0.12729132,-0.6604259,0.43580285,0.17978954],[0.5019366,0.08632822,-0.5505618,0.14464153,-0.49149013,0.3130208,-0.37043464,0.14965,-0.7112207,-0.35579038,0.56159174,-0.23439313,0.24922566]],"activation":"identity","dense_3_b":[[0.027808271],[-0.068755515],[-0.07428425]]},{"dense_4_W":[[-0.25726643,1.2216649,-0.05311492]],"dense_4_b":[[-0.06435458]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143M xf1x892041xf1x820522B0080803'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143M xf1x892041xf1x820522B0080803'.json deleted file mode 100755 index c24501ec58..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143M xf1x892041xf1x820522B0080803'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.117151],[0.8780721],[0.47055784],[0.03373205],[0.87878203],[0.87837523],[0.87788916],[0.8586185],[0.8462304],[0.8342321],[0.82547796],[0.033661477],[0.03367423],[0.03368023],[0.03354494],[0.033401415],[0.033237793],[0.033019036]],"model_test_loss":0.007191894110292196,"input_size":18,"current_date_and_time":"2023-08-14_00-15-11","input_mean":[[20.899157],[-0.01104718],[0.036451686],[-0.0037773221],[-0.015367436],[-0.014161936],[-0.012414819],[0.0024655054],[0.011132189],[0.024372566],[0.03227307],[-0.0040591834],[-0.003941466],[-0.003825588],[-0.0034224978],[-0.0032681874],[-0.0031958742],[-0.0031637321]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.030808564],[-0.7881302],[-0.31871074],[-0.7077137],[-0.6866325],[-1.4053191],[1.028521]],"dense_1_W":[[-0.004262297,0.26770896,-0.0056766947,0.30141094,-0.48577562,1.0045375,-0.2323648,0.115538254,0.115895815,-0.4666756,0.25802436,-0.31511456,-0.0127651235,-0.14158984,-0.2904196,-0.052200418,0.22780252,-0.14276873],[-0.78517354,0.22283344,1.9814899,-0.060622748,0.44862846,0.5629776,-0.95423114,-0.2534107,0.113122925,-0.19669883,-0.22316283,0.3763087,-0.52413887,0.08829021,0.5618185,-0.4974062,-0.003229953,0.104768366],[-0.0031356695,-0.3358509,-0.013187175,0.09005276,-0.33111897,-1.0076365,1.2956011,0.25053537,0.032162637,-0.24333534,-0.0034071796,-0.5057202,0.24314785,0.1808326,0.05994126,0.053177986,0.29184142,-0.2806042],[-0.7272065,0.2573282,1.7617868,0.29571036,0.37528726,-1.083522,1.3229558,-0.4182797,-0.345258,-0.5115551,0.17309518,-0.24578947,0.10943833,0.08469504,0.049101092,-0.08576649,-0.5060829,0.3355709],[-0.349624,-1.6453601,-3.26807,0.43909118,0.51051325,-0.17063986,0.21545473,0.34421232,0.03763902,-0.2049723,0.92357033,-0.18443908,-0.18679084,0.3117935,-0.44758165,-0.18143773,0.29891232,-0.08629131],[-0.39733958,-1.0273623,0.003442246,0.45654815,0.120703034,-0.7350454,0.44965222,-0.049190737,-0.05031882,-0.1817813,0.107058324,-0.41069368,0.04839138,-0.09612549,-0.040410392,0.035452463,-0.102408044,-0.01588105],[0.30539432,-1.042117,0.00010271933,0.334786,0.39255652,-0.9954019,0.59428906,-0.041689884,-0.055279892,-0.32039487,0.22644287,-0.5457353,0.09216463,0.07863109,0.07457668,-0.16325666,0.12002374,-0.11692654]],"activation":"σ"},{"dense_2_W":[[-0.4462192,0.006479972,0.16022606,0.08788203,0.4124234,0.20229541,-0.15212922],[-0.8229072,-0.6896271,0.41974926,-0.5126825,-0.5892288,0.36048502,0.08571766],[0.8743697,0.11519312,-0.8927151,-0.20659262,-0.03500918,-0.2431935,-0.21345907],[-0.7572373,-0.41277024,0.5602531,0.23260891,0.57976633,0.21060136,0.49044013],[0.10042878,0.032445718,-0.3576043,0.20940162,-0.27814117,-0.42059135,-0.65223837],[0.5351519,0.41956633,-0.3044747,-0.45954588,0.16867766,-0.4634547,-0.5968737],[-0.23816408,-0.48021644,0.838582,-0.21538194,0.18876094,0.5458715,0.61050403],[-0.924066,-0.3433875,0.57219464,-0.16153193,0.042738453,0.52251714,0.3991525],[0.48040503,0.1870807,-0.52080226,0.21046016,-0.45690414,-0.73420763,0.22072145],[-0.12941065,-0.44941613,0.5425607,0.59573215,-0.22534776,0.5405078,0.39194173],[0.36701992,0.34995168,-0.62530506,-0.6363552,-0.103005536,0.22475937,-0.7253444],[0.9647937,-0.056563377,-0.46448824,-0.22327216,-0.14012502,-0.011079587,-0.6820786],[-0.45136547,-0.14740916,-0.6345192,-0.46869496,0.26515964,-0.8063111,-0.36604276]],"activation":"σ","dense_2_b":[[-0.0016022231],[-0.27396354],[0.09004652],[-0.22539683],[-0.038415063],[0.06759769],[-0.14015342],[-0.26507622],[0.056926068],[-0.13300559],[0.012339802],[0.1285967],[-0.09678008]]},{"dense_3_W":[[-0.52442557,-0.68827885,0.539679,-0.5438538,0.61366826,0.63880235,0.08888519,-0.3074122,0.09701449,-0.6003877,0.45083877,0.22909275,-0.18219474],[-0.5755899,0.09211835,0.20371199,-0.5715788,0.15341173,0.6038049,-0.41338116,-0.23703997,0.5769859,-0.0016438926,0.50527227,0.20451528,0.42446515],[-0.5199198,0.16957249,0.45533246,0.34319803,0.32190958,0.35860723,-0.09089439,0.09584038,-0.17535931,-0.4608781,0.32986072,0.28507563,-0.44377762]],"activation":"identity","dense_3_b":[[-0.00831913],[-0.03343917],[-0.05860182]]},{"dense_4_W":[[0.48563462,1.1415706,0.1720984]],"dense_4_b":[[-0.028836345]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143P xf1x892051xf1x820526B0060905'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143P xf1x892051xf1x820526B0060905'.json deleted file mode 100755 index 7182b5b664..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0909143P xf1x892051xf1x820526B0060905'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.181382],[0.86813647],[0.5492334],[0.036760613],[0.8545429],[0.85885984],[0.86159694],[0.86050034],[0.85472816],[0.8523642],[0.8434543],[0.036624078],[0.036657],[0.03669113],[0.036766365],[0.03678054],[0.036892213],[0.036896084]],"model_test_loss":0.005091955419629812,"input_size":18,"current_date_and_time":"2023-08-14_00-41-09","input_mean":[[19.510765],[0.022819782],[-0.0037222924],[0.0013656311],[0.034109943],[0.033269133],[0.03193874],[0.030672757],[0.03303289],[0.039188243],[0.047165018],[0.0015104475],[0.0014863856],[0.001448786],[0.0013402464],[0.0011793213],[0.00095052656],[0.00085381255]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.24343],[0.036478233],[1.1406748],[-4.0893216],[0.010201278],[3.8922794],[-0.02359314]],"dense_1_W":[[0.5112725,1.2539926,0.08067997,0.40639907,-0.17453805,1.0416505,-0.12549862,0.027588852,-0.33463654,-0.05859373,0.17721942,0.25630853,0.1335248,-0.2872575,-0.39503282,-0.34860995,-0.06432243,0.31120285],[-0.0021122668,0.70218897,0.010622942,0.5508349,-0.090317965,1.2903326,-0.7231601,-0.18765782,0.09797428,0.046807405,0.059654005,-0.41199416,0.18483795,-0.29445493,-0.6740794,-0.12480136,-0.0430672,0.19277844],[0.5476078,-1.2119801,-0.08559349,0.19138788,0.28913566,-1.1168361,0.035099618,-0.35251448,0.7215318,-0.03543186,-0.19039832,-0.5274913,-0.07222603,-0.26130104,0.6166925,0.4533689,0.050027058,-0.4696203],[-2.058259,-1.0750265,-1.169345,-0.30267146,-0.20469314,-0.8867201,1.2159588,-0.41085604,-0.5082783,0.2776987,-0.050553918,-0.22321407,-0.0077316845,0.29300007,0.65865314,-0.85335296,0.25066155,0.18064624],[-0.035402827,-0.5353682,1.8089458,0.028881337,0.20666885,-1.1033194,1.6017944,0.9444415,-0.2323832,-0.15898483,-0.30815956,-0.26466683,-0.00038011433,0.79185253,0.45667037,-0.5028157,-0.73411787,0.21777979],[2.0663276,-0.9846567,-1.1721373,1.0919439,0.08992667,-1.567887,1.5389193,-0.3230045,-0.679468,0.26205733,0.0035511316,-0.049015433,-0.52897847,-0.1632392,0.10244833,-0.9965355,0.26675847,0.27428353],[0.022025522,-0.41033313,-2.2404602,1.1125531,0.046705477,-1.1841795,1.162694,-0.42915577,-0.19991426,0.050461024,0.4656523,-0.6310463,-0.12011685,-0.0015236506,-0.6044337,-0.5173836,0.33471113,0.43550345]],"activation":"σ"},{"dense_2_W":[[-0.04584096,-0.99214095,0.31622618,0.5777341,-0.045811962,-0.043618474,0.5721162],[0.38406098,0.47349882,-0.40502512,-0.3970886,-0.38640773,-0.19816592,-0.053756084],[0.6450702,0.7932687,-0.710186,-0.3985887,-0.034641393,-0.0185165,-0.69896996],[-0.7009559,-0.022874104,-0.08941493,0.64746475,0.15585321,-0.29219258,0.58332366],[-0.0010929473,0.33329758,-0.3808528,-0.153307,0.02534006,-0.62115765,-0.605843],[0.16988595,0.9742904,-0.6698165,-0.09701397,-0.5044086,-0.29125994,-0.4428076],[0.055143006,-0.80990934,-0.37862834,0.17991501,-0.71648,-0.9390392,-0.42016158],[-0.25731847,-0.42503363,0.3942715,-0.7323096,-0.22550054,-0.2743843,-0.7322862],[0.004696864,-0.25343058,-0.3075049,0.35224637,0.5207669,0.41676813,0.7068549],[-0.5403459,-0.7852185,0.27016988,0.13775401,0.28410533,0.067339934,0.6903914],[-0.3101071,-0.8646119,-0.2535561,0.53973216,0.16905892,0.40238792,0.2142207],[-0.29162455,0.53124887,0.004796835,-0.19279581,0.3287921,-0.025846375,0.0793902],[-0.6812329,-0.22995314,0.5113913,-0.24881253,0.21576783,0.48485595,0.28645903]],"activation":"σ","dense_2_b":[[-0.21589507],[0.10397086],[0.15712452],[-0.16989635],[0.26295224],[0.24404621],[-0.10845146],[-0.18922116],[-0.15020797],[-0.16395593],[-0.36227095],[0.0059039695],[-0.05891273]]},{"dense_3_W":[[-0.164952,0.5829566,0.5295758,-0.23809046,0.72228867,0.44742477,0.123699404,0.044092085,-0.6295931,-0.5918753,-0.40078494,-0.055157468,-0.23842782],[0.07521707,0.15951206,-0.03775708,0.3879158,-0.34177628,-0.2327042,-0.41371173,-0.009885026,-0.44009754,0.10016008,-0.43510032,0.24980222,0.13962166],[0.32187572,-0.6400992,-0.17281993,0.07402123,0.4694254,-0.2456943,-0.31591687,-0.15127994,0.4486657,-0.2195093,-0.47274616,-0.24562888,0.5684488]],"activation":"identity","dense_3_b":[[0.05258817],[0.07220977],[-0.044359814]]},{"dense_4_W":[[1.0103351,0.06551428,-0.5411557]],"dense_4_b":[[0.046632294]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143B xf1x892201xf1x82x0563B0000600'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143B xf1x892201xf1x82x0563B0000600'.json deleted file mode 100755 index 58f060b313..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143B xf1x892201xf1x82x0563B0000600'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.662233],[0.8113375],[0.4172554],[0.033643167],[0.79888594],[0.8028403],[0.80670947],[0.7995481],[0.7934126],[0.7891131],[0.782117],[0.033658788],[0.03365928],[0.03366303],[0.033584062],[0.033565614],[0.033572596],[0.03341478]],"model_test_loss":0.011067546904087067,"input_size":18,"current_date_and_time":"2023-08-14_01-06-44","input_mean":[[20.030537],[0.060196385],[-0.007738257],[-0.012284204],[0.062764056],[0.06089445],[0.05955253],[0.059412487],[0.059961364],[0.05963631],[0.05755611],[-0.012353351],[-0.012392538],[-0.012430977],[-0.012426002],[-0.012402114],[-0.012500397],[-0.012698062]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.011189804],[-1.8674326],[2.1096756],[0.26339114],[0.5535559],[-1.3430045],[0.54640424]],"dense_1_W":[[0.0008347146,-1.6734533,0.004123626,0.53035754,0.7637235,-0.9993929,-0.0076265903,-1.1400509,-0.25552282,0.5817568,0.0021680437,0.026432207,-0.22946344,-0.39117494,0.1184229,-0.031067535,-0.23829687,0.12487833],[-1.1671325,-1.5989091,2.0931304,-0.6706487,1.7253804,1.9009653,-1.0202484,0.31748152,-0.9233542,-0.087770805,0.3862745,0.24705102,0.082410954,0.15667558,0.30451232,-0.2267331,0.08866649,0.035475973],[1.4456624,-1.5619239,2.466439,-0.93418974,2.2984,1.5268502,-0.90133584,0.3620802,-1.2135332,-0.049564496,0.45319128,0.3234485,0.24712734,0.10689693,0.32506576,-0.07574348,-0.032787975,0.083121665],[0.03307216,-0.6489449,-0.0005701389,-0.13173494,0.8676245,1.2602453,-1.2616234,-0.95231324,0.2632026,0.24062945,0.18689358,0.09292445,-0.24533354,0.3599325,-0.7487064,0.46976736,0.56557786,-0.39855072],[0.05449837,1.5482326,0.0052019306,-0.15240818,-1.3306834,0.37130266,-0.34324887,0.44472352,0.7343325,0.0939915,-0.46491262,0.17091997,0.18282665,-0.13365027,-0.27148074,-0.36316878,-0.074748464,0.39142248],[-1.0103469,1.7473103,0.0042393715,-0.3335703,-1.3267844,1.0646676,-0.57885313,0.06908706,0.5133798,-0.09079333,-0.049777858,-0.17497323,-0.036685776,0.32865825,-0.20434003,-0.10280022,0.05871905,0.14388838],[1.725505,0.67823017,-0.015625048,0.80355895,-0.37574232,1.3815744,-1.3868164,-1.0791757,-1.0506003,-0.19924724,0.47507092,-0.6711824,-0.69669557,0.6993373,0.5932092,0.33117467,-0.40151066,-0.29909366]],"activation":"σ"},{"dense_2_W":[[0.4855691,0.9684355,-0.98692816,-0.31508428,-1.228063,-1.6463718,0.15983118],[-1.1735238,-0.09113564,1.2186227,1.0091687,1.0687741,0.07123165,1.6712769],[0.28951633,0.022773247,-0.3386379,-0.5069151,-0.77005637,-0.30232868,-0.56512755],[0.32825664,0.27628714,-0.42091107,-0.31968302,-0.5112418,-0.47919804,-0.43602708],[-1.2471062,0.785496,0.10179997,-0.31093064,0.5988123,0.70579207,-0.58402646],[-0.6930572,0.83520454,-0.7187977,0.08945707,-0.17269047,0.16038384,-0.48173437],[-1.0064458,-1.0428234,0.6521663,-0.39936963,-0.4934068,-0.6583212,-0.6813975],[-0.7038946,-0.691905,0.10873986,0.033401936,-0.05016936,-0.5048962,-0.7372117],[0.26728374,-0.6021571,-0.82455206,-1.0239568,-0.63041604,0.25164172,-1.5996319],[-0.306726,-0.64836156,-0.18564051,-0.24620682,-1.0371934,0.08292383,-0.1839289],[0.5721492,-0.16167684,-0.14333242,-0.23550391,-0.71259844,-0.46686116,0.045510437],[0.012533767,0.22610848,-0.13282865,0.48579726,0.46268955,0.31126258,0.3202859],[-0.31318545,-0.009125532,0.3056208,-0.08678949,-0.37333733,-0.55968124,-0.2400406]],"activation":"σ","dense_2_b":[[-0.048040356],[0.010551669],[-0.034002457],[-0.09350583],[-0.43931866],[-0.25840852],[0.30683145],[-0.17581052],[-0.207552],[-0.136824],[0.15877321],[-0.2822651],[-0.14438301]]},{"dense_3_W":[[0.1878037,0.7795191,-0.40910757,-0.39871213,0.119621195,-0.41886806,-0.7300552,0.4663937,-0.23213437,-0.34520158,-0.62860143,0.7035117,-0.17154448],[0.2195641,-0.6607046,0.3519602,0.567264,0.17038877,-0.36625072,-0.12122062,0.51718,-0.09198265,0.22301078,0.39600024,-0.23041521,0.023985038],[-0.6850335,0.000747365,-0.18778192,-0.05563331,0.5623896,0.27665734,-0.4172306,-0.26284721,-0.30182174,0.06609348,-0.59820837,-0.047604926,-0.10808185]],"activation":"identity","dense_3_b":[[0.010739073],[-0.028906258],[0.040689796]]},{"dense_4_W":[[0.66164374,-0.6622832,1.1909763]],"dense_4_b":[[0.033283826]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020600'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020600'.json deleted file mode 100755 index d61947e4ee..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN b'xf1x875Q0910143C xf1x892211xf1x82x0567B0020600'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[9.53693],[0.8837301],[0.504074],[0.03892978],[0.8755903],[0.8769705],[0.8770567],[0.85198003],[0.83604085],[0.80722994],[0.7793083],[0.038844477],[0.038851265],[0.03885575],[0.038714577],[0.03858303],[0.03835089],[0.038112696]],"model_test_loss":0.008165956474840641,"input_size":18,"current_date_and_time":"2023-08-14_01-33-05","input_mean":[[18.900034],[-0.040913012],[-0.014206974],[-0.0010526397],[-0.042061422],[-0.043862846],[-0.045665625],[-0.049387835],[-0.04846715],[-0.049707115],[-0.049154304],[-0.0011701209],[-0.0012063662],[-0.0012323125],[-0.0014004245],[-0.0015620717],[-0.0018737207],[-0.0021513186]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.05034311],[-0.16049339],[-0.8387054],[0.026724432],[5.6924577],[-6.2590356],[0.09195408]],"dense_1_W":[[0.0013737448,-1.3723408,0.001342769,0.41604844,0.079518534,-1.0992196,0.69320405,-0.20007867,-0.242486,0.10413749,-0.012725727,-0.24533777,0.18676357,0.103152275,0.08449463,0.29623845,0.18195744,-0.28134367],[-0.016047297,-2.1172945,3.6351044,-0.9225221,2.4778526,1.9237944,-1.6851976,1.552848,0.48124325,-0.4579708,-0.9661728,0.5705856,0.2986973,-0.12730876,0.25481766,-0.104712516,-0.47604793,0.4647864],[-0.031255946,4.4344115,0.0115045,-2.06056,2.2306361,3.17809,2.2399688,1.7444073,2.2162871,0.0605305,-1.2824659,0.5707839,0.55752015,-0.3394804,1.3753946,0.6923126,-0.69295144,0.06596876],[0.014996965,-1.4983084,0.0074849236,-0.43667704,1.5386254,-0.71714413,0.8680148,0.0403995,0.1127605,-0.18272513,-0.65287465,0.038639955,0.18207908,-0.26570496,0.6805489,-0.008021424,-0.20940506,0.026279788],[3.619847,0.79453075,1.2752336,0.5329089,0.06674295,0.23762697,-1.6461107,1.7750511,0.34661958,-0.23756266,0.0066114087,-0.15820406,-0.015352938,-0.72475356,0.6494297,-0.19538523,0.06557879,-0.16827972],[-3.801798,1.7125183,1.3432858,0.7638726,-0.91818637,-0.41282243,-0.35768026,1.5054896,0.29776478,-0.27578938,-0.055791046,-0.032674264,-0.68724346,-0.17769502,0.05515912,0.1238052,0.30904874,-0.3660749],[0.040583555,-0.16267918,-0.0029201144,-0.076724455,0.8662686,1.1377587,-0.7607313,-0.54665464,-0.0014566372,-0.29003936,-0.69195867,-0.37417176,0.40961555,0.08589823,-0.49127874,0.55313677,0.120903105,-0.21122085]],"activation":"σ"},{"dense_2_W":[[-0.10612687,0.00028133072,0.10279292,-0.32244202,0.56135786,-0.3038803,0.6117771],[-0.8537405,1.0868497,1.517143,-1.7185221,-1.2330467,1.7012283,-0.35707718],[-0.34067577,-0.13233681,-0.6401421,-0.45288932,0.30520055,0.10491509,0.42614308],[0.21184444,-0.3464179,0.029474478,-0.17789295,0.34473762,0.20484819,-0.21357347],[0.5183205,-0.6048094,0.11201475,0.88285375,-0.5477966,-0.28368485,-0.37010878],[0.7407778,0.0031467904,0.564206,0.3737212,-0.42286292,-0.52992564,-0.5154023],[1.1209921,-0.3645087,0.04481938,0.35292685,0.29335323,-0.14295474,-0.7726177],[0.5309003,0.2573966,0.30485377,0.08541345,-0.1786945,-0.4923706,-0.433013],[0.492245,-0.085702844,-0.55991167,0.99195623,-0.7306447,0.15703674,-0.58475363],[0.1410831,0.33561346,-0.4702111,-0.042534262,-0.34679964,0.0015535586,-0.15639044],[1.221257,-0.62122816,-0.54385215,0.5745175,0.43091094,-0.73388636,-0.3718265],[-0.5161705,-0.109079786,-0.071408875,-0.38007596,-0.44005582,0.045142595,0.05468212],[-0.9730059,1.4277359,2.029946,-3.2277482,2.1687982,-1.6582972,0.904579]],"activation":"σ","dense_2_b":[[-0.0014250523],[-0.5932475],[0.021336202],[-0.016517289],[-0.062387757],[-0.072613515],[0.06306965],[0.019332306],[-0.09633628],[-0.05684373],[0.2125887],[-0.01661518],[0.17361407]]},{"dense_3_W":[[0.5674474,0.546337,0.3743424,-0.273058,-0.5405256,-0.2000324,-0.46903795,-0.5156394,-0.44108075,-0.060869083,-0.40524966,0.19688256,0.70918274],[0.3262551,0.58425474,0.5729054,-0.031375743,-0.041701257,-0.5766777,-0.16657038,-0.31636402,0.15437165,-0.24735309,0.12849659,0.55700594,0.046101455],[-0.097841896,-0.511152,-0.39260116,-0.28767872,0.15554437,-0.16604982,0.43458262,0.05001186,-0.11995932,-0.2560319,0.58787644,-0.45917046,-0.3966601]],"activation":"identity","dense_3_b":[[0.023453068],[0.012939301],[0.18564974]]},{"dense_4_W":[[0.8108035,0.47054186,-0.09254697]],"dense_4_b":[[0.02033851]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A60604A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A60604A1'.json deleted file mode 100755 index 7fb76b4823..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875Q0909144ABxf1x891082xf1x82x0521A60604A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[7.3289046],[0.53865254],[0.34363064],[0.03131177],[0.5423575],[0.5418235],[0.5407688],[0.52266824],[0.5094745],[0.48748496],[0.4674636],[0.03126794],[0.03127153],[0.03128563],[0.031270076],[0.03110797],[0.03086513],[0.030758223]],"model_test_loss":0.0065342518500983715,"input_size":18,"current_date_and_time":"2023-08-14_02-51-07","input_mean":[[19.854994],[0.02852481],[-0.008394549],[0.003052669],[0.02878524],[0.02829884],[0.027643727],[0.02405635],[0.020893725],[0.016066605],[0.01561026],[0.0030796202],[0.003104916],[0.0031055945],[0.0029775568],[0.002796068],[0.0024804338],[0.002308984]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[2.6401606],[-0.041325524],[2.5215666],[-0.041392956],[-0.07687011],[-0.052842032],[0.6748459]],"dense_1_W":[[1.5242575,0.35627735,0.5635576,0.35448948,-0.3953701,0.3265091,-0.577471,0.6584769,0.71018475,0.10515297,-0.2427247,0.35898077,-0.40721607,0.08450537,-0.267958,0.29337814,0.22232342,-0.60763425],[-0.007026347,0.4657935,0.03749239,-0.34094924,-0.075710565,1.4064182,-0.8528577,-0.318615,-0.31381673,-0.27045733,0.42012632,0.26428086,0.100735106,0.08037723,-0.32698122,-0.06074372,0.10325446,0.084082514],[1.5156735,-0.47489092,-0.55053735,-0.40526438,0.23048405,-0.529619,1.1181229,-0.79596174,-0.5320006,-0.09871097,0.1812741,0.49836755,-0.17353886,-0.3646145,-0.006225405,0.0969328,-0.3082221,0.6313902],[0.0070438217,0.7177413,0.070641816,-0.64644647,-0.12578073,0.66291285,-0.6603725,0.18909127,0.08034264,-0.34289366,0.10820179,0.43800563,0.67992795,-0.8538587,0.0030815017,-0.07758179,-0.0855604,0.29938003],[-0.0004627711,-1.4414465,0.07495133,-0.05092367,1.1927464,-0.67879677,0.27852902,-0.583847,-0.81228834,-1.3539568,1.3550432,0.112276375,-0.4907178,0.40841964,0.12346382,-0.22612214,0.6329694,-0.4437507],[0.032261487,0.8911769,6.108131,-0.61734253,0.65491176,1.4899205,-0.34530422,-0.21132824,-1.4898846,-0.43324688,0.5005588,0.4327097,-0.017908085,-0.6668785,0.5833861,0.35305926,0.3997379,-0.51656204],[-0.0018498964,-2.6991417,0.16747902,2.187501,0.53372544,-0.109926574,0.43455476,0.45718986,1.8602107,0.25133002,-0.8681649,1.2997736,1.6204847,2.1496859,0.14778936,-0.49531916,-0.78723556,0.98850256]],"activation":"σ"},{"dense_2_W":[[0.24454884,0.35007536,0.2867137,0.09012383,-0.38733336,-0.49449205,-0.13559741],[0.23089275,-0.5370107,0.09162375,-0.51357645,-0.23495477,-0.06315045,0.11455118],[-0.0063527166,-0.053212985,-0.27540293,0.70994335,0.10962871,-0.14789675,-0.27231297],[-0.50261515,-0.46583286,0.3427541,-0.3748585,0.4016677,0.23851554,0.2952814],[0.06376815,0.26943728,-1.2382541,0.044812873,-0.28141838,0.35423744,0.5646739],[0.56663376,0.6105675,-0.81973964,0.83144623,-0.34869766,0.23554252,-0.2855648],[-0.06491405,0.21282296,-0.25241178,-0.5098676,0.40169764,-0.33915997,-0.37829182],[-0.058915704,-0.52073437,-0.3808913,-0.58914316,0.48207447,-0.14773318,-0.15192641],[-0.0054449504,-0.52427745,-0.17092238,-0.5706592,-0.35192126,0.19167943,0.4108363],[0.26346433,0.5781188,-0.20278165,0.68046784,-0.7055976,0.06091033,-0.2715019],[0.46802843,0.29305348,-0.48767036,0.76116073,-0.5743784,0.018987808,-0.2706612],[-0.35490564,-0.39351743,-0.22781888,-0.273698,-0.4345575,-0.21557479,-0.41541457],[0.8614721,0.42754713,-1.2491077,1.2331724,-1.1045619,0.7123346,-0.33662388]],"activation":"σ","dense_2_b":[[-0.01874273],[0.009371876],[-0.036509376],[0.0034165683],[-0.30991253],[-0.35229847],[0.10235407],[0.14266653],[0.034850482],[-0.112194695],[-0.09342103],[0.0710196],[-0.2241445]]},{"dense_3_W":[[-0.17080562,0.32143503,-0.17581414,0.56947404,-0.055805363,-0.20806669,0.13803789,0.5370566,0.37103105,-0.48028666,-0.10460543,0.6821912,-0.0842912],[0.30726758,0.058517847,-0.33661544,0.21711047,-0.37768382,-0.26146904,0.51983565,-0.07036411,-0.032129124,-0.37549922,-0.3525898,-0.053472064,-0.68903774],[0.16374777,0.41130075,0.054798886,-0.5551823,-0.10899548,-0.13250633,-0.39466566,-0.3571533,-0.1534892,0.39225924,0.6325772,-0.3902483,-0.3982242]],"activation":"identity","dense_3_b":[[0.05099233],[0.06483823],[-0.004630559]]},{"dense_4_W":[[-1.2006958,-0.80405784,0.03314714]],"dense_4_b":[[-0.055501234]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A60634A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A60634A1'.json deleted file mode 100755 index dea8295e8d..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A60634A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[5.0083737],[0.42046377],[0.20520201],[0.02763439],[0.42246833],[0.4221625],[0.4216298],[0.41341385],[0.40692678],[0.4022001],[0.40219635],[0.02748101],[0.027535422],[0.027579376],[0.027645623],[0.027637415],[0.027440004],[0.027380727]],"model_test_loss":0.004143005236983299,"input_size":18,"current_date_and_time":"2023-08-14_03-41-29","input_mean":[[25.47412],[0.19958466],[-0.017220736],[0.0033158686],[0.2047261],[0.20301075],[0.20060319],[0.19406201],[0.19408248],[0.19245343],[0.19168448],[0.0033969714],[0.0033646896],[0.003344533],[0.0033792283],[0.0033883466],[0.003463568],[0.003644856]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.1657069],[-1.9022597],[0.3573439],[-0.44420108],[-0.100230284],[-1.7269558],[1.1205612]],"dense_1_W":[[-0.00092326954,-0.422309,-0.17512406,0.5054023,0.14710678,-0.25678113,-0.20028122,0.06749457,-0.2863628,0.3886345,0.05361403,-0.08413107,-0.43366045,0.06432067,0.48437363,0.014648756,-0.0020482785,-0.14993115],[-1.1023697,0.34174618,-0.28158325,0.4212608,0.5830523,-1.0980513,-0.25991014,0.3546678,0.20719239,-0.46449193,-0.019278029,0.010792962,-0.7601846,0.5799624,-0.13653645,-0.17269216,0.084417485,-0.021036232],[0.00030671473,-0.39266655,0.29377759,-0.48246792,-0.38019815,1.1431502,0.58916605,-0.018903274,0.3098398,-0.035918158,-0.3678466,0.37013093,0.29870456,-0.03076149,-0.14486301,-0.084633216,-0.0988374,0.20422511],[-0.36138636,0.81817955,1.8987099,-1.1200192,-0.11336604,0.17895934,0.043662008,-0.21876605,0.45478925,-0.03689186,1.0078938,-0.30329502,-0.35860255,-0.62149346,0.022846708,0.12703322,0.18421635,0.35560572],[-0.5364841,0.1453418,-3.6584685,0.6151252,0.5582709,-0.2691487,0.023903158,0.5754364,-0.116071,0.37825516,-0.19200331,-0.2248982,-0.3850075,0.30770153,-0.17167693,-0.45830363,-0.046138637,0.21326888],[-1.162092,0.10568817,0.29473102,-0.27880898,-0.36157534,0.5742935,-0.0031682379,-0.08621305,-0.23101984,0.35677135,0.0148600945,-0.27795824,0.62892383,-0.46830806,0.3602908,0.03294911,0.27180216,-0.26759154],[-0.0180816,0.7662361,-0.22583437,-0.8438566,0.50242615,0.43400842,0.30508512,0.012276164,0.968684,0.8544783,0.46200368,-1.9207745,-1.1937202,-1.0721608,-0.21986486,-0.48469168,0.2959894,-0.856707]],"activation":"σ"},{"dense_2_W":[[-0.5470442,1.7217759,-0.1470755,-2.4646258,0.0037959144,1.3074782,-0.05712827],[-0.3711513,0.41745117,0.4496939,-0.20902565,-0.2925513,-0.26379028,0.41135114],[0.6467387,0.12482949,-0.6287757,0.12178349,0.19214922,-0.32433525,-0.4479245],[-0.23320459,-0.29114887,0.06960925,0.40295774,-0.38662457,0.1818995,0.5802863],[-0.66332686,-0.09888686,0.31044513,0.16627274,0.09730392,0.56536597,-0.31096095],[0.6163865,0.44544005,-0.5907308,0.33815238,-0.42669207,-0.7298953,0.19980703],[-0.5976602,-0.6812888,0.024319809,0.10030743,-0.078346655,0.2787135,0.20778744],[0.32584617,0.49106023,-1.2814318,-0.50078326,0.2115034,0.40731817,0.0049111852],[0.739966,-0.18427776,-0.57610196,0.009918123,0.18318374,-0.27952188,-0.073271],[-0.26890662,0.32813534,0.45242321,0.28769568,-0.1091229,0.36858273,-0.5646969],[0.065649405,-0.595555,0.6637816,-0.50877273,-0.025255747,0.29801172,-0.089912675],[-0.6580612,-0.53460723,0.64502347,-0.037672743,-0.38733548,0.35739285,0.37566775],[-0.26895392,-0.2532778,0.6466152,-0.32872054,0.4610569,0.42680815,-0.289281]],"activation":"σ","dense_2_b":[[-0.57801545],[-0.02487967],[0.046223283],[-0.011919688],[-0.023250999],[-0.0042634523],[-0.27497166],[-0.09866434],[0.012610335],[-0.08247934],[-0.036527302],[-0.05259078],[-0.031590052]]},{"dense_3_W":[[-0.16326903,0.5243444,-0.63081026,0.28322223,0.2934153,-0.31467402,-0.329545,-0.36580902,-0.37401882,0.12621103,0.3331115,0.6052953,0.48938477],[-0.09900888,-0.06063517,-0.17130663,0.1667584,0.16381904,-0.6082081,0.013274949,0.15247221,-0.03997433,0.18612197,0.2806802,-0.11156396,-0.3359548],[-0.2837178,-0.44840294,-0.004694435,0.29237515,0.55196846,-0.6161363,0.57095647,-0.11839446,-0.61730903,0.038825605,-0.19622047,-0.21944387,0.1243949]],"activation":"identity","dense_3_b":[[-0.00747683],[0.002752381],[0.0026605453]]},{"dense_4_W":[[0.95164365,0.30194584,0.58023304]],"dense_4_b":[[-0.005728339]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A62A32A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A62A32A1'.json deleted file mode 100755 index 616751a758..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QF909144B xf1x895582xf1x82x0571A62A32A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.626944],[1.0619773],[0.5539984],[0.03671154],[1.0561126],[1.0578535],[1.0594684],[1.0446345],[1.0212003],[0.9992795],[0.97770816],[0.036627006],[0.036641616],[0.036646295],[0.036549233],[0.036383647],[0.036169644],[0.035927355]],"model_test_loss":0.0056040422059595585,"input_size":18,"current_date_and_time":"2023-08-14_04-08-06","input_mean":[[18.489305],[0.07716587],[0.008159927],[0.014758759],[0.07426559],[0.07554208],[0.07664342],[0.07870349],[0.07942318],[0.08122073],[0.081623584],[0.01484478],[0.014833818],[0.014823983],[0.014814751],[0.014938193],[0.015166377],[0.015501372]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.036457997],[0.19156031],[-0.01508866],[-0.052175455],[-1.0038084],[-0.2074287],[0.15170857]],"dense_1_W":[[-0.004964838,-1.1980921,-0.029613819,0.28823835,0.7013706,-1.2906415,1.0065259,0.23381212,-0.046492662,0.120659865,-0.098360516,0.0062270476,-0.46386242,0.12284296,0.059551295,0.09112548,-0.055498406,0.0027111673],[-0.005198727,-0.6752965,-0.6080775,0.20275135,-0.29710057,-0.85021347,1.3533522,-0.21732911,-0.22854595,0.19577463,0.321285,0.06076337,-0.03275157,0.36474285,0.042674348,0.2598862,-0.103289686,-0.21956365],[0.0043494096,1.2409916,-0.01650288,-0.41806248,-0.08088325,0.98173875,-1.6316887,0.25142598,-0.23021263,0.13534379,-0.04843492,0.2575174,-0.08009086,0.22280405,-0.25962964,0.00019480381,0.12492345,-0.028998379],[-0.022095788,-1.111526,-1.9763997,0.3185457,0.14024144,-0.6664468,-0.16739945,0.08738434,-0.60685486,-0.28227818,-0.7769675,0.566913,-0.007644112,0.31493762,-0.40619445,-0.13403314,-0.16620153,0.035001427],[2.3655212,-0.5150374,0.31141245,0.065676264,0.18930423,-0.98876,0.43160492,-0.045166675,0.059209798,0.23501736,-0.13611424,-0.24918106,0.25709474,0.4468884,-0.01140312,-0.14684597,0.13040915,0.03804596],[-0.0047277273,-1.1999024,0.022677707,0.06893214,0.0034417252,-0.7617319,0.74206394,-0.28641677,0.043607976,-0.16808808,-0.11143388,-0.27479768,0.041559022,-0.29644537,0.16951554,0.16085929,-0.14372928,0.19972724],[0.0015725193,1.8013598,6.0048485,-0.31310147,-1.4716569,-0.32186383,-0.67218703,0.2699829,0.8223929,-0.39775306,-0.27570257,0.1735122,0.34330562,-0.11839002,0.112108946,0.0284751,-0.42073828,0.32494405]],"activation":"σ"},{"dense_2_W":[[-0.8274989,-0.26683718,1.1221086,-0.4967123,-0.15982957,-0.5157279,0.5409362],[-0.4282439,-0.28969744,-0.15959398,-0.31986535,0.06426711,0.045167804,-0.12751547],[0.75156754,0.5139446,-1.6046362,0.22225763,-0.17358594,0.4643068,-0.56141883],[-0.64656496,-0.31969824,-0.3383586,-0.24736834,-0.115212455,-0.28582263,-0.29819226],[0.02432829,0.59469664,-0.15138043,-0.5656801,-0.5094818,0.7270511,0.70142233],[0.8166905,0.17791738,-0.7938446,-0.41242573,0.15946935,0.010435327,-0.07871756],[-0.50170904,-0.70214444,-0.09667413,0.06173317,-0.34481144,-0.05702854,0.28547388],[-0.4316806,-0.69494605,0.35303894,-0.32337648,-0.11162086,0.16142549,0.046552487],[-0.47061762,-0.033296604,0.48481578,-0.1644464,-0.35995185,-0.9828825,0.48374155],[-1.1422112,-0.30554995,1.0520233,0.11161053,-0.34157068,-0.3464864,0.44715127],[0.32906184,0.24655321,-1.2441839,0.40368524,-0.26899955,0.26253235,-0.47163612],[0.89605176,0.21842143,-0.18375918,0.25550878,-0.17637666,0.18975225,-0.01678542],[0.015940731,-0.25979605,0.025350504,0.27074146,0.4475809,-0.68709433,-0.6171181]],"activation":"σ","dense_2_b":[[0.1036446],[-0.24618293],[-0.3107517],[-0.14251111],[-0.00010030766],[-0.22231226],[0.03811995],[-0.24698843],[-0.056234393],[-0.024014654],[-0.121909596],[-0.21749336],[-0.3809104]]},{"dense_3_W":[[-0.38996089,0.41667554,0.31174377,0.48924834,0.5464652,0.17986193,-0.29639804,-0.6972503,-0.61368924,-0.2425055,-0.19786963,0.30278218,-0.1469855],[0.6355902,0.08049979,0.111204624,0.19977798,-0.1947918,-0.59491324,0.29035076,-0.23108244,-0.28247926,0.31540954,-0.2722785,-0.37643728,0.39918077],[0.39822328,0.36373773,-0.40062055,0.33348098,0.038394526,0.16810612,0.16263756,-0.26843348,0.23122968,0.11646639,-0.6678012,-0.30025852,-0.23330888]],"activation":"identity","dense_3_b":[[-0.03313786],[0.042609334],[0.039157733]]},{"dense_4_W":[[-0.6706609,0.49312,0.83626646]],"dense_4_b":[[0.032975886]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM907144D xf1x891063xf1x82x002SA6092SOM'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM907144D xf1x891063xf1x82x002SA6092SOM'.json deleted file mode 100755 index 9c07f0aa4c..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM907144D xf1x891063xf1x82x002SA6092SOM'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[4.846948],[0.81105536],[0.41403648],[0.035652053],[0.8037867],[0.8062848],[0.8087894],[0.80610657],[0.8037343],[0.80183107],[0.7975248],[0.035562087],[0.035535168],[0.035516404],[0.03546272],[0.03543645],[0.035458043],[0.03562561]],"model_test_loss":0.007874921895563602,"input_size":18,"current_date_and_time":"2023-08-14_04-32-42","input_mean":[[25.956413],[0.047174964],[0.009190482],[0.0044681234],[0.04175229],[0.04260476],[0.04351004],[0.047875065],[0.04891037],[0.052666083],[0.061359685],[0.0043021124],[0.0042939777],[0.004301477],[0.0043947003],[0.0044108145],[0.004389884],[0.0046027442]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[0.059979655],[0.069013156],[-0.8281847],[-0.11142841],[0.03955072],[0.12549742],[0.783418]],"dense_1_W":[[0.0030481117,-1.0549505,-0.006972525,-0.15595584,0.7840362,-0.69210386,0.17925914,0.04507908,-0.14131218,0.34102848,-0.09225534,0.20323838,0.0819431,0.9120782,0.1297282,-0.11015781,-0.3067628,0.021845477],[-0.00080558297,0.73653907,-0.001798047,0.1313806,0.068776235,0.49522364,-0.2105799,-0.21456197,0.21042615,0.21957193,-0.11765698,0.51994056,-0.4339728,-0.023908615,-0.16695696,-0.176756,0.12341636,0.058519702],[0.7222947,-0.17934859,-0.003890196,0.09484328,-0.38000545,-0.3075813,0.13792701,0.11271669,-0.0005278281,0.12689501,-0.20993122,-0.44905135,0.33738986,0.07277459,0.38528377,0.106667824,-0.18891095,-0.019514121],[0.06560848,0.40144962,-0.12956662,-0.055643696,-0.049663123,0.86327803,0.34819037,-1.1415983,-0.24294508,0.45161903,0.5174569,-0.9724499,-1.1054265,-0.59140885,-0.121702924,0.53453803,0.77787405,-0.24458599],[-0.0030644669,0.26243958,2.1391315,0.06857931,0.5363525,0.25445628,-1.2047125,0.7697752,0.24485303,-0.06228338,-0.7510021,0.23437755,-0.09784092,-0.7235852,0.8837979,-0.17948864,-0.2157018,0.034686614],[-0.012706729,0.3920872,-0.010908032,0.7358326,-0.03599182,1.3597629,-0.43022266,0.15597473,-0.40719056,0.706777,-0.19327079,1.2462306,0.75319684,0.3395795,-0.40832612,-0.33334768,-0.996102,-0.89866537],[-0.7431401,-0.29369017,-0.000105630024,0.29781067,0.013087427,-0.94798666,0.5259348,0.116058856,-0.11235733,0.16232441,-0.17218283,-0.32375956,-0.22164673,0.4142412,0.20824604,0.059222106,0.097304516,-0.18275806]],"activation":"σ"},{"dense_2_W":[[0.97417414,-1.1549966,0.8853947,-0.26468486,-0.8227154,-0.09399993,0.6159557],[0.10204023,0.86626434,-0.28335205,-0.5750978,-0.302103,-0.27426735,0.01522395],[-0.6768031,0.79712826,-0.79459053,0.26956165,-0.17597227,0.324712,0.077839725],[-0.38779014,0.96340615,-0.12227216,0.28462237,0.7044941,0.4787453,-1.0882279],[-0.39657563,0.5794276,-0.7634172,0.18103188,0.61563504,0.50122654,-0.9383998],[-0.5073624,0.12485382,-1.1825857,-0.4041146,0.5108791,0.44801873,-0.51704717],[-0.6595412,0.6669609,-0.5334947,0.17545679,0.407928,0.019941911,-0.7399486],[0.09550178,0.2438875,-0.04877144,-0.0019337976,-0.019350123,0.43442073,-0.3072027],[0.80995226,-0.28730962,1.149432,-0.2670333,-0.55623615,-0.36270526,0.27021706],[0.09230979,-1.2384902,0.96683645,0.50837046,-0.8388565,-0.06853885,0.9245854],[1.0689826,-0.6658299,0.6486111,-0.6554747,-0.64078957,-0.24539684,0.73077625],[0.08056471,-0.6417475,0.4964616,-0.12449939,0.18329845,-0.2311192,0.6783663],[0.45767495,-0.28652194,0.19447622,-0.08870219,-0.18199718,0.025115477,0.29550073]],"activation":"σ","dense_2_b":[[-0.028785199],[0.06734204],[0.0311671],[0.090430334],[0.0499396],[-0.06613649],[0.1572726],[-0.0020371592],[0.04266869],[-0.13803189],[-0.3047031],[-0.07539335],[-0.12442536]]},{"dense_3_W":[[0.66223514,-0.1747075,-0.50954103,0.29728493,-0.46075493,0.13727571,-0.18393758,0.39366758,-0.47327036,-0.01879659,0.23903094,-0.32678747,0.30671299],[-0.28180516,0.2469839,0.22324938,-0.2998403,0.6316917,0.14390591,0.63533956,-0.254778,0.22968335,-0.3778501,-0.41270712,0.3120054,-0.44822124],[0.27459204,-0.42109582,-0.24014448,-0.592849,-0.33828726,-0.17524625,-0.42107752,-0.20445393,0.48335218,0.67310184,0.1951032,0.5667199,0.19647887]],"activation":"identity","dense_3_b":[[0.020020232],[-0.07193015],[-0.029508086]]},{"dense_4_W":[[-0.022750493,0.059219737,-1.015219]],"dense_4_b":[[0.02894119]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60604A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60604A1'.json deleted file mode 100755 index 6ef36a3b0e..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60604A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.254052],[0.9806163],[0.4231999],[0.04356696],[0.97200865],[0.97504586],[0.97775066],[0.9591673],[0.93643886],[0.9057191],[0.87526655],[0.043427564],[0.043460514],[0.04348194],[0.043345723],[0.04318236],[0.042914458],[0.042423796]],"model_test_loss":0.01540292613208294,"input_size":18,"current_date_and_time":"2023-08-14_04-58-24","input_mean":[[22.365421],[0.0019552947],[-0.026129048],[-0.010464547],[0.010480075],[0.008010973],[0.0055930708],[-0.003615944],[-0.008296312],[-0.0115947],[-0.015986588],[-0.010414467],[-0.010435414],[-0.010465159],[-0.0105609745],[-0.010642022],[-0.010804179],[-0.01103055]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[-0.3185732],[-2.5867317],[-2.4119403],[0.28416687],[-0.02702185],[-0.16531649],[-1.1527723]],"dense_1_W":[[-0.022257918,0.8040401,1.287335,-0.23689313,0.4893548,0.8433865,-1.0691862,0.36647147,-0.24386124,-0.13633506,0.07477291,0.35244244,-0.43019938,-0.6580194,1.0880467,0.6347402,-0.6914378,-0.037980463],[-0.56894374,-1.8446071,-0.21028358,-0.47825742,0.16942668,-0.94593054,0.7141977,-0.758547,-0.13884988,0.05721294,0.30957872,-0.33949006,0.0921146,0.3615484,0.45655683,0.082172595,-0.034271725,-0.09097419],[-0.57559276,1.5042158,0.20520714,0.51569813,-0.5431699,1.0341207,-0.09032631,0.61960757,0.2701506,-0.12109735,-0.30678055,0.3720596,-0.1883834,-0.13189395,-0.6962025,-0.23011449,0.23485538,0.07106131],[1.9175196,-0.06870724,-0.009685604,-0.58994263,-0.77743906,3.5469222,-1.9311298,-1.4536422,0.6789666,0.19781737,0.060366552,0.70214975,0.28552058,-0.94600236,-0.61913157,-0.25661743,0.2521842,0.38764063],[0.015907988,-1.8861995,-0.12928374,-0.5463564,0.70329434,-0.4612843,-0.5395861,-0.92044824,-0.56931007,0.18662772,0.5002842,-0.6624107,0.047241144,0.21043116,0.9085904,0.34524617,0.17921534,-0.5345244],[-1.9607425,-0.17032151,-0.002710183,-0.49269548,0.46140772,1.5506655,-1.4574836,-0.75262254,0.28762928,0.4009911,-0.041949093,0.4422491,0.080314584,-0.4521053,-0.95743835,0.08831782,0.12635101,0.36157072],[-0.17528914,0.014480862,9.194567,-0.027118178,0.21340506,0.25479296,-0.08499456,-0.3819038,-0.08245096,0.14458492,0.012424778,0.1363471,-0.2180041,0.12804921,-0.06768428,-0.14581227,0.28676355,-0.40200242]],"activation":"σ"},{"dense_2_W":[[-0.13735515,-0.36693308,0.31717214,-0.16753168,-0.5315297,0.06383681,0.16398782],[0.5107664,-0.41147742,0.23399776,0.12284709,0.52509624,0.26873505,-0.84280556],[-0.5975781,-0.13184041,-0.43245456,-0.19741607,0.24153347,0.23864448,0.06348907],[0.44337207,-0.14361665,0.30699468,0.24923041,-0.5986253,0.55096453,-0.21386127],[-1.0883859,0.18649225,-0.14793696,-1.1706864,-0.18842566,0.8806919,-1.1581444],[-0.5192367,0.63482714,-0.30454943,-0.74983114,0.76898384,-0.29513043,-0.23884358],[-0.16692421,0.085194685,-0.57313204,-0.52969104,-0.35271636,-1.3866607,1.0940571],[-0.36982897,0.1070417,-0.7242904,-0.21129967,0.85419685,-0.09256855,-0.12815432],[0.37570813,-0.4983966,0.25351462,-0.5352563,-0.885784,0.38207167,0.55912787],[-0.17706849,-1.1736196,0.78014624,0.64170426,-1.0116245,0.13409959,0.2723705],[0.03780842,0.36266404,-0.056093358,0.700982,0.25742763,-0.730712,-0.10212599],[-0.043599892,-0.896462,0.67346543,0.49555147,-1.0908926,0.36215103,0.34307495],[-0.17067212,-0.19787733,0.29983255,-0.04538142,-0.62211144,0.052005216,-0.114241906]],"activation":"σ","dense_2_b":[[-0.17325053],[0.06832358],[-0.13694412],[-0.0011346783],[-0.34375873],[0.09270055],[-0.21357837],[0.020085877],[-0.38013837],[-0.26146224],[0.28615406],[-0.21359953],[-0.09619647]]},{"dense_3_W":[[-0.038358208,-0.31359997,0.20052825,-0.560843,0.7097384,0.6719386,0.36616954,0.36791024,-0.2366012,-0.4499782,0.6078685,-0.6232705,-0.3668057],[0.16431291,0.039036777,-0.11336356,-0.427402,0.681554,0.11661078,0.24273938,0.17969954,-0.42864278,-0.5946742,-0.076663315,-0.23562627,0.17208236],[-0.4079696,0.60386187,-0.0019695666,-0.55016863,-0.15872847,-0.4558569,-0.19035904,-0.2832483,-0.5238773,0.42874604,0.13831717,0.07666673,0.6144315]],"activation":"identity","dense_3_b":[[0.05688099],[0.09056785],[0.068805546]]},{"dense_4_W":[[-0.9861829,-0.23317513,-0.07935023]],"dense_4_b":[[-0.055984028]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60804A1'.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60804A1'.json deleted file mode 100755 index 0b94ed5748..0000000000 --- a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN b'xf1x875QM909144C xf1x891082xf1x82x0521A60804A1'.json +++ /dev/null @@ -1 +0,0 @@ -{"input_std":[[8.714143],[0.9927753],[0.42477676],[0.03973602],[0.9727292],[0.9798503],[0.98615247],[0.97174776],[0.9597771],[0.9394966],[0.9168747],[0.03964375],[0.039681226],[0.039701194],[0.039581764],[0.03947426],[0.039269768],[0.039058764]],"model_test_loss":0.013159733265638351,"input_size":18,"current_date_and_time":"2023-08-14_05-25-10","input_mean":[[23.218801],[-0.033690505],[0.0024943613],[-0.0032879899],[-0.03312757],[-0.033911895],[-0.034462307],[-0.03274429],[-0.03286793],[-0.032002535],[-0.030374872],[-0.0032268409],[-0.0032460035],[-0.0032604784],[-0.0032413462],[-0.0033537117],[-0.003547709],[-0.0038500645]],"input_vars":["v_ego","lateral_accel","lateral_jerk","roll","lateral_accel_m03","lateral_accel_m02","lateral_accel_m01","lateral_accel_p03","lateral_accel_p06","lateral_accel_p10","lateral_accel_p15","roll_m03","roll_m02","roll_m01","roll_p03","roll_p06","roll_p10","roll_p15"],"output_size":1,"layers":[{"dense_1_b":[[1.7959027],[0.55505973],[-2.3768406],[-0.16383298],[-1.7668463],[-0.4719505],[0.8295408]],"dense_1_W":[[1.0514657,0.4917108,6.960775,0.040523,-0.8114545,-0.42457384,-1.5367419,0.18918777,0.37774196,-0.3243656,-0.40481222,0.39827186,0.41831338,-0.6198045,0.4753863,0.48323017,-0.06107707,-0.16029453],[0.15152642,-2.5568774,-0.001119578,0.028153164,0.5115196,-0.57825077,0.49559352,-0.05674371,-0.0267328,-0.046980154,0.10357833,-0.18090251,-0.26617435,0.29677737,0.7249489,-0.03468213,-0.005596551,-0.18188117],[-1.5674329,-0.4283582,1.070279,-1.1344318,1.4361267,1.2410127,-1.8508538,0.25674936,0.4047672,-0.51887536,0.45543274,0.3743945,0.40804172,-0.96260333,1.0525509,0.5583048,0.18581861,-0.49588192],[-0.4904594,0.052873794,-0.54584765,-0.6538562,0.33124956,0.3054544,-1.2273709,-0.04424467,0.07750318,-0.052387144,0.023881147,0.7269529,0.48401436,-0.44175398,-0.3785952,-0.19174287,-0.05213665,0.36695448],[-1.3100109,0.08232854,-0.8303036,0.92385757,-0.83452135,-0.93788815,1.2850705,0.0645516,-0.5059019,0.36357152,-0.27048874,-0.8359992,0.10816168,0.91588885,-0.93813425,-0.54902464,0.11485201,0.2426489],[-0.27612093,0.5894454,6.7886415,-0.42007807,0.8136479,0.48477572,-0.015306809,0.33938614,0.8966847,0.118165955,-2.203581,0.19513792,0.51539826,-0.080586016,0.2052024,-0.5273732,-0.1945807,0.35707137],[0.25792342,1.6364664,-0.001792033,0.22856699,-0.13199906,0.77897304,-0.0359948,-0.20382008,0.035235707,0.025847819,0.08331019,0.11043304,-0.07570084,-0.11650494,-0.47634286,-0.33599797,0.118242994,0.15796357]],"activation":"σ"},{"dense_2_W":[[0.5116447,-0.092584796,-0.10705274,-0.17041756,-0.14934607,-0.12380058,-0.057289656],[-0.22088462,1.2812711,-0.46391612,-0.3160566,0.76806194,-0.5649681,-0.7918618],[0.045260437,-1.6188258,0.68774945,0.020580687,0.1319073,0.50655997,0.10069625],[-0.028886491,-0.22777122,-0.09551939,-0.4077626,-0.44366226,0.27823326,-0.3208229],[-0.7618065,-0.5159872,-0.7606131,0.15979978,-0.03456325,0.005977178,-0.45774835],[0.6098429,-0.79085386,-0.18997884,-0.008630259,-0.81565344,0.6787126,1.1412653],[-0.06353774,-0.79416084,0.293484,-0.120535955,-0.25111738,-0.113088645,-0.19914077],[0.2501803,-1.7164524,0.696637,-0.5307749,0.5375581,0.4207089,0.35805798],[-0.071142145,-0.6921994,0.23711675,0.17744231,0.16084164,-0.30682364,0.16035682],[0.9792056,-0.37842458,0.935338,-0.038432624,0.91073805,0.69246453,0.37750706],[0.396947,0.3347981,-0.5091141,-0.5149633,0.1858322,0.29677188,-0.43474185],[0.3491485,0.29401642,-0.36790296,0.42044657,-0.53512317,0.058706686,-0.50015694],[-0.4911135,0.646846,0.18155076,-0.2229118,0.31506446,0.36774144,-0.82843393]],"activation":"σ","dense_2_b":[[-0.03162165],[0.04077409],[-0.30135295],[-0.023840334],[-0.25210667],[0.012809456],[-0.23830907],[-0.36270756],[-0.10388676],[0.07296503],[-0.051522776],[-0.041601982],[-0.09325582]]},{"dense_3_W":[[-0.5250345,-0.22525242,0.2523494,0.3467854,0.015721213,-0.52880615,-0.24200426,0.5264877,-0.34023857,0.417793,0.018722747,-0.5499491,-0.30318102],[-0.19100182,0.2990618,-0.1496899,0.34770057,-0.08324218,0.5929635,0.57089233,0.1725288,0.56539565,-0.1898713,-0.5954888,-0.25292823,-0.49786177],[-0.0627163,0.61702037,-0.6596768,0.461395,-0.20111923,-0.6267803,0.3331113,-0.25044763,0.055209983,0.20798822,0.056768,-0.055646416,0.08195084]],"activation":"identity","dense_3_b":[[-0.007629902],[-0.0233827],[0.022168329]]},{"dense_4_W":[[0.20391291,1.0325449,-1.0948162]],"dense_4_b":[[-0.023781778]],"activation":"identity"}]} \ No newline at end of file diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_ARTEON_MK1.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN ARTEON 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_ARTEON_MK1.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_ATLAS_MK1.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN ATLAS 1ST GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_ATLAS_MK1.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_GOLF_MK7.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN GOLF 7TH GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_GOLF_MK7.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_JETTA_MK7.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN JETTA 7TH GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_JETTA_MK7.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_PASSAT_MK8.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT 8TH GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_PASSAT_MK8.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT NMS.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_PASSAT_NMS.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN PASSAT NMS.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_PASSAT_NMS.json diff --git a/selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN.json b/selfdrive/car/torque_data/lat_models/VOLKSWAGEN_TIGUAN_MK2.json old mode 100755 new mode 100644 similarity index 100% rename from selfdrive/car/torque_data/lat_models/VOLKSWAGEN TIGUAN 2ND GEN.json rename to selfdrive/car/torque_data/lat_models/VOLKSWAGEN_TIGUAN_MK2.json diff --git a/selfdrive/car/torque_data/neural_ff_weights.json b/selfdrive/car/torque_data/neural_ff_weights.json index c526f07fa2..251b66efb0 100644 --- a/selfdrive/car/torque_data/neural_ff_weights.json +++ b/selfdrive/car/torque_data/neural_ff_weights.json @@ -1 +1 @@ -{"CHEVROLET BOLT EUV 2022": {"w_1": [[0.3452189564704895, -0.15614677965641022, -0.04062516987323761, -0.5960758328437805, 0.3211185932159424, 0.31732726097106934, -0.04430829733610153, -0.37327295541763306, -0.14118380844593048, 0.12712529301643372, 0.2641555070877075, -0.3451094627380371, -0.005127656273543835, 0.6185108423233032, 0.03725295141339302, 0.3763789236545563], [-0.0708412230014801, 0.3667356073856354, 0.031383827328681946, 0.1740853488445282, -0.04695861041545868, 0.018055908381938934, 0.009072160348296165, -0.23640218377113342, -0.10362917929887772, 0.022628149017691612, -0.224413201212883, 0.20718418061733246, -0.016947750002145767, -0.3872031271457672, -0.15500062704086304, -0.06375953555107117], [-0.0838046595454216, -0.0242826659232378, -0.07765661180019379, 0.028858814388513565, -0.09516210108995438, 0.008368706330657005, 0.1689300835132599, 0.015036891214549541, -0.15121428668498993, 0.1388195902109146, 0.11486363410949707, 0.0651545450091362, 0.13559958338737488, 0.04300367832183838, -0.13856294751167297, -0.058136988431215286], [-0.006249868310987949, 0.08809533715248108, -0.040690965950489044, 0.02359287068247795, -0.00766348373144865, 0.24816390872001648, -0.17360293865203857, -0.03676899895071983, -0.17564819753170013, 0.18998438119888306, -0.050583917647600174, -0.006488069426268339, 0.10649101436138153, -0.024557121098041534, -0.103276826441288, 0.18448011577129364]], "b_1": [0.2935388386249542, 0.10967712104320526, -0.014007942751049995, 0.211833655834198, 0.33605605363845825, 0.37722209095954895, -0.16615016758441925, 0.3134673535823822, 0.06695777177810669, 0.3425212800502777, 0.3769673705101013, 0.23186539113521576, 0.5770409107208252, -0.05929069593548775, 0.01839117519557476, 0.03828774020075798], "w_2": [[-0.06261160969734192, 0.010185074992477894, -0.06083013117313385, -0.04531499370932579, -0.08979734033346176, 0.3432150185108185, -0.019801849499344826, 0.3010321259498596], [0.19698476791381836, -0.009238275699317455, 0.08842222392559052, -0.09516377002000809, -0.05022778362035751, 0.13626104593276978, -0.052890390157699585, 0.15569131076335907], [0.0724768117070198, -0.09018408507108688, 0.06850195676088333, -0.025572121143341064, 0.0680626779794693, -0.07648195326328278, 0.07993496209383011, -0.059752143919467926], [1.267876386642456, -0.05755887180566788, -0.08429178595542908, 0.021366603672504425, -0.0006479775765910745, -1.4292563199996948, -0.08077696710824966, -1.414825439453125], [0.04535430669784546, 0.06555880606174469, -0.027145234867930412, -0.07661093026399612, -0.05702832341194153, 0.23650476336479187, 0.0024587824009358883, 0.20126521587371826], [0.006042032968252897, 0.042880818247795105, 0.002187949838116765, -0.017126334831118584, -0.08352015167474747, 0.19801731407642365, -0.029196614399552345, 0.23713473975658417], [-0.01644900068640709, -0.04358499124646187, 0.014584392309188843, 0.07155826687812805, -0.09354910999536514, -0.033351872116327286, 0.07138452678918839, -0.04755295440554619], [-1.1012420654296875, -0.03534531593322754, 0.02167935110628605, -0.01116552110761404, -0.08436500281095505, 1.1038788557052612, 0.027903547510504723, 1.0676132440567017], [0.03843916580080986, -0.0952216386795044, 0.039226632565259933, 0.002778085647150874, -0.020275786519050598, -0.07848760485649109, 0.04803166165947914, 0.015538203530013561], [0.018385495990514755, -0.025189843028783798, 0.0036680365446954966, -0.02105865254998207, 0.04808586835861206, 0.1575016975402832, 0.02703506126999855, 0.23039312660694122], [-0.0033881019335240126, -0.10210853815078735, -0.04877309128642082, 0.006989633198827505, 0.046798162162303925, 0.38676899671554565, -0.032304272055625916, 0.2345031052827835], [0.22092825174331665, -0.09642873704433441, 0.04499409720301628, 0.05108088254928589, -0.10191166400909424, 0.12818090617656708, -0.021021494641900063, 0.09440375864505768], [0.1212429478764534, -0.028194155544042587, -0.0981956496834755, 0.08226924389600754, 0.055346839129924774, 0.27067816257476807, -0.09064067900180817, 0.12580905854701996], [-1.6740131378173828, -0.02066155895590782, -0.05924689769744873, 0.06347910314798355, -0.07821853458881378, 1.2807466983795166, 0.04589352011680603, 1.310766577720642], [-0.09893272817134857, -0.04093599319458008, -0.02502273954451084, 0.09490344673395157, -0.0211324505507946, -0.09021010994911194, 0.07936318963766098, -0.03593116253614426], [-0.08490308374166489, -0.015558987855911255, -0.048692114651203156, -0.007421435788273811, -0.040531404316425323, 0.25889304280281067, 0.06012800335884094, 0.27946868538856506]], "b_2": [0.07973937690258026, -0.010446485131978989, -0.003066520905122161, -0.031895797699689865, 0.006032303906977177, 0.24106740951538086, -0.008969511836767197, 0.2872662842273712], "w_3": [[-1.364486813545227, -0.11682678014039993, 0.01764785870909691, 0.03926877677440643], [-0.05695437639951706, 0.05472218990325928, 0.1266128271818161, 0.09950875490903854], [0.11415273696184158, -0.10069356113672256, 0.0864749327301979, -0.043946366757154465], [-0.10138195008039474, -0.040128443390131, -0.08937158435583115, -0.0048376512713730335], [-0.0028251828625798225, -0.04743027314543724, 0.06340016424655914, 0.07277824729681015], [0.49482327699661255, -0.06410001963376999, -0.0999293103814125, -0.14250673353672028], [0.042802367359399796, 0.0015462725423276424, -0.05991362780332565, 0.1022040992975235], [0.3523194193840027, 0.07343732565641403, 0.04157765582203865, -0.12358107417821884]], "b_3": [0.2653026282787323, -0.058485131710767746, -0.0744510293006897, 0.012550175189971924], "w_4": [[0.5988775491714478, 0.09668736904859543], [-0.04360569268465042, 0.06491032242774963], [-0.11868984252214432, -0.09601487964391708], [-0.06554870307445526, -0.14189276099205017]], "b_4": [-0.08148707449436188, -2.8251802921295166], "input_norm_mat": [[-3.0, 3.0], [-3.0, 3.0], [0.0, 40.0], [-3.0, 3.0]], "output_norm_mat": [-1.0, 1.0], "temperature": 100.0}} \ No newline at end of file +{"CHEVROLET_BOLT_EUV": {"w_1": [[0.3452189564704895, -0.15614677965641022, -0.04062516987323761, -0.5960758328437805, 0.3211185932159424, 0.31732726097106934, -0.04430829733610153, -0.37327295541763306, -0.14118380844593048, 0.12712529301643372, 0.2641555070877075, -0.3451094627380371, -0.005127656273543835, 0.6185108423233032, 0.03725295141339302, 0.3763789236545563], [-0.0708412230014801, 0.3667356073856354, 0.031383827328681946, 0.1740853488445282, -0.04695861041545868, 0.018055908381938934, 0.009072160348296165, -0.23640218377113342, -0.10362917929887772, 0.022628149017691612, -0.224413201212883, 0.20718418061733246, -0.016947750002145767, -0.3872031271457672, -0.15500062704086304, -0.06375953555107117], [-0.0838046595454216, -0.0242826659232378, -0.07765661180019379, 0.028858814388513565, -0.09516210108995438, 0.008368706330657005, 0.1689300835132599, 0.015036891214549541, -0.15121428668498993, 0.1388195902109146, 0.11486363410949707, 0.0651545450091362, 0.13559958338737488, 0.04300367832183838, -0.13856294751167297, -0.058136988431215286], [-0.006249868310987949, 0.08809533715248108, -0.040690965950489044, 0.02359287068247795, -0.00766348373144865, 0.24816390872001648, -0.17360293865203857, -0.03676899895071983, -0.17564819753170013, 0.18998438119888306, -0.050583917647600174, -0.006488069426268339, 0.10649101436138153, -0.024557121098041534, -0.103276826441288, 0.18448011577129364]], "b_1": [0.2935388386249542, 0.10967712104320526, -0.014007942751049995, 0.211833655834198, 0.33605605363845825, 0.37722209095954895, -0.16615016758441925, 0.3134673535823822, 0.06695777177810669, 0.3425212800502777, 0.3769673705101013, 0.23186539113521576, 0.5770409107208252, -0.05929069593548775, 0.01839117519557476, 0.03828774020075798], "w_2": [[-0.06261160969734192, 0.010185074992477894, -0.06083013117313385, -0.04531499370932579, -0.08979734033346176, 0.3432150185108185, -0.019801849499344826, 0.3010321259498596], [0.19698476791381836, -0.009238275699317455, 0.08842222392559052, -0.09516377002000809, -0.05022778362035751, 0.13626104593276978, -0.052890390157699585, 0.15569131076335907], [0.0724768117070198, -0.09018408507108688, 0.06850195676088333, -0.025572121143341064, 0.0680626779794693, -0.07648195326328278, 0.07993496209383011, -0.059752143919467926], [1.267876386642456, -0.05755887180566788, -0.08429178595542908, 0.021366603672504425, -0.0006479775765910745, -1.4292563199996948, -0.08077696710824966, -1.414825439453125], [0.04535430669784546, 0.06555880606174469, -0.027145234867930412, -0.07661093026399612, -0.05702832341194153, 0.23650476336479187, 0.0024587824009358883, 0.20126521587371826], [0.006042032968252897, 0.042880818247795105, 0.002187949838116765, -0.017126334831118584, -0.08352015167474747, 0.19801731407642365, -0.029196614399552345, 0.23713473975658417], [-0.01644900068640709, -0.04358499124646187, 0.014584392309188843, 0.07155826687812805, -0.09354910999536514, -0.033351872116327286, 0.07138452678918839, -0.04755295440554619], [-1.1012420654296875, -0.03534531593322754, 0.02167935110628605, -0.01116552110761404, -0.08436500281095505, 1.1038788557052612, 0.027903547510504723, 1.0676132440567017], [0.03843916580080986, -0.0952216386795044, 0.039226632565259933, 0.002778085647150874, -0.020275786519050598, -0.07848760485649109, 0.04803166165947914, 0.015538203530013561], [0.018385495990514755, -0.025189843028783798, 0.0036680365446954966, -0.02105865254998207, 0.04808586835861206, 0.1575016975402832, 0.02703506126999855, 0.23039312660694122], [-0.0033881019335240126, -0.10210853815078735, -0.04877309128642082, 0.006989633198827505, 0.046798162162303925, 0.38676899671554565, -0.032304272055625916, 0.2345031052827835], [0.22092825174331665, -0.09642873704433441, 0.04499409720301628, 0.05108088254928589, -0.10191166400909424, 0.12818090617656708, -0.021021494641900063, 0.09440375864505768], [0.1212429478764534, -0.028194155544042587, -0.0981956496834755, 0.08226924389600754, 0.055346839129924774, 0.27067816257476807, -0.09064067900180817, 0.12580905854701996], [-1.6740131378173828, -0.02066155895590782, -0.05924689769744873, 0.06347910314798355, -0.07821853458881378, 1.2807466983795166, 0.04589352011680603, 1.310766577720642], [-0.09893272817134857, -0.04093599319458008, -0.02502273954451084, 0.09490344673395157, -0.0211324505507946, -0.09021010994911194, 0.07936318963766098, -0.03593116253614426], [-0.08490308374166489, -0.015558987855911255, -0.048692114651203156, -0.007421435788273811, -0.040531404316425323, 0.25889304280281067, 0.06012800335884094, 0.27946868538856506]], "b_2": [0.07973937690258026, -0.010446485131978989, -0.003066520905122161, -0.031895797699689865, 0.006032303906977177, 0.24106740951538086, -0.008969511836767197, 0.2872662842273712], "w_3": [[-1.364486813545227, -0.11682678014039993, 0.01764785870909691, 0.03926877677440643], [-0.05695437639951706, 0.05472218990325928, 0.1266128271818161, 0.09950875490903854], [0.11415273696184158, -0.10069356113672256, 0.0864749327301979, -0.043946366757154465], [-0.10138195008039474, -0.040128443390131, -0.08937158435583115, -0.0048376512713730335], [-0.0028251828625798225, -0.04743027314543724, 0.06340016424655914, 0.07277824729681015], [0.49482327699661255, -0.06410001963376999, -0.0999293103814125, -0.14250673353672028], [0.042802367359399796, 0.0015462725423276424, -0.05991362780332565, 0.1022040992975235], [0.3523194193840027, 0.07343732565641403, 0.04157765582203865, -0.12358107417821884]], "b_3": [0.2653026282787323, -0.058485131710767746, -0.0744510293006897, 0.012550175189971924], "w_4": [[0.5988775491714478, 0.09668736904859543], [-0.04360569268465042, 0.06491032242774963], [-0.11868984252214432, -0.09601487964391708], [-0.06554870307445526, -0.14189276099205017]], "b_4": [-0.08148707449436188, -2.8251802921295166], "input_norm_mat": [[-3.0, 3.0], [-3.0, 3.0], [0.0, 40.0], [-3.0, 3.0]], "output_norm_mat": [-1.0, 1.0], "temperature": 100.0}} \ No newline at end of file diff --git a/selfdrive/car/torque_data/override.toml b/selfdrive/car/torque_data/override.toml index ef25ab5c2a..6f3a2304d5 100644 --- a/selfdrive/car/torque_data/override.toml +++ b/selfdrive/car/torque_data/override.toml @@ -1,77 +1,80 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] ### angle control # Nissan appears to have torque -"NISSAN X-TRAIL 2017" = [nan, 1.5, nan] -"NISSAN ALTIMA 2020" = [nan, 1.5, nan] -"NISSAN LEAF 2018 Instrument Cluster" = [nan, 1.5, nan] -"NISSAN LEAF 2018" = [nan, 1.5, nan] -"NISSAN ROGUE 2019" = [nan, 1.5, nan] +"NISSAN_XTRAIL" = [nan, 1.5, nan] +"NISSAN_ALTIMA" = [nan, 1.5, nan] +"NISSAN_LEAF_IC" = [nan, 1.5, nan] +"NISSAN_LEAF" = [nan, 1.5, nan] +"NISSAN_ROGUE" = [nan, 1.5, nan] # New subarus angle based controllers -"SUBARU FORESTER 2022" = [nan, 3.0, nan] -"SUBARU OUTBACK 7TH GEN" = [nan, 3.0, nan] -"SUBARU ASCENT 2023" = [nan, 3.0, nan] +"SUBARU_FORESTER_2022" = [nan, 3.0, nan] +"SUBARU_OUTBACK_2023" = [nan, 3.0, nan] +"SUBARU_ASCENT_2023" = [nan, 3.0, nan] # Toyota LTA also has torque -"TOYOTA RAV4 2023" = [nan, 3.0, nan] +"TOYOTA_RAV4_TSS2_2023" = [nan, 3.0, nan] # Tesla has high torque -"TESLA AP1 MODEL S" = [nan, 2.5, nan] -"TESLA AP2 MODEL S" = [nan, 2.5, nan] +"TESLA_AP1_MODELS" = [nan, 2.5, nan] +"TESLA_AP2_MODELS" = [nan, 2.5, nan] +"TESLA_MODELS_RAVEN" = [nan, 2.5, nan] # Guess -"FORD BRONCO SPORT 1ST GEN" = [nan, 1.5, nan] -"FORD ESCAPE 4TH GEN" = [nan, 1.5, nan] -"FORD EXPLORER 6TH GEN" = [nan, 1.5, nan] -"FORD F-150 14TH GEN" = [nan, 1.5, nan] -"FORD FOCUS 4TH GEN" = [nan, 1.5, nan] -"FORD MAVERICK 1ST GEN" = [nan, 1.5, nan] -"FORD F-150 LIGHTNING 1ST GEN" = [nan, 1.5, nan] -"FORD MUSTANG MACH-E 1ST GEN" = [nan, 1.5, nan] +"FORD_BRONCO_SPORT_MK1" = [nan, 1.5, nan] +"FORD_ESCAPE_MK4" = [nan, 1.5, nan] +"FORD_EXPLORER_MK6" = [nan, 1.5, nan] +"FORD_F_150_MK14" = [nan, 1.5, nan] +"FORD_FOCUS_MK4" = [nan, 1.5, nan] +"FORD_MAVERICK_MK1" = [nan, 1.5, nan] +"FORD_F_150_LIGHTNING_MK1" = [nan, 1.5, nan] +"FORD_MUSTANG_MACH_E_MK1" = [nan, 1.5, nan] +"FORD_RANGER_MK2" = [nan, 1.5, nan] ### # No steering wheel -"COMMA BODY" = [nan, 1000, nan] +"COMMA_BODY" = [nan, 1000, nan] # Totally new cars -"RAM 1500 5TH GEN" = [2.0, 2.0, 0.05] -"RAM HD 5TH GEN" = [1.4, 1.4, 0.05] -"SUBARU OUTBACK 6TH GEN" = [2.0, 2.0, 0.2] -"CADILLAC ESCALADE 2017" = [1.899999976158142, 1.842270016670227, 0.1120000034570694] -"CADILLAC ESCALADE ESV 2019" = [1.15, 1.3, 0.2] -"CHEVROLET BOLT EUV 2022" = [2.0, 2.0, 0.05] -"CHEVROLET SILVERADO 1500 2020" = [1.9, 1.9, 0.112] -"CHEVROLET TRAILBLAZER 2021" = [1.33, 1.9, 0.16] -"CHEVROLET EQUINOX 2019" = [2.5, 2.5, 0.05] -"VOLKSWAGEN PASSAT NMS" = [2.5, 2.5, 0.1] -"VOLKSWAGEN SHARAN 2ND GEN" = [2.5, 2.5, 0.1] -"HYUNDAI SANTA CRUZ 1ST GEN" = [2.7, 2.7, 0.1] -"KIA SPORTAGE 5TH GEN" = [2.6, 2.6, 0.1] -"GENESIS GV70 1ST GEN" = [2.42, 2.42, 0.1] -"GENESIS GV60 ELECTRIC 1ST GEN" = [2.5, 2.5, 0.1] -"KIA SORENTO 4TH GEN" = [2.5, 2.5, 0.1] -"KIA SORENTO HYBRID 4TH GEN" = [2.5, 2.5, 0.1] -"KIA NIRO HYBRID 2ND GEN" = [2.42, 2.5, 0.12] -"KIA NIRO EV 2ND GEN" = [2.05, 2.5, 0.14] -"GENESIS GV80 2023" = [2.5, 2.5, 0.1] -"KIA CARNIVAL 4TH GEN" = [1.75, 1.75, 0.15] -"GMC ACADIA DENALI 2018" = [1.6, 1.6, 0.2] -"LEXUS IS 2023" = [2.0, 2.0, 0.1] -"HYUNDAI KONA ELECTRIC 2ND GEN" = [2.5, 2.5, 0.1] -"HYUNDAI IONIQ 6 2023" = [2.5, 2.5, 0.1] -"HYUNDAI AZERA 6TH GEN" = [1.8, 1.8, 0.1] -"HYUNDAI AZERA HYBRID 6TH GEN" = [1.8, 1.8, 0.1] -"KIA K8 HYBRID 1ST GEN" = [2.5, 2.5, 0.1] -"HYUNDAI CUSTIN 1ST GEN" = [2.5, 2.5, 0.1] -"LEXUS GS F 2016" = [2.5, 2.5, 0.08] -"HYUNDAI STARIA 4TH GEN" = [1.8, 2.0, 0.15] +"RAM_1500_5TH_GEN" = [2.0, 2.0, 0.05] +"RAM_HD_5TH_GEN" = [1.4, 1.4, 0.05] +"SUBARU_OUTBACK" = [2.0, 1.5, 0.2] +"CADILLAC_ESCALADE" = [1.899999976158142, 1.842270016670227, 0.1120000034570694] +"CADILLAC_ESCALADE_ESV_2019" = [1.15, 1.3, 0.2] +"CHEVROLET_BOLT_EUV" = [2.0, 2.0, 0.05] +"CHEVROLET_SILVERADO" = [1.9, 1.9, 0.112] +"CHEVROLET_TRAILBLAZER" = [1.33, 1.9, 0.16] +"CHEVROLET_EQUINOX" = [2.5, 2.5, 0.05] +"VOLKSWAGEN_CADDY_MK3" = [1.2, 1.2, 0.1] +"VOLKSWAGEN_PASSAT_NMS" = [2.5, 2.5, 0.1] +"VOLKSWAGEN_SHARAN_MK2" = [2.5, 2.5, 0.1] +"HYUNDAI_SANTA_CRUZ_1ST_GEN" = [2.7, 2.7, 0.1] +"KIA_SPORTAGE_5TH_GEN" = [2.6, 2.6, 0.1] +"GENESIS_GV70_1ST_GEN" = [2.42, 2.42, 0.1] +"GENESIS_GV60_EV_1ST_GEN" = [2.5, 2.5, 0.1] +"KIA_SORENTO_4TH_GEN" = [2.5, 2.5, 0.1] +"KIA_SORENTO_HEV_4TH_GEN" = [2.5, 2.5, 0.1] +"KIA_NIRO_HEV_2ND_GEN" = [2.42, 2.5, 0.12] +"KIA_NIRO_EV_2ND_GEN" = [2.05, 2.5, 0.14] +"GENESIS_GV80" = [2.5, 2.5, 0.1] +"KIA_CARNIVAL_4TH_GEN" = [1.75, 1.75, 0.15] +"GMC_ACADIA" = [1.6, 1.6, 0.2] +"LEXUS_IS_TSS2" = [2.0, 2.0, 0.1] +"HYUNDAI_KONA_EV_2ND_GEN" = [2.5, 2.5, 0.1] +"HYUNDAI_IONIQ_6" = [2.5, 2.5, 0.1] +"HYUNDAI_AZERA_6TH_GEN" = [1.8, 1.8, 0.1] +"HYUNDAI_AZERA_HEV_6TH_GEN" = [1.8, 1.8, 0.1] +"KIA_K8_HEV_1ST_GEN" = [2.5, 2.5, 0.1] +"HYUNDAI_CUSTIN_1ST_GEN" = [2.5, 2.5, 0.1] +"LEXUS_GS_F" = [2.5, 2.5, 0.08] +"HYUNDAI_STARIA_4TH_GEN" = [1.8, 2.0, 0.15] # Dashcam or fallback configured as ideal car -"mock" = [10.0, 10, 0.0] +"MOCK" = [10.0, 10, 0.0] # Manually checked -"HONDA CIVIC 2022" = [2.5, 1.2, 0.15] -"HONDA HR-V 2023" = [2.5, 1.2, 0.2] +"HONDA_CIVIC_2022" = [2.5, 1.2, 0.15] +"HONDA_HRV_3G" = [2.5, 1.2, 0.2] -"HONDA ACCORD 4CYL 9TH GEN" = [1.7, 0.35, 0.21] -"HYUNDAI BAYON 1ST GEN NON-SCC" = [2.5, 2.5, 0.1] +"HONDA_ACCORD_4CYL_9TH_GEN" = [1.7, 0.35, 0.21] +"HYUNDAI_BAYON_1ST_GEN_NON_SCC" = [2.5, 2.5, 0.1] diff --git a/selfdrive/car/torque_data/params.toml b/selfdrive/car/torque_data/params.toml index d703b0d10a..d56d793347 100644 --- a/selfdrive/car/torque_data/params.toml +++ b/selfdrive/car/torque_data/params.toml @@ -1,87 +1,83 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] -"ACURA ILX 2016" = [1.524988973896102, 0.519011053086259, 0.34236219253028] -"ACURA RDX 2018" = [0.9987728568686902, 0.5323765166196301, 0.303218805715844] -"ACURA RDX 2020" = [1.4314459806646749, 0.33874701282109954, 0.18048847083897598] -"AUDI A3 3RD GEN" = [1.5122414863077502, 1.7443517531719404, 0.15194151892450905] -"AUDI Q3 2ND GEN" = [1.4439223359448605, 1.2254955789112076, 0.1413798895978097] -"CHEVROLET VOLT PREMIER 2017" = [1.5961527626411784, 1.8422651988094612, 0.1572393918005158] -"CHRYSLER PACIFICA 2018" = [2.07140, 1.3366521181047952, 0.13776367250652022] -"CHRYSLER PACIFICA 2020" = [1.86206, 1.509076559398423, 0.14328246159386085] -"CHRYSLER PACIFICA HYBRID 2017" = [1.79422, 1.06831764583744, 0.116237] -"CHRYSLER PACIFICA HYBRID 2018" = [2.08887, 1.2943025830995154, 0.114818] -"CHRYSLER PACIFICA HYBRID 2019" = [1.90120, 1.1958788168371808, 0.131520] -"GENESIS G70 2018" = [3.8520195946707947, 2.354697063349854, 0.06830285485626221] -"HONDA ACCORD 2018" = [1.7135052593468778, 0.3461280068322071, 0.21579936052863807] -"HONDA ACCORD HYBRID 2018" = [1.6651615004829625, 0.30322180951193245, 0.2083000440586149] -"HONDA CIVIC (BOSCH) 2019" = [1.691708637466905, 0.40132900729454185, 0.25460295304024094] -"HONDA CIVIC 2016" = [1.6528895627785531, 0.4018518740819229, 0.25458812851328544] -"HONDA CLARITY 2018" = [1.6528895627785531, 0.4018518740819229, 0.25458812851328544] -"HONDA CR-V 2016" = [0.7667141440182675, 0.5927571534745969, 0.40909087636157127] -"HONDA CR-V 2017" = [2.01323205142022, 0.2700612209345081, 0.2238412881331528] -"HONDA CR-V HYBRID 2019" = [2.072034634644233, 0.7152085160516978, 0.20237105008376083] -"HONDA FIT 2018" = [1.5719981427109775, 0.5712761407108976, 0.110773383324281] -"HONDA HRV 2019" = [2.0661212805710205, 0.7521343418694775, 0.17760375789242094] -"HONDA INSIGHT 2019" = [1.5201671214069354, 0.5660229120683284, 0.25808042580281876] -"HONDA ODYSSEY 2018" = [1.8774809275211801, 0.8394431662987996, 0.2096978613792822] -"HONDA PILOT 2017" = [1.7262026201812795, 0.9470005614967523, 0.21351430733218763] -"HONDA RIDGELINE 2017" = [1.4146525028237624, 0.7356572861629564, 0.23307177552211328] -"HYUNDAI ELANTRA 2021" = [3.169, 2.1259108157250735, 0.0819] -"HYUNDAI GENESIS 2015-2016" = [2.7807965280270794, 2.325, 0.0984484465421171] -"HYUNDAI IONIQ 5 2022" = [3.172929, 2.713050, 0.096019] -"HYUNDAI IONIQ ELECTRIC LIMITED 2019" = [1.7662975472852054, 1.613755614526594, 0.17087579756306276] -"HYUNDAI IONIQ PHEV 2020" = [3.2928700076638537, 2.1193482926455656, 0.12463700961468778] -"HYUNDAI IONIQ PLUG-IN HYBRID 2019" = [2.970807902012267, 1.6312321830002083, 0.1088964990357482] -"HYUNDAI KONA ELECTRIC 2019" = [3.078814714619148, 2.307336938253934, 0.12359762054065548] -"HYUNDAI PALISADE 2020" = [2.544642494803999, 1.8721703683337008, 0.1301424599248651] -"HYUNDAI SANTA FE 2019" = [3.0787027729757632, 2.6173437483495565, 0.1207019341823945] -"HYUNDAI SANTA FE HYBRID 2022" = [3.501877602644835, 2.729064118456137, 0.10384068104538963] -"HYUNDAI SANTA FE PlUG-IN HYBRID 2022" = [1.6953050513611045, 1.5837614296206861, 0.12672855941458458] -"HYUNDAI SONATA 2019" = [2.2200457811703953, 1.2967330275895228, 0.14039920986586393] -"HYUNDAI SONATA 2020" = [2.9638737459977467, 2.1259108157250735, 0.07813665616927593] -"HYUNDAI SONATA HYBRID 2021" = [2.8990264092395734, 2.061410192222139, 0.0899805488717382] -"HYUNDAI TUCSON 4TH GEN" = [2.960174, 2.860284, 0.108745] -"JEEP GRAND CHEROKEE 2019" = [2.30972, 1.289689569171081, 0.117048] -"JEEP GRAND CHEROKEE V6 2018" = [2.27116, 1.4057367824262523, 0.11725947414922003] -"KIA EV6 2022" = [3.2, 2.093457, 0.05] -"KIA K5 2021" = [2.405339728085138, 1.460032270828705, 0.11650989850813716] -"KIA NIRO EV 2020" = [2.9215954981365337, 2.1500583840260044, 0.09236802474810267] -"KIA SORENTO GT LINE 2018" = [2.464854685101844, 1.5335274218367956, 0.12056170567599558] -"KIA STINGER GT2 2018" = [2.7499043387418967, 1.849652021986449, 0.12048334239559202] -"LEXUS ES 2019" = [2.0357564999999997, 1.999082295195227, 0.101533] -"LEXUS NX 2018" = [2.3525924753753613, 1.9731412277641067, 0.15168101064205927] -"LEXUS NX 2020" = [2.4331999786982936, 2.1045680431705414, 0.14099899317761067] -"LEXUS RX 2016" = [1.6430539050086406, 1.181960058934143, 0.19768806040843034] -"LEXUS RX 2020" = [1.5375561442049257, 1.343166476215164, 0.1931062001527557] -"MAZDA CX-9 2021" = [1.7601682915983443, 1.0889677335154337, 0.17713792194297195] -"SKODA SUPERB 3RD GEN" = [1.166437404652981, 1.1686163012668165, 0.12194533036948708] -"SUBARU FORESTER 2019" = [3.6617001649776793, 2.342197172531713, 0.11075960785398745] -"SUBARU IMPREZA LIMITED 2019" = [1.0670704910352047, 0.8234374840709592, 0.20986563268614938] -"SUBARU IMPREZA SPORT 2020" = [2.6068223389108303, 2.134872342760203, 0.15261513193561627] -"TOYOTA AVALON 2016" = [2.5185770183845646, 1.7153346784214922, 0.10603968787111022] -"TOYOTA AVALON 2019" = [1.7036141952825095, 1.239619084240008, 0.08459830394899492] -"TOYOTA AVALON 2022" = [2.3154403649717357, 2.7777922854327124, 0.11453999639164605] -"TOYOTA C-HR 2018" = [1.5591084333664578, 1.271271459066948, 0.20259087058453193] -"TOYOTA C-HR 2021" = [1.7678810166088303, 1.3742176337919942, 0.2319674583741509] -"TOYOTA CAMRY 2018" = [2.0568162685952505, 1.7576185169559122, 0.108878753] -"TOYOTA CAMRY 2021" = [2.3548324999999997, 2.368900128946771, 0.118436] -"TOYOTA COROLLA 2017" = [3.117154369115421, 1.8438132575043773, 0.12289685869250652] -"TOYOTA COROLLA TSS2 2019" = [1.991132339206426, 1.868866242720403, 0.19570063298031432] -"TOYOTA HIGHLANDER 2017" = [1.8108348718624456, 1.6348421600679828, 0.15972686105120398] -"TOYOTA HIGHLANDER 2020" = [1.9617570834136164, 1.8611643317268927, 0.14519673256119725] -"TOYOTA MIRAI 2021" = [2.506899832157829, 1.7417213930750164, 0.20182618449440565] -"TOYOTA PRIUS 2017" = [1.60, 1.5023147650693636, 0.151515] -"TOYOTA PRIUS TSS2 2021" = [1.972600, 1.9104337425537743, 0.170968] -"TOYOTA RAV4 2017" = [2.085695074355425, 2.2142832316984733, 0.13339165270103975] -"TOYOTA RAV4 2019" = [2.279239424615458, 2.087101966779332, 0.13682208413446817] -"TOYOTA RAV4 2019 8965" = [2.3080951748210854, 2.1189367835820603, 0.12942102328134028] -"TOYOTA RAV4 2019 x02" = [2.762293266024922, 2.243615865975329, 0.11113568178327986] -"TOYOTA RAV4 HYBRID 2017" = [1.9796257271652042, 1.7503987331707576, 0.14628860048885406] -"TOYOTA RAV4 2022" = [2.241883248393209, 1.9304407208090029, 0.112174] -"TOYOTA RAV4 2022 x02" = [3.044930631831037, 2.3979189796380918, 0.14023209146703736] -"TOYOTA SIENNA 2018" = [1.689726, 1.3208264576110418, 0.140456] -"VOLKSWAGEN ARTEON 1ST GEN" = [1.45136518053819, 1.3639364049316804, 0.23806361745695032] -"VOLKSWAGEN ATLAS 1ST GEN" = [1.4677006726964945, 1.6733266634075656, 0.12959584092073367] -"VOLKSWAGEN GOLF 7TH GEN" = [1.3750394140491293, 1.5814743077200641, 0.2018321939386586] -"VOLKSWAGEN JETTA 7TH GEN" = [1.2271623034089392, 1.216955117387, 0.19437384688370712] -"VOLKSWAGEN PASSAT 8TH GEN" = [1.3432120736752917, 1.7087275587362314, 0.19444383787326647] -"VOLKSWAGEN TIGUAN 2ND GEN" = [0.9711965500094828, 1.0001565939459098, 0.1465626137072916] +"ACURA_ILX" = [1.524988973896102, 0.519011053086259, 0.34236219253028] +"ACURA_RDX" = [0.9987728568686902, 0.5323765166196301, 0.303218805715844] +"ACURA_RDX_3G" = [1.4314459806646749, 0.33874701282109954, 0.18048847083897598] +"AUDI_A3_MK3" = [1.5122414863077502, 1.7443517531719404, 0.15194151892450905] +"AUDI_Q3_MK2" = [1.4439223359448605, 1.2254955789112076, 0.1413798895978097] +"CHEVROLET_VOLT" = [1.5961527626411784, 1.8422651988094612, 0.1572393918005158] +"CHRYSLER_PACIFICA_2018" = [2.07140, 1.3366521181047952, 0.13776367250652022] +"CHRYSLER_PACIFICA_2020" = [1.86206, 1.509076559398423, 0.14328246159386085] +"CHRYSLER_PACIFICA_2017_HYBRID" = [1.79422, 1.06831764583744, 0.116237] +"CHRYSLER_PACIFICA_2018_HYBRID" = [2.08887, 1.2943025830995154, 0.114818] +"CHRYSLER_PACIFICA_2019_HYBRID" = [1.90120, 1.1958788168371808, 0.131520] +"GENESIS_G70" = [3.8520195946707947, 2.354697063349854, 0.06830285485626221] +"HONDA_ACCORD" = [1.6893333799149202, 0.3246749081720698, 0.2120497022936265] +"HONDA_CIVIC_BOSCH" = [1.691708637466905, 0.40132900729454185, 0.25460295304024094] +"HONDA_CIVIC" = [1.6528895627785531, 0.4018518740819229, 0.25458812851328544] +"HONDA_CLARITY" = [1.6528895627785531, 0.4018518740819229, 0.25458812851328544] +"HONDA_CRV" = [0.7667141440182675, 0.5927571534745969, 0.40909087636157127] +"HONDA_CRV_5G" = [2.01323205142022, 0.2700612209345081, 0.2238412881331528] +"HONDA_CRV_HYBRID" = [2.072034634644233, 0.7152085160516978, 0.20237105008376083] +"HONDA_FIT" = [1.5719981427109775, 0.5712761407108976, 0.110773383324281] +"HONDA_HRV" = [2.0661212805710205, 0.7521343418694775, 0.17760375789242094] +"HONDA_INSIGHT" = [1.5201671214069354, 0.5660229120683284, 0.25808042580281876] +"HONDA_ODYSSEY" = [1.8774809275211801, 0.8394431662987996, 0.2096978613792822] +"HONDA_PILOT" = [1.7262026201812795, 0.9470005614967523, 0.21351430733218763] +"HONDA_RIDGELINE" = [1.4146525028237624, 0.7356572861629564, 0.23307177552211328] +"HYUNDAI_ELANTRA_2021" = [3.169, 2.1259108157250735, 0.0819] +"HYUNDAI_GENESIS" = [2.7807965280270794, 2.325, 0.0984484465421171] +"HYUNDAI_IONIQ_5" = [3.172929, 2.713050, 0.096019] +"HYUNDAI_IONIQ_EV_LTD" = [1.7662975472852054, 1.613755614526594, 0.17087579756306276] +"HYUNDAI_IONIQ_PHEV" = [3.2928700076638537, 2.1193482926455656, 0.12463700961468778] +"HYUNDAI_IONIQ_PHEV_2019" = [2.970807902012267, 1.6312321830002083, 0.1088964990357482] +"HYUNDAI_KONA_EV" = [3.078814714619148, 2.307336938253934, 0.12359762054065548] +"HYUNDAI_PALISADE" = [2.544642494803999, 1.8721703683337008, 0.1301424599248651] +"HYUNDAI_SANTA_FE" = [3.0787027729757632, 2.6173437483495565, 0.1207019341823945] +"HYUNDAI_SANTA_FE_HEV_2022" = [3.501877602644835, 2.729064118456137, 0.10384068104538963] +"HYUNDAI_SANTA_FE_PHEV_2022" = [1.6953050513611045, 1.5837614296206861, 0.12672855941458458] +"HYUNDAI_SONATA_LF" = [2.2200457811703953, 1.2967330275895228, 0.14039920986586393] +"HYUNDAI_SONATA" = [2.9638737459977467, 2.1259108157250735, 0.07813665616927593] +"HYUNDAI_SONATA_HYBRID" = [2.8990264092395734, 2.061410192222139, 0.0899805488717382] +"HYUNDAI_TUCSON_4TH_GEN" = [2.960174, 2.860284, 0.108745] +"JEEP_GRAND_CHEROKEE_2019" = [2.30972, 1.289689569171081, 0.117048] +"JEEP_GRAND_CHEROKEE" = [2.27116, 1.4057367824262523, 0.11725947414922003] +"KIA_EV6" = [3.2, 2.093457, 0.05] +"KIA_K5_2021" = [2.405339728085138, 1.460032270828705, 0.11650989850813716] +"KIA_NIRO_EV" = [2.9215954981365337, 2.1500583840260044, 0.09236802474810267] +"KIA_SORENTO" = [2.464854685101844, 1.5335274218367956, 0.12056170567599558] +"KIA_STINGER" = [2.7499043387418967, 1.849652021986449, 0.12048334239559202] +"LEXUS_ES_TSS2" = [2.0357564999999997, 1.999082295195227, 0.101533] +"LEXUS_NX" = [2.3525924753753613, 1.9731412277641067, 0.15168101064205927] +"LEXUS_NX_TSS2" = [2.4331999786982936, 2.1045680431705414, 0.14099899317761067] +"LEXUS_RX" = [1.6430539050086406, 1.181960058934143, 0.19768806040843034] +"LEXUS_RX_TSS2" = [1.5375561442049257, 1.343166476215164, 0.1931062001527557] +"MAZDA_CX9_2021" = [1.7601682915983443, 1.0889677335154337, 0.17713792194297195] +"SKODA_SUPERB_MK3" = [1.166437404652981, 1.1686163012668165, 0.12194533036948708] +"SUBARU_FORESTER" = [3.6617001649776793, 2.342197172531713, 0.11075960785398745] +"SUBARU_IMPREZA" = [1.0670704910352047, 0.8234374840709592, 0.20986563268614938] +"SUBARU_IMPREZA_2020" = [2.6068223389108303, 2.134872342760203, 0.15261513193561627] +"TOYOTA_AVALON" = [2.5185770183845646, 1.7153346784214922, 0.10603968787111022] +"TOYOTA_AVALON_2019" = [1.7036141952825095, 1.239619084240008, 0.08459830394899492] +"TOYOTA_AVALON_TSS2" = [2.3154403649717357, 2.7777922854327124, 0.11453999639164605] +"TOYOTA_CHR" = [1.5591084333664578, 1.271271459066948, 0.20259087058453193] +"TOYOTA_CHR_TSS2" = [1.7678810166088303, 1.3742176337919942, 0.2319674583741509] +"TOYOTA_CAMRY" = [2.0568162685952505, 1.7576185169559122, 0.108878753] +"TOYOTA_CAMRY_TSS2" = [2.3548324999999997, 2.368900128946771, 0.118436] +"TOYOTA_COROLLA" = [3.117154369115421, 1.8438132575043773, 0.12289685869250652] +"TOYOTA_COROLLA_TSS2" = [1.991132339206426, 1.868866242720403, 0.19570063298031432] +"TOYOTA_HIGHLANDER" = [1.8108348718624456, 1.6348421600679828, 0.15972686105120398] +"TOYOTA_HIGHLANDER_TSS2" = [1.9617570834136164, 1.8611643317268927, 0.14519673256119725] +"TOYOTA_MIRAI" = [2.506899832157829, 1.7417213930750164, 0.20182618449440565] +"TOYOTA_PRIUS" = [1.60, 1.5023147650693636, 0.151515] +"TOYOTA_PRIUS_TSS2" = [1.972600, 1.9104337425537743, 0.170968] +"TOYOTA_RAV4" = [2.085695074355425, 2.2142832316984733, 0.13339165270103975] +"TOYOTA_RAV4_TSS2" = [2.279239424615458, 2.087101966779332, 0.13682208413446817] +"TOYOTA_RAV4H" = [1.9796257271652042, 1.7503987331707576, 0.14628860048885406] +"TOYOTA_RAV4_TSS2_2022" = [2.241883248393209, 1.9304407208090029, 0.112174] +"TOYOTA_SIENNA" = [1.689726, 1.3208264576110418, 0.140456] +"VOLKSWAGEN_ARTEON_MK1" = [1.45136518053819, 1.3639364049316804, 0.23806361745695032] +"VOLKSWAGEN_ATLAS_MK1" = [1.4677006726964945, 1.6733266634075656, 0.12959584092073367] +"VOLKSWAGEN_GOLF_MK7" = [1.3750394140491293, 1.5814743077200641, 0.2018321939386586] +"VOLKSWAGEN_JETTA_MK7" = [1.2271623034089392, 1.216955117387, 0.19437384688370712] +"VOLKSWAGEN_PASSAT_MK8" = [1.3432120736752917, 1.7087275587362314, 0.19444383787326647] +"VOLKSWAGEN_TIGUAN_MK2" = [0.9711965500094828, 1.0001565939459098, 0.1465626137072916] diff --git a/selfdrive/car/torque_data/substitute.toml b/selfdrive/car/torque_data/substitute.toml index f0787247bb..44ce127fb8 100644 --- a/selfdrive/car/torque_data/substitute.toml +++ b/selfdrive/car/torque_data/substitute.toml @@ -1,93 +1,90 @@ legend = ["LAT_ACCEL_FACTOR", "MAX_LAT_ACCEL_MEASURED", "FRICTION"] -"MAZDA 3" = "MAZDA CX-9 2021" -"MAZDA 6" = "MAZDA CX-9 2021" -"MAZDA CX-5" = "MAZDA CX-9 2021" -"MAZDA CX-5 2022" = "MAZDA CX-9 2021" -"MAZDA CX-9" = "MAZDA CX-9 2021" +"MAZDA_3" = "MAZDA_CX9_2021" +"MAZDA_6" = "MAZDA_CX9_2021" +"MAZDA_CX5" = "MAZDA_CX9_2021" +"MAZDA_CX5_2022" = "MAZDA_CX9_2021" +"MAZDA_CX9" = "MAZDA_CX9_2021" -"DODGE DURANGO 2021" = "CHRYSLER PACIFICA 2020" +"DODGE_DURANGO" = "CHRYSLER_PACIFICA_2020" -"TOYOTA ALPHARD 2020" = "TOYOTA SIENNA 2018" -"TOYOTA PRIUS v 2017" = "TOYOTA PRIUS 2017" -"LEXUS IS 2018" = "LEXUS NX 2018" -"LEXUS CT HYBRID 2018" = "LEXUS NX 2018" -"LEXUS ES 2018" = "TOYOTA CAMRY 2018" -"LEXUS RC 2020" = "LEXUS NX 2020" -"LEXUS LC 2024" = "LEXUS NX 2020" +"TOYOTA_ALPHARD_TSS2" = "TOYOTA_SIENNA" +"TOYOTA_PRIUS_V" = "TOYOTA_PRIUS" +"LEXUS_IS" = "LEXUS_NX" +"LEXUS_CTH" = "LEXUS_NX" +"LEXUS_ES" = "TOYOTA_CAMRY" +"LEXUS_RC" = "LEXUS_NX_TSS2" +"LEXUS_LC_TSS2" = "LEXUS_NX_TSS2" -"KIA OPTIMA 4TH GEN" = "HYUNDAI SONATA 2020" -"KIA OPTIMA 4TH GEN FACELIFT" = "HYUNDAI SONATA 2020" -"KIA OPTIMA HYBRID 2017 & SPORTS 2019" = "HYUNDAI SONATA 2020" -"KIA OPTIMA HYBRID 4TH GEN FACELIFT" = "HYUNDAI SONATA 2020" -"KIA FORTE E 2018 & GT 2021" = "HYUNDAI SONATA 2020" -"KIA CEED INTRO ED 2019" = "HYUNDAI SONATA 2020" -"KIA SELTOS 2021" = "HYUNDAI SONATA 2020" -"KIA NIRO HYBRID 2019" = "KIA NIRO EV 2020" -"KIA NIRO PLUG-IN HYBRID 2022" = "KIA NIRO EV 2020" -"KIA NIRO HYBRID 2021" = "KIA NIRO EV 2020" -"HYUNDAI VELOSTER 2019" = "HYUNDAI SONATA 2019" -"HYUNDAI KONA 2020" = "HYUNDAI KONA ELECTRIC 2019" -"HYUNDAI KONA HYBRID 2020" = "HYUNDAI KONA ELECTRIC 2019" -"HYUNDAI KONA ELECTRIC 2022" = "HYUNDAI KONA ELECTRIC 2019" -"HYUNDAI IONIQ HYBRID 2017-2019" = "HYUNDAI IONIQ PLUG-IN HYBRID 2019" -"HYUNDAI IONIQ HYBRID 2020-2022" = "HYUNDAI IONIQ PLUG-IN HYBRID 2019" -"HYUNDAI IONIQ ELECTRIC 2020" = "HYUNDAI IONIQ PLUG-IN HYBRID 2019" -"HYUNDAI ELANTRA 2017" = "HYUNDAI SONATA 2019" -"HYUNDAI I30 N LINE 2019 & GT 2018 DCT" = "HYUNDAI SONATA 2019" -"HYUNDAI ELANTRA HYBRID 2021" = "HYUNDAI SONATA 2020" -"HYUNDAI TUCSON 2019" = "HYUNDAI SANTA FE 2019" -"HYUNDAI SANTA FE 2022" = "HYUNDAI SANTA FE HYBRID 2022" -"KIA K5 HYBRID 2020" = "KIA K5 2021" -"KIA STINGER 2022" = "KIA STINGER GT2 2018" -"GENESIS G90 2017" = "GENESIS G70 2018" -"GENESIS G80 2017" = "GENESIS G70 2018" -"GENESIS G70 2020" = "HYUNDAI SONATA 2020" +"KIA_OPTIMA_G4" = "HYUNDAI_SONATA" +"KIA_OPTIMA_G4_FL" = "HYUNDAI_SONATA" +"KIA_OPTIMA_H" = "HYUNDAI_SONATA" +"KIA_OPTIMA_H_G4_FL" = "HYUNDAI_SONATA" +"KIA_FORTE" = "HYUNDAI_SONATA" +"KIA_CEED" = "HYUNDAI_SONATA" +"KIA_SELTOS" = "HYUNDAI_SONATA" +"KIA_NIRO_PHEV" = "KIA_NIRO_EV" +"KIA_NIRO_PHEV_2022" = "KIA_NIRO_EV" +"KIA_NIRO_HEV_2021" = "KIA_NIRO_EV" +"HYUNDAI_VELOSTER" = "HYUNDAI_SONATA_LF" +"HYUNDAI_KONA" = "HYUNDAI_KONA_EV" +"HYUNDAI_KONA_HEV" = "HYUNDAI_KONA_EV" +"HYUNDAI_KONA_EV_2022" = "HYUNDAI_KONA_EV" +"HYUNDAI_IONIQ" = "HYUNDAI_IONIQ_PHEV_2019" +"HYUNDAI_IONIQ_HEV_2022" = "HYUNDAI_IONIQ_PHEV_2019" +"HYUNDAI_IONIQ_EV_2020" = "HYUNDAI_IONIQ_PHEV_2019" +"HYUNDAI_ELANTRA" = "HYUNDAI_SONATA_LF" +"HYUNDAI_ELANTRA_GT_I30" = "HYUNDAI_SONATA_LF" +"HYUNDAI_ELANTRA_HEV_2021" = "HYUNDAI_SONATA" +"HYUNDAI_TUCSON" = "HYUNDAI_SANTA_FE" +"HYUNDAI_SANTA_FE_2022" = "HYUNDAI_SANTA_FE_HEV_2022" +"KIA_K5_HEV_2020" = "KIA_K5_2021" +"KIA_STINGER_2022" = "KIA_STINGER" +"GENESIS_G90" = "GENESIS_G70" +"GENESIS_G80" = "GENESIS_G70" +"GENESIS_G70_2020" = "HYUNDAI_SONATA" -"HONDA FREED 2020" = "HONDA ODYSSEY 2018" -"HONDA CR-V EU 2016" = "HONDA CR-V 2016" -"HONDA CIVIC SEDAN 1.6 DIESEL 2019" = "HONDA CIVIC (BOSCH) 2019" -"HONDA E 2020" = "HONDA CIVIC (BOSCH) 2019" -"HONDA ODYSSEY CHN 2019" = "HONDA ODYSSEY 2018" +"HONDA_FREED" = "HONDA_ODYSSEY" +"HONDA_CRV_EU" = "HONDA_CRV" +"HONDA_CIVIC_BOSCH_DIESEL" = "HONDA_CIVIC_BOSCH" +"HONDA_E" = "HONDA_CIVIC_BOSCH" +"HONDA_ODYSSEY_CHN" = "HONDA_ODYSSEY" -"BUICK LACROSSE 2017" = "CHEVROLET VOLT PREMIER 2017" -"BUICK REGAL ESSENCE 2018" = "CHEVROLET VOLT PREMIER 2017" -"CADILLAC ESCALADE ESV 2016" = "CHEVROLET VOLT PREMIER 2017" -"CADILLAC ATS Premium Performance 2018" = "CHEVROLET VOLT PREMIER 2017" -"CHEVROLET MALIBU PREMIER 2017" = "CHEVROLET VOLT PREMIER 2017" -"HOLDEN ASTRA RS-V BK 2017" = "CHEVROLET VOLT PREMIER 2017" +"BUICK_LACROSSE" = "CHEVROLET_VOLT" +"BUICK_REGAL" = "CHEVROLET_VOLT" +"CADILLAC_ESCALADE_ESV" = "CHEVROLET_VOLT" +"CADILLAC_ATS" = "CHEVROLET_VOLT" +"CHEVROLET_MALIBU" = "CHEVROLET_VOLT" +"HOLDEN_ASTRA" = "CHEVROLET_VOLT" -"SKODA FABIA 4TH GEN" = "VOLKSWAGEN GOLF 7TH GEN" -"SKODA OCTAVIA 3RD GEN" = "SKODA SUPERB 3RD GEN" -"SKODA SCALA 1ST GEN" = "SKODA SUPERB 3RD GEN" -"SKODA KODIAQ 1ST GEN" = "SKODA SUPERB 3RD GEN" -"SKODA KAROQ 1ST GEN" = "SKODA SUPERB 3RD GEN" -"SKODA KAMIQ 1ST GEN" = "SKODA SUPERB 3RD GEN" -"VOLKSWAGEN CRAFTER 2ND GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN T-ROC 1ST GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN T-CROSS 1ST GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN TOURAN 2ND GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN TRANSPORTER T6.1" = "VOLKSWAGEN TIGUAN 2ND GEN" -"AUDI Q2 1ST GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN TAOS 1ST GEN" = "VOLKSWAGEN TIGUAN 2ND GEN" -"VOLKSWAGEN POLO 6TH GEN" = "VOLKSWAGEN GOLF 7TH GEN" -"SEAT LEON 3RD GEN" = "VOLKSWAGEN GOLF 7TH GEN" -"SEAT ATECA 1ST GEN" = "VOLKSWAGEN GOLF 7TH GEN" +"SKODA_FABIA_MK4" = "VOLKSWAGEN_GOLF_MK7" +"SKODA_OCTAVIA_MK3" = "SKODA_SUPERB_MK3" +"SKODA_KODIAQ_MK1" = "SKODA_SUPERB_MK3" +"SKODA_KAROQ_MK1" = "SKODA_SUPERB_MK3" +"SKODA_KAMIQ_MK1" = "SKODA_SUPERB_MK3" +"VOLKSWAGEN_CRAFTER_MK2" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TROC_MK1" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TCROSS_MK1" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TOURAN_MK2" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TRANSPORTER_T61" = "VOLKSWAGEN_TIGUAN_MK2" +"AUDI_Q2_MK1" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_TAOS_MK1" = "VOLKSWAGEN_TIGUAN_MK2" +"VOLKSWAGEN_POLO_MK6" = "VOLKSWAGEN_GOLF_MK7" +"SEAT_ATECA_MK1" = "VOLKSWAGEN_GOLF_MK7" -"SUBARU CROSSTREK HYBRID 2020" = "SUBARU IMPREZA SPORT 2020" -"SUBARU FORESTER HYBRID 2020" = "SUBARU IMPREZA SPORT 2020" -"SUBARU LEGACY 7TH GEN" = "SUBARU OUTBACK 6TH GEN" +"SUBARU_CROSSTREK_HYBRID" = "SUBARU_IMPREZA_2020" +"SUBARU_FORESTER_HYBRID" = "SUBARU_IMPREZA_2020" +"SUBARU_LEGACY" = "SUBARU_OUTBACK" # Old subarus don't have much data guessing it's like low torque impreza" -"SUBARU OUTBACK 2018 - 2019" = "SUBARU IMPREZA LIMITED 2019" -"SUBARU OUTBACK 2015 - 2017" = "SUBARU IMPREZA LIMITED 2019" -"SUBARU FORESTER 2017 - 2018" = "SUBARU IMPREZA LIMITED 2019" -"SUBARU LEGACY 2015 - 2018" = "SUBARU IMPREZA LIMITED 2019" -"SUBARU ASCENT LIMITED 2019" = "SUBARU FORESTER 2019" +"SUBARU_OUTBACK_PREGLOBAL_2018" = "SUBARU_IMPREZA" +"SUBARU_OUTBACK_PREGLOBAL" = "SUBARU_IMPREZA" +"SUBARU_FORESTER_PREGLOBAL" = "SUBARU_IMPREZA" +"SUBARU_LEGACY_PREGLOBAL" = "SUBARU_IMPREZA" +"SUBARU_ASCENT" = "SUBARU_FORESTER" -"KIA FORTE 2019 NON-SCC" = "HYUNDAI SONATA 2020" -"KIA FORTE LXS 2021 NON-SCC" = "HYUNDAI SONATA 2020" -"KIA SELTOS 2023 NON-SCC" = "HYUNDAI SONATA 2020" -"HYUNDAI KONA 2019 NON-SCC" = "HYUNDAI KONA ELECTRIC 2019" -"HYUNDAI ELANTRA SE 2022 NON-SCC" = "HYUNDAI ELANTRA 2021" -"GENESIS G70 2021 NON-SCC" = "HYUNDAI SONATA 2020" -"SKODA SUPERB 3RD GEN CC ONLY" = "SKODA SUPERB 3RD GEN" +"KIA_FORTE_2019_NON_SCC" = "HYUNDAI_SONATA" +"KIA_FORTE_2021_NON_SCC" = "HYUNDAI_SONATA" +"KIA_SELTOS_2023_NON_SCC" = "HYUNDAI_SONATA" +"HYUNDAI_KONA_NON_SCC" = "HYUNDAI_KONA_EV" +"HYUNDAI_ELANTRA_2022_NON_SCC" = "HYUNDAI_ELANTRA_2021" +"GENESIS_G70_2021_NON_SCC" = "HYUNDAI_SONATA" diff --git a/selfdrive/car/toyota/carcontroller.py b/selfdrive/car/toyota/carcontroller.py index b7ec9f3d8c..c13ebacbe6 100644 --- a/selfdrive/car/toyota/carcontroller.py +++ b/selfdrive/car/toyota/carcontroller.py @@ -3,6 +3,7 @@ from openpilot.common.numpy_fast import clip, interp from openpilot.common.params import Params from openpilot.selfdrive.car import apply_meas_steer_torque_limits, apply_std_steer_angle_limits, common_fault_avoidance, \ create_gas_interceptor_command, make_can_msg +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.toyota import toyotacan from openpilot.selfdrive.car.toyota.values import CAR, STATIC_DSU_MSGS, NO_STOP_TIMER_CAR, TSS2_CAR, \ MIN_ACC_SPEED, PEDAL_TRANSITION, CarControllerParams, ToyotaFlags, \ @@ -26,7 +27,7 @@ MAX_LTA_ANGLE = 94.9461 # deg MAX_LTA_DRIVER_TORQUE_ALLOWANCE = 150 # slightly above steering pressed allows some resistance when changing lanes -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.params = CarControllerParams(self.CP) @@ -37,6 +38,7 @@ class CarController: self.last_standstill = False self.standstill_req = False self.steer_rate_counter = 0 + self.distance_button = 0 self.packer = CANPacker(dbc_name) self.gas = 0 @@ -104,7 +106,7 @@ class CarController: lta_active, self.frame // 2, torque_wind_down)) # *** gas and brake *** - if self.CP.enableGasInterceptor and CC.longActive: + if self.CP.enableGasInterceptorDEPRECATED and CC.longActive: MAX_INTERCEPTOR_GAS = 0.5 # RAV4 has very sensitive gas pedal if self.CP.carFingerprint in (CAR.RAV4, CAR.RAV4H, CAR.HIGHLANDER): @@ -130,7 +132,7 @@ class CarController: pcm_cancel_cmd = 1 # on entering standstill, send standstill request - if CS.out.standstill and not self.last_standstill and (self.CP.carFingerprint not in NO_STOP_TIMER_CAR or self.CP.enableGasInterceptor) and \ + if CS.out.standstill and not self.last_standstill and (self.CP.carFingerprint not in NO_STOP_TIMER_CAR or self.CP.enableGasInterceptorDEPRECATED) and \ not self._sng_hack: self.standstill_req = True if CS.pcm_acc_status != 8: @@ -148,23 +150,32 @@ class CarController: lead = hud_control.leadVisible or CS.out.vEgo < 12. # at low speed we always assume the lead is present so ACC can be engaged reverse_acc = 2 if self._reverse_acc_change else 1 + # Press distance button until we are at the correct bar length. Only change while enabled to avoid skipping startup popup + if self.frame % 6 == 0 and self.CP.openpilotLongitudinalControl: + desired_distance = 4 - hud_control.leadDistanceBars + if CS.out.cruiseState.enabled and CS.pcm_follow_distance != desired_distance: + self.distance_button = not self.distance_button + else: + self.distance_button = 0 + # Lexus IS uses a different cancellation message if pcm_cancel_cmd and self.CP.carFingerprint in UNSUPPORTED_DSU_CAR: can_sends.append(toyotacan.create_acc_cancel_command(self.packer)) elif self.CP.openpilotLongitudinalControl: - can_sends.append(toyotacan.create_accel_command(self.packer, pcm_accel_cmd, pcm_cancel_cmd, self.standstill_req, lead, CS.acc_type, fcw_alert, reverse_acc, CS.gac_send)) + can_sends.append(toyotacan.create_accel_command(self.packer, pcm_accel_cmd, pcm_cancel_cmd, self.standstill_req, lead, CS.acc_type, fcw_alert, + self.distance_button, reverse_acc)) self.accel = pcm_accel_cmd else: - can_sends.append(toyotacan.create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False, reverse_acc, CS.gac_send)) + can_sends.append(toyotacan.create_accel_command(self.packer, 0, pcm_cancel_cmd, False, lead, CS.acc_type, False, self.distance_button, reverse_acc)) - if self.frame % 2 == 0 and self.CP.enableGasInterceptor and self.CP.openpilotLongitudinalControl: + if self.frame % 2 == 0 and self.CP.enableGasInterceptorDEPRECATED and self.CP.openpilotLongitudinalControl: # send exactly zero if gas cmd is zero. Interceptor will send the max between read value and gas cmd. # This prevents unexpected pedal range rescaling can_sends.append(create_gas_interceptor_command(self.packer, interceptor_gas_cmd, self.frame // 2)) self.gas = interceptor_gas_cmd # *** hud ui *** - if self.CP.carFingerprint != CAR.PRIUS_V: + if self.CP.carFingerprint != CAR.TOYOTA_PRIUS_V: # ui mesg is at 1Hz but we send asap if: # - there is something to display # - there is something to stop displaying diff --git a/selfdrive/car/toyota/carstate.py b/selfdrive/car/toyota/carstate.py index 52113c2fb3..314c5cdd86 100644 --- a/selfdrive/car/toyota/carstate.py +++ b/selfdrive/car/toyota/carstate.py @@ -48,6 +48,11 @@ class CarState(CarStateBase): self.angle_offset = FirstOrderFilter(None, 60.0, DT_CTRL, initialized=False) self._init_traffic_signals() + self.prev_distance_button = 0 + self.distance_button = 0 + + self.pcm_follow_distance = 0 + self.low_speed_lockout = False self.acc_type = 1 self.lkas_hud = {} @@ -57,9 +62,6 @@ class CarState(CarStateBase): self.lta_status = False self.prev_lta_status = False self.lta_status_active = False - self.gac_send = False - self.gac_send_counter = 0 - self.follow_distance = 0 if CP.spFlags & ToyotaFlagsSP.SP_ZSS: self.zss_compute = False @@ -73,7 +75,6 @@ class CarState(CarStateBase): self.prev_mads_enabled = self.mads_enabled self.prev_lkas_enabled = self.lkas_enabled self.prev_lta_status = self.lta_status - self.prev_gap_dist_button = self.gap_dist_button ret.doorOpen = any([cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_FL"], cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_FR"], cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_RL"], cp.vl["BODY_CONTROL_STATE"]["DOOR_OPEN_RR"]]) @@ -83,7 +84,8 @@ class CarState(CarStateBase): ret.brakePressed = cp.vl["BRAKE_MODULE"]["BRAKE_PRESSED"] != 0 ret.brakeHoldActive = cp.vl["ESP_CONTROL"]["BRAKE_HOLD_ACTIVE"] == 1 ret.brakeLightsDEPRECATED = bool(cp.vl["ESP_CONTROL"]["BRAKE_LIGHTS_ACC"]) - if self.CP.enableGasInterceptor: + + if self.CP.enableGasInterceptorDEPRECATED: ret.gas = (cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS"] + cp.vl["GAS_SENSOR"]["INTERCEPTOR_GAS2"]) // 2 ret.gasPressed = ret.gas > 805 else: @@ -162,7 +164,7 @@ class CarState(CarStateBase): ret.leftBlinker = ret.leftBlinkerOn = cp.vl["BLINKERS_STATE"]["TURN_SIGNALS"] == 1 ret.rightBlinker = ret.rightBlinkerOn = cp.vl["BLINKERS_STATE"]["TURN_SIGNALS"] == 2 - if self.CP.carFingerprint != CAR.MIRAI: + if self.CP.carFingerprint != CAR.TOYOTA_MIRAI: ret.engineRpm = cp.vl["ENGINE_RPM"]["RPM"] ret.steeringTorque = cp.vl["STEER_TORQUE_SENSOR"]["STEER_TORQUE_DRIVER"] @@ -202,13 +204,7 @@ class CarState(CarStateBase): self.acc_type = cp_acc.vl["ACC_CONTROL"]["ACC_TYPE"] ret.stockFcw = bool(cp_acc.vl["PCS_HUD"]["FCW"]) - if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR): - self.gap_dist_button = cp_cam.vl["ACC_CONTROL"]["DISTANCE"] - if self.CP.flags & ToyotaFlags.SMART_DSU: - self.gap_dist_button = cp.vl["SDSU"]["FD_BUTTON"] - fd_src = "PCM_CRUISE_ALT" if self.CP.carFingerprint in UNSUPPORTED_DSU_CAR else "PCM_CRUISE_2" - self.follow_distance = cp.vl[fd_src]["PCM_FOLLOW_DISTANCE"] # some TSS2 cars have low speed lockout permanently set, so ignore on those cars # these cars are identified by an ACC_TYPE value of 2. @@ -223,7 +219,7 @@ class CarState(CarStateBase): # ignore standstill state in certain vehicles, since pcm allows to restart with just an acceleration request ret.cruiseState.standstill = self.pcm_acc_status == 7 ret.cruiseState.enabled = bool(cp.vl["PCM_CRUISE"]["CRUISE_ACTIVE"]) - ret.cruiseState.nonAdaptive = cp.vl["PCM_CRUISE"]["CRUISE_STATE"] in (1, 2, 3, 4, 5, 6) + ret.cruiseState.nonAdaptive = self.pcm_acc_status in (1, 2, 3, 4, 5, 6) ret.genericToggle = bool(cp.vl["LIGHT_STALK"]["AUTO_HIGH_BEAM"]) ret.espDisabled = cp.vl["ESP_CONTROL"]["TC_DISABLED"] != 0 @@ -235,9 +231,20 @@ class CarState(CarStateBase): ret.leftBlindspot = (cp.vl["BSM"]["L_ADJACENT"] == 1) or (cp.vl["BSM"]["L_APPROACHING"] == 1) ret.rightBlindspot = (cp.vl["BSM"]["R_ADJACENT"] == 1) or (cp.vl["BSM"]["R_APPROACHING"] == 1) - if self.CP.carFingerprint != CAR.PRIUS_V: + if self.CP.carFingerprint != CAR.TOYOTA_PRIUS_V: self.lkas_hud = copy.copy(cp_cam.vl["LKAS_HUD"]) + if self.CP.carFingerprint not in UNSUPPORTED_DSU_CAR: + self.pcm_follow_distance = cp.vl["PCM_CRUISE_2"]["PCM_FOLLOW_DISTANCE"] + + if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR) or (self.CP.flags & ToyotaFlags.SMART_DSU and not self.CP.flags & ToyotaFlags.RADAR_CAN_FILTER): + # distance button is wired to the ACC module (camera or radar) + self.prev_distance_button = self.distance_button + if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR): + self.distance_button = cp_acc.vl["ACC_CONTROL"]["DISTANCE"] + else: + self.distance_button = cp.vl["SDSU"]["FD_BUTTON"] + self._update_traffic_signals(cp_cam) ret.cruiseState.speedLimit = self._calculate_speed_limit() @@ -339,7 +346,7 @@ class CarState(CarStateBase): ("STEER_TORQUE_SENSOR", 50), ] - if CP.carFingerprint != CAR.MIRAI: + if CP.carFingerprint != CAR.TOYOTA_MIRAI: messages.append(("ENGINE_RPM", 42)) if CP.carFingerprint in UNSUPPORTED_DSU_CAR: @@ -349,7 +356,7 @@ class CarState(CarStateBase): messages.append(("PCM_CRUISE_2", 33)) # add gas interceptor reading if we are using it - if CP.enableGasInterceptor: + if CP.enableGasInterceptorDEPRECATED: messages.append(("GAS_SENSOR", 50)) if CP.enableBsm: @@ -369,8 +376,10 @@ class CarState(CarStateBase): ("PRE_COLLISION", 33), ] - if CP.flags & ToyotaFlags.SMART_DSU: - messages.append(("SDSU", 33)) + if CP.flags & ToyotaFlags.SMART_DSU and not CP.flags & ToyotaFlags.RADAR_CAN_FILTER: + messages += [ + ("SDSU", 100), + ] if CP.spFlags & ToyotaFlagsSP.SP_ZSS: messages.append(("SECONDARY_STEER_ANGLE", 0)) @@ -386,7 +395,7 @@ class CarState(CarStateBase): ("RSA2", 0), ] - if CP.carFingerprint != CAR.PRIUS_V: + if CP.carFingerprint != CAR.TOYOTA_PRIUS_V: messages += [ ("LKAS_HUD", 1), ] diff --git a/selfdrive/car/toyota/fingerprints.py b/selfdrive/car/toyota/fingerprints.py index 6b48408a10..a57e58fbb7 100644 --- a/selfdrive/car/toyota/fingerprints.py +++ b/selfdrive/car/toyota/fingerprints.py @@ -4,7 +4,7 @@ from openpilot.selfdrive.car.toyota.values import CAR Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.AVALON: { + CAR.TOYOTA_AVALON: { (Ecu.abs, 0x7b0, None): [ b'F152607060\x00\x00\x00\x00\x00\x00', ], @@ -30,7 +30,7 @@ FW_VERSIONS = { b'8646F0703000\x00\x00\x00\x00', ], }, - CAR.AVALON_2019: { + CAR.TOYOTA_AVALON_2019: { (Ecu.abs, 0x7b0, None): [ b'F152607110\x00\x00\x00\x00\x00\x00', b'F152607140\x00\x00\x00\x00\x00\x00', @@ -71,7 +71,7 @@ FW_VERSIONS = { b'8646F0702100\x00\x00\x00\x00', ], }, - CAR.AVALON_TSS2: { + CAR.TOYOTA_AVALON_TSS2: { (Ecu.abs, 0x7b0, None): [ b'\x01F152607240\x00\x00\x00\x00\x00\x00', b'\x01F152607250\x00\x00\x00\x00\x00\x00', @@ -95,7 +95,7 @@ FW_VERSIONS = { b'\x028646F4104100\x00\x00\x00\x008646G5301200\x00\x00\x00\x00', ], }, - CAR.CAMRY: { + CAR.TOYOTA_CAMRY: { (Ecu.engine, 0x700, None): [ b'\x018966306L3100\x00\x00\x00\x00', b'\x018966306L4200\x00\x00\x00\x00', @@ -222,7 +222,7 @@ FW_VERSIONS = { b'8646F0607100 ', ], }, - CAR.CAMRY_TSS2: { + CAR.TOYOTA_CAMRY_TSS2: { (Ecu.eps, 0x7a1, None): [ b'8965B33630\x00\x00\x00\x00\x00\x00', b'8965B33640\x00\x00\x00\x00\x00\x00', @@ -268,7 +268,7 @@ FW_VERSIONS = { b'\x028646F3305500\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', ], }, - CAR.CHR: { + CAR.TOYOTA_CHR: { (Ecu.engine, 0x700, None): [ b'\x01896631017100\x00\x00\x00\x00', b'\x01896631017200\x00\x00\x00\x00', @@ -353,7 +353,7 @@ FW_VERSIONS = { b'8646FF407100 ', ], }, - CAR.CHR_TSS2: { + CAR.TOYOTA_CHR_TSS2: { (Ecu.abs, 0x7b0, None): [ b'F152610041\x00\x00\x00\x00\x00\x00', b'F152610260\x00\x00\x00\x00\x00\x00', @@ -377,6 +377,7 @@ FW_VERSIONS = { (Ecu.fwdRadar, 0x750, 0xf): [ b'\x018821FF410200\x00\x00\x00\x00', b'\x018821FF410300\x00\x00\x00\x00', + b'\x018821FF410400\x00\x00\x00\x00', b'\x018821FF410500\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x750, 0x6d): [ @@ -385,7 +386,7 @@ FW_VERSIONS = { b'\x028646FF413100\x00\x00\x00\x008646GF411100\x00\x00\x00\x00', ], }, - CAR.COROLLA: { + CAR.TOYOTA_COROLLA: { (Ecu.engine, 0x7e0, None): [ b'\x0230ZC2000\x00\x00\x00\x00\x00\x00\x00\x0050212000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x0230ZC2100\x00\x00\x00\x00\x00\x00\x00\x0050212000\x00\x00\x00\x00\x00\x00\x00\x00', @@ -419,7 +420,7 @@ FW_VERSIONS = { b'8646F0201200\x00\x00\x00\x00', ], }, - CAR.COROLLA_TSS2: { + CAR.TOYOTA_COROLLA_TSS2: { (Ecu.engine, 0x700, None): [ b'\x01896630A22000\x00\x00\x00\x00', b'\x01896630ZG2000\x00\x00\x00\x00', @@ -594,7 +595,7 @@ FW_VERSIONS = { b'\x028646F7605100\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', ], }, - CAR.HIGHLANDER: { + CAR.TOYOTA_HIGHLANDER: { (Ecu.engine, 0x700, None): [ b'\x01896630E09000\x00\x00\x00\x00', b'\x01896630E43000\x00\x00\x00\x00', @@ -639,6 +640,7 @@ FW_VERSIONS = { (Ecu.dsu, 0x791, None): [ b'881510E01100\x00\x00\x00\x00', b'881510E01200\x00\x00\x00\x00', + b'881510E02200\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x750, 0xf): [ b'8821F4702100\x00\x00\x00\x00', @@ -649,7 +651,7 @@ FW_VERSIONS = { b'8646F0E01300\x00\x00\x00\x00', ], }, - CAR.HIGHLANDER_TSS2: { + CAR.TOYOTA_HIGHLANDER_TSS2: { (Ecu.eps, 0x7a1, None): [ b'8965B48241\x00\x00\x00\x00\x00\x00', b'8965B48310\x00\x00\x00\x00\x00\x00', @@ -686,6 +688,7 @@ FW_VERSIONS = { b'\x01896630EB1000\x00\x00\x00\x00', b'\x01896630EB1100\x00\x00\x00\x00', b'\x01896630EB1200\x00\x00\x00\x00', + b'\x01896630EB1300\x00\x00\x00\x00', b'\x01896630EB2000\x00\x00\x00\x00', b'\x01896630EB2100\x00\x00\x00\x00', b'\x01896630EB2200\x00\x00\x00\x00', @@ -725,6 +728,7 @@ FW_VERSIONS = { b'\x018966353M7000\x00\x00\x00\x00', b'\x018966353M7100\x00\x00\x00\x00', b'\x018966353Q2000\x00\x00\x00\x00', + b'\x018966353Q2100\x00\x00\x00\x00', b'\x018966353Q2300\x00\x00\x00\x00', b'\x018966353Q4000\x00\x00\x00\x00', b'\x018966353R1100\x00\x00\x00\x00', @@ -772,23 +776,29 @@ FW_VERSIONS = { b'\x018966353S1000\x00\x00\x00\x00', b'\x018966353S2000\x00\x00\x00\x00', ], + (Ecu.engine, 0x7e0, None): [ + b'\x02353U0000\x00\x00\x00\x00\x00\x00\x00\x0052422000\x00\x00\x00\x00\x00\x00\x00\x00', + ], (Ecu.abs, 0x7b0, None): [ b'\x01F15265337200\x00\x00\x00\x00', b'\x01F15265342000\x00\x00\x00\x00', + b'\x01F15265343000\x00\x00\x00\x00', ], (Ecu.eps, 0x7a1, None): [ b'8965B53450\x00\x00\x00\x00\x00\x00', + b'8965B53800\x00\x00\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x750, 0xf): [ b'\x018821F6201200\x00\x00\x00\x00', b'\x018821F6201300\x00\x00\x00\x00', + b'\x018821F6201400\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x750, 0x6d): [ b'\x028646F5303300\x00\x00\x00\x008646G5301200\x00\x00\x00\x00', b'\x028646F5303400\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', ], }, - CAR.PRIUS: { + CAR.TOYOTA_PRIUS: { (Ecu.engine, 0x700, None): [ b'\x02896634761000\x00\x00\x00\x008966A4703000\x00\x00\x00\x00', b'\x02896634761100\x00\x00\x00\x008966A4703000\x00\x00\x00\x00', @@ -886,7 +896,7 @@ FW_VERSIONS = { b'8646F4705200\x00\x00\x00\x00', ], }, - CAR.PRIUS_V: { + CAR.TOYOTA_PRIUS_V: { (Ecu.abs, 0x7b0, None): [ b'F152647280\x00\x00\x00\x00\x00\x00', ], @@ -903,7 +913,7 @@ FW_VERSIONS = { b'8646F4703300\x00\x00\x00\x00', ], }, - CAR.RAV4: { + CAR.TOYOTA_RAV4: { (Ecu.engine, 0x7e0, None): [ b'\x02342Q1000\x00\x00\x00\x00\x00\x00\x00\x0054212000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x02342Q1100\x00\x00\x00\x00\x00\x00\x00\x0054212000\x00\x00\x00\x00\x00\x00\x00\x00', @@ -944,7 +954,7 @@ FW_VERSIONS = { b'8646F4204000\x00\x00\x00\x00', ], }, - CAR.RAV4H: { + CAR.TOYOTA_RAV4H: { (Ecu.engine, 0x7e0, None): [ b'\x02342N9000\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x02342N9100\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', @@ -981,7 +991,7 @@ FW_VERSIONS = { b'8646F4204000\x00\x00\x00\x00', ], }, - CAR.RAV4_TSS2: { + CAR.TOYOTA_RAV4_TSS2: { (Ecu.engine, 0x700, None): [ b'\x01896630R58000\x00\x00\x00\x00', b'\x01896630R58100\x00\x00\x00\x00', @@ -1027,6 +1037,7 @@ FW_VERSIONS = { b'\x02896634A13001\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', b'\x02896634A13101\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', b'\x02896634A13201\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', + b'\x02896634A14001\x00\x00\x00\x00897CF0R01000\x00\x00\x00\x00', b'\x02896634A14001\x00\x00\x00\x00897CF1203001\x00\x00\x00\x00', b'\x02896634A14001\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', b'\x02896634A14101\x00\x00\x00\x00897CF4801001\x00\x00\x00\x00', @@ -1091,7 +1102,7 @@ FW_VERSIONS = { b'\x028646F4203800\x00\x00\x00\x008646G2601500\x00\x00\x00\x00', ], }, - CAR.RAV4_TSS2_2022: { + CAR.TOYOTA_RAV4_TSS2_2022: { (Ecu.abs, 0x7b0, None): [ b'\x01F15260R350\x00\x00\x00\x00\x00\x00', b'\x01F15260R361\x00\x00\x00\x00\x00\x00', @@ -1127,7 +1138,7 @@ FW_VERSIONS = { b'\x028646F0R02100\x00\x00\x00\x008646G0R01100\x00\x00\x00\x00', ], }, - CAR.RAV4_TSS2_2023: { + CAR.TOYOTA_RAV4_TSS2_2023: { (Ecu.abs, 0x7b0, None): [ b'\x01F15260R450\x00\x00\x00\x00\x00\x00', b'\x01F15260R51000\x00\x00\x00\x00', @@ -1135,18 +1146,22 @@ FW_VERSIONS = { b'\x01F15264283300\x00\x00\x00\x00', b'\x01F152642F1000\x00\x00\x00\x00', b'\x01F152642F8000\x00\x00\x00\x00', + b'\x01F152642F8100\x00\x00\x00\x00', + b'\x01F152642F9000\x00\x00\x00\x00', ], (Ecu.eps, 0x7a1, None): [ b'\x028965B0R11000\x00\x00\x00\x008965B0R12000\x00\x00\x00\x00', b'8965B42371\x00\x00\x00\x00\x00\x00', ], (Ecu.engine, 0x700, None): [ + b'\x01896634A61000\x00\x00\x00\x00', b'\x01896634A88100\x00\x00\x00\x00', b'\x01896634A89100\x00\x00\x00\x00', b'\x01896634AE1001\x00\x00\x00\x00', b'\x01896634AF0000\x00\x00\x00\x00', b'\x01896634AJ2000\x00\x00\x00\x00', b'\x01896634AL5000\x00\x00\x00\x00', + b'\x01896634AL6000\x00\x00\x00\x00', ], (Ecu.fwdRadar, 0x750, 0xf): [ b'\x018821F0R03100\x00\x00\x00\x00', @@ -1157,7 +1172,7 @@ FW_VERSIONS = { b'\x028646F0R11000\x00\x00\x00\x008646G0R04000\x00\x00\x00\x00', ], }, - CAR.SIENNA: { + CAR.TOYOTA_SIENNA: { (Ecu.engine, 0x700, None): [ b'\x01896630832100\x00\x00\x00\x00', b'\x01896630832200\x00\x00\x00\x00', @@ -1225,6 +1240,7 @@ FW_VERSIONS = { b'\x028966333V4000\x00\x00\x00\x00897CF3305001\x00\x00\x00\x00', b'\x028966333W1000\x00\x00\x00\x00897CF3305001\x00\x00\x00\x00', b'\x02896633T09000\x00\x00\x00\x00897CF3307001\x00\x00\x00\x00', + b'\x02896633T10000\x00\x00\x00\x00897CF3307001\x00\x00\x00\x00', ], (Ecu.abs, 0x7b0, None): [ b'\x01F152606281\x00\x00\x00\x00\x00\x00', @@ -1266,6 +1282,7 @@ FW_VERSIONS = { }, CAR.LEXUS_ES: { (Ecu.engine, 0x7e0, None): [ + b'\x02333M4100\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x02333M4200\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x02333R0000\x00\x00\x00\x00\x00\x00\x00\x00A0C01000\x00\x00\x00\x00\x00\x00\x00\x00', ], @@ -1277,6 +1294,7 @@ FW_VERSIONS = { b'881513309400\x00\x00\x00\x00', b'881513309500\x00\x00\x00\x00', b'881513310400\x00\x00\x00\x00', + b'881513310500\x00\x00\x00\x00', ], (Ecu.eps, 0x7a1, None): [ b'8965B33502\x00\x00\x00\x00\x00\x00', @@ -1321,6 +1339,7 @@ FW_VERSIONS = { b'\x01896637854000\x00\x00\x00\x00', b'\x01896637873000\x00\x00\x00\x00', b'\x01896637878000\x00\x00\x00\x00', + b'\x01896637878100\x00\x00\x00\x00', ], (Ecu.engine, 0x7e0, None): [ b'\x0237841000\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', @@ -1406,6 +1425,7 @@ FW_VERSIONS = { b'\x018821F6201400\x00\x00\x00\x00', ], (Ecu.fwdCamera, 0x750, 0x6d): [ + b'\x028646F1104200\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', b'\x028646F1105200\x00\x00\x00\x008646G3304000\x00\x00\x00\x00', ], }, @@ -1536,6 +1556,7 @@ FW_VERSIONS = { b'\x018966348W5100\x00\x00\x00\x00', b'\x018966348W9000\x00\x00\x00\x00', b'\x018966348X0000\x00\x00\x00\x00', + b'\x01896634D11000\x00\x00\x00\x00', b'\x01896634D12000\x00\x00\x00\x00', b'\x01896634D12100\x00\x00\x00\x00', b'\x01896634D43000\x00\x00\x00\x00', @@ -1579,7 +1600,7 @@ FW_VERSIONS = { b'\x028646F4810400\x00\x00\x00\x008646G2601400\x00\x00\x00\x00', ], }, - CAR.PRIUS_TSS2: { + CAR.TOYOTA_PRIUS_TSS2: { (Ecu.engine, 0x700, None): [ b'\x028966347B1000\x00\x00\x00\x008966A4703000\x00\x00\x00\x00', b'\x028966347C4000\x00\x00\x00\x008966A4703000\x00\x00\x00\x00', @@ -1610,7 +1631,7 @@ FW_VERSIONS = { b'\x028646F4712000\x00\x00\x00\x008646G2601500\x00\x00\x00\x00', ], }, - CAR.MIRAI: { + CAR.TOYOTA_MIRAI: { (Ecu.abs, 0x7d1, None): [ b'\x01898A36203000\x00\x00\x00\x00', ], @@ -1628,7 +1649,7 @@ FW_VERSIONS = { b'\x028646F6201400\x00\x00\x00\x008646G5301200\x00\x00\x00\x00', ], }, - CAR.ALPHARD_TSS2: { + CAR.TOYOTA_ALPHARD_TSS2: { (Ecu.engine, 0x7e0, None): [ b'\x0235870000\x00\x00\x00\x00\x00\x00\x00\x00A0202000\x00\x00\x00\x00\x00\x00\x00\x00', b'\x0235879000\x00\x00\x00\x00\x00\x00\x00\x00A4701000\x00\x00\x00\x00\x00\x00\x00\x00', diff --git a/selfdrive/car/toyota/interface.py b/selfdrive/car/toyota/interface.py index ba5bcb6585..51d76dece0 100644 --- a/selfdrive/car/toyota/interface.py +++ b/selfdrive/car/toyota/interface.py @@ -1,5 +1,4 @@ from cereal import car -from openpilot.common.conversions import Conversions as CV from openpilot.common.numpy_fast import clip from openpilot.common.params import Params from panda import Panda @@ -15,10 +14,6 @@ EventName = car.CarEvent.EventName SteerControlType = car.CarParams.SteerControlType GearShifter = car.CarState.GearShifter -GAC_DICT = {3: 1, 2: 2, 1: 3} -GAC_MIN = 1 -GAC_MAX = 3 - class CarInterface(CarInterfaceBase): @staticmethod def get_pid_accel_limits(CP, current_speed, cruise_speed): @@ -54,83 +49,41 @@ class CarInterface(CarInterfaceBase): stop_and_go = candidate in TSS2_CAR - if candidate == CAR.PRIUS: + # Detect smartDSU, which intercepts ACC_CMD from the DSU (or radar) allowing openpilot to send it + # 0x2AA is sent by a similar device which intercepts the radar instead of DSU on NO_DSU_CARs + if 0x2FF in fingerprint[0] or (0x2AA in fingerprint[0] and candidate in NO_DSU_CAR): + ret.flags |= ToyotaFlags.SMART_DSU.value + ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_SDSU + + if 0x2AA in fingerprint[0] and candidate in NO_DSU_CAR: + ret.flags |= ToyotaFlags.RADAR_CAN_FILTER.value + + # In TSS2 cars, the camera does long control + found_ecus = [fw.ecu for fw in car_fw] + ret.enableDsu = len(found_ecus) > 0 and Ecu.dsu not in found_ecus and candidate not in (NO_DSU_CAR | UNSUPPORTED_DSU_CAR) \ + and not (ret.flags & ToyotaFlags.SMART_DSU) + + if candidate == CAR.TOYOTA_PRIUS: zss = ret.spFlags & ToyotaFlagsSP.SP_ZSS stop_and_go = True - ret.wheelbase = 2.70 ret.steerRatio = 15.0 if zss else 15.74 # unknown end-to-end spec - ret.tireStiffnessFactor = 0.6371 # hand-tune - ret.mass = (3370. if zss else 3045.) * CV.LB_TO_KG + ret.mass = 1529. if zss else 1381. # Only give steer angle deadzone to for bad angle sensor prius for fw in car_fw: if fw.ecu == "eps" and not fw.fwVersion == b'8965B47060\x00\x00\x00\x00\x00\x00': ret.steerActuatorDelay = 0.25 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning, steering_angle_deadzone_deg=0.0 if zss else 0.2) - elif candidate == CAR.PRIUS_V: - stop_and_go = True - ret.wheelbase = 2.78 - ret.steerRatio = 17.4 - ret.tireStiffnessFactor = 0.5533 - ret.mass = 3340. * CV.LB_TO_KG - - elif candidate in (CAR.RAV4, CAR.RAV4H): - stop_and_go = True if (candidate in CAR.RAV4H) else False - ret.wheelbase = 2.65 - ret.steerRatio = 16.88 # 14.5 is spec end-to-end - ret.tireStiffnessFactor = 0.5533 - ret.mass = 3650. * CV.LB_TO_KG # mean between normal and hybrid - - elif candidate == CAR.COROLLA: - ret.wheelbase = 2.70 - ret.steerRatio = 18.27 - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 2860. * CV.LB_TO_KG # mean between normal and hybrid - elif candidate in (CAR.LEXUS_RX, CAR.LEXUS_RX_TSS2): stop_and_go = True - ret.wheelbase = 2.79 - ret.steerRatio = 16. # 14.8 is spec end-to-end ret.wheelSpeedFactor = 1.035 - ret.tireStiffnessFactor = 0.5533 - ret.mass = 4481. * CV.LB_TO_KG # mean between min and max - elif candidate in (CAR.CHR, CAR.CHR_TSS2): - stop_and_go = True - ret.wheelbase = 2.63906 - ret.steerRatio = 13.6 - ret.tireStiffnessFactor = 0.7933 - ret.mass = 3300. * CV.LB_TO_KG - - elif candidate in (CAR.CAMRY, CAR.CAMRY_TSS2): - stop_and_go = True - ret.wheelbase = 2.82448 - ret.steerRatio = 13.7 - ret.tireStiffnessFactor = 0.7933 - ret.mass = 3400. * CV.LB_TO_KG # mean between normal and hybrid - - elif candidate in (CAR.HIGHLANDER, CAR.HIGHLANDER_TSS2): - # TODO: TSS-P models can do stop and go, but unclear if it requires sDSU or unplugging DSU - stop_and_go = True - ret.wheelbase = 2.8194 # average of 109.8 and 112.2 in - ret.steerRatio = 16.0 - ret.tireStiffnessFactor = 0.8 - ret.mass = 4516. * CV.LB_TO_KG # mean between normal and hybrid - - elif candidate in (CAR.AVALON, CAR.AVALON_2019, CAR.AVALON_TSS2): + elif candidate in (CAR.TOYOTA_AVALON, CAR.TOYOTA_AVALON_2019, CAR.TOYOTA_AVALON_TSS2): # starting from 2019, all Avalon variants have stop and go # https://engage.toyota.com/static/images/toyota_safety_sense/TSS_Applicability_Chart.pdf - stop_and_go = candidate != CAR.AVALON - ret.wheelbase = 2.82 - ret.steerRatio = 14.8 # Found at https://pressroom.toyota.com/releases/2016+avalon+product+specs.download - ret.tireStiffnessFactor = 0.7983 - ret.mass = 3505. * CV.LB_TO_KG # mean between normal and hybrid + stop_and_go = candidate != CAR.TOYOTA_AVALON - elif candidate in (CAR.RAV4_TSS2, CAR.RAV4_TSS2_2022, CAR.RAV4_TSS2_2023): - ret.wheelbase = 2.68986 - ret.steerRatio = 14.3 - ret.tireStiffnessFactor = 0.7933 - ret.mass = 3585. * CV.LB_TO_KG # Average between ICE and Hybrid + elif candidate in (CAR.TOYOTA_RAV4_TSS2, CAR.TOYOTA_RAV4_TSS2_2022, CAR.TOYOTA_RAV4_TSS2_2023): ret.lateralTuning.init('pid') ret.lateralTuning.pid.kiBP = [0.0] ret.lateralTuning.pid.kpBP = [0.0] @@ -147,75 +100,14 @@ class CarInterface(CarInterfaceBase): ret.lateralTuning.pid.kf = 0.00004 break - elif candidate == CAR.COROLLA_TSS2: - ret.wheelbase = 2.67 # Average between 2.70 for sedan and 2.64 for hatchback - ret.steerRatio = 13.9 - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 3060. * CV.LB_TO_KG - - elif candidate in (CAR.LEXUS_ES, CAR.LEXUS_ES_TSS2): - ret.wheelbase = 2.8702 - ret.steerRatio = 16.0 # not optimized - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 3677. * CV.LB_TO_KG # mean between min and max - - elif candidate == CAR.SIENNA: + elif candidate in (CAR.TOYOTA_CHR, CAR.TOYOTA_CAMRY, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_NX): + # TODO: Some of these platforms are not advertised to have full range ACC, are they similar to SNG_WITHOUT_DSU cars? stop_and_go = True - ret.wheelbase = 3.03 - ret.steerRatio = 15.5 - ret.tireStiffnessFactor = 0.444 - ret.mass = 4590. * CV.LB_TO_KG - elif candidate in (CAR.LEXUS_IS, CAR.LEXUS_IS_TSS2, CAR.LEXUS_RC): - ret.wheelbase = 2.79908 - ret.steerRatio = 13.3 - ret.tireStiffnessFactor = 0.444 - ret.mass = 3736.8 * CV.LB_TO_KG - - elif candidate == CAR.LEXUS_GS_F: - ret.wheelbase = 2.84988 - ret.steerRatio = 13.3 - ret.tireStiffnessFactor = 0.444 - ret.mass = 4034. * CV.LB_TO_KG - - elif candidate == CAR.LEXUS_CTH: - stop_and_go = True - ret.wheelbase = 2.60 - ret.steerRatio = 18.6 - ret.tireStiffnessFactor = 0.517 - ret.mass = 3108 * CV.LB_TO_KG # mean between min and max - - elif candidate in (CAR.LEXUS_NX, CAR.LEXUS_NX_TSS2): - stop_and_go = True - ret.wheelbase = 2.66 - ret.steerRatio = 14.7 - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 4070 * CV.LB_TO_KG - - elif candidate == CAR.LEXUS_LC_TSS2: - ret.wheelbase = 2.87 - ret.steerRatio = 13.0 - ret.tireStiffnessFactor = 0.444 # not optimized yet - ret.mass = 4500 * CV.LB_TO_KG - - elif candidate == CAR.PRIUS_TSS2: - ret.wheelbase = 2.70002 # from toyota online sepc. - ret.steerRatio = 13.4 # True steerRatio from older prius - ret.tireStiffnessFactor = 0.6371 # hand-tune - ret.mass = 3115. * CV.LB_TO_KG - - elif candidate == CAR.MIRAI: - stop_and_go = True - ret.wheelbase = 2.91 - ret.steerRatio = 14.8 - ret.tireStiffnessFactor = 0.8 - ret.mass = 4300. * CV.LB_TO_KG - - elif candidate == CAR.ALPHARD_TSS2: - ret.wheelbase = 3.00 - ret.steerRatio = 14.2 - ret.tireStiffnessFactor = 0.444 - ret.mass = 4305. * CV.LB_TO_KG + # TODO: these models can do stop and go, but unclear if it requires sDSU or unplugging DSU. + # For now, don't list stop and go functionality in the docs + if ret.flags & ToyotaFlags.SNG_WITHOUT_DSU: + stop_and_go = stop_and_go or bool(ret.flags & ToyotaFlags.SMART_DSU.value) or (ret.enableDsu and not docs) ret.centerToFront = ret.wheelbase * 0.44 @@ -223,21 +115,10 @@ class CarInterface(CarInterfaceBase): # Detect flipped signals and enable for C-HR and others ret.enableBsm = 0x3F6 in fingerprint[0] and candidate in TSS2_CAR - # Detect smartDSU, which intercepts ACC_CMD from the DSU (or radar) allowing openpilot to send it - # 0x2AA is sent by a similar device which intercepts the radar instead of DSU on NO_DSU_CARs - if 0x2FF in fingerprint[0] or (0x2AA in fingerprint[0] and candidate in NO_DSU_CAR): - ret.flags |= ToyotaFlags.SMART_DSU.value - ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_SDSU - # No radar dbc for cars without DSU which are not TSS 2.0 # TODO: make an adas dbc file for dsu-less models ret.radarUnavailable = DBC[candidate]['radar'] is None or candidate in (NO_DSU_CAR - TSS2_CAR) - # In TSS2 cars, the camera does long control - found_ecus = [fw.ecu for fw in car_fw] - ret.enableDsu = len(found_ecus) > 0 and Ecu.dsu not in found_ecus and candidate not in (NO_DSU_CAR | UNSUPPORTED_DSU_CAR) \ - and not (ret.flags & ToyotaFlags.SMART_DSU) - # if the smartDSU is detected, openpilot can send ACC_CONTROL and the smartDSU will block it from the DSU or radar. # since we don't yet parse radar on TSS2/TSS-P radar-based ACC cars, gate longitudinal behind experimental toggle use_sdsu = bool(ret.flags & ToyotaFlags.SMART_DSU) @@ -262,12 +143,12 @@ class CarInterface(CarInterfaceBase): ret.openpilotLongitudinalControl = (use_sdsu or ret.enableDsu or candidate in (TSS2_CAR - RADAR_ACC_CAR) or bool(ret.flags & ToyotaFlags.DISABLE_RADAR.value)) and \ not Params().get_bool("StockLongToyota") ret.autoResumeSng = ret.openpilotLongitudinalControl and candidate in NO_STOP_TIMER_CAR - ret.enableGasInterceptor = 0x201 in fingerprint[0] and ret.openpilotLongitudinalControl + ret.enableGasInterceptorDEPRECATED = 0x201 in fingerprint[0] and ret.openpilotLongitudinalControl if not ret.openpilotLongitudinalControl: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL - if ret.enableGasInterceptor: + if ret.enableGasInterceptorDEPRECATED: ret.safetyConfigs[0].safetyParam |= Panda.FLAG_TOYOTA_GAS_INTERCEPTOR if candidate in UNSUPPORTED_DSU_CAR: @@ -275,14 +156,14 @@ class CarInterface(CarInterfaceBase): # min speed to enable ACC. if car can do stop and go, then set enabling speed # to a negative value, so it won't matter. - ret.minEnableSpeed = -1. if (stop_and_go or ret.enableGasInterceptor) else MIN_ACC_SPEED + ret.minEnableSpeed = -1. if (stop_and_go or ret.enableGasInterceptorDEPRECATED) else MIN_ACC_SPEED sp_tss2_long_tune = Params().get_bool("ToyotaTSS2Long") tune = ret.longitudinalTuning tune.deadzoneBP = [0., 9.] tune.deadzoneV = [.0, .15] - if candidate in TSS2_CAR or ret.enableGasInterceptor: + if candidate in TSS2_CAR or ret.enableGasInterceptorDEPRECATED: tune.kpBP = [0., 5., 20., 30.] if sp_tss2_long_tune else [0., 5., 20.] tune.kpV = [1.3, 1.0, 0.7, 0.1] if sp_tss2_long_tune else [1.3, 1.0, 0.7] tune.kiBP = [0., 1., 2., 3., 4., 5., 12., 20., 27., 40.] if sp_tss2_long_tune else [0., 5., 12., 20., 27.] @@ -310,9 +191,14 @@ class CarInterface(CarInterfaceBase): # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() - buttonEvents = create_button_events(self.CS.gap_dist_button, self.CS.prev_gap_dist_button, {1: ButtonType.gapAdjustCruise}) + buttonEvents = [] + distance_button = 0 + + if self.CP.carFingerprint in (TSS2_CAR - RADAR_ACC_CAR) or (self.CP.flags & ToyotaFlags.SMART_DSU and not self.CP.flags & ToyotaFlags.RADAR_CAN_FILTER): + buttonEvents = create_button_events(self.CS.distance_button, self.CS.prev_distance_button, {1: ButtonType.gapAdjustCruise}) + distance_button = self.CS.distance_button self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) @@ -330,34 +216,6 @@ class CarInterface(CarInterfaceBase): (self.CS.prev_lkas_enabled == 1 and not self.CS.lkas_enabled): self.CS.madsEnabled = not self.CS.madsEnabled self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - if not self.CP.openpilotLongitudinalControl: - self.CS.gac_tr_cluster = 3 - if self.CS.gac_tr != 2: - self.CS.gac_tr = 2 - self.param_s.put_nonblocking("LongitudinalPersonality", "2") - else: - gap_dist_button = bool(self.CS.gap_dist_button) - if gap_dist_button: - self.gac_button_counter += 1 - elif self.prev_gac_button and not gap_dist_button and self.gac_button_counter < 50: - self.gac_button_counter = 0 - pre_calculated_distance = 3 if self.CS.gac_tr == 3 else self.CS.follow_distance - follow_distance_converted = self.get_sp_gac_state(pre_calculated_distance, GAC_MIN, GAC_MAX, "+") - gac_tr = self.get_sp_distance(follow_distance_converted, GAC_MAX, gac_dict=GAC_DICT) - 1 # always 1 lower - if gac_tr != self.CS.gac_tr: - self.param_s.put_nonblocking("LongitudinalPersonality", str(gac_tr)) - self.CS.gac_tr = gac_tr - else: - self.gac_button_counter = 0 - self.prev_gac_button = gap_dist_button - self.CS.gac_tr_cluster = clip(self.CS.gac_tr + 1, GAC_MIN, GAC_MAX) # always 1 higher - gap_distance = self.get_sp_distance(self.CS.gac_tr_cluster, GAC_MAX, gac_dict=GAC_DICT) - if self.CS.gac_send_counter < 10 and gap_distance != self.CS.follow_distance: - self.CS.gac_send_counter += 1 - self.CS.gac_send = 1 - else: - self.CS.gac_send_counter = 0 - self.CS.gac_send = 0 else: self.CS.madsEnabled = False @@ -366,7 +224,7 @@ class CarInterface(CarInterfaceBase): if not self.CP.pcmCruise: ret.cruiseState.enabled = self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=bool(self.CS.gap_dist_button)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # CANCEL if self.CS.out.cruiseState.enabled and not ret.cruiseState.enabled: @@ -399,7 +257,7 @@ class CarInterface(CarInterfaceBase): events.add(EventName.vehicleSensorsInvalid) if self.CP.openpilotLongitudinalControl: - if ret.cruiseState.standstill and not ret.brakePressed and not self.CP.enableGasInterceptor: + if ret.cruiseState.standstill and not ret.brakePressed and not self.CP.enableGasInterceptorDEPRECATED: events.add(EventName.resumeRequired) if self.CS.low_speed_lockout: events.add(EventName.lowSpeedLockout) @@ -415,8 +273,3 @@ class CarInterface(CarInterfaceBase): ret.events = events.to_msg() return ret - - # pass in a car.CarControl - # to be called @ 100hz - def apply(self, c, now_nanos): - return self.CC.update(c, self.CS, now_nanos) diff --git a/selfdrive/car/toyota/tests/test_toyota.py b/selfdrive/car/toyota/tests/test_toyota.py index d9d4fe087f..e2a9b46eb4 100755 --- a/selfdrive/car/toyota/tests/test_toyota.py +++ b/selfdrive/car/toyota/tests/test_toyota.py @@ -13,6 +13,10 @@ Ecu = car.CarParams.Ecu ECU_NAME = {v: k for k, v in Ecu.schema.enumerants.items()} +def check_fw_version(fw_version: bytes) -> bool: + return b'?' not in fw_version + + class TestToyotaInterfaces(unittest.TestCase): def test_car_sets(self): self.assertTrue(len(ANGLE_CONTROL_CAR - TSS2_CAR) == 0) @@ -20,7 +24,7 @@ class TestToyotaInterfaces(unittest.TestCase): def test_lta_platforms(self): # At this time, only RAV4 2023 is expected to use LTA/angle control - self.assertEqual(ANGLE_CONTROL_CAR, {CAR.RAV4_TSS2_2023}) + self.assertEqual(ANGLE_CONTROL_CAR, {CAR.TOYOTA_RAV4_TSS2_2023}) def test_tss2_dbc(self): # We make some assumptions about TSS2 platforms, @@ -39,13 +43,13 @@ class TestToyotaInterfaces(unittest.TestCase): self.assertEqual(len(missing_ecus), 0) # Some exceptions for other common ECUs - if car_model not in (CAR.ALPHARD_TSS2,): + if car_model not in (CAR.TOYOTA_ALPHARD_TSS2,): self.assertIn(Ecu.abs, present_ecus) - if car_model not in (CAR.MIRAI,): + if car_model not in (CAR.TOYOTA_MIRAI,): self.assertIn(Ecu.engine, present_ecus) - if car_model not in (CAR.PRIUS_V, CAR.LEXUS_CTH): + if car_model not in (CAR.TOYOTA_PRIUS_V, CAR.LEXUS_CTH): self.assertIn(Ecu.eps, present_ecus) @@ -59,6 +63,14 @@ class TestToyotaFingerprint(unittest.TestCase): car_model in FW_QUERY_CONFIG.non_essential_ecus[Ecu.engine], f"Car model unexpectedly {'not ' if len(engine_ecus) > 1 else ''}in non-essential list") + def test_valid_fw_versions(self): + # Asserts all FW versions are valid + for car_model, ecus in FW_VERSIONS.items(): + with self.subTest(car_model=car_model.value): + for fws in ecus.values(): + for fw in fws: + self.assertTrue(check_fw_version(fw), fw) + # Tests for part numbers, platform codes, and sub-versions which Toyota will use to fuzzy # fingerprint in the absence of full FW matches: @settings(max_examples=100) @@ -73,9 +85,9 @@ class TestToyotaFingerprint(unittest.TestCase): for car_model, ecus in FW_VERSIONS.items(): with self.subTest(car_model=car_model.value): for platform_code_ecu in PLATFORM_CODE_ECUS: - if platform_code_ecu == Ecu.eps and car_model in (CAR.PRIUS_V, CAR.LEXUS_CTH,): + if platform_code_ecu == Ecu.eps and car_model in (CAR.TOYOTA_PRIUS_V, CAR.LEXUS_CTH,): continue - if platform_code_ecu == Ecu.abs and car_model in (CAR.ALPHARD_TSS2,): + if platform_code_ecu == Ecu.abs and car_model in (CAR.TOYOTA_ALPHARD_TSS2,): continue self.assertIn(platform_code_ecu, [e[0] for e in ecus]) @@ -148,7 +160,7 @@ class TestToyotaFingerprint(unittest.TestCase): "subAddress": 0 if sub_addr is None else sub_addr}) CP = car.CarParams.new_message(carFw=car_fw) - matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), FW_VERSIONS) + matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(build_fw_dict(CP.carFw), CP.carVin, FW_VERSIONS) if len(matches) == 1: self.assertEqual(list(matches)[0], platform) else: diff --git a/selfdrive/car/toyota/toyotacan.py b/selfdrive/car/toyota/toyotacan.py index cd7746f8ad..d42f807357 100644 --- a/selfdrive/car/toyota/toyotacan.py +++ b/selfdrive/car/toyota/toyotacan.py @@ -33,12 +33,12 @@ def create_lta_steer_command(packer, steer_control_type, steer_angle, steer_req, return packer.make_can_msg("STEERING_LTA", 0, values) -def create_accel_command(packer, accel, pcm_cancel, standstill_req, lead, acc_type, fcw_alert, reverse_acc, gac_send): +def create_accel_command(packer, accel, pcm_cancel, standstill_req, lead, acc_type, fcw_alert, distance, reverse_acc): # TODO: find the exact canceling bit that does not create a chime values = { "ACCEL_CMD": 0 if pcm_cancel else accel, "ACC_TYPE": acc_type, - "DISTANCE": gac_send, + "DISTANCE": distance, "MINI_CAR": lead, "PERMIT_BRAKING": 1, "RELEASE_STANDSTILL": not standstill_req, diff --git a/selfdrive/car/toyota/values.py b/selfdrive/car/toyota/values.py index 6d745761ea..c7647a11f6 100644 --- a/selfdrive/car/toyota/values.py +++ b/selfdrive/car/toyota/values.py @@ -1,12 +1,13 @@ import re from collections import defaultdict from dataclasses import dataclass, field -from enum import Enum, IntFlag, StrEnum +from enum import Enum, IntFlag from cereal import car from openpilot.common.conversions import Conversions as CV +from openpilot.selfdrive.car import CarSpecs, PlatformConfig, Platforms from openpilot.selfdrive.car import AngleRateLimit, dbc_dict -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarInfo, Column, CarParts, CarHarness +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarDocs, Column, CarParts, CarHarness from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, StdQueries Ecu = car.CarParams.Ecu @@ -41,56 +42,28 @@ class CarControllerParams: class ToyotaFlags(IntFlag): + # Detected flags HYBRID = 1 SMART_DSU = 2 DISABLE_RADAR = 4 + RADAR_CAN_FILTER = 1024 + + # Static flags + TSS2 = 8 + NO_DSU = 16 + UNSUPPORTED_DSU = 32 + RADAR_ACC = 64 + # these cars use the Lane Tracing Assist (LTA) message for lateral control + ANGLE_CONTROL = 128 + NO_STOP_TIMER = 256 + # these cars are speculated to allow stop and go when the DSU is unplugged or disabled with sDSU + SNG_WITHOUT_DSU = 512 class ToyotaFlagsSP(IntFlag): SP_ZSS = 1 -class CAR(StrEnum): - # Toyota - ALPHARD_TSS2 = "TOYOTA ALPHARD 2020" - AVALON = "TOYOTA AVALON 2016" - AVALON_2019 = "TOYOTA AVALON 2019" - AVALON_TSS2 = "TOYOTA AVALON 2022" # TSS 2.5 - CAMRY = "TOYOTA CAMRY 2018" - CAMRY_TSS2 = "TOYOTA CAMRY 2021" # TSS 2.5 - CHR = "TOYOTA C-HR 2018" - CHR_TSS2 = "TOYOTA C-HR 2021" - COROLLA = "TOYOTA COROLLA 2017" - # LSS2 Lexus UX Hybrid is same as a TSS2 Corolla Hybrid - COROLLA_TSS2 = "TOYOTA COROLLA TSS2 2019" - HIGHLANDER = "TOYOTA HIGHLANDER 2017" - HIGHLANDER_TSS2 = "TOYOTA HIGHLANDER 2020" - PRIUS = "TOYOTA PRIUS 2017" - PRIUS_V = "TOYOTA PRIUS v 2017" - PRIUS_TSS2 = "TOYOTA PRIUS TSS2 2021" - RAV4 = "TOYOTA RAV4 2017" - RAV4H = "TOYOTA RAV4 HYBRID 2017" - RAV4_TSS2 = "TOYOTA RAV4 2019" - RAV4_TSS2_2022 = "TOYOTA RAV4 2022" - RAV4_TSS2_2023 = "TOYOTA RAV4 2023" - MIRAI = "TOYOTA MIRAI 2021" # TSS 2.5 - SIENNA = "TOYOTA SIENNA 2018" - - # Lexus - LEXUS_CTH = "LEXUS CT HYBRID 2018" - LEXUS_ES = "LEXUS ES 2018" - LEXUS_ES_TSS2 = "LEXUS ES 2019" - LEXUS_IS = "LEXUS IS 2018" - LEXUS_IS_TSS2 = "LEXUS IS 2023" - LEXUS_NX = "LEXUS NX 2018" - LEXUS_NX_TSS2 = "LEXUS NX 2020" - LEXUS_LC_TSS2 = "LEXUS LC 2024" - LEXUS_RC = "LEXUS RC 2020" - LEXUS_RX = "LEXUS RX 2016" - LEXUS_RX_TSS2 = "LEXUS RX 2020" - LEXUS_GS_F = "LEXUS GS F 2016" - - class Footnote(Enum): CAMRY = CarFootnote( "openpilot operates above 28mph for Camry 4CYL L, 4CYL LE and 4CYL SE which don't have Full-Speed Range Dynamic Radar Cruise Control.", @@ -98,161 +71,307 @@ class Footnote(Enum): @dataclass -class ToyotaCarInfo(CarInfo): +class ToyotaCarDocs(CarDocs): package: str = "All" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.toyota_a])) -CAR_INFO: dict[str, ToyotaCarInfo | list[ToyotaCarInfo]] = { +@dataclass +class ToyotaTSS2PlatformConfig(PlatformConfig): + dbc_dict: dict = field(default_factory=lambda: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas')) + + def init(self): + self.flags |= ToyotaFlags.TSS2 | ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.NO_DSU + + if self.flags & ToyotaFlags.RADAR_ACC: + self.dbc_dict = dbc_dict('toyota_nodsu_pt_generated', None) + + +class CAR(Platforms): # Toyota - CAR.ALPHARD_TSS2: [ - ToyotaCarInfo("Toyota Alphard 2019-20"), - ToyotaCarInfo("Toyota Alphard Hybrid 2021"), - ], - CAR.AVALON: [ - ToyotaCarInfo("Toyota Avalon 2016", "Toyota Safety Sense P"), - ToyotaCarInfo("Toyota Avalon 2017-18"), - ], - CAR.AVALON_2019: [ - ToyotaCarInfo("Toyota Avalon 2019-21"), - ToyotaCarInfo("Toyota Avalon Hybrid 2019-21"), - ], - CAR.AVALON_TSS2: [ - ToyotaCarInfo("Toyota Avalon 2022"), - ToyotaCarInfo("Toyota Avalon Hybrid 2022"), - ], - CAR.CAMRY: [ - ToyotaCarInfo("Toyota Camry 2018-20", video_link="https://www.youtube.com/watch?v=fkcjviZY9CM", footnotes=[Footnote.CAMRY]), - ToyotaCarInfo("Toyota Camry Hybrid 2018-20", video_link="https://www.youtube.com/watch?v=Q2DYY0AWKgk"), - ], - CAR.CAMRY_TSS2: [ - ToyotaCarInfo("Toyota Camry 2021-24", footnotes=[Footnote.CAMRY]), - ToyotaCarInfo("Toyota Camry Hybrid 2021-24"), - ], - CAR.CHR: [ - ToyotaCarInfo("Toyota C-HR 2017-20"), - ToyotaCarInfo("Toyota C-HR Hybrid 2017-20"), - ], - CAR.CHR_TSS2: [ - ToyotaCarInfo("Toyota C-HR 2021"), - ToyotaCarInfo("Toyota C-HR Hybrid 2021-22"), - ], - CAR.COROLLA: ToyotaCarInfo("Toyota Corolla 2017-19"), - CAR.COROLLA_TSS2: [ - ToyotaCarInfo("Toyota Corolla 2020-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), - ToyotaCarInfo("Toyota Corolla Cross (Non-US only) 2020-23", min_enable_speed=7.5), - ToyotaCarInfo("Toyota Corolla Hatchback 2019-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), - # Hybrid platforms - ToyotaCarInfo("Toyota Corolla Hybrid 2020-22"), - ToyotaCarInfo("Toyota Corolla Hybrid (Non-US only) 2020-23", min_enable_speed=7.5), - ToyotaCarInfo("Toyota Corolla Cross Hybrid (Non-US only) 2020-22", min_enable_speed=7.5), - ToyotaCarInfo("Lexus UX Hybrid 2019-23"), - ], - CAR.HIGHLANDER: [ - ToyotaCarInfo("Toyota Highlander 2017-19", video_link="https://www.youtube.com/watch?v=0wS0wXSLzoo"), - ToyotaCarInfo("Toyota Highlander Hybrid 2017-19"), - ], - CAR.HIGHLANDER_TSS2: [ - ToyotaCarInfo("Toyota Highlander 2020-23"), - ToyotaCarInfo("Toyota Highlander Hybrid 2020-23"), - ], - CAR.PRIUS: [ - ToyotaCarInfo("Toyota Prius 2016", "Toyota Safety Sense P", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), - ToyotaCarInfo("Toyota Prius 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), - ToyotaCarInfo("Toyota Prius Prime 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), - ], - CAR.PRIUS_V: ToyotaCarInfo("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED), - CAR.PRIUS_TSS2: [ - ToyotaCarInfo("Toyota Prius 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), - ToyotaCarInfo("Toyota Prius Prime 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), - ], - CAR.RAV4: [ - ToyotaCarInfo("Toyota RAV4 2016", "Toyota Safety Sense P"), - ToyotaCarInfo("Toyota RAV4 2017-18") - ], - CAR.RAV4H: [ - ToyotaCarInfo("Toyota RAV4 Hybrid 2016", "Toyota Safety Sense P", video_link="https://youtu.be/LhT5VzJVfNI?t=26"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2017-18", video_link="https://youtu.be/LhT5VzJVfNI?t=26") - ], - CAR.RAV4_TSS2: [ - ToyotaCarInfo("Toyota RAV4 2019-21", video_link="https://www.youtube.com/watch?v=wJxjDd42gGA"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2019-21"), - ], - CAR.RAV4_TSS2_2022: [ - ToyotaCarInfo("Toyota RAV4 2022"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2022", video_link="https://youtu.be/U0nH9cnrFB0"), - ], - CAR.RAV4_TSS2_2023: [ - ToyotaCarInfo("Toyota RAV4 2023-24"), - ToyotaCarInfo("Toyota RAV4 Hybrid 2023-24"), - ], - CAR.MIRAI: ToyotaCarInfo("Toyota Mirai 2021"), - CAR.SIENNA: ToyotaCarInfo("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED), + TOYOTA_ALPHARD_TSS2 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Toyota Alphard 2019-20"), + ToyotaCarDocs("Toyota Alphard Hybrid 2021"), + ], + CarSpecs(mass=4305. * CV.LB_TO_KG, wheelbase=3.0, steerRatio=14.2, tireStiffnessFactor=0.444), + ) + TOYOTA_AVALON = PlatformConfig( + [ + ToyotaCarDocs("Toyota Avalon 2016", "Toyota Safety Sense P"), + ToyotaCarDocs("Toyota Avalon 2017-18"), + ], + CarSpecs(mass=3505. * CV.LB_TO_KG, wheelbase=2.82, steerRatio=14.8, tireStiffnessFactor=0.7983), + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + ) + TOYOTA_AVALON_2019 = PlatformConfig( + [ + ToyotaCarDocs("Toyota Avalon 2019-21"), + ToyotaCarDocs("Toyota Avalon Hybrid 2019-21"), + ], + TOYOTA_AVALON.specs, + dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), + ) + TOYOTA_AVALON_TSS2 = ToyotaTSS2PlatformConfig( # TSS 2.5 + [ + ToyotaCarDocs("Toyota Avalon 2022"), + ToyotaCarDocs("Toyota Avalon Hybrid 2022"), + ], + TOYOTA_AVALON.specs, + ) + TOYOTA_CAMRY = PlatformConfig( + [ + ToyotaCarDocs("Toyota Camry 2018-20", video_link="https://www.youtube.com/watch?v=fkcjviZY9CM", footnotes=[Footnote.CAMRY]), + ToyotaCarDocs("Toyota Camry Hybrid 2018-20", video_link="https://www.youtube.com/watch?v=Q2DYY0AWKgk"), + ], + CarSpecs(mass=3400. * CV.LB_TO_KG, wheelbase=2.82448, steerRatio=13.7, tireStiffnessFactor=0.7933), + dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_DSU, + ) + TOYOTA_CAMRY_TSS2 = ToyotaTSS2PlatformConfig( # TSS 2.5 + [ + ToyotaCarDocs("Toyota Camry 2021-24", footnotes=[Footnote.CAMRY]), + ToyotaCarDocs("Toyota Camry Hybrid 2021-24"), + ], + TOYOTA_CAMRY.specs, + ) + TOYOTA_CHR = PlatformConfig( + [ + ToyotaCarDocs("Toyota C-HR 2017-20"), + ToyotaCarDocs("Toyota C-HR Hybrid 2017-20"), + ], + CarSpecs(mass=3300. * CV.LB_TO_KG, wheelbase=2.63906, steerRatio=13.6, tireStiffnessFactor=0.7933), + dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_DSU, + ) + TOYOTA_CHR_TSS2 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Toyota C-HR 2021"), + ToyotaCarDocs("Toyota C-HR Hybrid 2021-22"), + ], + TOYOTA_CHR.specs, + flags=ToyotaFlags.RADAR_ACC, + ) + TOYOTA_COROLLA = PlatformConfig( + [ToyotaCarDocs("Toyota Corolla 2017-19")], + CarSpecs(mass=2860. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=18.27, tireStiffnessFactor=0.444), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + ) + # LSS2 Lexus UX Hybrid is same as a TSS2 Corolla Hybrid + TOYOTA_COROLLA_TSS2 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Toyota Corolla 2020-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), + ToyotaCarDocs("Toyota Corolla Cross (Non-US only) 2020-23", min_enable_speed=7.5), + ToyotaCarDocs("Toyota Corolla Hatchback 2019-22", video_link="https://www.youtube.com/watch?v=_66pXk0CBYA"), + # Hybrid platforms + ToyotaCarDocs("Toyota Corolla Hybrid 2020-22"), + ToyotaCarDocs("Toyota Corolla Hybrid (Non-US only) 2020-23", min_enable_speed=7.5), + ToyotaCarDocs("Toyota Corolla Cross Hybrid (Non-US only) 2020-22", min_enable_speed=7.5), + ToyotaCarDocs("Lexus UX Hybrid 2019-23"), + ], + CarSpecs(mass=3060. * CV.LB_TO_KG, wheelbase=2.67, steerRatio=13.9, tireStiffnessFactor=0.444), + ) + TOYOTA_HIGHLANDER = PlatformConfig( + [ + ToyotaCarDocs("Toyota Highlander 2017-19", video_link="https://www.youtube.com/watch?v=0wS0wXSLzoo"), + ToyotaCarDocs("Toyota Highlander Hybrid 2017-19"), + ], + CarSpecs(mass=4516. * CV.LB_TO_KG, wheelbase=2.8194, steerRatio=16.0, tireStiffnessFactor=0.8), + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, + ) + TOYOTA_HIGHLANDER_TSS2 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Toyota Highlander 2020-23"), + ToyotaCarDocs("Toyota Highlander Hybrid 2020-23"), + ], + TOYOTA_HIGHLANDER.specs, + ) + TOYOTA_PRIUS = PlatformConfig( + [ + ToyotaCarDocs("Toyota Prius 2016", "Toyota Safety Sense P", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), + ToyotaCarDocs("Toyota Prius 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), + ToyotaCarDocs("Toyota Prius Prime 2017-20", video_link="https://www.youtube.com/watch?v=8zopPJI8XQ0"), + ], + CarSpecs(mass=3045. * CV.LB_TO_KG, wheelbase=2.7, steerRatio=15.74, tireStiffnessFactor=0.6371), + dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), + ) + TOYOTA_PRIUS_V = PlatformConfig( + [ToyotaCarDocs("Toyota Prius v 2017", "Toyota Safety Sense P", min_enable_speed=MIN_ACC_SPEED)], + CarSpecs(mass=3340. * CV.LB_TO_KG, wheelbase=2.78, steerRatio=17.4, tireStiffnessFactor=0.5533), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, + ) + TOYOTA_PRIUS_TSS2 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Toyota Prius 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), + ToyotaCarDocs("Toyota Prius Prime 2021-22", video_link="https://www.youtube.com/watch?v=J58TvCpUd4U"), + ], + CarSpecs(mass=3115. * CV.LB_TO_KG, wheelbase=2.70002, steerRatio=13.4, tireStiffnessFactor=0.6371), + ) + TOYOTA_RAV4 = PlatformConfig( + [ + ToyotaCarDocs("Toyota RAV4 2016", "Toyota Safety Sense P"), + ToyotaCarDocs("Toyota RAV4 2017-18") + ], + CarSpecs(mass=3650. * CV.LB_TO_KG, wheelbase=2.65, steerRatio=16.88, tireStiffnessFactor=0.5533), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + ) + TOYOTA_RAV4H = PlatformConfig( + [ + ToyotaCarDocs("Toyota RAV4 Hybrid 2016", "Toyota Safety Sense P", video_link="https://youtu.be/LhT5VzJVfNI?t=26"), + ToyotaCarDocs("Toyota RAV4 Hybrid 2017-18", video_link="https://youtu.be/LhT5VzJVfNI?t=26") + ], + TOYOTA_RAV4.specs, + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + # Note that the ICE RAV4 does not respect positive acceleration commands under 19 mph + flags=ToyotaFlags.NO_STOP_TIMER | ToyotaFlags.SNG_WITHOUT_DSU, + ) + TOYOTA_RAV4_TSS2 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Toyota RAV4 2019-21", video_link="https://www.youtube.com/watch?v=wJxjDd42gGA"), + ToyotaCarDocs("Toyota RAV4 Hybrid 2019-21"), + ], + CarSpecs(mass=3585. * CV.LB_TO_KG, wheelbase=2.68986, steerRatio=14.3, tireStiffnessFactor=0.7933), + ) + TOYOTA_RAV4_TSS2_2022 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Toyota RAV4 2022"), + ToyotaCarDocs("Toyota RAV4 Hybrid 2022", video_link="https://youtu.be/U0nH9cnrFB0"), + ], + TOYOTA_RAV4_TSS2.specs, + flags=ToyotaFlags.RADAR_ACC, + ) + TOYOTA_RAV4_TSS2_2023 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Toyota RAV4 2023-24"), + ToyotaCarDocs("Toyota RAV4 Hybrid 2023-24"), + ], + TOYOTA_RAV4_TSS2.specs, + flags=ToyotaFlags.RADAR_ACC | ToyotaFlags.ANGLE_CONTROL, + ) + TOYOTA_MIRAI = ToyotaTSS2PlatformConfig( # TSS 2.5 + [ToyotaCarDocs("Toyota Mirai 2021")], + CarSpecs(mass=4300. * CV.LB_TO_KG, wheelbase=2.91, steerRatio=14.8, tireStiffnessFactor=0.8), + ) + TOYOTA_SIENNA = PlatformConfig( + [ToyotaCarDocs("Toyota Sienna 2018-20", video_link="https://www.youtube.com/watch?v=q1UPOo4Sh68", min_enable_speed=MIN_ACC_SPEED)], + CarSpecs(mass=4590. * CV.LB_TO_KG, wheelbase=3.03, steerRatio=15.5, tireStiffnessFactor=0.444), + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.NO_STOP_TIMER, + ) # Lexus - CAR.LEXUS_CTH: ToyotaCarInfo("Lexus CT Hybrid 2017-18", "Lexus Safety System+"), - CAR.LEXUS_ES: [ - ToyotaCarInfo("Lexus ES 2017-18"), - ToyotaCarInfo("Lexus ES Hybrid 2017-18"), - ], - CAR.LEXUS_ES_TSS2: [ - ToyotaCarInfo("Lexus ES 2019-24"), - ToyotaCarInfo("Lexus ES Hybrid 2019-24", video_link="https://youtu.be/BZ29osRVJeg?t=12"), - ], - CAR.LEXUS_IS: ToyotaCarInfo("Lexus IS 2017-19"), - CAR.LEXUS_IS_TSS2: ToyotaCarInfo("Lexus IS 2022-23"), - CAR.LEXUS_GS_F: ToyotaCarInfo("Lexus GS F 2016"), - CAR.LEXUS_NX: [ - ToyotaCarInfo("Lexus NX 2018-19"), - ToyotaCarInfo("Lexus NX Hybrid 2018-19"), - ], - CAR.LEXUS_NX_TSS2: [ - ToyotaCarInfo("Lexus NX 2020-21"), - ToyotaCarInfo("Lexus NX Hybrid 2020-21"), - ], - CAR.LEXUS_LC_TSS2: ToyotaCarInfo("Lexus LC 2024"), - CAR.LEXUS_RC: ToyotaCarInfo("Lexus RC 2018-20"), - CAR.LEXUS_RX: [ - ToyotaCarInfo("Lexus RX 2016", "Lexus Safety System+"), - ToyotaCarInfo("Lexus RX 2017-19"), - # Hybrid platforms - ToyotaCarInfo("Lexus RX Hybrid 2016", "Lexus Safety System+"), - ToyotaCarInfo("Lexus RX Hybrid 2017-19"), - ], - CAR.LEXUS_RX_TSS2: [ - ToyotaCarInfo("Lexus RX 2020-22"), - ToyotaCarInfo("Lexus RX Hybrid 2020-22"), - ], -} + LEXUS_CTH = PlatformConfig( + [ToyotaCarDocs("Lexus CT Hybrid 2017-18", "Lexus Safety System+")], + CarSpecs(mass=3108. * CV.LB_TO_KG, wheelbase=2.6, steerRatio=18.6, tireStiffnessFactor=0.517), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + ) + LEXUS_ES = PlatformConfig( + [ + ToyotaCarDocs("Lexus ES 2017-18"), + ToyotaCarDocs("Lexus ES Hybrid 2017-18"), + ], + CarSpecs(mass=3677. * CV.LB_TO_KG, wheelbase=2.8702, steerRatio=16.0, tireStiffnessFactor=0.444), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + ) + LEXUS_ES_TSS2 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Lexus ES 2019-24"), + ToyotaCarDocs("Lexus ES Hybrid 2019-24", video_link="https://youtu.be/BZ29osRVJeg?t=12"), + ], + LEXUS_ES.specs, + ) + LEXUS_IS = PlatformConfig( + [ToyotaCarDocs("Lexus IS 2017-19")], + CarSpecs(mass=3736.8 * CV.LB_TO_KG, wheelbase=2.79908, steerRatio=13.3, tireStiffnessFactor=0.444), + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.UNSUPPORTED_DSU, + ) + LEXUS_IS_TSS2 = ToyotaTSS2PlatformConfig( + [ToyotaCarDocs("Lexus IS 2022-23")], + LEXUS_IS.specs, + ) + LEXUS_NX = PlatformConfig( + [ + ToyotaCarDocs("Lexus NX 2018-19"), + ToyotaCarDocs("Lexus NX Hybrid 2018-19"), + ], + CarSpecs(mass=4070. * CV.LB_TO_KG, wheelbase=2.66, steerRatio=14.7, tireStiffnessFactor=0.444), + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + ) + LEXUS_NX_TSS2 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Lexus NX 2020-21"), + ToyotaCarDocs("Lexus NX Hybrid 2020-21"), + ], + LEXUS_NX.specs, + ) + LEXUS_LC_TSS2 = ToyotaTSS2PlatformConfig( + [ToyotaCarDocs("Lexus LC 2024")], + CarSpecs(mass=4500. * CV.LB_TO_KG, wheelbase=2.87, steerRatio=13.0, tireStiffnessFactor=0.444), + ) + LEXUS_RC = PlatformConfig( + [ToyotaCarDocs("Lexus RC 2018-20")], + LEXUS_IS.specs, + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.UNSUPPORTED_DSU, + ) + LEXUS_RX = PlatformConfig( + [ + ToyotaCarDocs("Lexus RX 2016", "Lexus Safety System+"), + ToyotaCarDocs("Lexus RX 2017-19"), + # Hybrid platforms + ToyotaCarDocs("Lexus RX Hybrid 2016", "Lexus Safety System+"), + ToyotaCarDocs("Lexus RX Hybrid 2017-19"), + ], + CarSpecs(mass=4481. * CV.LB_TO_KG, wheelbase=2.79, steerRatio=16., tireStiffnessFactor=0.5533), + dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), + ) + LEXUS_RX_TSS2 = ToyotaTSS2PlatformConfig( + [ + ToyotaCarDocs("Lexus RX 2020-22"), + ToyotaCarDocs("Lexus RX Hybrid 2020-22"), + ], + LEXUS_RX.specs, + ) + LEXUS_GS_F = PlatformConfig( + [ToyotaCarDocs("Lexus GS F 2016")], + CarSpecs(mass=4034. * CV.LB_TO_KG, wheelbase=2.84988, steerRatio=13.3, tireStiffnessFactor=0.444), + dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), + flags=ToyotaFlags.UNSUPPORTED_DSU, + ) + # (addr, cars, bus, 1/freq*100, vl) STATIC_DSU_MSGS = [ - (0x128, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.AVALON), 1, 3, b'\xf4\x01\x90\x83\x00\x37'), - (0x128, (CAR.HIGHLANDER, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES), 1, 3, b'\x03\x00\x20\x00\x00\x52'), - (0x141, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 1, 2, b'\x00\x00\x00\x46'), - (0x160, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 1, 7, b'\x00\x00\x08\x12\x01\x31\x9c\x51'), - (0x161, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.AVALON, CAR.PRIUS_V), + (0x128, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_AVALON), \ + 1, 3, b'\xf4\x01\x90\x83\x00\x37'), + (0x128, (CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES), 1, 3, b'\x03\x00\x20\x00\x00\x52'), + (0x141, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 1, 2, b'\x00\x00\x00\x46'), + (0x160, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 1, 7, b'\x00\x00\x08\x12\x01\x31\x9c\x51'), + (0x161, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_AVALON, CAR.TOYOTA_PRIUS_V), 1, 7, b'\x00\x1e\x00\x00\x00\x80\x07'), - (0X161, (CAR.HIGHLANDER, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES), 1, 7, b'\x00\x1e\x00\xd4\x00\x00\x5b'), - (0x283, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 0, 3, b'\x00\x00\x00\x00\x00\x00\x8c'), - (0x2E6, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX), 0, 3, b'\xff\xf8\x00\x08\x7f\xe0\x00\x4e'), - (0x2E7, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX), 0, 3, b'\xa8\x9c\x31\x9c\x00\x00\x00\x02'), - (0x33E, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX), 0, 20, b'\x0f\xff\x26\x40\x00\x1f\x00'), - (0x344, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 0, 5, b'\x00\x00\x01\x00\x00\x00\x00\x50'), - (0x365, (CAR.PRIUS, CAR.LEXUS_NX, CAR.HIGHLANDER), 0, 20, b'\x00\x00\x00\x80\x03\x00\x08'), - (0x365, (CAR.RAV4, CAR.RAV4H, CAR.COROLLA, CAR.AVALON, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.LEXUS_RX, - CAR.PRIUS_V), 0, 20, b'\x00\x00\x00\x80\xfc\x00\x08'), - (0x366, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.HIGHLANDER), 0, 20, b'\x00\x00\x4d\x82\x40\x02\x00'), - (0x366, (CAR.RAV4, CAR.COROLLA, CAR.AVALON, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), + (0X161, (CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES), 1, 7, b'\x00\x1e\x00\xd4\x00\x00\x5b'), + (0x283, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 0, 3, b'\x00\x00\x00\x00\x00\x00\x8c'), + (0x2E6, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX), 0, 3, b'\xff\xf8\x00\x08\x7f\xe0\x00\x4e'), + (0x2E7, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX), 0, 3, b'\xa8\x9c\x31\x9c\x00\x00\x00\x02'), + (0x33E, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX), 0, 20, b'\x0f\xff\x26\x40\x00\x1f\x00'), + (0x344, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 0, 5, b'\x00\x00\x01\x00\x00\x00\x00\x50'), + (0x365, (CAR.TOYOTA_PRIUS, CAR.LEXUS_NX, CAR.TOYOTA_HIGHLANDER), 0, 20, b'\x00\x00\x00\x80\x03\x00\x08'), + (0x365, (CAR.TOYOTA_RAV4, CAR.TOYOTA_RAV4H, CAR.TOYOTA_COROLLA, CAR.TOYOTA_AVALON, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.LEXUS_RX, + CAR.TOYOTA_PRIUS_V), 0, 20, b'\x00\x00\x00\x80\xfc\x00\x08'), + (0x366, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_HIGHLANDER), 0, 20, b'\x00\x00\x4d\x82\x40\x02\x00'), + (0x366, (CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_AVALON, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 0, 20, b'\x00\x72\x07\xff\x09\xfe\x00'), - (0x470, (CAR.PRIUS, CAR.LEXUS_RX), 1, 100, b'\x00\x00\x02\x7a'), - (0x470, (CAR.HIGHLANDER, CAR.RAV4H, CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 1, 100, b'\x00\x00\x01\x79'), - (0x4CB, (CAR.PRIUS, CAR.RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.AVALON, - CAR.SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.PRIUS_V), 0, 100, b'\x0c\x00\x00\x00\x00\x00\x00\x00'), + (0x470, (CAR.TOYOTA_PRIUS, CAR.LEXUS_RX), 1, 100, b'\x00\x00\x02\x7a'), + (0x470, (CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_RAV4H, CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 1, 100, b'\x00\x00\x01\x79'), + (0x4CB, (CAR.TOYOTA_PRIUS, CAR.TOYOTA_RAV4H, CAR.LEXUS_RX, CAR.LEXUS_NX, CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_AVALON, + CAR.TOYOTA_SIENNA, CAR.LEXUS_CTH, CAR.LEXUS_ES, CAR.TOYOTA_PRIUS_V), 0, 100, b'\x0c\x00\x00\x00\x00\x00\x00\x00'), ] @@ -300,7 +419,7 @@ def get_platform_codes(fw_versions: list[bytes]) -> dict[bytes, set[bytes]]: return dict(codes) -def match_fw_to_car_fuzzy(live_fw_versions, offline_fw_versions) -> set[str]: +def match_fw_to_car_fuzzy(live_fw_versions, vin, offline_fw_versions) -> set[str]: candidates = set() for candidate, fws in offline_fw_versions.items(): @@ -379,62 +498,56 @@ FW_QUERY_CONFIG = FwQueryConfig( Request( [StdQueries.SHORT_TESTER_PRESENT_REQUEST, TOYOTA_VERSION_REQUEST_KWP], [StdQueries.SHORT_TESTER_PRESENT_RESPONSE, TOYOTA_VERSION_RESPONSE_KWP], - whitelist_ecus=[Ecu.fwdCamera, Ecu.fwdRadar, Ecu.dsu, Ecu.abs, Ecu.eps, Ecu.epb, Ecu.telematics, - Ecu.srs, Ecu.combinationMeter, Ecu.transmission, Ecu.gateway, Ecu.hvac], + whitelist_ecus=[Ecu.fwdCamera, Ecu.fwdRadar, Ecu.dsu, Ecu.abs, Ecu.eps, Ecu.srs, Ecu.transmission, Ecu.hvac], bus=0, ), Request( [StdQueries.SHORT_TESTER_PRESENT_REQUEST, StdQueries.OBD_VERSION_REQUEST], [StdQueries.SHORT_TESTER_PRESENT_RESPONSE, StdQueries.OBD_VERSION_RESPONSE], - whitelist_ecus=[Ecu.engine, Ecu.epb, Ecu.telematics, Ecu.hybrid, Ecu.srs, Ecu.combinationMeter, Ecu.transmission, - Ecu.gateway, Ecu.hvac], + whitelist_ecus=[Ecu.engine, Ecu.hybrid, Ecu.srs, Ecu.transmission, Ecu.hvac], bus=0, ), Request( [StdQueries.TESTER_PRESENT_REQUEST, StdQueries.DEFAULT_DIAGNOSTIC_REQUEST, StdQueries.EXTENDED_DIAGNOSTIC_REQUEST, StdQueries.UDS_VERSION_REQUEST], [StdQueries.TESTER_PRESENT_RESPONSE, StdQueries.DEFAULT_DIAGNOSTIC_RESPONSE, StdQueries.EXTENDED_DIAGNOSTIC_RESPONSE, StdQueries.UDS_VERSION_RESPONSE], - whitelist_ecus=[Ecu.engine, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.abs, Ecu.eps, Ecu.epb, Ecu.telematics, - Ecu.hybrid, Ecu.srs, Ecu.combinationMeter, Ecu.transmission, Ecu.gateway, Ecu.hvac], + whitelist_ecus=[Ecu.engine, Ecu.fwdRadar, Ecu.fwdCamera, Ecu.abs, Ecu.eps, + Ecu.hybrid, Ecu.srs, Ecu.transmission, Ecu.hvac], bus=0, ), ], non_essential_ecus={ # FIXME: On some models, abs can sometimes be missing - Ecu.abs: [CAR.RAV4, CAR.COROLLA, CAR.HIGHLANDER, CAR.SIENNA, CAR.LEXUS_IS, CAR.ALPHARD_TSS2], + Ecu.abs: [CAR.TOYOTA_RAV4, CAR.TOYOTA_COROLLA, CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_SIENNA, CAR.LEXUS_IS, CAR.TOYOTA_ALPHARD_TSS2], # On some models, the engine can show on two different addresses - Ecu.engine: [CAR.HIGHLANDER, CAR.CAMRY, CAR.COROLLA_TSS2, CAR.CHR, CAR.CHR_TSS2, CAR.LEXUS_IS, - CAR.LEXUS_RC, CAR.LEXUS_NX, CAR.LEXUS_NX_TSS2, CAR.LEXUS_RX, CAR.LEXUS_RX_TSS2], + Ecu.engine: [CAR.TOYOTA_HIGHLANDER, CAR.TOYOTA_CAMRY, CAR.TOYOTA_COROLLA_TSS2, CAR.TOYOTA_CHR, CAR.TOYOTA_CHR_TSS2, CAR.LEXUS_IS, + CAR.LEXUS_IS_TSS2, CAR.LEXUS_RC, CAR.LEXUS_NX, CAR.LEXUS_NX_TSS2, CAR.LEXUS_RX, CAR.LEXUS_RX_TSS2], }, extra_ecus=[ # All known ECUs on a late-model Toyota vehicle not queried here: # Responds to UDS: + # - Combination Meter (0x7c0) # - HV Battery (0x713, 0x747) # - Motor Generator (0x716, 0x724) # - 2nd ABS "Brake/EPB" (0x730) + # - Electronic Parking Brake ((0x750, 0x2c)) + # - Telematics ((0x750, 0xc7)) # Responds to KWP (0x1a8801): # - Steering Angle Sensor (0x7b3) # - EPS/EMPS (0x7a0, 0x7a1) + # - 2nd SRS Airbag (0x784) + # - Central Gateway ((0x750, 0x5f)) + # - Telematics ((0x750, 0xc7)) # Responds to KWP (0x1a8881): # - Body Control Module ((0x750, 0x40)) + # - Telematics ((0x750, 0xc7)) # Hybrid control computer can be on 0x7e2 (KWP) or 0x7d2 (UDS) depending on platform (Ecu.hybrid, 0x7e2, None), # Hybrid Control Assembly & Computer - # TODO: if these duplicate ECUs always exist together, remove one (Ecu.srs, 0x780, None), # SRS Airbag - (Ecu.srs, 0x784, None), # SRS Airbag 2 - # Likely only exists on cars where EPB isn't standard (e.g. Camry, Avalon (/Hybrid)) - # On some cars, EPB is controlled by the ABS module - (Ecu.epb, 0x750, 0x2c), # Electronic Parking Brake - # This isn't accessible on all cars - (Ecu.gateway, 0x750, 0x5f), - # On some cars, this only responds to b'\x1a\x88\x81', which is reflected by the b'\x1a\x88\x00' query - (Ecu.telematics, 0x750, 0xc7), # Transmission is combined with engine on some platforms, such as TSS-P RAV4 (Ecu.transmission, 0x701, None), # A few platforms have a tester present response on this address, add to log (Ecu.transmission, 0x7e1, None), - # On some cars, this only responds to b'\x1a\x88\x80' - (Ecu.combinationMeter, 0x7c0, None), (Ecu.hvac, 0x7c4, None), ], match_fw_to_car_fuzzy=match_fw_to_car_fuzzy, @@ -443,62 +556,24 @@ FW_QUERY_CONFIG = FwQueryConfig( STEER_THRESHOLD = 100 -DBC = { - CAR.RAV4H: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.RAV4: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.PRIUS: dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - CAR.PRIUS_V: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.COROLLA: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.LEXUS_LC_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.LEXUS_RC: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_RX: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_RX_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.CHR: dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - CAR.CHR_TSS2: dbc_dict('toyota_nodsu_pt_generated', None), - CAR.CAMRY: dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - CAR.CAMRY_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.HIGHLANDER: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.HIGHLANDER_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.AVALON: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.AVALON_2019: dbc_dict('toyota_nodsu_pt_generated', 'toyota_adas'), - CAR.AVALON_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.RAV4_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.RAV4_TSS2_2022: dbc_dict('toyota_nodsu_pt_generated', None), - CAR.RAV4_TSS2_2023: dbc_dict('toyota_nodsu_pt_generated', None), - CAR.COROLLA_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.LEXUS_ES: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.LEXUS_ES_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.SIENNA: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_IS: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_IS_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.LEXUS_CTH: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), - CAR.LEXUS_NX: dbc_dict('toyota_tnga_k_pt_generated', 'toyota_adas'), - CAR.LEXUS_NX_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.PRIUS_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.MIRAI: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.ALPHARD_TSS2: dbc_dict('toyota_nodsu_pt_generated', 'toyota_tss2_adas'), - CAR.LEXUS_GS_F: dbc_dict('toyota_new_mc_pt_generated', 'toyota_adas'), -} - # These cars have non-standard EPS torque scale factors. All others are 73 -EPS_SCALE = defaultdict(lambda: 73, {CAR.PRIUS: 66, CAR.COROLLA: 88, CAR.LEXUS_IS: 77, CAR.LEXUS_RC: 77, CAR.LEXUS_CTH: 100, CAR.PRIUS_V: 100}) +EPS_SCALE = defaultdict(lambda: 73, + {CAR.TOYOTA_PRIUS: 66, CAR.TOYOTA_COROLLA: 88, CAR.LEXUS_IS: 77, CAR.LEXUS_RC: 77, CAR.LEXUS_CTH: 100, CAR.TOYOTA_PRIUS_V: 100}) # Toyota/Lexus Safety Sense 2.0 and 2.5 -TSS2_CAR = {CAR.RAV4_TSS2, CAR.RAV4_TSS2_2022, CAR.RAV4_TSS2_2023, CAR.COROLLA_TSS2, CAR.LEXUS_ES_TSS2, - CAR.LEXUS_RX_TSS2, CAR.HIGHLANDER_TSS2, CAR.PRIUS_TSS2, CAR.CAMRY_TSS2, CAR.LEXUS_IS_TSS2, - CAR.MIRAI, CAR.LEXUS_NX_TSS2, CAR.LEXUS_LC_TSS2, CAR.ALPHARD_TSS2, CAR.AVALON_TSS2, - CAR.CHR_TSS2} +TSS2_CAR = CAR.with_flags(ToyotaFlags.TSS2) -NO_DSU_CAR = TSS2_CAR | {CAR.CHR, CAR.CAMRY} +NO_DSU_CAR = CAR.with_flags(ToyotaFlags.NO_DSU) # the DSU uses the AEB message for longitudinal on these cars -UNSUPPORTED_DSU_CAR = {CAR.LEXUS_IS, CAR.LEXUS_RC, CAR.LEXUS_GS_F} +UNSUPPORTED_DSU_CAR = CAR.with_flags(ToyotaFlags.UNSUPPORTED_DSU) # these cars have a radar which sends ACC messages instead of the camera -RADAR_ACC_CAR = {CAR.RAV4_TSS2_2022, CAR.RAV4_TSS2_2023, CAR.CHR_TSS2} +RADAR_ACC_CAR = CAR.with_flags(ToyotaFlags.RADAR_ACC) -# these cars use the Lane Tracing Assist (LTA) message for lateral control -ANGLE_CONTROL_CAR = {CAR.RAV4_TSS2_2023} +ANGLE_CONTROL_CAR = CAR.with_flags(ToyotaFlags.ANGLE_CONTROL) # no resume button press required -NO_STOP_TIMER_CAR = TSS2_CAR | {CAR.PRIUS_V, CAR.RAV4H, CAR.HIGHLANDER, CAR.SIENNA} +NO_STOP_TIMER_CAR = CAR.with_flags(ToyotaFlags.NO_STOP_TIMER) + +DBC = CAR.create_dbc_map() diff --git a/selfdrive/car/values.py b/selfdrive/car/values.py index 3e27870915..bf5d378ab4 100644 --- a/selfdrive/car/values.py +++ b/selfdrive/car/values.py @@ -1,4 +1,4 @@ -from typing import cast +from typing import get_args from openpilot.selfdrive.car.body.values import CAR as BODY from openpilot.selfdrive.car.chrysler.values import CAR as CHRYSLER from openpilot.selfdrive.car.ford.values import CAR as FORD @@ -6,13 +6,14 @@ from openpilot.selfdrive.car.gm.values import CAR as GM from openpilot.selfdrive.car.honda.values import CAR as HONDA from openpilot.selfdrive.car.hyundai.values import CAR as HYUNDAI from openpilot.selfdrive.car.mazda.values import CAR as MAZDA +from openpilot.selfdrive.car.mock.values import CAR as MOCK from openpilot.selfdrive.car.nissan.values import CAR as NISSAN from openpilot.selfdrive.car.subaru.values import CAR as SUBARU from openpilot.selfdrive.car.tesla.values import CAR as TESLA from openpilot.selfdrive.car.toyota.values import CAR as TOYOTA from openpilot.selfdrive.car.volkswagen.values import CAR as VOLKSWAGEN -Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | NISSAN | SUBARU | TESLA | TOYOTA | VOLKSWAGEN -BRANDS = [BODY, CHRYSLER, FORD, GM, HONDA, HYUNDAI, MAZDA, NISSAN, SUBARU, TESLA, TOYOTA, VOLKSWAGEN] +Platform = BODY | CHRYSLER | FORD | GM | HONDA | HYUNDAI | MAZDA | MOCK | NISSAN | SUBARU | TESLA | TOYOTA | VOLKSWAGEN +BRANDS = get_args(Platform) -PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in cast(list[Platform], brand)} +PLATFORMS: dict[str, Platform] = {str(platform): platform for brand in BRANDS for platform in brand} diff --git a/selfdrive/car/vin.py b/selfdrive/car/vin.py index e668c35f7d..e8c9c58042 100755 --- a/selfdrive/car/vin.py +++ b/selfdrive/car/vin.py @@ -23,6 +23,7 @@ def get_vin(logcan, sendcan, buses, timeout=0.1, retry=2, debug=False): (StdQueries.OBD_VIN_REQUEST, StdQueries.OBD_VIN_RESPONSE, (0, 1), STANDARD_VIN_ADDRS, FUNCTIONAL_ADDRS, 0x8), (StdQueries.GM_VIN_REQUEST, StdQueries.GM_VIN_RESPONSE, (0,), [0x24b], None, 0x400), # Bolt fwdCamera (StdQueries.KWP_VIN_REQUEST, StdQueries.KWP_VIN_RESPONSE, (0,), [0x797], None, 0x3), # Nissan Leaf VCM + (StdQueries.UDS_VIN_REQUEST, StdQueries.UDS_VIN_RESPONSE, (0,), [0x74f], None, 0x6a), # Volkswagen fwdCamera ): if bus not in valid_buses: continue diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index 45686060a3..4f7657172a 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -6,8 +6,9 @@ from openpilot.common.conversions import Conversions as CV from openpilot.common.params import Params from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.car import apply_driver_steer_torque_limits +from openpilot.selfdrive.car.interfaces import CarControllerBase from openpilot.selfdrive.car.volkswagen import mqbcan, pqcan -from openpilot.selfdrive.car.volkswagen.values import CANBUS, PQ_CARS, CarControllerParams, VolkswagenFlags +from openpilot.selfdrive.car.volkswagen.values import CANBUS, CarControllerParams, VolkswagenFlags from openpilot.selfdrive.controls.lib.drive_helpers import VOLKSWAGEN_V_CRUISE_MIN VisualAlert = car.CarControl.HUDControl.VisualAlert @@ -15,12 +16,13 @@ LongCtrlState = car.CarControl.Actuators.LongControlState ButtonType = car.CarState.ButtonEvent.Type -class CarController: +class CarController(CarControllerBase): def __init__(self, dbc_name, CP, VM): self.CP = CP self.CCP = CarControllerParams(CP) - self.CCS = pqcan if CP.carFingerprint in PQ_CARS else mqbcan + self.CCS = pqcan if CP.flags & VolkswagenFlags.PQ else mqbcan self.packer_pt = CANPacker(dbc_name) + self.ext_bus = CANBUS.pt if CP.networkLocation == car.CarParams.NetworkLocation.fwdCamera else CANBUS.cam self.apply_steer_last = 0 self.gra_acc_counter_last = None @@ -64,7 +66,7 @@ class CarController: self.acc_type = -1 self.send_count = 0 - def update(self, CC, CS, ext_bus, now_nanos): + def update(self, CC, CS, now_nanos): if not self.CP.pcmCruiseSpeed: self.sm.update(0) @@ -159,7 +161,7 @@ class CarController: hud_alert = 0 if hud_control.visualAlert in (VisualAlert.steerRequired, VisualAlert.ldw): hud_alert = self.CCP.LDW_MESSAGES["laneAssistTakeOver"] - can_sends.append(self.CCS.create_lka_hud_control(self.packer_pt, CANBUS.pt, CS.ldw_stock_values, CC.enabled, CC.latActive, + can_sends.append(self.CCS.create_lka_hud_control(self.packer_pt, CANBUS.pt, CS.ldw_stock_values, CC.latActive, CS.out.steeringPressed, hud_alert, hud_control)) if self.frame % self.CCP.ACC_HUD_STEP == 0 and self.CP.openpilotLongitudinalControl: @@ -170,13 +172,13 @@ class CarController: # FIXME: follow the recent displayed-speed updates, also use mph_kmh toggle to fix display rounding problem? set_speed = hud_control.setSpeed * CV.MS_TO_KPH can_sends.append(self.CCS.create_acc_hud_control(self.packer_pt, CANBUS.pt, acc_hud_status, set_speed, - lead_distance, CS.gac_tr_cluster)) + lead_distance, hud_control.leadDistanceBars)) # **** Stock ACC Button Controls **************************************** # gra_send_ready = self.CP.pcmCruise and CS.gra_stock_values["COUNTER"] != self.gra_acc_counter_last if gra_send_ready and (CC.cruiseControl.cancel or CC.cruiseControl.resume): - can_sends.append(self.CCS.create_acc_buttons_control(self.packer_pt, ext_bus, CS.gra_stock_values, + can_sends.append(self.CCS.create_acc_buttons_control(self.packer_pt, self.ext_bus, CS.gra_stock_values, cancel=CC.cruiseControl.cancel, resume=CC.cruiseControl.resume)) if not (CC.cruiseControl.cancel or CC.cruiseControl.resume) and CS.out.cruiseState.enabled: if not self.CP.pcmCruiseSpeed: @@ -193,7 +195,7 @@ class CarController: elif self.acc_type == 1: self.cruise_button = 3 if self.cruise_button == 1 else 4 # resume, set if self.frame % self.CCP.BTN_STEP == 0: - can_sends.append(self.CCS.create_acc_buttons_control(self.packer_pt, ext_bus, CS.gra_stock_values, frame=(self.frame // self.CCP.BTN_STEP), + can_sends.append(self.CCS.create_acc_buttons_control(self.packer_pt, CS.gra_stock_values, frame=(self.frame // self.CCP.BTN_STEP), buttons=self.cruise_button, custom_stock_long=True)) self.send_count += 1 else: @@ -207,7 +209,7 @@ class CarController: self.gra_acc_counter_last = CS.gra_stock_values["COUNTER"] self.v_set_dis_prev = self.v_set_dis self.frame += 1 - return new_actuators, can_sends, self.eps_timer_soft_disable_alert + return new_actuators, can_sends # multikyd methods, sunnyhaibin logic def get_cruise_buttons_status(self, CS): diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index 2de49d1147..5fef307f8a 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -3,13 +3,15 @@ from cereal import car from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car.interfaces import CarStateBase from opendbc.can.parser import CANParser -from openpilot.selfdrive.car.volkswagen.values import DBC, CANBUS, PQ_CARS, NetworkLocation, TransmissionType, GearShifter, \ +from openpilot.selfdrive.car.volkswagen.values import DBC, CANBUS, NetworkLocation, TransmissionType, GearShifter, \ CarControllerParams, VolkswagenFlags, BUTTON_STATES, VolkswagenFlagsSP class CarState(CarStateBase): def __init__(self, CP): super().__init__(CP) + self.frame = 0 + self.eps_init_complete = False self.CCP = CarControllerParams(CP) self.button_states = {button.event_type: False for button in self.CCP.BUTTONS} self.esp_hold_confirmation = False @@ -33,7 +35,7 @@ class CarState(CarStateBase): return button_events def update(self, pt_cp, cam_cp, ext_cp, trans_type): - if self.CP.carFingerprint in PQ_CARS: + if self.CP.flags & VolkswagenFlags.PQ: return self.update_pq(pt_cp, cam_cp, ext_cp, trans_type) ret = car.CarState.new_message() @@ -53,18 +55,14 @@ class CarState(CarStateBase): ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) ret.standstill = ret.vEgoRaw == 0 - # Update steering angle, rate, yaw rate, and driver input torque. VW send - # the sign/direction in a separate signal so they must be recombined. + # Update EPS position and state info. For signed values, VW sends the sign in a separate signal. ret.steeringAngleDeg = pt_cp.vl["LWI_01"]["LWI_Lenkradwinkel"] * (1, -1)[int(pt_cp.vl["LWI_01"]["LWI_VZ_Lenkradwinkel"])] ret.steeringRateDeg = pt_cp.vl["LWI_01"]["LWI_Lenkradw_Geschw"] * (1, -1)[int(pt_cp.vl["LWI_01"]["LWI_VZ_Lenkradw_Geschw"])] ret.steeringTorque = pt_cp.vl["LH_EPS_03"]["EPS_Lenkmoment"] * (1, -1)[int(pt_cp.vl["LH_EPS_03"]["EPS_VZ_Lenkmoment"])] ret.steeringPressed = abs(ret.steeringTorque) > self.CCP.STEER_DRIVER_ALLOWANCE ret.yawRate = pt_cp.vl["ESP_02"]["ESP_Gierrate"] * (1, -1)[int(pt_cp.vl["ESP_02"]["ESP_VZ_Gierrate"])] * CV.DEG_TO_RAD - - # Verify EPS readiness to accept steering commands hca_status = self.CCP.hca_status_values.get(pt_cp.vl["LH_EPS_03"]["EPS_HCA_Status"]) - ret.steerFaultPermanent = hca_status in ("DISABLED", "FAULT") - ret.steerFaultTemporary = hca_status in ("INITIALIZING", "REJECTED") + ret.steerFaultTemporary, ret.steerFaultPermanent = self.update_hca_state(hca_status) # VW Emergency Assist status tracking and mitigation self.eps_stock_values = pt_cp.vl["LH_EPS_03"] @@ -126,21 +124,24 @@ class CarState(CarStateBase): if not self.CP.spFlags & VolkswagenFlagsSP.SP_CC_ONLY_NO_RADAR or self.CP.spFlags & VolkswagenFlagsSP.SP_CC_ONLY: _acc_type = 0 if self.CP.spFlags & VolkswagenFlagsSP.SP_CC_ONLY else ext_cp.vl["ACC_06"]["ACC_Typ"] self.acc_type = _acc_type - if pt_cp.vl["TSK_06"]["TSK_Status"] == 2: - # ACC okay and enabled, but not currently engaged - ret.cruiseState.available = True - ret.cruiseState.enabled = False - elif pt_cp.vl["TSK_06"]["TSK_Status"] in (3, 4, 5): - # ACC okay and enabled, currently regulating speed (3) or driver accel override (4) or brake only (5) - ret.cruiseState.available = True - ret.cruiseState.enabled = True + + # ACC okay but disabled (1), ACC ready (2), a radar visibility or other fault/disruption (6 or 7) + # currently regulating speed (3), driver accel override (4), brake only (5) + ret.cruiseState.available = pt_cp.vl["TSK_06"]["TSK_Status"] in (2, 3, 4, 5) + ret.cruiseState.enabled = pt_cp.vl["TSK_06"]["TSK_Status"] in (3, 4, 5) + + if self.CP.pcmCruise: + # Cruise Control mode; check for distance UI setting from the radar. + # ECM does not manage this, so do not need to check for openpilot longitudinal + ret.cruiseState.nonAdaptive = ext_cp.vl["ACC_02"]["ACC_Gesetzte_Zeitluecke"] == 0 else: - # ACC okay but disabled (1), or a radar visibility or other fault/disruption (6 or 7) - ret.cruiseState.available = False - ret.cruiseState.enabled = False + # Speed limiter mode; ECM faults if we command ACC while not pcmCruise + ret.cruiseState.nonAdaptive = bool(pt_cp.vl["TSK_06"]["TSK_Limiter_ausgewaehlt"]) + + ret.accFaulted = pt_cp.vl["TSK_06"]["TSK_Status"] in (6, 7) + self.esp_hold_confirmation = bool(pt_cp.vl["ESP_21"]["ESP_Haltebestaetigung"]) ret.cruiseState.standstill = self.CP.pcmCruise and self.esp_hold_confirmation - ret.accFaulted = pt_cp.vl["TSK_06"]["TSK_Status"] in (6, 7) # Update ACC setpoint. When the setpoint is zero or there's an error, the # radar sends a set-speed of ~90.69 m/s / 203mph. @@ -162,7 +163,6 @@ class CarState(CarStateBase): ret.rightBlinker = ret.rightBlinkerOn = bool(pt_cp.vl["Blinkmodi_02"]["Comfort_Signal_Right"]) ret.buttonEvents = self.create_button_events(pt_cp, self.CCP.BUTTONS) self.gra_stock_values = pt_cp.vl["GRA_ACC_01"] - self.gap_dist_button = pt_cp.vl["GRA_ACC_01"]["GRA_Verstellung_Zeitluecke"] # Additional safety checks performed in CarInterface. ret.espDisabled = pt_cp.vl["ESP_21"]["ESP_Tastung_passiv"] != 0 @@ -170,6 +170,7 @@ class CarState(CarStateBase): # Digital instrument clusters expect the ACC HUD lead car distance to be scaled differently self.upscale_lead_car_signal = bool(pt_cp.vl["Kombi_03"]["KBI_Variante"]) + self.frame += 1 return ret def update_pq(self, pt_cp, cam_cp, ext_cp, trans_type): @@ -191,18 +192,14 @@ class CarState(CarStateBase): ret.vEgo, ret.aEgo = self.update_speed_kf(ret.vEgoRaw) ret.standstill = ret.vEgoRaw == 0 - # Update steering angle, rate, yaw rate, and driver input torque. VW send - # the sign/direction in a separate signal so they must be recombined. + # Update EPS position and state info. For signed values, VW sends the sign in a separate signal. ret.steeringAngleDeg = pt_cp.vl["Lenkhilfe_3"]["LH3_BLW"] * (1, -1)[int(pt_cp.vl["Lenkhilfe_3"]["LH3_BLWSign"])] ret.steeringRateDeg = pt_cp.vl["Lenkwinkel_1"]["Lenkradwinkel_Geschwindigkeit"] * (1, -1)[int(pt_cp.vl["Lenkwinkel_1"]["Lenkradwinkel_Geschwindigkeit_S"])] ret.steeringTorque = pt_cp.vl["Lenkhilfe_3"]["LH3_LM"] * (1, -1)[int(pt_cp.vl["Lenkhilfe_3"]["LH3_LMSign"])] ret.steeringPressed = abs(ret.steeringTorque) > self.CCP.STEER_DRIVER_ALLOWANCE ret.yawRate = pt_cp.vl["Bremse_5"]["Giergeschwindigkeit"] * (1, -1)[int(pt_cp.vl["Bremse_5"]["Vorzeichen_der_Giergeschwindigk"])] * CV.DEG_TO_RAD - - # Verify EPS readiness to accept steering commands hca_status = self.CCP.hca_status_values.get(pt_cp.vl["Lenkhilfe_2"]["LH2_Sta_HCA"]) - ret.steerFaultPermanent = hca_status in ("DISABLED", "FAULT") - ret.steerFaultTemporary = hca_status in ("INITIALIZING", "REJECTED") + ret.steerFaultTemporary, ret.steerFaultPermanent = self.update_hca_state(hca_status) # Update gas, brakes, and gearshift. ret.gas = pt_cp.vl["Motor_3"]["Fahrpedal_Rohsignal"] / 100.0 @@ -281,16 +278,24 @@ class CarState(CarStateBase): pt_cp.vl["Gate_Komf_1"]["GK1_Blinker_re"]) ret.buttonEvents = self.create_button_events(pt_cp, self.CCP.BUTTONS) self.gra_stock_values = pt_cp.vl["GRA_Neu"] - self.gap_dist_button = pt_cp.vl["GRA_Neu"]["GRA_Zeitluecke"] # Additional safety checks performed in CarInterface. ret.espDisabled = bool(pt_cp.vl["Bremse_1"]["ESP_Passiv_getastet"]) + self.frame += 1 return ret + def update_hca_state(self, hca_status): + # Treat INITIALIZING and FAULT as temporary for worst likely EPS recovery time, for cars without factory Lane Assist + # DISABLED means the EPS hasn't been configured to support Lane Assist + self.eps_init_complete = self.eps_init_complete or (hca_status in ("DISABLED", "READY", "ACTIVE") or self.frame > 600) + perm_fault = hca_status == "DISABLED" or (self.eps_init_complete and hca_status in ("INITIALIZING", "FAULT")) + temp_fault = hca_status == "REJECTED" or not self.eps_init_complete + return temp_fault, perm_fault + @staticmethod def get_can_parser(CP): - if CP.carFingerprint in PQ_CARS: + if CP.flags & VolkswagenFlags.PQ: return CarState.get_can_parser_pq(CP) messages = [ @@ -330,7 +335,7 @@ class CarState(CarStateBase): @staticmethod def get_cam_can_parser(CP): - if CP.carFingerprint in PQ_CARS: + if CP.flags & VolkswagenFlags.PQ: return CarState.get_cam_can_parser_pq(CP) messages = [] diff --git a/selfdrive/car/volkswagen/fingerprints.py b/selfdrive/car/volkswagen/fingerprints.py index eab2bc0090..e20fa4fc1c 100644 --- a/selfdrive/car/volkswagen/fingerprints.py +++ b/selfdrive/car/volkswagen/fingerprints.py @@ -7,7 +7,7 @@ Ecu = car.CarParams.Ecu FW_VERSIONS = { - CAR.ARTEON_MK1: { + CAR.VOLKSWAGEN_ARTEON_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x873G0906259AH\xf1\x890001', b'\xf1\x873G0906259F \xf1\x890004', @@ -49,7 +49,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572R \xf1\x890771', ], }, - CAR.ATLAS_MK1: { + CAR.VOLKSWAGEN_ATLAS_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8703H906026AA\xf1\x899970', b'\xf1\x8703H906026AG\xf1\x899973', @@ -60,6 +60,7 @@ FW_VERSIONS = { b'\xf1\x8703H906026F \xf1\x896696', b'\xf1\x8703H906026F \xf1\x899970', b'\xf1\x8703H906026J \xf1\x896026', + b'\xf1\x8703H906026J \xf1\x899970', b'\xf1\x8703H906026J \xf1\x899971', b'\xf1\x8703H906026S \xf1\x896693', b'\xf1\x8703H906026S \xf1\x899970', @@ -80,6 +81,7 @@ FW_VERSIONS = { b'\xf1\x873Q0959655BN\xf1\x890713\xf1\x82\x0e2214152212001105141122052900', b'\xf1\x873Q0959655DB\xf1\x890720\xf1\x82\x0e1114151112001105111122052900', b'\xf1\x873Q0959655DB\xf1\x890720\xf1\x82\x0e2214152212001105141122052900', + b'\xf1\x873Q0959655DM\xf1\x890732\xf1\x82\x0e1114151112001105111122052J00', b'\xf1\x873Q0959655DM\xf1\x890732\xf1\x82\x0e1114151112001105161122052J00', b'\xf1\x873Q0959655DM\xf1\x890732\xf1\x82\x0e1115151112001105171122052J00', ], @@ -87,6 +89,7 @@ FW_VERSIONS = { b'\xf1\x873QF909144B \xf1\x891582\xf1\x82\x0571B60924A1', b'\xf1\x873QF909144B \xf1\x891582\xf1\x82\x0571B6G920A1', b'\xf1\x873QF909144B \xf1\x891582\xf1\x82\x0571B6M921A1', + b'\xf1\x873QF909144B \xf1\x891582\xf1\x82\x0571B6N920A1', b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820528B6080105', b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820528B6090105', ], @@ -97,9 +100,21 @@ FW_VERSIONS = { b'\xf1\x875Q0907572H \xf1\x890620', b'\xf1\x875Q0907572J \xf1\x890654', b'\xf1\x875Q0907572P \xf1\x890682', + b'\xf1\x875Q0907572S \xf1\x890780', ], }, - CAR.CRAFTER_MK2: { + CAR.VOLKSWAGEN_CADDY_MK3: { + (Ecu.engine, 0x7e0, None): [ + b'\xf1\x8704E906027T \xf1\x892363', + ], + (Ecu.srs, 0x715, None): [ + b'\xf1\x872K5959655E \xf1\x890018\xf1\x82\x05000P037605', + ], + (Ecu.fwdRadar, 0x757, None): [ + b'\xf1\x877N0907572C \xf1\x890211\xf1\x82\x0155', + ], + }, + CAR.VOLKSWAGEN_CRAFTER_MK2: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704L906056BP\xf1\x894729', b'\xf1\x8704L906056EK\xf1\x896391', @@ -121,7 +136,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572M \xf1\x890233', ], }, - CAR.GOLF_MK7: { + CAR.VOLKSWAGEN_GOLF_MK7: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906016A \xf1\x897697', b'\xf1\x8704E906016AD\xf1\x895758', @@ -148,6 +163,7 @@ FW_VERSIONS = { b'\xf1\x8704L906056HE\xf1\x893758', b'\xf1\x8704L906056HN\xf1\x896590', b'\xf1\x8704L906056HT\xf1\x896591', + b'\xf1\x8704L997022N \xf1\x899459', b'\xf1\x870EA906016A \xf1\x898343', b'\xf1\x870EA906016E \xf1\x894219', b'\xf1\x870EA906016F \xf1\x894238', @@ -164,6 +180,7 @@ FW_VERSIONS = { b'\xf1\x875G0906259T \xf1\x890003', b'\xf1\x878V0906259H \xf1\x890002', b'\xf1\x878V0906259J \xf1\x890003', + b'\xf1\x878V0906259J \xf1\x890103', b'\xf1\x878V0906259K \xf1\x890001', b'\xf1\x878V0906259K \xf1\x890003', b'\xf1\x878V0906259P \xf1\x890001', @@ -198,17 +215,20 @@ FW_VERSIONS = { b'\xf1\x870D9300012 \xf1\x895046', b'\xf1\x870D9300014M \xf1\x895004', b'\xf1\x870D9300014Q \xf1\x895006', + b'\xf1\x870D9300018 \xf1\x895201', b'\xf1\x870D9300020J \xf1\x894902', b'\xf1\x870D9300020Q \xf1\x895201', b'\xf1\x870D9300020S \xf1\x895201', b'\xf1\x870D9300040A \xf1\x893613', b'\xf1\x870D9300040S \xf1\x894311', b'\xf1\x870D9300041H \xf1\x895220', + b'\xf1\x870D9300041N \xf1\x894512', b'\xf1\x870D9300041P \xf1\x894507', b'\xf1\x870DD300045K \xf1\x891120', b'\xf1\x870DD300046F \xf1\x891601', b'\xf1\x870GC300012A \xf1\x891401', b'\xf1\x870GC300012A \xf1\x891403', + b'\xf1\x870GC300012M \xf1\x892301', b'\xf1\x870GC300014B \xf1\x892401', b'\xf1\x870GC300014B \xf1\x892403', b'\xf1\x870GC300014B \xf1\x892405', @@ -227,6 +247,7 @@ FW_VERSIONS = { b'\xf1\x875Q0959655AR\xf1\x890317\xf1\x82\x13141500111233003142114A2131219333313100', b'\xf1\x875Q0959655BH\xf1\x890336\xf1\x82\x1314160011123300314211012230229333423100', b'\xf1\x875Q0959655BH\xf1\x890336\xf1\x82\x1314160011123300314211012230229333463100', + b'\xf1\x875Q0959655BJ\xf1\x890339\xf1\x82\x13141600111233003142115A2232229333463100', b'\xf1\x875Q0959655BS\xf1\x890403\xf1\x82\x1314160011123300314240012250229333463100', b'\xf1\x875Q0959655BT\xf1\x890403\xf1\x82\x13141600111233003142404A2251229333463100', b'\xf1\x875Q0959655BT\xf1\x890403\xf1\x82\x13141600111233003142404A2252229333463100', @@ -235,6 +256,7 @@ FW_VERSIONS = { b'\xf1\x875Q0959655C \xf1\x890361\xf1\x82\x111413001112120004110415121610169112', b'\xf1\x875Q0959655CA\xf1\x890403\xf1\x82\x1314160011123300314240012250229333463100', b'\xf1\x875Q0959655D \xf1\x890388\xf1\x82\x111413001113120006110417121A101A9113', + b'\xf1\x875Q0959655J \xf1\x890825\xf1\x82\x13271112111312--071104171825102591131211', b'\xf1\x875Q0959655J \xf1\x890830\xf1\x82\x13271112111312--071104171825102591131211', b'\xf1\x875Q0959655J \xf1\x890830\xf1\x82\x13271212111312--071104171838103891131211', b'\xf1\x875Q0959655J \xf1\x890830\xf1\x82\x13272512111312--07110417182C102C91131211', @@ -285,6 +307,7 @@ FW_VERSIONS = { b'\xf1\x875QD909144B \xf1\x891072\xf1\x82\x0521A00507A1', b'\xf1\x875QM909144A \xf1\x891072\xf1\x82\x0521A20B03A1', b'\xf1\x875QM909144B \xf1\x891081\xf1\x82\x0521A00442A1', + b'\xf1\x875QM909144B \xf1\x891081\xf1\x82\x0521A00642A1', b'\xf1\x875QN909144A \xf1\x895081\xf1\x82\x0571A01A16A1', b'\xf1\x875QN909144A \xf1\x895081\xf1\x82\x0571A01A17A1', b'\xf1\x875QN909144A \xf1\x895081\xf1\x82\x0571A01A18A1', @@ -309,7 +332,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572S \xf1\x890780', ], }, - CAR.JETTA_MK7: { + CAR.VOLKSWAGEN_JETTA_MK7: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906024AK\xf1\x899937', b'\xf1\x8704E906024AS\xf1\x899912', @@ -317,6 +340,7 @@ FW_VERSIONS = { b'\xf1\x8704E906024BC\xf1\x899971', b'\xf1\x8704E906024BG\xf1\x891057', b'\xf1\x8704E906024C \xf1\x899970', + b'\xf1\x8704E906024C \xf1\x899971', b'\xf1\x8704E906024L \xf1\x895595', b'\xf1\x8704E906024L \xf1\x899970', b'\xf1\x8704E906027MS\xf1\x896223', @@ -360,7 +384,7 @@ FW_VERSIONS = { b'\xf1\x875Q0907572R \xf1\x890771', ], }, - CAR.PASSAT_MK8: { + CAR.VOLKSWAGEN_PASSAT_MK8: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8703N906026E \xf1\x892114', b'\xf1\x8704E906023AH\xf1\x893379', @@ -369,12 +393,15 @@ FW_VERSIONS = { b'\xf1\x8704L906026ET\xf1\x891990', b'\xf1\x8704L906026FP\xf1\x892012', b'\xf1\x8704L906026GA\xf1\x892013', + b'\xf1\x8704L906026GK\xf1\x899971', b'\xf1\x8704L906026KD\xf1\x894798', + b'\xf1\x8705L906022A \xf1\x890827', b'\xf1\x873G0906259 \xf1\x890004', b'\xf1\x873G0906259B \xf1\x890002', b'\xf1\x873G0906264 \xf1\x890004', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x870CW300041E \xf1\x891006', b'\xf1\x870CW300042H \xf1\x891601', b'\xf1\x870CW300042H \xf1\x891607', b'\xf1\x870CW300043H \xf1\x891601', @@ -389,6 +416,7 @@ FW_VERSIONS = { b'\xf1\x870DL300011H \xf1\x895201', b'\xf1\x870GC300042H \xf1\x891404', b'\xf1\x870GC300043 \xf1\x892301', + b'\xf1\x870GC300046P \xf1\x892805', ], (Ecu.srs, 0x715, None): [ b'\xf1\x873Q0959655AE\xf1\x890195\xf1\x82\r56140056130012416612124111', @@ -404,6 +432,7 @@ FW_VERSIONS = { b'\xf1\x873Q0959655BK\xf1\x890703\xf1\x82\x0e5915005914001354701311542900', b'\xf1\x873Q0959655CN\xf1\x890720\xf1\x82\x0e5915005914001305701311052900', b'\xf1\x875Q0959655S \xf1\x890870\xf1\x82\x1315120011111200631145171716121691132111', + b'\xf1\x875QF959655S \xf1\x890639\xf1\x82\x13131100131300111111000120----2211114A48', ], (Ecu.eps, 0x712, None): [ b'\xf1\x873Q0909144J \xf1\x895063\xf1\x82\x0566B00611A1', @@ -412,6 +441,7 @@ FW_VERSIONS = { b'\xf1\x875Q0909143M \xf1\x892041\xf1\x820522B0060803', b'\xf1\x875Q0909143M \xf1\x892041\xf1\x820522B0080803', b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820526B0060905', + b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820531B0062105', b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521B00606A1', b'\xf1\x875Q0909144S \xf1\x891063\xf1\x82\x0516B00501A1', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521B00603A1', @@ -428,9 +458,10 @@ FW_VERSIONS = { b'\xf1\x873Q0907572C \xf1\x890196', b'\xf1\x875Q0907572P \xf1\x890682', b'\xf1\x875Q0907572R \xf1\x890771', + b'\xf1\x875Q0907572S \xf1\x890780', ], }, - CAR.PASSAT_NMS: { + CAR.VOLKSWAGEN_PASSAT_NMS: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8706K906016C \xf1\x899609', b'\xf1\x8706K906016E \xf1\x899830', @@ -452,7 +483,7 @@ FW_VERSIONS = { b'\xf1\x877N0907572C \xf1\x890211\xf1\x82\x0152', ], }, - CAR.POLO_MK6: { + CAR.VOLKSWAGEN_POLO_MK6: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704C906025H \xf1\x895177', b'\xf1\x8705C906032J \xf1\x891702', @@ -476,7 +507,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572R \xf1\x890372', ], }, - CAR.SHARAN_MK2: { + CAR.VOLKSWAGEN_SHARAN_MK2: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704L906016HE\xf1\x894635', ], @@ -487,7 +518,7 @@ FW_VERSIONS = { b'\xf1\x877N0907572C \xf1\x890211\xf1\x82\x0153', ], }, - CAR.TAOS_MK1: { + CAR.VOLKSWAGEN_TAOS_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906025CK\xf1\x892228', b'\xf1\x8704E906027NJ\xf1\x891445', @@ -517,7 +548,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572T \xf1\x890383', ], }, - CAR.TCROSS_MK1: { + CAR.VOLKSWAGEN_TCROSS_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704C906025AK\xf1\x897053', ], @@ -534,7 +565,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572T \xf1\x890383', ], }, - CAR.TIGUAN_MK2: { + CAR.VOLKSWAGEN_TIGUAN_MK2: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8703N906026D \xf1\x893680', b'\xf1\x8704E906024AP\xf1\x891461', @@ -564,6 +595,7 @@ FW_VERSIONS = { b'\xf1\x8709G927158GM\xf1\x893936', b'\xf1\x8709G927158GN\xf1\x893938', b'\xf1\x8709G927158HB\xf1\x894069', + b'\xf1\x8709G927158HC\xf1\x894070', b'\xf1\x870D9300043 \xf1\x895202', b'\xf1\x870DD300046K \xf1\x892302', b'\xf1\x870DL300011N \xf1\x892001', @@ -620,29 +652,37 @@ FW_VERSIONS = { b'\xf1\x872Q0907572T \xf1\x890383', ], }, - CAR.TOURAN_MK2: { + CAR.VOLKSWAGEN_TOURAN_MK2: { (Ecu.engine, 0x7e0, None): [ + b'\xf1\x8704E906025BE\xf1\x890720', + b'\xf1\x8704E906027HQ\xf1\x893746', b'\xf1\x8704L906026HM\xf1\x893017', b'\xf1\x8705E906018CQ\xf1\x890808', ], (Ecu.transmission, 0x7e1, None): [ + b'\xf1\x870CW300020A \xf1\x891936', b'\xf1\x870CW300041E \xf1\x891005', + b'\xf1\x870CW300041Q \xf1\x891606', b'\xf1\x870CW300051M \xf1\x891926', ], (Ecu.srs, 0x715, None): [ + b'\xf1\x875Q0959655AS\xf1\x890318\xf1\x82\x1336350021353335314132014730479333313100', b'\xf1\x875Q0959655AS\xf1\x890318\xf1\x82\x13363500213533353141324C4732479333313100', b'\xf1\x875Q0959655CH\xf1\x890421\xf1\x82\x1336350021353336314740025250529333613100', + b'\xf1\x875QD959655AJ\xf1\x890421\xf1\x82\x1336350021313300314240023330339333663100', ], (Ecu.eps, 0x712, None): [ b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820531B0062105', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567A8090400', + b'\xf1\x875QD909144F \xf1\x891082\xf1\x82\x0521A00642A1', ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x872Q0907572AA\xf1\x890396', b'\xf1\x873Q0907572C \xf1\x890195', + b'\xf1\x875Q0907572R \xf1\x890771', ], }, - CAR.TRANSPORTER_T61: { + CAR.VOLKSWAGEN_TRANSPORTER_T61: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704L906056AG\xf1\x899970', b'\xf1\x8704L906056AL\xf1\x899970', @@ -674,7 +714,7 @@ FW_VERSIONS = { b'\xf1\x872Q0907572R \xf1\x890372', ], }, - CAR.TROC_MK1: { + CAR.VOLKSWAGEN_TROC_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8705E906018AT\xf1\x899640', b'\xf1\x8705E906018CK\xf1\x890863', @@ -691,13 +731,16 @@ FW_VERSIONS = { b'\xf1\x875Q0959655BT\xf1\x890403\xf1\x82\x1311110012333300314240681152119333463100', b'\xf1\x875Q0959655CF\xf1\x890421\xf1\x82\x1311110012333300314240021150119333613100', b'\xf1\x875Q0959655CG\xf1\x890421\xf1\x82\x13111100123333003142404M1152119333613100', + b'\xf1\x875Q0959655CG\xf1\x890421\xf1\x82\x13111100123333003142404M1154119333613100', ], (Ecu.eps, 0x712, None): [ b'\xf1\x875Q0909144AA\xf1\x891081\xf1\x82\x0521060403A1', b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521060405A1', b'\xf1\x875WA907144M \xf1\x891051\xf1\x82\x001T06081T7N', + b'\xf1\x875WA907144Q \xf1\x891063\xf1\x82\x001O06081OOM', ], (Ecu.fwdRadar, 0x757, None): [ + b'\xf1\x872Q0907572AA\xf1\x890396', b'\xf1\x872Q0907572M \xf1\x890233', b'\xf1\x872Q0907572T \xf1\x890383', ], @@ -842,28 +885,13 @@ FW_VERSIONS = { CAR.SEAT_ATECA_MK1: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906027KA\xf1\x893749', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x870D9300014S \xf1\x895202', - ], - (Ecu.srs, 0x715, None): [ - b'\xf1\x873Q0959655BH\xf1\x890703\xf1\x82\x0e1212001211001305121211052900', - ], - (Ecu.eps, 0x712, None): [ - b'\xf1\x873Q0909144L \xf1\x895081\xf1\x82\x0571N60511A1', - ], - (Ecu.fwdRadar, 0x757, None): [ - b'\xf1\x872Q0907572M \xf1\x890233', - ], - }, - CAR.SEAT_LEON_MK3: { - (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704L906021EL\xf1\x897542', b'\xf1\x8704L906026BP\xf1\x891198', b'\xf1\x8704L906026BP\xf1\x897608', b'\xf1\x8704L906056CR\xf1\x892181', b'\xf1\x8704L906056CR\xf1\x892797', b'\xf1\x8705E906018AS\xf1\x899596', + b'\xf1\x8781A906259B \xf1\x890003', b'\xf1\x878V0906264H \xf1\x890005', b'\xf1\x878V0907115E \xf1\x890002', ], @@ -871,25 +899,33 @@ FW_VERSIONS = { b'\xf1\x870CW300041D \xf1\x891004', b'\xf1\x870CW300041G \xf1\x891003', b'\xf1\x870CW300050J \xf1\x891908', + b'\xf1\x870D9300014S \xf1\x895202', b'\xf1\x870D9300042M \xf1\x895016', + b'\xf1\x870GC300014P \xf1\x892801', b'\xf1\x870GC300043A \xf1\x892304', ], (Ecu.srs, 0x715, None): [ b'\xf1\x873Q0959655AC\xf1\x890189\xf1\x82\r11110011110011021511110200', b'\xf1\x873Q0959655AS\xf1\x890200\xf1\x82\r11110011110011021511110200', b'\xf1\x873Q0959655AS\xf1\x890200\xf1\x82\r12110012120012021612110200', + b'\xf1\x873Q0959655BH\xf1\x890703\xf1\x82\x0e1212001211001305121211052900', b'\xf1\x873Q0959655BH\xf1\x890703\xf1\x82\x0e1312001313001305171311052900', b'\xf1\x873Q0959655BH\xf1\x890712\xf1\x82\x0e1312001313001305171311052900', b'\xf1\x873Q0959655CM\xf1\x890720\xf1\x82\x0e1312001313001305171311052900', + b'\xf1\x875QF959655AT\xf1\x890755\xf1\x82\x1311110011110011111100110200--1113121149', ], (Ecu.eps, 0x712, None): [ + b'\xf1\x873Q0909144L \xf1\x895081\xf1\x82\x0571N60511A1', b'\xf1\x875Q0909144AA\xf1\x891081\xf1\x82\x0521N01842A1', b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521N01342A1', b'\xf1\x875Q0909144P \xf1\x891043\xf1\x82\x0511N01805A0', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521N01309A1', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521N05808A1', + b'\xf1\x875WA907145M \xf1\x891051\xf1\x82\x0013N619137N', ], (Ecu.fwdRadar, 0x757, None): [ + b'\xf1\x872Q0907572AA\xf1\x890396', + b'\xf1\x872Q0907572M \xf1\x890233', b'\xf1\x875Q0907572B \xf1\x890200\xf1\x82\x0101', b'\xf1\x875Q0907572H \xf1\x890620', b'\xf1\x875Q0907572K \xf1\x890402\xf1\x82\x0101', @@ -916,15 +952,22 @@ FW_VERSIONS = { }, CAR.SKODA_KAMIQ_MK1: { (Ecu.engine, 0x7e0, None): [ + b'\xf1\x8704C906025AK\xf1\x897053', b'\xf1\x8705C906032M \xf1\x891333', + b'\xf1\x8705C906032M \xf1\x892365', b'\xf1\x8705E906013CK\xf1\x892540', ], (Ecu.transmission, 0x7e1, None): [ b'\xf1\x870CW300020 \xf1\x891906', + b'\xf1\x870CW300020 \xf1\x891907', b'\xf1\x870CW300020T \xf1\x892204', + b'\xf1\x870CW300050 \xf1\x891709', ], (Ecu.srs, 0x715, None): [ + b'\xf1\x872Q0959655AJ\xf1\x890250\xf1\x82\x1211110411110411--04040404131111112H14', + b'\xf1\x872Q0959655AM\xf1\x890351\xf1\x82\x12111104111104112104040404111111112H14', b'\xf1\x872Q0959655AM\xf1\x890351\xf1\x82\x122221042111042121040404042E2711152H14', + b'\xf1\x872Q0959655AS\xf1\x890411\xf1\x82\x1311150411110411210404040417151215391413', b'\xf1\x872Q0959655BJ\xf1\x890412\xf1\x82\x132223042111042121040404042B251215391423', ], (Ecu.eps, 0x712, None): [ @@ -933,11 +976,13 @@ FW_VERSIONS = { ], (Ecu.fwdRadar, 0x757, None): [ b'\xf1\x872Q0907572AA\xf1\x890396', + b'\xf1\x872Q0907572R \xf1\x890372', b'\xf1\x872Q0907572T \xf1\x890383', ], }, CAR.SKODA_KAROQ_MK1: { (Ecu.engine, 0x7e0, None): [ + b'\xf1\x8705E906013CL\xf1\x892541', b'\xf1\x8705E906013H \xf1\x892407', b'\xf1\x8705E906018P \xf1\x895472', b'\xf1\x8705E906018P \xf1\x896020', @@ -957,6 +1002,7 @@ FW_VERSIONS = { (Ecu.eps, 0x712, None): [ b'\xf1\x875Q0910143B \xf1\x892201\xf1\x82\x0563T6090500', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100500', + b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100600', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T6100700', ], (Ecu.fwdRadar, 0x757, None): [ @@ -977,7 +1023,9 @@ FW_VERSIONS = { b'\xf1\x8704L906026HT\xf1\x893617', b'\xf1\x8705E906018DJ\xf1\x890915', b'\xf1\x8705E906018DJ\xf1\x891903', + b'\xf1\x8705L906022GM\xf1\x893411', b'\xf1\x875NA906259E \xf1\x890003', + b'\xf1\x875NA907115D \xf1\x890003', b'\xf1\x875NA907115E \xf1\x890003', b'\xf1\x875NA907115E \xf1\x890005', b'\xf1\x8783A907115E \xf1\x890001', @@ -986,14 +1034,17 @@ FW_VERSIONS = { b'\xf1\x870D9300014S \xf1\x895201', b'\xf1\x870D9300043 \xf1\x895202', b'\xf1\x870DL300011N \xf1\x892014', + b'\xf1\x870DL300012G \xf1\x892006', b'\xf1\x870DL300012M \xf1\x892107', b'\xf1\x870DL300012N \xf1\x892110', b'\xf1\x870DL300013G \xf1\x892119', b'\xf1\x870GC300014N \xf1\x892801', + b'\xf1\x870GC300018S \xf1\x892803', b'\xf1\x870GC300019H \xf1\x892806', b'\xf1\x870GC300046Q \xf1\x892802', ], (Ecu.srs, 0x715, None): [ + b'\xf1\x873Q0959655AN\xf1\x890306\xf1\x82\r11110011110011031111310311', b'\xf1\x873Q0959655AP\xf1\x890306\xf1\x82\r11110011110011421111314211', b'\xf1\x873Q0959655BH\xf1\x890703\xf1\x82\x0e1213001211001205212111052100', b'\xf1\x873Q0959655BJ\xf1\x890703\xf1\x82\x0e1213001211001205212111052100', @@ -1002,6 +1053,7 @@ FW_VERSIONS = { b'\xf1\x873Q0959655CQ\xf1\x890720\xf1\x82\x0e1213111211001205212112052111', b'\xf1\x873Q0959655DJ\xf1\x890731\xf1\x82\x0e1513001511001205232113052J00', b'\xf1\x875QF959655AT\xf1\x890755\xf1\x82\x1311110011110011111100010200--1121240749', + b'\xf1\x875QF959655AT\xf1\x890755\xf1\x82\x1311110011110011111100010200--1121246149', ], (Ecu.eps, 0x712, None): [ b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820527T6050405', @@ -1009,6 +1061,7 @@ FW_VERSIONS = { b'\xf1\x875Q0909143P \xf1\x892051\xf1\x820527T6070405', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T600G500', b'\xf1\x875Q0910143C \xf1\x892211\xf1\x82\x0567T600G600', + b'\xf1\x875TA907145F \xf1\x891063\xf1\x82\x0025T6BA25OM', b'\xf1\x875TA907145F \xf1\x891063\xf1\x82\x002LT61A2LOM', ], (Ecu.fwdRadar, 0x757, None): [ @@ -1027,8 +1080,10 @@ FW_VERSIONS = { b'\xf1\x8704E906027HD\xf1\x893742', b'\xf1\x8704E906027MH\xf1\x894786', b'\xf1\x8704L906021DT\xf1\x898127', + b'\xf1\x8704L906021ER\xf1\x898361', b'\xf1\x8704L906026BP\xf1\x897608', b'\xf1\x8704L906026BS\xf1\x891541', + b'\xf1\x8704L906026BT\xf1\x897612', b'\xf1\x875G0906259C \xf1\x890002', ], (Ecu.transmission, 0x7e1, None): [ @@ -1036,6 +1091,8 @@ FW_VERSIONS = { b'\xf1\x870CW300041N \xf1\x891605', b'\xf1\x870CW300043B \xf1\x891601', b'\xf1\x870CW300043P \xf1\x891605', + b'\xf1\x870D9300012H \xf1\x894518', + b'\xf1\x870D9300014T \xf1\x895221', b'\xf1\x870D9300041C \xf1\x894936', b'\xf1\x870D9300041H \xf1\x895220', b'\xf1\x870D9300041J \xf1\x894902', @@ -1056,11 +1113,13 @@ FW_VERSIONS = { b'\xf1\x873Q0909144J \xf1\x895063\xf1\x82\x0566A01513A1', b'\xf1\x875Q0909144AA\xf1\x891081\xf1\x82\x0521T00403A1', b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521T00403A1', + b'\xf1\x875Q0909144AB\xf1\x891082\xf1\x82\x0521T00603A1', b'\xf1\x875Q0909144R \xf1\x891061\xf1\x82\x0516A00604A1', b'\xf1\x875Q0909144T \xf1\x891072\xf1\x82\x0521T00601A1', b'\xf1\x875QD909144E \xf1\x891081\xf1\x82\x0521T00503A1', ], (Ecu.fwdRadar, 0x757, None): [ + b'\xf1\x875Q0907567P \xf1\x890100\xf1\x82\x0101', b'\xf1\x875Q0907572D \xf1\x890304\xf1\x82\x0101', b'\xf1\x875Q0907572F \xf1\x890400\xf1\x82\x0101', b'\xf1\x875Q0907572H \xf1\x890620', @@ -1070,29 +1129,6 @@ FW_VERSIONS = { b'\xf1\x875Q0907572R \xf1\x890771', ], }, - CAR.SKODA_SCALA_MK1: { - (Ecu.engine, 0x7e0, None): [ - b'\xf1\x8704C906025AK\xf1\x897053', - b'\xf1\x8705C906032M \xf1\x892365', - ], - (Ecu.transmission, 0x7e1, None): [ - b'\xf1\x870CW300020 \xf1\x891907', - b'\xf1\x870CW300050 \xf1\x891709', - ], - (Ecu.srs, 0x715, None): [ - b'\xf1\x872Q0959655AJ\xf1\x890250\xf1\x82\x1211110411110411--04040404131111112H14', - b'\xf1\x872Q0959655AM\xf1\x890351\xf1\x82\x12111104111104112104040404111111112H14', - b'\xf1\x872Q0959655AS\xf1\x890411\xf1\x82\x1311150411110411210404040417151215391413', - ], - (Ecu.eps, 0x712, None): [ - b'\xf1\x872Q1909144AB\xf1\x896050', - b'\xf1\x872Q1909144M \xf1\x896041', - ], - (Ecu.fwdRadar, 0x757, None): [ - b'\xf1\x872Q0907572AA\xf1\x890396', - b'\xf1\x872Q0907572R \xf1\x890372', - ], - }, CAR.SKODA_SUPERB_MK3: { (Ecu.engine, 0x7e0, None): [ b'\xf1\x8704E906027BS\xf1\x892887', diff --git a/selfdrive/car/volkswagen/interface.py b/selfdrive/car/volkswagen/interface.py index f43539ab55..879dac0277 100644 --- a/selfdrive/car/volkswagen/interface.py +++ b/selfdrive/car/volkswagen/interface.py @@ -3,7 +3,7 @@ from panda import Panda from openpilot.common.params import Params from openpilot.selfdrive.car import get_safety_config, create_mads_event from openpilot.selfdrive.car.interfaces import CarInterfaceBase -from openpilot.selfdrive.car.volkswagen.values import PQ_CARS, CANBUS, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags, \ +from openpilot.selfdrive.car.volkswagen.values import CAR, CANBUS, CarControllerParams, NetworkLocation, TransmissionType, GearShifter, VolkswagenFlags, \ BUTTON_STATES, VolkswagenFlagsSP ButtonType = car.CarState.ButtonEvent.Type @@ -21,16 +21,14 @@ class CarInterface(CarInterfaceBase): self.ext_bus = CANBUS.cam self.cp_ext = self.cp_cam - self.eps_timer_soft_disable_alert = False - self.buttonStatesPrev = BUTTON_STATES.copy() @staticmethod - def _get_params(ret, candidate, fingerprint, car_fw, experimental_long, docs): + def _get_params(ret, candidate: CAR, fingerprint, car_fw, experimental_long, docs): ret.carName = "volkswagen" ret.radarUnavailable = True - if candidate in PQ_CARS: + if ret.flags & VolkswagenFlags.PQ: # Set global PQ35/PQ46/NMS parameters ret.safetyConfigs = [get_safety_config(car.CarParams.SafetyModel.volkswagenPq)] ret.enableBsm = 0x3BA in fingerprint[0] # SWA_1 @@ -76,7 +74,7 @@ class CarInterface(CarInterfaceBase): # Global lateral tuning defaults, can be overridden per-vehicle ret.steerLimitTimer = 0.4 - if candidate in PQ_CARS: + if ret.flags & VolkswagenFlags.PQ: ret.steerActuatorDelay = 0.2 CarInterfaceBase.configure_torque_tune(candidate, ret.lateralTuning) else: @@ -112,17 +110,14 @@ class CarInterface(CarInterfaceBase): ret.vEgoStopping = 0.5 ret.longitudinalTuning.kpV = [0.1] ret.longitudinalTuning.kiV = [0.0] - - # Per-chassis tuning values, override tuning defaults here if desired - ret.autoResumeSng = ret.minEnableSpeed == -1 - ret.centerToFront = ret.wheelbase * 0.45 + return ret # returns a car.CarState def _update(self, c): ret = self.CS.update(self.cp, self.cp_cam, self.cp_ext, self.CP.transmissionType) - self.CS = self.sp_update_params(self.CS) + self.sp_update_params() buttonEvents = [] @@ -137,16 +132,15 @@ class CarInterface(CarInterfaceBase): self.CS.mads_enabled = self.get_sp_cruise_main_state(ret, self.CS) - self.CS.accEnabled, buttonEvents = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, - buttonEvents, c.vCruise, - enable_buttons=(ButtonType.setCruise, ButtonType.resumeCruise)) + self.CS.accEnabled = self.get_sp_v_cruise_non_pcm_state(ret, self.CS.accEnabled, + buttonEvents, c.vCruise, + enable_buttons=(ButtonType.setCruise, ButtonType.resumeCruise)) if ret.cruiseState.available: if self.enable_mads: if not self.CS.prev_mads_enabled and self.CS.mads_enabled: self.CS.madsEnabled = True self.CS.madsEnabled = self.get_acc_mads(ret.cruiseState.enabled, self.CS.accEnabled, self.CS.madsEnabled) - ret, self.CS = self.toggle_gac(ret, self.CS, bool(self.CS.gap_dist_button), 1, 3, 3, "-") else: self.CS.madsEnabled = False self.CS.madsEnabled = self.get_sp_started_mads(ret, self.CS) @@ -163,7 +157,7 @@ class CarInterface(CarInterfaceBase): self.CS.accEnabled = False self.CS.accEnabled = ret.cruiseState.enabled or self.CS.accEnabled - ret, self.CS = self.get_sp_common_state(ret, self.CS, gap_button=(self.CS.gap_dist_button == 3)) + ret, self.CS = self.get_sp_common_state(ret, self.CS) # MADS BUTTON if self.CS.out.madsEnabled != self.CS.madsEnabled: @@ -185,7 +179,7 @@ class CarInterface(CarInterfaceBase): enable_buttons=(ButtonType.setCruise, ButtonType.resumeCruise)) # Low speed steer alert hysteresis logic - if self.CP.minSteerSpeed > 0. and ret.vEgo < (self.CP.minSteerSpeed + 1.): + if (self.CP.minSteerSpeed - 1e-3) > CarControllerParams.DEFAULT_MIN_STEER_SPEED and ret.vEgo < (self.CP.minSteerSpeed + 1.): self.low_speed_alert = True elif ret.vEgo > (self.CP.minSteerSpeed + 2.): self.low_speed_alert = False @@ -198,7 +192,7 @@ class CarInterface(CarInterfaceBase): if c.enabled and ret.vEgo < self.CP.minEnableSpeed: events.add(EventName.speedTooLow) - if self.eps_timer_soft_disable_alert: + if self.CC.eps_timer_soft_disable_alert: events.add(EventName.steerTimeLimit) ret.customStockLong = self.CS.update_custom_stock_long(self.CC.cruise_button, self.CC.final_speed_kph, @@ -212,6 +206,3 @@ class CarInterface(CarInterfaceBase): return ret - def apply(self, c, now_nanos): - new_actuators, can_sends, self.eps_timer_soft_disable_alert = self.CC.update(c, self.CS, self.ext_bus, now_nanos) - return new_actuators, can_sends diff --git a/selfdrive/car/volkswagen/mqbcan.py b/selfdrive/car/volkswagen/mqbcan.py index 35542f9f6b..23ce7f5357 100644 --- a/selfdrive/car/volkswagen/mqbcan.py +++ b/selfdrive/car/volkswagen/mqbcan.py @@ -28,7 +28,7 @@ def create_eps_update(packer, bus, eps_stock_values, ea_simulated_torque): return packer.make_can_msg("LH_EPS_03", bus, values) -def create_lka_hud_control(packer, bus, ldw_stock_values, enabled, lat_active, steering_pressed, hud_alert, hud_control): +def create_lka_hud_control(packer, bus, ldw_stock_values, lat_active, steering_pressed, hud_alert, hud_control): values = {} if len(ldw_stock_values): values = {s: ldw_stock_values[s] for s in [ @@ -133,11 +133,11 @@ def create_acc_accel_control(packer, bus, acc_type, acc_enabled, accel, acc_cont return commands -def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance, gac_tr_cluster): +def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance, distance): values = { "ACC_Status_Anzeige": acc_hud_status, "ACC_Wunschgeschw_02": set_speed if set_speed < 250 else 327.36, - "ACC_Gesetzte_Zeitluecke": gac_tr_cluster, + "ACC_Gesetzte_Zeitluecke": distance + 2, "ACC_Display_Prio": 3, "ACC_Abstandsindex": lead_distance, } diff --git a/selfdrive/car/volkswagen/pqcan.py b/selfdrive/car/volkswagen/pqcan.py index b5be66e957..14c49db7c5 100644 --- a/selfdrive/car/volkswagen/pqcan.py +++ b/selfdrive/car/volkswagen/pqcan.py @@ -9,7 +9,7 @@ def create_steering_control(packer, bus, apply_steer, lkas_enabled): return packer.make_can_msg("HCA_1", bus, values) -def create_lka_hud_control(packer, bus, ldw_stock_values, enabled, lat_active, steering_pressed, hud_alert, hud_control): +def create_lka_hud_control(packer, bus, ldw_stock_values, lat_active, steering_pressed, hud_alert, hud_control): values = {} if len(ldw_stock_values): values = {s: ldw_stock_values[s] for s in [ @@ -99,10 +99,10 @@ def create_acc_accel_control(packer, bus, acc_type, acc_enabled, accel, acc_cont return commands -def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance, gac_tr_cluster): +def create_acc_hud_control(packer, bus, acc_hud_status, set_speed, lead_distance, distance): values = { "ACA_StaACC": acc_hud_status, - "ACA_Zeitluecke": 2, + "ACA_Zeitluecke": distance + 2, "ACA_V_Wunsch": set_speed, "ACA_gemZeitl": lead_distance, "ACA_PrioDisp": 3, diff --git a/selfdrive/car/volkswagen/tests/test_volkswagen.py b/selfdrive/car/volkswagen/tests/test_volkswagen.py new file mode 100755 index 0000000000..17331203bb --- /dev/null +++ b/selfdrive/car/volkswagen/tests/test_volkswagen.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +import random +import re +import unittest + +from cereal import car +from openpilot.selfdrive.car.volkswagen.values import CAR, FW_QUERY_CONFIG, WMI +from openpilot.selfdrive.car.volkswagen.fingerprints import FW_VERSIONS + +Ecu = car.CarParams.Ecu + +CHASSIS_CODE_PATTERN = re.compile('[A-Z0-9]{2}') +# TODO: determine the unknown groups +SPARE_PART_FW_PATTERN = re.compile(b'\xf1\x87(?P[0-9][0-9A-Z]{2})(?P[0-9][0-9A-Z][0-9])(?P[0-9A-Z]{2}[0-9])([A-Z0-9]| )') + + +class TestVolkswagenPlatformConfigs(unittest.TestCase): + def test_spare_part_fw_pattern(self): + # Relied on for determining if a FW is likely VW + for platform, ecus in FW_VERSIONS.items(): + with self.subTest(platform=platform): + for fws in ecus.values(): + for fw in fws: + self.assertNotEqual(SPARE_PART_FW_PATTERN.match(fw), None, f"Bad FW: {fw}") + + def test_chassis_codes(self): + for platform in CAR: + with self.subTest(platform=platform): + self.assertTrue(len(platform.config.wmis) > 0, "WMIs not set") + self.assertTrue(len(platform.config.chassis_codes) > 0, "Chassis codes not set") + self.assertTrue(all(CHASSIS_CODE_PATTERN.match(cc) for cc in + platform.config.chassis_codes), "Bad chassis codes") + + # No two platforms should share chassis codes + for comp in CAR: + if platform == comp: + continue + self.assertEqual(set(), platform.config.chassis_codes & comp.config.chassis_codes, + f"Shared chassis codes: {comp}") + + def test_custom_fuzzy_fingerprinting(self): + all_radar_fw = list({fw for ecus in FW_VERSIONS.values() for fw in ecus[Ecu.fwdRadar, 0x757, None]}) + + for platform in CAR: + with self.subTest(platform=platform): + for wmi in WMI: + for chassis_code in platform.config.chassis_codes | {"00"}: + vin = ["0"] * 17 + vin[0:3] = wmi + vin[6:8] = chassis_code + vin = "".join(vin) + + # Check a few FW cases - expected, unexpected + for radar_fw in random.sample(all_radar_fw, 5) + [b'\xf1\x875Q0907572G \xf1\x890571', b'\xf1\x877H9907572AA\xf1\x890396']: + should_match = ((wmi in platform.config.wmis and chassis_code in platform.config.chassis_codes) and + radar_fw in all_radar_fw) + + live_fws = {(0x757, None): [radar_fw]} + matches = FW_QUERY_CONFIG.match_fw_to_car_fuzzy(live_fws, vin, FW_VERSIONS) + + expected_matches = {platform} if should_match else set() + self.assertEqual(expected_matches, matches, "Bad match") + + +if __name__ == "__main__": + unittest.main() diff --git a/selfdrive/car/volkswagen/values.py b/selfdrive/car/volkswagen/values.py index 4d375d687f..d99a5f1f54 100644 --- a/selfdrive/car/volkswagen/values.py +++ b/selfdrive/car/volkswagen/values.py @@ -1,15 +1,15 @@ -from collections import namedtuple +from collections import defaultdict, namedtuple from dataclasses import dataclass, field -from enum import Enum, IntFlag +from enum import Enum, IntFlag, StrEnum from cereal import car from panda.python import uds from opendbc.can.can_define import CANDefine from openpilot.common.conversions import Conversions as CV from openpilot.selfdrive.car import dbc_dict, CarSpecs, DbcDict, PlatformConfig, Platforms -from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarInfo, CarParts, Column, \ - Device -from openpilot.selfdrive.car.fw_query_definitions import FwQueryConfig, Request, p16 +from openpilot.selfdrive.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column, \ + Device +from openpilot.selfdrive.car.fw_query_definitions import EcuAddrSubAddr, FwQueryConfig, Request, p16 Ecu = car.CarParams.Ecu NetworkLocation = car.CarParams.NetworkLocation @@ -34,13 +34,15 @@ class CarControllerParams: STEER_TIME_ALERT = STEER_TIME_MAX - 10 # If mitigation fails, time to soft disengage before EPS timer expires STEER_TIME_STUCK_TORQUE = 1.9 # EPS limits same torque to 6 seconds, reset timer 3x within that period + DEFAULT_MIN_STEER_SPEED = 0.4 # m/s, newer EPS racks fault below this speed, don't show a low speed alert + ACCEL_MAX = 2.0 # 2.0 m/s max acceleration ACCEL_MIN = -3.5 # 3.5 m/s max deceleration def __init__(self, CP): can_define = CANDefine(DBC[CP.carFingerprint]["pt"]) - if CP.carFingerprint in PQ_CARS: + if CP.flags & VolkswagenFlags.PQ: self.LDW_STEP = 5 # LDW_1 message frequency 20Hz self.ACC_HUD_STEP = 4 # ACC_GRA_Anzeige frequency 25Hz self.STEER_DRIVER_ALLOWANCE = 80 # Driver intervention threshold 0.8 Nm @@ -111,9 +113,34 @@ class CANBUS: cam = 2 +class WMI(StrEnum): + VOLKSWAGEN_USA_SUV = "1V2" + VOLKSWAGEN_USA_CAR = "1VW" + VOLKSWAGEN_MEXICO_SUV = "3VV" + VOLKSWAGEN_MEXICO_CAR = "3VW" + VOLKSWAGEN_ARGENTINA = "8AW" + VOLKSWAGEN_BRASIL = "9BW" + SAIC_VOLKSWAGEN = "LSV" + SKODA = "TMB" + SEAT = "VSS" + AUDI_EUROPE_MPV = "WA1" + AUDI_GERMANY_CAR = "WAU" + MAN = "WMA" + AUDI_SPORT = "WUA" + VOLKSWAGEN_COMMERCIAL = "WV1" + VOLKSWAGEN_COMMERCIAL_BUS_VAN = "WV2" + VOLKSWAGEN_EUROPE_SUV = "WVG" + VOLKSWAGEN_EUROPE_CAR = "WVW" + VOLKSWAGEN_GROUP_RUS = "XW8" + + class VolkswagenFlags(IntFlag): + # Detected flags STOCK_HCA_PRESENT = 1 + # Static flags + PQ = 2 + class VolkswagenFlagsSP(IntFlag): SP_CC_ONLY = 1 @@ -130,17 +157,29 @@ BUTTON_STATES = { } -@dataclass(frozen=True) +@dataclass class VolkswagenMQBPlatformConfig(PlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_mqb_2010', None)) + # Volkswagen uses the VIN WMI and chassis code to match in the absence of the comma power + # on camera-integrated cars, as we lose too many ECUs to reliably identify the vehicle + chassis_codes: set[str] = field(default_factory=set) + wmis: set[WMI] = field(default_factory=set) -@dataclass(frozen=True) -class VolkswagenPQPlatformConfig(PlatformConfig): + +@dataclass +class VolkswagenPQPlatformConfig(VolkswagenMQBPlatformConfig): dbc_dict: DbcDict = field(default_factory=lambda: dbc_dict('vw_golf_mk4', None)) + def init(self): + self.flags |= VolkswagenFlags.PQ + + @dataclass(frozen=True, kw_only=True) class VolkswagenCarSpecs(CarSpecs): - steerRatio: float = field(default=15.6) + centerToFrontRatio: float = 0.45 + steerRatio: float = 15.6 + minSteerSpeed: float = CarControllerParams.DEFAULT_MIN_STEER_SPEED + class Footnote(Enum): KAMIQ = CarFootnote( @@ -164,7 +203,7 @@ class Footnote(Enum): @dataclass -class VWCarInfo(CarInfo): +class VWCarDocs(CarDocs): package: str = "Adaptive Cruise Control (ACC) & Lane Assist" car_parts: CarParts = field(default_factory=CarParts.common([CarHarness.j533])) @@ -173,205 +212,282 @@ class VWCarInfo(CarInfo): if "SKODA" in CP.carFingerprint: self.footnotes.append(Footnote.SKODA_HEATED_WINDSHIELD) - if CP.carFingerprint in (CAR.CRAFTER_MK2, CAR.TRANSPORTER_T61): + if CP.carFingerprint in (CAR.VOLKSWAGEN_CRAFTER_MK2, CAR.VOLKSWAGEN_TRANSPORTER_T61): self.car_parts = CarParts([Device.threex_angled_mount, CarHarness.j533]) + if abs(CP.minSteerSpeed - CarControllerParams.DEFAULT_MIN_STEER_SPEED) < 1e-3: + self.min_steer_speed = 0 + + # Check the 7th and 8th characters of the VIN before adding a new CAR. If the # chassis code is already listed below, don't add a new CAR, just add to the # FW_VERSIONS for that existing CAR. -# Exception: SEAT Leon and SEAT Ateca share a chassis code class CAR(Platforms): - ARTEON_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN ARTEON 1ST GEN", # Chassis AN + config: VolkswagenMQBPlatformConfig | VolkswagenPQPlatformConfig + + VOLKSWAGEN_ARTEON_MK1 = VolkswagenMQBPlatformConfig( [ - VWCarInfo("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"), - VWCarInfo("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), - VWCarInfo("Volkswagen Arteon eHybrid 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), - VWCarInfo("Volkswagen CC 2018-22", video_link="https://youtu.be/FAomFKPFlDA"), + VWCarDocs("Volkswagen Arteon 2018-23", video_link="https://youtu.be/FAomFKPFlDA"), + VWCarDocs("Volkswagen Arteon R 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), + VWCarDocs("Volkswagen Arteon eHybrid 2020-23", video_link="https://youtu.be/FAomFKPFlDA"), + VWCarDocs("Volkswagen CC 2018-22", video_link="https://youtu.be/FAomFKPFlDA"), ], - specs=VolkswagenCarSpecs(mass=1733, wheelbase=2.84), + VolkswagenCarSpecs(mass=1733, wheelbase=2.84), + chassis_codes={"AN"}, + wmis={WMI.VOLKSWAGEN_EUROPE_CAR}, ) - ATLAS_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN ATLAS 1ST GEN", # Chassis CA + VOLKSWAGEN_ATLAS_MK1 = VolkswagenMQBPlatformConfig( [ - VWCarInfo("Volkswagen Atlas 2018-23"), - VWCarInfo("Volkswagen Atlas Cross Sport 2020-22"), - VWCarInfo("Volkswagen Teramont 2018-22"), - VWCarInfo("Volkswagen Teramont Cross Sport 2021-22"), - VWCarInfo("Volkswagen Teramont X 2021-22"), + VWCarDocs("Volkswagen Atlas 2018-23"), + VWCarDocs("Volkswagen Atlas Cross Sport 2020-22"), + VWCarDocs("Volkswagen Teramont 2018-22"), + VWCarDocs("Volkswagen Teramont Cross Sport 2021-22"), + VWCarDocs("Volkswagen Teramont X 2021-22"), ], - specs=VolkswagenCarSpecs(mass=2011, wheelbase=2.98), + VolkswagenCarSpecs(mass=2011, wheelbase=2.98), + chassis_codes={"CA"}, + wmis={WMI.VOLKSWAGEN_USA_SUV, WMI.VOLKSWAGEN_EUROPE_SUV}, ) - CRAFTER_MK2 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN CRAFTER 2ND GEN", # Chassis SY/SZ + VOLKSWAGEN_CADDY_MK3 = VolkswagenPQPlatformConfig( [ - VWCarInfo("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"), - VWCarInfo("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"), - VWCarInfo("Volkswagen Grand California 2019-23", video_link="https://youtu.be/4100gLeabmo"), - VWCarInfo("MAN TGE 2017-23", video_link="https://youtu.be/4100gLeabmo"), - VWCarInfo("MAN eTGE 2020-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("Volkswagen Caddy 2019"), + VWCarDocs("Volkswagen Caddy Maxi 2019"), ], - specs=VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS), + VolkswagenCarSpecs(mass=1613, wheelbase=2.6, minSteerSpeed=21 * CV.KPH_TO_MS), + chassis_codes={"2K"}, + wmis={WMI.VOLKSWAGEN_COMMERCIAL_BUS_VAN}, ) - GOLF_MK7 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN GOLF 7TH GEN", # Chassis 5G/AU/BA/BE + VOLKSWAGEN_CRAFTER_MK2 = VolkswagenMQBPlatformConfig( [ - VWCarInfo("Volkswagen e-Golf 2014-20"), - VWCarInfo("Volkswagen Golf 2015-20", auto_resume=False), - VWCarInfo("Volkswagen Golf Alltrack 2015-19", auto_resume=False), - VWCarInfo("Volkswagen Golf GTD 2015-20"), - VWCarInfo("Volkswagen Golf GTE 2015-20"), - VWCarInfo("Volkswagen Golf GTI 2015-21", auto_resume=False), - VWCarInfo("Volkswagen Golf R 2015-19"), - VWCarInfo("Volkswagen Golf SportsVan 2015-20"), + VWCarDocs("Volkswagen Crafter 2017-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("Volkswagen e-Crafter 2018-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("Volkswagen Grand California 2019-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("MAN TGE 2017-23", video_link="https://youtu.be/4100gLeabmo"), + VWCarDocs("MAN eTGE 2020-23", video_link="https://youtu.be/4100gLeabmo"), ], - specs=VolkswagenCarSpecs(mass=1397, wheelbase=2.62), + VolkswagenCarSpecs(mass=2100, wheelbase=3.64, minSteerSpeed=50 * CV.KPH_TO_MS), + chassis_codes={"SY", "SZ"}, + wmis={WMI.VOLKSWAGEN_COMMERCIAL, WMI.MAN}, ) - JETTA_MK7 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN JETTA 7TH GEN", # Chassis BU + VOLKSWAGEN_GOLF_MK7 = VolkswagenMQBPlatformConfig( [ - VWCarInfo("Volkswagen Jetta 2018-24"), - VWCarInfo("Volkswagen Jetta GLI 2021-24"), + VWCarDocs("Volkswagen e-Golf 2014-20"), + VWCarDocs("Volkswagen Golf 2015-20", auto_resume=False), + VWCarDocs("Volkswagen Golf Alltrack 2015-19", auto_resume=False), + VWCarDocs("Volkswagen Golf GTD 2015-20"), + VWCarDocs("Volkswagen Golf GTE 2015-20"), + VWCarDocs("Volkswagen Golf GTI 2015-21", auto_resume=False), + VWCarDocs("Volkswagen Golf R 2015-19"), + VWCarDocs("Volkswagen Golf SportsVan 2015-20"), ], - specs=VolkswagenCarSpecs(mass=1328, wheelbase=2.71), + VolkswagenCarSpecs(mass=1397, wheelbase=2.62), + chassis_codes={"5G", "AU", "BA", "BE"}, + wmis={WMI.VOLKSWAGEN_MEXICO_CAR, WMI.VOLKSWAGEN_EUROPE_CAR}, ) - PASSAT_MK8 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN PASSAT 8TH GEN", # Chassis 3G + VOLKSWAGEN_JETTA_MK7 = VolkswagenMQBPlatformConfig( [ - VWCarInfo("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]), - VWCarInfo("Volkswagen Passat Alltrack 2015-22"), - VWCarInfo("Volkswagen Passat GTE 2015-22"), + VWCarDocs("Volkswagen Jetta 2018-24"), + VWCarDocs("Volkswagen Jetta GLI 2021-24"), ], - specs=VolkswagenCarSpecs(mass=1551, wheelbase=2.79), + VolkswagenCarSpecs(mass=1328, wheelbase=2.71), + chassis_codes={"BU"}, + wmis={WMI.VOLKSWAGEN_MEXICO_CAR, WMI.VOLKSWAGEN_EUROPE_CAR}, ) - PASSAT_NMS = VolkswagenPQPlatformConfig( - "VOLKSWAGEN PASSAT NMS", # Chassis A3 - VWCarInfo("Volkswagen Passat NMS 2017-22"), - specs=VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50*CV.KPH_TO_MS, minEnableSpeed=20*CV.KPH_TO_MS), - ) - POLO_MK6 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN POLO 6TH GEN", # Chassis AW + VOLKSWAGEN_PASSAT_MK8 = VolkswagenMQBPlatformConfig( [ - VWCarInfo("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), - VWCarInfo("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), + VWCarDocs("Volkswagen Passat 2015-22", footnotes=[Footnote.PASSAT]), + VWCarDocs("Volkswagen Passat Alltrack 2015-22"), + VWCarDocs("Volkswagen Passat GTE 2015-22"), ], - specs=VolkswagenCarSpecs(mass=1230, wheelbase=2.55), + VolkswagenCarSpecs(mass=1551, wheelbase=2.79), + chassis_codes={"3C", "3G"}, + wmis={WMI.VOLKSWAGEN_EUROPE_CAR}, ) - SHARAN_MK2 = VolkswagenPQPlatformConfig( - "VOLKSWAGEN SHARAN 2ND GEN", # Chassis 7N + VOLKSWAGEN_PASSAT_NMS = VolkswagenPQPlatformConfig( + [VWCarDocs("Volkswagen Passat NMS 2017-22")], + VolkswagenCarSpecs(mass=1503, wheelbase=2.80, minSteerSpeed=50 * CV.KPH_TO_MS, minEnableSpeed=20 * CV.KPH_TO_MS), + chassis_codes={"A3"}, + wmis={WMI.VOLKSWAGEN_USA_CAR}, + ) + VOLKSWAGEN_POLO_MK6 = VolkswagenMQBPlatformConfig( [ - VWCarInfo("Volkswagen Sharan 2018-22"), - VWCarInfo("SEAT Alhambra 2018-20"), + VWCarDocs("Volkswagen Polo 2018-23", footnotes=[Footnote.VW_MQB_A0]), + VWCarDocs("Volkswagen Polo GTI 2018-23", footnotes=[Footnote.VW_MQB_A0]), ], - specs=VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50*CV.KPH_TO_MS), + VolkswagenCarSpecs(mass=1230, wheelbase=2.55), + chassis_codes={"AW"}, + wmis={WMI.VOLKSWAGEN_EUROPE_CAR}, ) - TAOS_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN TAOS 1ST GEN", # Chassis B2 - VWCarInfo("Volkswagen Taos 2022-23"), - specs=VolkswagenCarSpecs(mass=1498, wheelbase=2.69), - ) - TCROSS_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN T-CROSS 1ST GEN", # Chassis C1 - car_info=VWCarInfo("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0]), - specs=VolkswagenCarSpecs(mass=1150, wheelbase=2.60), - ) - TIGUAN_MK2 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN TIGUAN 2ND GEN", # Chassis AD/BW + VOLKSWAGEN_SHARAN_MK2 = VolkswagenPQPlatformConfig( [ - VWCarInfo("Volkswagen Tiguan 2018-24"), - VWCarInfo("Volkswagen Tiguan eHybrid 2021-23"), + VWCarDocs("Volkswagen Sharan 2018-22"), + VWCarDocs("SEAT Alhambra 2018-20"), ], - specs=VolkswagenCarSpecs(mass=1715, wheelbase=2.74), + VolkswagenCarSpecs(mass=1639, wheelbase=2.92, minSteerSpeed=50 * CV.KPH_TO_MS), + chassis_codes={"7N"}, + wmis={WMI.VOLKSWAGEN_EUROPE_CAR}, ) - TOURAN_MK2 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN TOURAN 2ND GEN", # Chassis 1T - VWCarInfo("Volkswagen Touran 2016-23"), - specs=VolkswagenCarSpecs(mass=1516, wheelbase=2.79), + VOLKSWAGEN_TAOS_MK1 = VolkswagenMQBPlatformConfig( + [VWCarDocs("Volkswagen Taos 2022-23")], + VolkswagenCarSpecs(mass=1498, wheelbase=2.69), + chassis_codes={"B2"}, + wmis={WMI.VOLKSWAGEN_MEXICO_SUV, WMI.VOLKSWAGEN_ARGENTINA}, ) - TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN TRANSPORTER T6.1", # Chassis 7H/7L + VOLKSWAGEN_TCROSS_MK1 = VolkswagenMQBPlatformConfig( + [VWCarDocs("Volkswagen T-Cross 2021", footnotes=[Footnote.VW_MQB_A0])], + VolkswagenCarSpecs(mass=1150, wheelbase=2.60), + chassis_codes={"C1"}, + wmis={WMI.VOLKSWAGEN_EUROPE_SUV}, + ) + VOLKSWAGEN_TIGUAN_MK2 = VolkswagenMQBPlatformConfig( [ - VWCarInfo("Volkswagen Caravelle 2020"), - VWCarInfo("Volkswagen California 2021-23"), + VWCarDocs("Volkswagen Tiguan 2018-24"), + VWCarDocs("Volkswagen Tiguan eHybrid 2021-23"), ], - specs=VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0), + VolkswagenCarSpecs(mass=1715, wheelbase=2.74), + chassis_codes={"5N", "AD", "AX", "BW"}, + wmis={WMI.VOLKSWAGEN_EUROPE_SUV, WMI.VOLKSWAGEN_MEXICO_SUV}, ) - TROC_MK1 = VolkswagenMQBPlatformConfig( - "VOLKSWAGEN T-ROC 1ST GEN", # Chassis A1 - VWCarInfo("Volkswagen T-Roc 2018-22", footnotes=[Footnote.VW_MQB_A0]), - specs=VolkswagenCarSpecs(mass=1413, wheelbase=2.63), + VOLKSWAGEN_TOURAN_MK2 = VolkswagenMQBPlatformConfig( + [VWCarDocs("Volkswagen Touran 2016-23")], + VolkswagenCarSpecs(mass=1516, wheelbase=2.79), + chassis_codes={"1T"}, + wmis={WMI.VOLKSWAGEN_EUROPE_SUV}, + ) + VOLKSWAGEN_TRANSPORTER_T61 = VolkswagenMQBPlatformConfig( + [ + VWCarDocs("Volkswagen Caravelle 2020"), + VWCarDocs("Volkswagen California 2021-23"), + ], + VolkswagenCarSpecs(mass=1926, wheelbase=3.00, minSteerSpeed=14.0), + chassis_codes={"7H", "7L"}, + wmis={WMI.VOLKSWAGEN_COMMERCIAL_BUS_VAN}, + ) + VOLKSWAGEN_TROC_MK1 = VolkswagenMQBPlatformConfig( + [VWCarDocs("Volkswagen T-Roc 2018-23")], + VolkswagenCarSpecs(mass=1413, wheelbase=2.63), + chassis_codes={"A1"}, + wmis={WMI.VOLKSWAGEN_EUROPE_SUV}, ) AUDI_A3_MK3 = VolkswagenMQBPlatformConfig( - "AUDI A3 3RD GEN", # Chassis 8V/FF [ - VWCarInfo("Audi A3 2014-19"), - VWCarInfo("Audi A3 Sportback e-tron 2017-18"), - VWCarInfo("Audi RS3 2018"), - VWCarInfo("Audi S3 2015-17"), + VWCarDocs("Audi A3 2014-19"), + VWCarDocs("Audi A3 Sportback e-tron 2017-18"), + VWCarDocs("Audi RS3 2018"), + VWCarDocs("Audi S3 2015-17"), ], - specs=VolkswagenCarSpecs(mass=1335, wheelbase=2.61), + VolkswagenCarSpecs(mass=1335, wheelbase=2.61), + chassis_codes={"8V", "FF"}, + wmis={WMI.AUDI_GERMANY_CAR, WMI.AUDI_SPORT}, ) AUDI_Q2_MK1 = VolkswagenMQBPlatformConfig( - "AUDI Q2 1ST GEN", # Chassis GA - VWCarInfo("Audi Q2 2018"), - specs=VolkswagenCarSpecs(mass=1205, wheelbase=2.61), + [VWCarDocs("Audi Q2 2018")], + VolkswagenCarSpecs(mass=1205, wheelbase=2.61), + chassis_codes={"GA"}, + wmis={WMI.AUDI_GERMANY_CAR}, ) AUDI_Q3_MK2 = VolkswagenMQBPlatformConfig( - "AUDI Q3 2ND GEN", # Chassis 8U/F3/FS - VWCarInfo("Audi Q3 2019-23"), - specs=VolkswagenCarSpecs(mass=1623, wheelbase=2.68), + [VWCarDocs("Audi Q3 2019-23")], + VolkswagenCarSpecs(mass=1623, wheelbase=2.68), + chassis_codes={"8U", "F3", "FS"}, + wmis={WMI.AUDI_EUROPE_MPV, WMI.AUDI_GERMANY_CAR}, ) SEAT_ATECA_MK1 = VolkswagenMQBPlatformConfig( - "SEAT ATECA 1ST GEN", # Chassis 5F - VWCarInfo("SEAT Ateca 2018"), - specs=VolkswagenCarSpecs(mass=1900, wheelbase=2.64), - ) - SEAT_LEON_MK3 = VolkswagenMQBPlatformConfig( - "SEAT LEON 3RD GEN", # Chassis 5F - VWCarInfo("SEAT Leon 2014-20"), - specs=VolkswagenCarSpecs(mass=1227, wheelbase=2.64), + [ + VWCarDocs("CUPRA Ateca 2018-23"), + VWCarDocs("SEAT Ateca 2016-23"), + VWCarDocs("SEAT Leon 2014-20"), + ], + VolkswagenCarSpecs(mass=1300, wheelbase=2.64), + chassis_codes={"5F"}, + wmis={WMI.SEAT}, ) SKODA_FABIA_MK4 = VolkswagenMQBPlatformConfig( - "SKODA FABIA 4TH GEN", # Chassis PJ - VWCarInfo("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0]), - specs=VolkswagenCarSpecs(mass=1266, wheelbase=2.56), + [VWCarDocs("Škoda Fabia 2022-23", footnotes=[Footnote.VW_MQB_A0])], + VolkswagenCarSpecs(mass=1266, wheelbase=2.56), + chassis_codes={"PJ"}, + wmis={WMI.SKODA}, ) SKODA_KAMIQ_MK1 = VolkswagenMQBPlatformConfig( - "SKODA KAMIQ 1ST GEN", # Chassis NW - VWCarInfo("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ]), - specs=VolkswagenCarSpecs(mass=1265, wheelbase=2.66), + [ + VWCarDocs("Škoda Kamiq 2021-23", footnotes=[Footnote.VW_MQB_A0, Footnote.KAMIQ]), + VWCarDocs("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0]), + ], + VolkswagenCarSpecs(mass=1230, wheelbase=2.66), + chassis_codes={"NW"}, + wmis={WMI.SKODA}, ) SKODA_KAROQ_MK1 = VolkswagenMQBPlatformConfig( - "SKODA KAROQ 1ST GEN", # Chassis NU - VWCarInfo("Škoda Karoq 2019-23"), - specs=VolkswagenCarSpecs(mass=1278, wheelbase=2.66), + [VWCarDocs("Škoda Karoq 2019-23")], + VolkswagenCarSpecs(mass=1278, wheelbase=2.66), + chassis_codes={"NU"}, + wmis={WMI.SKODA}, ) SKODA_KODIAQ_MK1 = VolkswagenMQBPlatformConfig( - "SKODA KODIAQ 1ST GEN", # Chassis NS - VWCarInfo("Škoda Kodiaq 2017-23"), - specs=VolkswagenCarSpecs(mass=1569, wheelbase=2.79), + [VWCarDocs("Škoda Kodiaq 2017-23")], + VolkswagenCarSpecs(mass=1569, wheelbase=2.79), + chassis_codes={"NS"}, + wmis={WMI.SKODA, WMI.VOLKSWAGEN_GROUP_RUS}, ) SKODA_OCTAVIA_MK3 = VolkswagenMQBPlatformConfig( - "SKODA OCTAVIA 3RD GEN", # Chassis NE [ - VWCarInfo("Škoda Octavia 2015-19"), - VWCarInfo("Škoda Octavia RS 2016"), + VWCarDocs("Škoda Octavia 2015-19"), + VWCarDocs("Škoda Octavia RS 2016"), + VWCarDocs("Škoda Octavia Scout 2017-19"), ], - specs=VolkswagenCarSpecs(mass=1388, wheelbase=2.68), - ) - SKODA_SCALA_MK1 = VolkswagenMQBPlatformConfig( - "SKODA SCALA 1ST GEN", # Chassis NW - VWCarInfo("Škoda Scala 2020-23", footnotes=[Footnote.VW_MQB_A0]), - specs=VolkswagenCarSpecs(mass=1192, wheelbase=2.65), + VolkswagenCarSpecs(mass=1388, wheelbase=2.68), + chassis_codes={"NE"}, + wmis={WMI.SKODA}, ) SKODA_SUPERB_MK3 = VolkswagenMQBPlatformConfig( - "SKODA SUPERB 3RD GEN", # Chassis 3V/NP - VWCarInfo("Škoda Superb 2015-22"), - specs=VolkswagenCarSpecs(mass=1505, wheelbase=2.84), + [VWCarDocs("Škoda Superb 2015-22")], + VolkswagenCarSpecs(mass=1505, wheelbase=2.84), + chassis_codes={"3V", "NP"}, + wmis={WMI.SKODA}, ) -PQ_CARS = {CAR.PASSAT_NMS, CAR.SHARAN_MK2} + +def match_fw_to_car_fuzzy(live_fw_versions, vin, offline_fw_versions) -> set[str]: + candidates = set() + + # Compile all FW versions for each ECU + all_ecu_versions: dict[EcuAddrSubAddr, set[str]] = defaultdict(set) + for ecus in offline_fw_versions.values(): + for ecu, versions in ecus.items(): + all_ecu_versions[ecu] |= set(versions) + + # Check the WMI and chassis code to determine the platform + wmi = vin[:3] + chassis_code = vin[6:8] + + for platform in CAR: + valid_ecus = set() + for ecu in offline_fw_versions[platform]: + addr = ecu[1:] + if ecu[0] not in CHECK_FUZZY_ECUS: + continue + + # Sanity check that live FW is in the superset of all FW, Volkswagen ECU part numbers are commonly shared + found_versions = live_fw_versions.get(addr, []) + expected_versions = all_ecu_versions[ecu] + if not any(found_version in expected_versions for found_version in found_versions): + break + + valid_ecus.add(ecu[0]) + + if valid_ecus != CHECK_FUZZY_ECUS: + continue + + if wmi in platform.config.wmis and chassis_code in platform.config.chassis_codes: + candidates.add(platform) + + return {str(c) for c in candidates} + + +# These ECUs are required to match to gain a VIN match +# TODO: do we want to check camera when we add its FW? +CHECK_FUZZY_ECUS = {Ecu.fwdRadar} # All supported cars should return FW from the engine, srs, eps, and fwdRadar. Cars # with a manual trans won't return transmission firmware, but all other cars will. @@ -391,27 +507,26 @@ VOLKSWAGEN_VERSION_RESPONSE = bytes([uds.SERVICE_TYPE.READ_DATA_BY_IDENTIFIER + VOLKSWAGEN_RX_OFFSET = 0x6a FW_QUERY_CONFIG = FwQueryConfig( - # TODO: add back whitelists after we gather enough data requests=[request for bus, obd_multiplexing in [(1, True), (1, False), (0, False)] for request in [ Request( [VOLKSWAGEN_VERSION_REQUEST_MULTI], [VOLKSWAGEN_VERSION_RESPONSE], - # whitelist_ecus=[Ecu.srs, Ecu.eps, Ecu.fwdRadar], + whitelist_ecus=[Ecu.srs, Ecu.eps, Ecu.fwdRadar, Ecu.fwdCamera], rx_offset=VOLKSWAGEN_RX_OFFSET, bus=bus, - logging=(bus != 1 or not obd_multiplexing), obd_multiplexing=obd_multiplexing, ), Request( [VOLKSWAGEN_VERSION_REQUEST_MULTI], [VOLKSWAGEN_VERSION_RESPONSE], - # whitelist_ecus=[Ecu.engine, Ecu.transmission], + whitelist_ecus=[Ecu.engine, Ecu.transmission], bus=bus, - logging=(bus != 1 or not obd_multiplexing), obd_multiplexing=obd_multiplexing, ), ]], + non_essential_ecus={Ecu.eps: list(CAR)}, + extra_ecus=[(Ecu.fwdCamera, 0x74f, None)], + match_fw_to_car_fuzzy=match_fw_to_car_fuzzy, ) -CAR_INFO = CAR.create_carinfo_map() DBC = CAR.create_dbc_map() diff --git a/selfdrive/controls/controlsd.py b/selfdrive/controls/controlsd.py index 802bfbfe83..ff927f563c 100755 --- a/selfdrive/controls/controlsd.py +++ b/selfdrive/controls/controlsd.py @@ -8,21 +8,20 @@ from typing import SupportsFloat import cereal.messaging as messaging -from cereal import car, log +from cereal import car, log, custom from cereal.visionipc import VisionIpcClient, VisionStreamType -from panda import ALTERNATIVE_EXPERIENCE from openpilot.common.conversions import Conversions as CV +from openpilot.common.git import get_short_branch from openpilot.common.numpy_fast import clip from openpilot.common.params import Params from openpilot.common.realtime import config_realtime_process, Priority, Ratekeeper, DT_CTRL from openpilot.common.swaglog import cloudlog from openpilot.selfdrive.athena.registration import is_registered_device -from openpilot.selfdrive.boardd.boardd import can_list_to_can_capnp -from openpilot.selfdrive.car.car_helpers import get_car, get_startup_event, get_one_can -from openpilot.selfdrive.car.interfaces import CarInterfaceBase +from openpilot.selfdrive.car.car_helpers import get_startup_event +from openpilot.selfdrive.car.card import CarD from openpilot.selfdrive.controls.lib.alertmanager import AlertManager, set_offroad_alert from openpilot.selfdrive.controls.lib.drive_helpers import VCruiseHelper, clip_curvature, get_lag_adjusted_curvature from openpilot.selfdrive.controls.lib.events import Events, ET @@ -35,7 +34,6 @@ from openpilot.selfdrive.controls.lib.vehicle_model import VehicleModel from openpilot.selfdrive.sunnypilot import get_model_generation from openpilot.system.hardware import HARDWARE -from openpilot.system.version import get_short_branch SOFT_DISABLE_TIME = 3 # seconds LDW_MIN_SPEED = 31 * CV.MPH_TO_MS @@ -64,140 +62,21 @@ ACTUATOR_FIELDS = tuple(car.CarControl.Actuators.schema.fields.keys()) ACTIVE_STATES = (State.enabled, State.softDisabling, State.overriding) ENABLED_STATES = (State.preEnabled, *ACTIVE_STATES) - -class CarD: - CI: CarInterfaceBase - CS: car.CarState - - def __init__(self, CI=None): - self.can_sock = messaging.sub_sock('can', timeout=20) - self.sm = messaging.SubMaster(['pandaStates']) - self.pm = messaging.PubMaster(['sendcan', 'carState', 'carParams']) - - self.can_rcv_timeout_counter = 0 # conseuctive timeout count - self.can_rcv_cum_timeout_counter = 0 # cumulative timeout count - - self.params = Params() - - if CI is None: - # wait for one pandaState and one CAN packet - print("Waiting for CAN messages...") - get_one_can(self.can_sock) - - num_pandas = len(messaging.recv_one_retry(self.sm.sock['pandaStates']).pandaStates) - experimental_long_allowed = self.params.get_bool("ExperimentalLongitudinalEnabled") - self.CI, self.CP = get_car(self.can_sock, self.pm.sock['sendcan'], experimental_long_allowed, num_pandas) - else: - self.CI, self.CP = CI, CI.CP - - # set alternative experiences from parameters - disengage_on_accelerator = self.params.get_bool("DisengageOnAccelerator") - enable_mads = self.params.get_bool("EnableMads") - mads_disengage_lateral_on_brake = self.params.get_bool("DisengageLateralOnBrake") - mads_dlob = enable_mads and mads_disengage_lateral_on_brake - mads_ndlob = enable_mads and not mads_disengage_lateral_on_brake - self.CP.alternativeExperience = 0 - if not disengage_on_accelerator: - self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.DISABLE_DISENGAGE_ON_GAS - if mads_dlob: - self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.ENABLE_MADS - elif mads_ndlob: - self.CP.alternativeExperience |= ALTERNATIVE_EXPERIENCE.MADS_DISABLE_DISENGAGE_LATERAL_ON_BRAKE - - if self.CP.customStockLongAvailable and self.CP.pcmCruise and self.params.get_bool("CustomStockLong"): - self.CP.pcmCruiseSpeed = False - - car_recognized = self.CP.carName != 'mock' - openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle") - - controller_available = self.CI.CC is not None and openpilot_enabled_toggle and not self.CP.dashcamOnly - - self.CP.passive = not car_recognized or not controller_available or self.CP.dashcamOnly - if self.CP.passive: - safety_config = car.CarParams.SafetyConfig.new_message() - safety_config.safetyModel = car.CarParams.SafetyModel.noOutput - self.CP.safetyConfigs = [safety_config] - - # Write previous route's CarParams - prev_cp = self.params.get("CarParamsPersistent") - if prev_cp is not None: - self.params.put("CarParamsPrevRoute", prev_cp) - - # Write CarParams for radard - cp_bytes = self.CP.to_bytes() - self.params.put("CarParams", cp_bytes) - self.params.put_nonblocking("CarParamsCache", cp_bytes) - self.params.put_nonblocking("CarParamsPersistent", cp_bytes) - - def initialize(self): - """Initialize CarInterface, once controls are ready""" - self.CI.init(self.CP, self.can_sock, self.pm.sock['sendcan']) - - def state_update(self, CC: car.CarControl): - """carState update loop, driven by can""" - - # TODO: This should not depend on carControl - - # Update carState from CAN - can_strs = messaging.drain_sock_raw(self.can_sock, wait_for_one=True) - self.CS = self.CI.update(CC, can_strs) - - self.sm.update(0) - - can_rcv_valid = len(can_strs) > 0 - - # Check for CAN timeout - if not can_rcv_valid: - self.can_rcv_timeout_counter += 1 - self.can_rcv_cum_timeout_counter += 1 - else: - self.can_rcv_timeout_counter = 0 - - self.can_rcv_timeout = self.can_rcv_timeout_counter >= 5 - - if can_rcv_valid and REPLAY: - self.can_log_mono_time = messaging.log_from_bytes(can_strs[0]).logMonoTime - - return self.CS - - def state_publish(self, car_events): - """carState and carParams publish loop""" - - # TODO: carState should be independent of the event loop - - # carState - cs_send = messaging.new_message('carState') - cs_send.valid = self.CS.canValid - cs_send.carState = self.CS - cs_send.carState.events = car_events - self.pm.send('carState', cs_send) - - # carParams - logged every 50 seconds (> 1 per segment) - if (self.sm.frame % int(50. / DT_CTRL) == 0): - cp_send = messaging.new_message('carParams') - cp_send.valid = True - cp_send.carParams = self.CP - self.pm.send('carParams', cp_send) - - def controls_update(self, CC: car.CarControl): - """control update loop, driven by carControl""" - - # send car controls over can - now_nanos = self.can_log_mono_time if REPLAY else int(time.monotonic() * 1e9) - actuators_output, can_sends = self.CI.apply(CC, now_nanos) - self.pm.send('sendcan', can_list_to_can_capnp(can_sends, msgtype='sendcan', valid=self.CS.canValid)) - - return actuators_output +PERSONALITY_MAPPING = {0: 0, 1: 1, 2: 2, 3: 2} class Controls: def __init__(self, CI=None): self.card = CarD(CI) - self.CP = self.card.CP + self.params = Params() + + with car.CarParams.from_bytes(self.params.get("CarParams", block=True)) as msg: + # TODO: this shouldn't need to be a builder + self.CP = msg.as_builder() + self.CI = self.card.CI - config_realtime_process(4, Priority.CTRL_HIGH) # Ensure the current branch is cached, otherwise the first iteration of controlsd lags self.branch = get_short_branch() @@ -210,8 +89,6 @@ class Controls: self.log_sock = messaging.sub_sock('androidLog') - self.params = Params() - self.d_camera_hardware_missing = self.params.get_bool("DriverCameraHardwareMissing") and not is_registered_device() if self.d_camera_hardware_missing: IGNORE_PROCESSES.update({"dmonitoringd", "dmonitoringmodeld"}) @@ -224,7 +101,7 @@ class Controls: ignore += ['driverMonitoringState'] lateral_plan_svs = ['lateralPlanDEPRECATED', 'lateralPlanSPDEPRECATED'] self.sm = messaging.SubMaster(['deviceState', 'pandaStates', 'peripheralState', 'modelV2', 'liveCalibration', - 'driverMonitoringState', 'longitudinalPlan', 'liveLocationKalman', + 'carOutput', 'driverMonitoringState', 'longitudinalPlan', 'liveLocationKalman', 'managerState', 'liveParameters', 'radarState', 'liveTorqueParameters', 'testJoystick', 'longitudinalPlanSP', 'modelV2SP'] + self.camera_packets + self.sensor_packets + lateral_plan_svs, ignore_alive=ignore, ignore_avg_freq=ignore+['radarState', 'testJoystick'], ignore_valid=['testJoystick', ], @@ -236,22 +113,18 @@ class Controls: self.disengage_on_accelerator = self.params.get_bool("DisengageOnAccelerator") self.is_metric = self.params.get_bool("IsMetric") self.is_ldw_enabled = self.params.get_bool("IsLdwEnabled") - openpilot_enabled_toggle = self.params.get_bool("OpenpilotEnabledToggle") # detect sound card presence and ensure successful init sounds_available = HARDWARE.get_sound_card_online() car_recognized = self.CP.carName != 'mock' - controller_available = self.CI.CC is not None and openpilot_enabled_toggle and not self.CP.dashcamOnly - # cleanup old params if not self.CP.experimentalLongitudinalAvailable: self.params.remove("ExperimentalLongitudinalEnabled") if not self.CP.openpilotLongitudinalControl: self.params.remove("ExperimentalMode") - self.CC = car.CarControl.new_message() self.CS_prev = car.CarState.new_message() self.AM = AlertManager() self.events = Events() @@ -283,10 +156,11 @@ class Controls: self.current_alert_types = [ET.PERMANENT] self.logged_comm_issue = None self.not_running_prev = None - self.last_actuators = car.CarControl.Actuators.new_message() self.steer_limited = False + self.last_actuators = car.CarControl.Actuators.new_message() self.desired_curvature = 0.0 self.experimental_mode = False + self.personality = self.read_personality_param() self.v_cruise_helper = VCruiseHelper(self.CP) self.recalibrating_seen = False self.nn_alert_shown = False @@ -309,7 +183,7 @@ class Controls: self.can_log_mono_time = 0 - self.startup_event = get_startup_event(car_recognized, controller_available, len(self.CP.carFw) > 0) + self.startup_event = get_startup_event(car_recognized, not self.CP.passive, len(self.CP.carFw) > 0) if not sounds_available: self.events.add(EventName.soundsUnavailable, static=True) @@ -577,7 +451,7 @@ class Controls: stock_long_is_braking = self.enabled and not self.CP.openpilotLongitudinalControl and CS.aEgo < -1.25 model_fcw = self.sm['modelV2'].meta.hardBrakePredicted and not CS.brakePressed and not stock_long_is_braking planner_fcw = self.sm['longitudinalPlan'].fcw and self.enabled - if planner_fcw or model_fcw: + if (planner_fcw or model_fcw) and not (self.CP.notCar and self.joystick_mode): self.events.add(EventName.fcw) for m in messaging.drain_sock(self.log_sock, wait_for_one=False): @@ -594,7 +468,7 @@ class Controls: # TODO: fix simulator if not SIMULATION or REPLAY: # Not show in first 1 km to allow for driving out of garage. This event shows after 5 minutes - if not self.sm['liveLocationKalman'].gpsOK and self.sm['liveLocationKalman'].inputsOK and (self.distance_traveled > 1000): + if not self.sm['liveLocationKalman'].gpsOK and self.sm['liveLocationKalman'].inputsOK and (self.distance_traveled > 1500): self.events.add(EventName.noGps) if self.sm['liveLocationKalman'].gpsOK: self.distance_traveled = 0 @@ -606,7 +480,7 @@ class Controls: def data_sample(self): """Receive data from sockets and update carState""" - CS = self.card.state_update(self.CC) + CS = self.card.state_update() self.sm.update(0) @@ -884,11 +758,22 @@ class Controls: cloudlog.error(f"actuators.{p} not finite {actuators.to_dict()}") setattr(actuators, p, 0.0) + # decrement personality on distance button press + if self.CP.openpilotLongitudinalControl: + if self.v_cruise_helper.update_personality: + self.personality = (self.personality - 1) % 3 + self.params.put_nonblocking('LongitudinalPersonality', str(self.personality)) + if self.v_cruise_helper.update_experimental_mode: + self.experimental_mode = not self.experimental_mode + self.params.put_bool_nonblocking('ExperimentalMode', self.experimental_mode) + return CC, lac_log def publish_logs(self, CS, start_time, CC, lac_log): """Send actuators and hud commands to the car, send controlsstate and MPC logging""" + CO = self.sm['carOutput'] + # Orientation and angle rates can be useful for carcontroller # Only calibrated (car) frame is relevant for the carcontroller orientation_value = list(self.sm['liveLocationKalman'].calibratedOrientationNED.value) @@ -913,6 +798,7 @@ class Controls: hudControl.speedVisible = self.enabled_long hudControl.lanesVisible = self.enabled hudControl.leadVisible = self.sm['longitudinalPlan'].hasLead + hudControl.leadDistanceBars = self.personality + 1 hudControl.rightLaneVisible = True hudControl.leftLaneVisible = True @@ -952,13 +838,13 @@ class Controls: hudControl.visualAlert = current_alert.visual_alert if not self.CP.passive and self.initialized: - self.last_actuators = self.card.controls_update(CC) - CC.actuatorsOutput = self.last_actuators + self.card.controls_update(CC) + self.last_actuators = CO.actuatorsOutput if self.CP.steerControlType == car.CarParams.SteerControlType.angle: - self.steer_limited = abs(CC.actuators.steeringAngleDeg - CC.actuatorsOutput.steeringAngleDeg) > \ + self.steer_limited = abs(CC.actuators.steeringAngleDeg - CO.actuatorsOutput.steeringAngleDeg) > \ STEER_ANGLE_SATURATION_THRESHOLD else: - self.steer_limited = abs(CC.actuators.steer - CC.actuatorsOutput.steer) > 1e-2 + self.steer_limited = abs(CC.actuators.steer - CO.actuatorsOutput.steer) > 1e-2 force_decel = (self.sm['driverMonitoringState'].awarenessStatus < 0.) or \ (self.state == State.softDisabling) @@ -1003,6 +889,7 @@ class Controls: controlsState.forceDecel = bool(force_decel) controlsState.canErrorCounter = self.card.can_rcv_cum_timeout_counter controlsState.experimentalMode = self.experimental_mode + controlsState.personality = PERSONALITY_MAPPING.get(self.personality, log.LongitudinalPersonality.standard) lat_tuning = self.CP.lateralTuning.which() if self.joystick_mode: @@ -1020,21 +907,18 @@ class Controls: controlsStateSP = dat_sp.controlsStateSP controlsStateSP.lateralState = lat_tuning + controlsStateSP.personality = self.personality if self.enable_nnff and lat_tuning == 'torque': controlsStateSP.lateralControlState.torqueState = self.LaC.pid_long_sp self.pm.send('controlsStateSP', dat_sp) - car_events = self.events.to_msg() - - self.card.state_publish(car_events) - # onroadEvents - logged every second or on change if (self.sm.frame % int(1. / DT_CTRL) == 0) or (self.events.names != self.events_prev): ce_send = messaging.new_message('onroadEvents', len(self.events)) ce_send.valid = True - ce_send.onroadEvents = car_events + ce_send.onroadEvents = self.events.to_msg() self.pm.send('onroadEvents', ce_send) self.events_prev = self.events.names.copy() @@ -1044,9 +928,6 @@ class Controls: cc_send.carControl = CC self.pm.send('carControl', cc_send) - # copy CarControl to pass to CarInterface on the next iteration - self.CC = CC - def step(self): start_time = time.monotonic() @@ -1069,10 +950,17 @@ class Controls: self.CS_prev = CS + def read_personality_param(self): + try: + return int(self.params.get('LongitudinalPersonality')) + except (ValueError, TypeError): + return custom.LongitudinalPersonalitySP.standard + def params_thread(self, evt): while not evt.is_set(): self.is_metric = self.params.get_bool("IsMetric") self.experimental_mode = self.params.get_bool("ExperimentalMode") and self.CP.openpilotLongitudinalControl + self.personality = self.read_personality_param() if self.CP.notCar: self.joystick_mode = self.params.get_bool("JoystickDebugMode") @@ -1098,6 +986,7 @@ class Controls: def main(): + config_realtime_process(4, Priority.CTRL_HIGH) controls = Controls() controls.controlsd_thread() diff --git a/selfdrive/controls/lib/alerts_offroad.json b/selfdrive/controls/lib/alerts_offroad.json index e08d67f43b..0293a655fa 100644 --- a/selfdrive/controls/lib/alerts_offroad.json +++ b/selfdrive/controls/lib/alerts_offroad.json @@ -1,7 +1,7 @@ { "Offroad_TemperatureTooHigh": { "text": "Device temperature too high. System cooling down before starting. Current internal component temperature: %1", - "severity": 1 + "severity": 0 }, "Offroad_ConnectivityNeededPrompt": { "text": "Immediately connect to the internet to check for updates. If you do not connect to the internet, openpilot won't engage in %1", @@ -17,10 +17,6 @@ "severity": 1, "_comment": "Set extra field to the failed reason." }, - "Offroad_InvalidTime": { - "text": "Invalid date and time settings, system won't start. Connect to internet to set time.", - "severity": 1 - }, "Offroad_IsTakingSnapshot": { "text": "Taking camera snapshots. System won't start until finished.", "severity": 0 diff --git a/selfdrive/controls/lib/drive_helpers.py b/selfdrive/controls/lib/drive_helpers.py index 61edf7aade..0c80d186e5 100644 --- a/selfdrive/controls/lib/drive_helpers.py +++ b/selfdrive/controls/lib/drive_helpers.py @@ -75,7 +75,7 @@ class VCruiseHelper: self.v_cruise_kph = V_CRUISE_UNSET self.v_cruise_cluster_kph = V_CRUISE_UNSET self.v_cruise_kph_last = 0 - self.button_timers = {ButtonType.decelCruise: 0, ButtonType.accelCruise: 0} + self.button_timers = {ButtonType.decelCruise: 0, ButtonType.accelCruise: 0, ButtonType.gapAdjustCruise: 0} self.button_change_states = {btn: {"standstill": False, "enabled": False} for btn in self.button_timers} self.is_metric_prev = None @@ -84,6 +84,9 @@ class VCruiseHelper: self.slc_state_prev = SpeedLimitControlState.inactive self.slc_speed_limit_offsetted = 0 + self.update_personality = False + self.update_experimental_mode = False + @property def v_cruise_initialized(self): return self.v_cruise_kph != V_CRUISE_UNSET @@ -120,6 +123,8 @@ class VCruiseHelper: long_press = False button_type = None + update_personality = False + update_experimental_mode = False v_cruise_delta = 1. if is_metric else IMPERIAL_INCREMENT v_cruise_delta_mltplr = 10 if is_metric else 5 @@ -140,6 +145,15 @@ class VCruiseHelper: if button_type is None: return + if button_type == ButtonType.gapAdjustCruise and self.button_timers[ButtonType.gapAdjustCruise]: + if self.button_timers[ButtonType.gapAdjustCruise] < 50: + update_personality = True + elif self.button_timers[ButtonType.gapAdjustCruise] == 50: + update_experimental_mode = True + + self.update_personality = update_personality + self.update_experimental_mode = update_experimental_mode + resume_button = ButtonType.accelCruise if not self.CP.pcmCruiseSpeed: if self.CP.carName == "chrysler": @@ -154,6 +168,9 @@ class VCruiseHelper: if not self.button_change_states[button_type]["enabled"]: return + if button_type == ButtonType.gapAdjustCruise: + return + pressed_value = (1 if long_press else v_cruise_delta_mltplr) if reverse_acc else (v_cruise_delta_mltplr if long_press else 1) long_press_state = not long_press if reverse_acc else long_press v_cruise_delta = v_cruise_delta * pressed_value diff --git a/selfdrive/controls/lib/dynamic_experimental_controller.py b/selfdrive/controls/lib/dynamic_experimental_controller.py index 937458924f..ca118d666c 100644 --- a/selfdrive/controls/lib/dynamic_experimental_controller.py +++ b/selfdrive/controls/lib/dynamic_experimental_controller.py @@ -131,7 +131,7 @@ class DynamicExperimentalController: self._has_mpc_fcw = self._mpc_fcw_gmac.get_moving_average() >= MPC_FCW_PROB # nav enable detection - self._has_nav_instruction = md.navEnabled and maneuver_distance / max(car_state.vEgo, 1) < 13 + self._has_nav_instruction = md.navEnabledDEPRECATED and maneuver_distance / max(car_state.vEgo, 1) < 13 # lead detection self._lead_gmac.add_data(lead_one.status) diff --git a/selfdrive/controls/lib/events.py b/selfdrive/controls/lib/events.py index a2ae918e94..650fcc210e 100755 --- a/selfdrive/controls/lib/events.py +++ b/selfdrive/controls/lib/events.py @@ -7,9 +7,9 @@ from collections.abc import Callable from cereal import log, car import cereal.messaging as messaging from openpilot.common.conversions import Conversions as CV +from openpilot.common.git import get_short_branch from openpilot.common.realtime import DT_CTRL from openpilot.selfdrive.locationd.calibrationd import MIN_SPEED_FILTER -from openpilot.system.version import get_short_branch AlertSize = log.ControlsState.AlertSize AlertStatus = log.ControlsState.AlertStatus @@ -251,14 +251,6 @@ def calibration_incomplete_alert(CP: car.CarParams, CS: car.CarState, sm: messag Priority.LOWEST, VisualAlert.none, AudibleAlert.none, .2) -def no_gps_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int) -> Alert: - return Alert( - "Poor GPS reception", - "Hardware malfunctioning if sky is visible", - AlertStatus.normal, AlertSize.mid, - Priority.LOWER, VisualAlert.none, AudibleAlert.none, .2, creation_delay=300.) - - def torque_nn_load_alert(CP: car.CarParams, CS: car.CarState, sm: messaging.SubMaster, metric: bool, soft_disable_time: int) -> Alert: model_name = CP.lateralTuning.torque.nnModelName if model_name in ("", "mock"): @@ -464,7 +456,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.preDriverDistracted: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "Pay Attention", "", AlertStatus.normal, AlertSize.small, @@ -472,7 +464,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.promptDriverDistracted: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "Pay Attention", "Driver Distracted", AlertStatus.userPrompt, AlertSize.mid, @@ -480,7 +472,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.driverDistracted: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "DISENGAGE IMMEDIATELY", "Driver Distracted", AlertStatus.critical, AlertSize.full, @@ -488,7 +480,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.preDriverUnresponsive: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "Touch Steering Wheel: No Face Detected", "", AlertStatus.normal, AlertSize.small, @@ -496,7 +488,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.promptDriverUnresponsive: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "Touch Steering Wheel", "Driver Unresponsive", AlertStatus.userPrompt, AlertSize.mid, @@ -504,7 +496,7 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.driverUnresponsive: { - ET.WARNING: Alert( + ET.PERMANENT: Alert( "DISENGAGE IMMEDIATELY", "Driver Unresponsive", AlertStatus.critical, AlertSize.full, @@ -642,9 +634,6 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, # Unused - EventName.gpsMalfunction: { - ET.PERMANENT: NormalPermanentAlert("GPS Malfunction", "Likely Hardware Issue"), - }, EventName.locationdTemporaryError: { ET.NO_ENTRY: NoEntryAlert("locationd Temporary Error"), @@ -842,7 +831,11 @@ EVENTS: dict[int, dict[str, Alert | AlertCallbackType]] = { }, EventName.noGps: { - ET.PERMANENT: no_gps_alert, + ET.PERMANENT: Alert( + "Poor GPS reception", + "Ensure device has a clear view of the sky", + AlertStatus.normal, AlertSize.mid, + Priority.LOWER, VisualAlert.none, AudibleAlert.none, .2, creation_delay=600.) }, EventName.soundsUnavailable: { diff --git a/selfdrive/controls/lib/lateral_mpc_lib/SConscript b/selfdrive/controls/lib/lateral_mpc_lib/SConscript index 49666abe69..b6603e69fc 100644 --- a/selfdrive/controls/lib/lateral_mpc_lib/SConscript +++ b/selfdrive/controls/lib/lateral_mpc_lib/SConscript @@ -1,4 +1,4 @@ -Import('env', 'envCython', 'arch') +Import('env', 'envCython', 'arch', 'messaging_python', 'common_python', 'opendbc_python') gen = "c_generated_code" @@ -60,6 +60,7 @@ lenv.Clean(generated_files, Dir(gen)) generated_lat = lenv.Command(generated_files, source_list, f"cd {Dir('.').abspath} && python3 lat_mpc.py") +lenv.Depends(generated_lat, [messaging_python, common_python, opendbc_python]) lenv["CFLAGS"].append("-DACADOS_WITH_QPOASES") lenv["CXXFLAGS"].append("-DACADOS_WITH_QPOASES") diff --git a/selfdrive/controls/lib/longcontrol.py b/selfdrive/controls/lib/longcontrol.py index ee65c4a69e..dfacb2df92 100644 --- a/selfdrive/controls/lib/longcontrol.py +++ b/selfdrive/controls/lib/longcontrol.py @@ -11,7 +11,7 @@ LongCtrlState = car.CarControl.Actuators.LongControlState def long_control_state_trans(CP, active, long_control_state, v_ego, v_target, v_target_1sec, brake_pressed, cruise_standstill): # Ignore cruise standstill if car has a gas interceptor - cruise_standstill = cruise_standstill and not CP.enableGasInterceptor + cruise_standstill = cruise_standstill and not CP.enableGasInterceptorDEPRECATED accelerating = v_target_1sec > v_target planned_stop = (v_target < CP.vEgoStopping and v_target_1sec < CP.vEgoStopping and diff --git a/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript b/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript index 79afa1d918..c00d5cb5a7 100644 --- a/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript +++ b/selfdrive/controls/lib/longitudinal_mpc_lib/SConscript @@ -1,4 +1,4 @@ -Import('env', 'envCython', 'arch', 'messaging_python', 'common_python') +Import('env', 'envCython', 'arch', 'messaging_python', 'common_python', 'opendbc_python') gen = "c_generated_code" @@ -66,7 +66,7 @@ lenv.Clean(generated_files, Dir(gen)) generated_long = lenv.Command(generated_files, source_list, f"cd {Dir('.').abspath} && python3 long_mpc.py") -lenv.Depends(generated_long, [messaging_python, common_python]) +lenv.Depends(generated_long, [messaging_python, common_python, opendbc_python]) lenv["CFLAGS"].append("-DACADOS_WITH_QPOASES") lenv["CXXFLAGS"].append("-DACADOS_WITH_QPOASES") diff --git a/selfdrive/controls/lib/longitudinal_planner.py b/selfdrive/controls/lib/longitudinal_planner.py index 8ccd2cdee1..fdd4d9aced 100755 --- a/selfdrive/controls/lib/longitudinal_planner.py +++ b/selfdrive/controls/lib/longitudinal_planner.py @@ -3,7 +3,7 @@ import math import numpy as np from openpilot.common.numpy_fast import clip, interp from openpilot.common.params import Params -from cereal import car, log, custom +from cereal import car import cereal.messaging as messaging from openpilot.common.conversions import Conversions as CV @@ -32,8 +32,6 @@ A_CRUISE_MAX_BP = [0., 10.0, 25., 40.] _A_TOTAL_MAX_V = [1.7, 3.2] _A_TOTAL_MAX_BP = [20., 40.] -PERSONALITY_MAPPING = {0: 0, 1: 1, 2: 2, 3: 2} - EventName = car.CarEvent.EventName @@ -75,7 +73,6 @@ class LongitudinalPlanner: self.params = Params() self.param_read_counter = 0 self.read_param() - self.personality = custom.LongitudinalPersonalitySP.standard self.cruise_source = 'cruise' self.vision_turn_controller = VisionTurnController(CP) @@ -89,10 +86,6 @@ class LongitudinalPlanner: self.dynamic_experimental_controller.set_enabled(self.params.get_bool("DynamicExperimentalControl")) except AttributeError: self.dynamic_experimental_controller = DynamicExperimentalController() - try: - self.personality = int(self.params.get('LongitudinalPersonality')) - except (ValueError, TypeError): - self.personality = custom.LongitudinalPersonalitySP.standard @staticmethod def parse_model(model_msg, model_error): @@ -161,11 +154,11 @@ class LongitudinalPlanner: accel_limits_turns[0] = min(accel_limits_turns[0], self.a_desired + 0.05) accel_limits_turns[1] = max(accel_limits_turns[1], self.a_desired - 0.05) - self.mpc.set_weights(prev_accel_constraint, personality=self.personality) + self.mpc.set_weights(prev_accel_constraint, personality=sm['controlsState'].personality) self.mpc.set_accel_limits(accel_limits_turns[0], accel_limits_turns[1]) self.mpc.set_cur_state(self.v_desired_filter.x, self.a_desired) x, v, a, j = self.parse_model(sm['modelV2'], self.v_model_error) - self.mpc.update(sm['radarState'], v_cruise, x, v, a, j, personality=self.personality) + self.mpc.update(sm['radarState'], v_cruise, x, v, a, j, personality=sm['controlsState'].personality) self.v_desired_trajectory_full = np.interp(ModelConstants.T_IDXS, T_IDXS_MPC, self.mpc.v_solution) self.a_desired_trajectory_full = np.interp(ModelConstants.T_IDXS, T_IDXS_MPC, self.mpc.a_solution) @@ -203,7 +196,6 @@ class LongitudinalPlanner: longitudinalPlan.fcw = self.fcw longitudinalPlan.solverExecutionTime = self.mpc.solve_time - longitudinalPlan.personality = PERSONALITY_MAPPING.get(self.personality, log.LongitudinalPersonality.standard) pm.send('longitudinalPlan', plan_send) @@ -232,8 +224,6 @@ class LongitudinalPlanner: longitudinalPlanSP.turnSpeedControlState = self.turn_speed_controller.state longitudinalPlanSP.turnSpeed = float(self.turn_speed_controller.v_target) - longitudinalPlanSP.personality = self.personality - longitudinalPlanSP.e2eBlended = self.mpc.mode pm.send('longitudinalPlanSP', plan_sp_send) diff --git a/selfdrive/controls/lib/tests/test_latcontrol.py b/selfdrive/controls/lib/tests/test_latcontrol.py index 866270ca60..838023af72 100755 --- a/selfdrive/controls/lib/tests/test_latcontrol.py +++ b/selfdrive/controls/lib/tests/test_latcontrol.py @@ -17,7 +17,7 @@ from openpilot.common.mock.generators import generate_liveLocationKalman class TestLatControl(unittest.TestCase): - @parameterized.expand([(HONDA.CIVIC, LatControlPID), (TOYOTA.RAV4, LatControlTorque), (NISSAN.LEAF, LatControlAngle)]) + @parameterized.expand([(HONDA.HONDA_CIVIC, LatControlPID), (TOYOTA.TOYOTA_RAV4, LatControlTorque), (NISSAN.NISSAN_LEAF, LatControlAngle)]) def test_saturation(self, car_name, controller): CarInterface, CarController, CarState = interfaces[car_name] CP = CarInterface.get_non_essential_params(car_name) diff --git a/selfdrive/controls/lib/tests/test_vehicle_model.py b/selfdrive/controls/lib/tests/test_vehicle_model.py index d016e87527..c3997afdf3 100755 --- a/selfdrive/controls/lib/tests/test_vehicle_model.py +++ b/selfdrive/controls/lib/tests/test_vehicle_model.py @@ -12,7 +12,7 @@ from openpilot.selfdrive.controls.lib.vehicle_model import VehicleModel, dyn_ss_ class TestVehicleModel(unittest.TestCase): def setUp(self): - CP = CarInterface.get_non_essential_params(CAR.CIVIC) + CP = CarInterface.get_non_essential_params(CAR.HONDA_CIVIC) self.VM = VehicleModel(CP) def test_round_trip_yaw_rate(self): diff --git a/selfdrive/controls/radard.py b/selfdrive/controls/radard.py index 08c8b2e50e..41536e859e 100755 --- a/selfdrive/controls/radard.py +++ b/selfdrive/controls/radard.py @@ -135,7 +135,7 @@ def match_vision_to_track(v_ego: float, lead: capnp._DynamicStructReader, tracks prob_y = laplacian_pdf(c.yRel, -lead.y[0], lead.yStd[0]) prob_v = laplacian_pdf(c.vRel + v_ego, lead.v[0], lead.vStd[0]) - # This is isn't exactly right, but good heuristic + # This isn't exactly right, but it's a good heuristic return prob_d * prob_y * prob_v track = max(tracks.values(), key=prob) diff --git a/selfdrive/controls/tests/test_cruise_speed.py b/selfdrive/controls/tests/test_cruise_speed.py index 76a2222e85..c46d03ad1e 100755 --- a/selfdrive/controls/tests/test_cruise_speed.py +++ b/selfdrive/controls/tests/test_cruise_speed.py @@ -5,7 +5,6 @@ import unittest from parameterized import parameterized_class from cereal import log -from openpilot.common.params import Params from openpilot.selfdrive.controls.lib.drive_helpers import VCruiseHelper, V_CRUISE_MIN, V_CRUISE_MAX, V_CRUISE_INITIAL, IMPERIAL_INCREMENT from cereal import car from openpilot.common.conversions import Conversions as CV @@ -15,7 +14,7 @@ ButtonEvent = car.CarState.ButtonEvent ButtonType = car.CarState.ButtonEvent.Type -def run_cruise_simulation(cruise, e2e, t_end=20.): +def run_cruise_simulation(cruise, e2e, personality, t_end=20.): man = Maneuver( '', duration=t_end, @@ -26,6 +25,7 @@ def run_cruise_simulation(cruise, e2e, t_end=20.): prob_lead_values=[0.0], breakpoints=[0.], e2e=e2e, + personality=personality, ) valid, output = man.evaluate() assert valid @@ -38,12 +38,10 @@ def run_cruise_simulation(cruise, e2e, t_end=20.): [5,35])) # speed class TestCruiseSpeed(unittest.TestCase): def test_cruise_speed(self): - params = Params() - params.put("LongitudinalPersonality", str(self.personality)) print(f'Testing {self.speed} m/s') cruise_speed = float(self.speed) - simulation_steady_state = run_cruise_simulation(cruise_speed, self.e2e) + simulation_steady_state = run_cruise_simulation(cruise_speed, self.e2e, self.personality) self.assertAlmostEqual(simulation_steady_state, cruise_speed, delta=.01, msg=f'Did not reach {self.speed} m/s') diff --git a/selfdrive/controls/tests/test_following_distance.py b/selfdrive/controls/tests/test_following_distance.py index 3b31632721..f58e6383c4 100755 --- a/selfdrive/controls/tests/test_following_distance.py +++ b/selfdrive/controls/tests/test_following_distance.py @@ -3,14 +3,13 @@ import unittest import itertools from parameterized import parameterized_class -from openpilot.common.params import Params from cereal import log from openpilot.selfdrive.controls.lib.longitudinal_mpc_lib.long_mpc import desired_follow_distance, get_T_FOLLOW from openpilot.selfdrive.test.longitudinal_maneuvers.maneuver import Maneuver -def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False): +def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False, personality=0): man = Maneuver( '', duration=t_end, @@ -20,6 +19,7 @@ def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False): speed_lead_values=[v_lead], breakpoints=[0.], e2e=e2e, + personality=personality, ) valid, output = man.evaluate() assert valid @@ -34,10 +34,8 @@ def run_following_distance_simulation(v_lead, t_end=100.0, e2e=False): [0,10,35])) # speed class TestFollowingDistance(unittest.TestCase): def test_following_distance(self): - params = Params() - params.put("LongitudinalPersonality", str(self.personality)) v_lead = float(self.speed) - simulation_steady_state = run_following_distance_simulation(v_lead, e2e=self.e2e) + simulation_steady_state = run_following_distance_simulation(v_lead, e2e=self.e2e, personality=self.personality) correct_steady_state = desired_follow_distance(v_lead, v_lead, get_T_FOLLOW(self.personality)) err_ratio = 0.2 if self.e2e else 0.1 self.assertAlmostEqual(simulation_steady_state, correct_steady_state, delta=(err_ratio * correct_steady_state + .5)) diff --git a/selfdrive/controls/tests/test_leads.py b/selfdrive/controls/tests/test_leads.py index 268d9c47a7..a06387a087 100755 --- a/selfdrive/controls/tests/test_leads.py +++ b/selfdrive/controls/tests/test_leads.py @@ -25,7 +25,7 @@ class TestLeads(unittest.TestCase): return msgs msgs = [m for _ in range(3) for m in single_iter_pkg()] - out = replay_process_with_name("radard", msgs, fingerprint=TOYOTA.COROLLA_TSS2) + out = replay_process_with_name("radard", msgs, fingerprint=TOYOTA.TOYOTA_COROLLA_TSS2) states = [m for m in out if m.which() == "radarState"] failures = [not state.valid and len(state.radarState.radarErrors) for state in states] diff --git a/selfdrive/controls/tests/test_startup.py b/selfdrive/controls/tests/test_startup.py index 34d14fbb39..23cc96a2e4 100644 --- a/selfdrive/controls/tests/test_startup.py +++ b/selfdrive/controls/tests/test_startup.py @@ -39,12 +39,12 @@ CX5_FW_VERSIONS = [ # TODO: test EventName.startup for release branches # officially supported car - (EventName.startupMaster, TOYOTA.COROLLA, COROLLA_FW_VERSIONS, "toyota"), - (EventName.startupMaster, TOYOTA.COROLLA, COROLLA_FW_VERSIONS, "toyota"), + (EventName.startupMaster, TOYOTA.TOYOTA_COROLLA, COROLLA_FW_VERSIONS, "toyota"), + (EventName.startupMaster, TOYOTA.TOYOTA_COROLLA, COROLLA_FW_VERSIONS, "toyota"), # dashcamOnly car - (EventName.startupNoControl, MAZDA.CX5, CX5_FW_VERSIONS, "mazda"), - (EventName.startupNoControl, MAZDA.CX5, CX5_FW_VERSIONS, "mazda"), + (EventName.startupNoControl, MAZDA.MAZDA_CX5, CX5_FW_VERSIONS, "mazda"), + (EventName.startupNoControl, MAZDA.MAZDA_CX5, CX5_FW_VERSIONS, "mazda"), # unrecognized car with no fw (EventName.startupNoFw, None, None, ""), @@ -55,8 +55,8 @@ CX5_FW_VERSIONS = [ (EventName.startupNoCar, None, COROLLA_FW_VERSIONS[:1], "toyota"), # fuzzy match - (EventName.startupMaster, TOYOTA.COROLLA, COROLLA_FW_VERSIONS_FUZZY, "toyota"), - (EventName.startupMaster, TOYOTA.COROLLA, COROLLA_FW_VERSIONS_FUZZY, "toyota"), + (EventName.startupMaster, TOYOTA.TOYOTA_COROLLA, COROLLA_FW_VERSIONS_FUZZY, "toyota"), + (EventName.startupMaster, TOYOTA.TOYOTA_COROLLA, COROLLA_FW_VERSIONS_FUZZY, "toyota"), ]) def test_startup_alert(expected_event, car_model, fw_versions, brand): controls_sock = messaging.sub_sock("controlsState") diff --git a/selfdrive/controls/tests/test_state_machine.py b/selfdrive/controls/tests/test_state_machine.py index bdeed9fb7a..d49111752d 100755 --- a/selfdrive/controls/tests/test_state_machine.py +++ b/selfdrive/controls/tests/test_state_machine.py @@ -7,6 +7,7 @@ from openpilot.selfdrive.car.car_helpers import interfaces from openpilot.selfdrive.controls.controlsd import Controls, SOFT_DISABLE_TIME from openpilot.selfdrive.controls.lib.events import Events, ET, Alert, Priority, AlertSize, AlertStatus, VisualAlert, \ AudibleAlert, EVENTS +from openpilot.selfdrive.car.mock.values import CAR as MOCK State = log.ControlsState.OpenpilotState @@ -30,8 +31,8 @@ def make_event(event_types): class TestStateMachine(unittest.TestCase): def setUp(self): - CarInterface, CarController, CarState = interfaces["mock"] - CP = CarInterface.get_non_essential_params("mock") + CarInterface, CarController, CarState = interfaces[MOCK.MOCK] + CP = CarInterface.get_non_essential_params(MOCK.MOCK) CI = CarInterface(CP, CarController, CarState) self.controlsd = Controls(CI=CI) diff --git a/selfdrive/debug/check_can_parser_performance.py b/selfdrive/debug/check_can_parser_performance.py index c4b688ce29..604a1df124 100755 --- a/selfdrive/debug/check_can_parser_performance.py +++ b/selfdrive/debug/check_can_parser_performance.py @@ -25,11 +25,12 @@ if __name__ == '__main__': CC = car.CarControl.new_message() ets = [] for _ in tqdm(range(N_RUNS)): + msgs = [(m.as_builder().to_bytes(),) for m in tm.can_msgs] start_t = time.process_time_ns() - for msg in tm.can_msgs: + for msg in msgs: for cp in tm.CI.can_parsers: if cp is not None: - cp.update_strings((msg.as_builder().to_bytes(),)) + cp.update_strings(msg) ets.append((time.process_time_ns() - start_t) * 1e-6) print(f'{len(tm.can_msgs)} CAN packets, {N_RUNS} runs') diff --git a/selfdrive/debug/check_timings.py b/selfdrive/debug/check_timings.py index 3de6b8eb66..24c467659d 100755 --- a/selfdrive/debug/check_timings.py +++ b/selfdrive/debug/check_timings.py @@ -21,5 +21,5 @@ if __name__ == "__main__": if len(ts[s]) > 2: d = np.diff(ts[s]) - print(f"{s:25} {np.mean(d):.2f} {np.std(d):.2f} {np.max(d):.2f} {np.min(d):.2f}") + print(f"{s:25} {np.mean(d):7.2f} {np.std(d):7.2f} {np.max(d):7.2f} {np.min(d):7.2f}") time.sleep(1) diff --git a/selfdrive/debug/cycle_alerts.py b/selfdrive/debug/cycle_alerts.py index 1a5677030a..d44c70ddb9 100755 --- a/selfdrive/debug/cycle_alerts.py +++ b/selfdrive/debug/cycle_alerts.py @@ -52,7 +52,7 @@ def cycle_alerts(duration=200, is_metric=False): cameras = ['roadCameraState', 'wideRoadCameraState', 'driverCameraState'] CS = car.CarState.new_message() - CP = CarInterface.get_non_essential_params("HONDA CIVIC 2016") + CP = CarInterface.get_non_essential_params("HONDA_CIVIC") sm = messaging.SubMaster(['deviceState', 'pandaStates', 'roadCameraState', 'modelV2', 'liveCalibration', 'driverMonitoringState', 'longitudinalPlan', 'liveLocationKalman', 'managerState', 'longitudinalPlanSP', 'driverMonitoringStateSP'] + cameras) diff --git a/selfdrive/debug/debug_fw_fingerprinting_offline.py b/selfdrive/debug/debug_fw_fingerprinting_offline.py index d521ab2e18..8ae9d6d347 100755 --- a/selfdrive/debug/debug_fw_fingerprinting_offline.py +++ b/selfdrive/debug/debug_fw_fingerprinting_offline.py @@ -13,7 +13,7 @@ def main(route: str, addrs: list[int]): - print as fixed width table, easier to read """ - lr = LogReader(route, default_mode=ReadMode.RLOG) + lr = LogReader(route, default_mode=ReadMode.RLOG, sort_by_time=True) start_mono_time = None prev_mono_time = 0 @@ -32,7 +32,7 @@ def main(route: str, addrs: list[int]): if msg.logMonoTime != prev_mono_time: print() prev_mono_time = msg.logMonoTime - print(f"{msg.logMonoTime} rxaddr={can.address}, bus={can.src}, {round((msg.logMonoTime - start_mono_time) * 1e-6, 2)} ms, " + + print(f"{msg.which():>7}: rxaddr={can.address}, bus={can.src}, {round((msg.logMonoTime - start_mono_time) * 1e-6, 2)} ms, " + f"0x{can.dat.hex()}, {can.dat}, {len(can.dat)=}") diff --git a/selfdrive/debug/dump_car_info.py b/selfdrive/debug/dump_car_docs.py similarity index 64% rename from selfdrive/debug/dump_car_info.py rename to selfdrive/debug/dump_car_docs.py index 6af328926b..f09c602cff 100755 --- a/selfdrive/debug/dump_car_info.py +++ b/selfdrive/debug/dump_car_docs.py @@ -2,12 +2,12 @@ import argparse import pickle -from openpilot.selfdrive.car.docs import get_all_car_info +from openpilot.selfdrive.car.docs import get_all_car_docs -def dump_car_info(path): +def dump_car_docs(path): with open(path, 'wb') as f: - pickle.dump(get_all_car_info(), f) + pickle.dump(get_all_car_docs(), f) print(f'Dumping car info to {path}') @@ -15,4 +15,4 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--path", required=True) args = parser.parse_args() - dump_car_info(args.path) + dump_car_docs(args.path) diff --git a/selfdrive/debug/hyundai_enable_radar_points.py b/selfdrive/debug/hyundai_enable_radar_points.py index 7735391f4f..e5cae0d470 100755 --- a/selfdrive/debug/hyundai_enable_radar_points.py +++ b/selfdrive/debug/hyundai_enable_radar_points.py @@ -36,6 +36,9 @@ SUPPORTED_FW_VERSIONS = { default_config=b"\x00\x00\x00\x01\x00\x00", tracks_enabled=b"\x00\x00\x00\x01\x00\x01"), # 2021 SONATA HYBRID + b"DNhe SCC FHCUP 1.00 1.00 99110-L5000\x19\x04&\x13' ": ConfigValues( + default_config=b"\x00\x00\x00\x01\x00\x00", + tracks_enabled=b"\x00\x00\x00\x01\x00\x01"), b"DNhe SCC FHCUP 1.00 1.02 99110-L5000 \x01#\x15# ": ConfigValues( default_config=b"\x00\x00\x00\x01\x00\x00", tracks_enabled=b"\x00\x00\x00\x01\x00\x01"), diff --git a/selfdrive/debug/print_docs_diff.py b/selfdrive/debug/print_docs_diff.py index 3d35532496..7ef89a6eca 100755 --- a/selfdrive/debug/print_docs_diff.py +++ b/selfdrive/debug/print_docs_diff.py @@ -4,7 +4,7 @@ from collections import defaultdict import difflib import pickle -from openpilot.selfdrive.car.docs import get_all_car_info +from openpilot.selfdrive.car.docs import get_all_car_docs from openpilot.selfdrive.car.docs_definitions import Column FOOTNOTE_TAG = "{}" @@ -17,7 +17,7 @@ COLUMN_HEADER = "|---|---|---|{}|".format("|".join([":---:"] * (len(Column) - 3) ARROW_SYMBOL = "➡️" -def load_base_car_info(path): +def load_base_car_docs(path): with open(path, "rb") as f: return pickle.load(f) @@ -57,31 +57,31 @@ def format_row(builder): return "|" + "|".join(builder) + "|" -def print_car_info_diff(path): - base_car_info = defaultdict(list) - new_car_info = defaultdict(list) +def print_car_docs_diff(path): + base_car_docs = defaultdict(list) + new_car_docs = defaultdict(list) - for car in load_base_car_info(path): - base_car_info[car.car_fingerprint].append(car) - for car in get_all_car_info(): - new_car_info[car.car_fingerprint].append(car) + for car in load_base_car_docs(path): + base_car_docs[car.car_fingerprint].append(car) + for car in get_all_car_docs(): + new_car_docs[car.car_fingerprint].append(car) # Add new platforms to base cars so we can detect additions and removals in one pass - base_car_info.update({car: [] for car in new_car_info if car not in base_car_info}) + base_car_docs.update({car: [] for car in new_car_docs if car not in base_car_docs}) changes = defaultdict(list) - for base_car_model, base_cars in base_car_info.items(): + for base_car_model, base_cars in base_car_docs.items(): # Match car info changes, and get additions and removals - new_cars = new_car_info[base_car_model] + new_cars = new_car_docs[base_car_model] car_changes, car_additions, car_removals = match_cars(base_cars, new_cars) # Removals - for car_info in car_removals: - changes["removals"].append(format_row([car_info.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) + for car_docs in car_removals: + changes["removals"].append(format_row([car_docs.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) # Additions - for car_info in car_additions: - changes["additions"].append(format_row([car_info.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) + for car_docs in car_additions: + changes["additions"].append(format_row([car_docs.get_column(column, STAR_ICON, VIDEO_ICON, FOOTNOTE_TAG) for column in Column])) for new_car, base_car in car_changes: # Column changes @@ -117,4 +117,4 @@ if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--path", required=True) args = parser.parse_args() - print_car_info_diff(args.path) + print_car_docs_diff(args.path) diff --git a/selfdrive/debug/print_flags.py b/selfdrive/debug/print_flags.py new file mode 100755 index 0000000000..c69765550e --- /dev/null +++ b/selfdrive/debug/print_flags.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +from openpilot.selfdrive.car.values import BRANDS + +for brand in BRANDS: + all_flags = set() + for platform in brand: + if platform.config.flags != 0: + all_flags |= set(platform.config.flags) + + if len(all_flags): + print(brand.__module__.split('.')[-2].upper() + ':') + for flag in sorted(all_flags): + print(f' {flag.name:<24}:', {platform.name for platform in brand.with_flags(flag)}) + print() diff --git a/selfdrive/debug/run_process_on_route.py b/selfdrive/debug/run_process_on_route.py index 441de9ef57..90db14bc9a 100755 --- a/selfdrive/debug/run_process_on_route.py +++ b/selfdrive/debug/run_process_on_route.py @@ -27,4 +27,5 @@ if __name__ == "__main__": outputs = sorted(inputs + outputs, key=lambda x: x.logMonoTime) fn = f"{args.route.replace('/', '_')}_{args.process}.bz2" + print(f"Saved log to {fn}") save_log(fn, outputs) diff --git a/selfdrive/debug/test_fw_query_on_routes.py b/selfdrive/debug/test_fw_query_on_routes.py index cc6fc2ae17..e338110a7d 100755 --- a/selfdrive/debug/test_fw_query_on_routes.py +++ b/selfdrive/debug/test_fw_query_on_routes.py @@ -9,6 +9,7 @@ from tqdm import tqdm from openpilot.tools.lib.logreader import LogReader, ReadMode from openpilot.tools.lib.route import SegmentRange from openpilot.selfdrive.car.car_helpers import interface_names +from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.selfdrive.car.fw_versions import VERSIONS, match_fw_to_car @@ -17,11 +18,6 @@ SUPPORTED_BRANDS = VERSIONS.keys() SUPPORTED_CARS = [brand for brand in SUPPORTED_BRANDS for brand in interface_names[brand]] UNKNOWN_BRAND = "unknown" -try: - from xx.pipeline.lib.fingerprint import MIGRATION -except ImportError: - MIGRATION = {} - if __name__ == "__main__": parser = argparse.ArgumentParser(description='Run FW fingerprint on Qlog of route or list of routes') parser.add_argument('route', help='Route or file with list of routes') @@ -82,8 +78,8 @@ if __name__ == "__main__": print("not in supported cars") break - _, exact_matches = match_fw_to_car(car_fw, allow_exact=True, allow_fuzzy=False) - _, fuzzy_matches = match_fw_to_car(car_fw, allow_exact=False, allow_fuzzy=True) + _, exact_matches = match_fw_to_car(car_fw, CP.carVin, allow_exact=True, allow_fuzzy=False) + _, fuzzy_matches = match_fw_to_car(car_fw, CP.carVin, allow_exact=False, allow_fuzzy=True) if (len(exact_matches) == 1) and (list(exact_matches)[0] == live_fingerprint): good_exact += 1 diff --git a/selfdrive/debug/uiview.py b/selfdrive/debug/uiview.py index 132886baff..73db02931e 100755 --- a/selfdrive/debug/uiview.py +++ b/selfdrive/debug/uiview.py @@ -4,12 +4,13 @@ import time from cereal import car, log, messaging from openpilot.common.params import Params from openpilot.selfdrive.manager.process_config import managed_processes +from openpilot.system.hardware import HARDWARE if __name__ == "__main__": - CP = car.CarParams(notCar=True) + CP = car.CarParams(notCar=True, wheelbase=1, steerRatio=10) Params().put("CarParams", CP.to_bytes()) - procs = ['camerad', 'ui', 'modeld', 'calibrationd'] + procs = ['camerad', 'ui', 'modeld', 'calibrationd', 'plannerd', 'dmonitoringmodeld', 'dmonitoringd'] for p in procs: managed_processes[p].start() @@ -17,6 +18,7 @@ if __name__ == "__main__": msgs = {s: messaging.new_message(s) for s in ['controlsState', 'deviceState', 'carParams', 'carState']} msgs['deviceState'].deviceState.started = True + msgs['deviceState'].deviceState.deviceType = HARDWARE.get_device_type() msgs['carParams'].carParams.openpilotLongitudinalControl = True msgs['pandaStates'] = messaging.new_message('pandaStates', 1) diff --git a/selfdrive/debug/vw_mqb_config.py b/selfdrive/debug/vw_mqb_config.py index 75409e3f87..64bc2bc638 100755 --- a/selfdrive/debug/vw_mqb_config.py +++ b/selfdrive/debug/vw_mqb_config.py @@ -6,6 +6,7 @@ from enum import IntEnum from panda import Panda from panda.python.uds import UdsClient, MessageTimeoutError, NegativeResponseError, SESSION_TYPE,\ DATA_IDENTIFIER_TYPE, ACCESS_TYPE +from datetime import date # TODO: extend UDS library to allow custom/vendor-defined data identifiers without ignoring type checks class VOLKSWAGEN_DATA_IDENTIFIER_TYPE(IntEnum): @@ -136,8 +137,10 @@ if __name__ == "__main__": # last two bytes, but not the VZ/importer or tester serial number # Can't seem to read it back, but we can read the calibration tester, # so fib a little and say that same tester did the programming - # TODO: encode the actual current date - prog_date = b'\x22\x02\x08' + current_date = date.today() + formatted_date = current_date.strftime('%y-%m-%d') + year, month, day = [int(part) for part in formatted_date.split('-')] + prog_date = bytes([year, month, day]) uds_client.write_data_by_identifier(DATA_IDENTIFIER_TYPE.PROGRAMMING_DATE, prog_date) tester_num = uds_client.read_data_by_identifier(DATA_IDENTIFIER_TYPE.CALIBRATION_REPAIR_SHOP_CODE_OR_CALIBRATION_EQUIPMENT_SERIAL_NUMBER) uds_client.write_data_by_identifier(DATA_IDENTIFIER_TYPE.REPAIR_SHOP_CODE_OR_TESTER_SERIAL_NUMBER, tester_num) diff --git a/selfdrive/locationd/locationd.cc b/selfdrive/locationd/locationd.cc index 1050d68b9b..2ac392a778 100644 --- a/selfdrive/locationd/locationd.cc +++ b/selfdrive/locationd/locationd.cc @@ -308,14 +308,12 @@ void Localizer::input_fake_gps_observations(double current_time) { } void Localizer::handle_gps(double current_time, const cereal::GpsLocationData::Reader& log, const double sensor_time_offset) { - // ignore the message if the fix is invalid - bool gps_invalid_flag = (log.getFlags() % 2 == 0); - bool gps_unreasonable = (Vector2d(log.getAccuracy(), log.getVerticalAccuracy()).norm() >= SANE_GPS_UNCERTAINTY); + bool gps_unreasonable = (Vector2d(log.getHorizontalAccuracy(), log.getVerticalAccuracy()).norm() >= SANE_GPS_UNCERTAINTY); bool gps_accuracy_insane = ((log.getVerticalAccuracy() <= 0) || (log.getSpeedAccuracy() <= 0) || (log.getBearingAccuracyDeg() <= 0)); bool gps_lat_lng_alt_insane = ((std::abs(log.getLatitude()) > 90) || (std::abs(log.getLongitude()) > 180) || (std::abs(log.getAltitude()) > ALTITUDE_SANITY_CHECK)); bool gps_vel_insane = (floatlist2vector(log.getVNED()).norm() > TRANS_SANITY_CHECK); - if (gps_invalid_flag || gps_unreasonable || gps_accuracy_insane || gps_lat_lng_alt_insane || gps_vel_insane) { + if (!log.getHasFix() || gps_unreasonable || gps_accuracy_insane || gps_lat_lng_alt_insane || gps_vel_insane) { //this->gps_valid = false; this->determine_gps_mode(current_time); return; @@ -331,7 +329,7 @@ void Localizer::handle_gps(double current_time, const cereal::GpsLocationData::R VectorXd ecef_pos = this->converter->ned2ecef({ 0.0, 0.0, 0.0 }).to_vector(); VectorXd ecef_vel = this->converter->ned2ecef({ log.getVNED()[0], log.getVNED()[1], log.getVNED()[2] }).to_vector() - ecef_pos; - float ecef_pos_std = std::sqrt(this->gps_variance_factor * std::pow(log.getAccuracy(), 2) + this->gps_vertical_variance_factor * std::pow(log.getVerticalAccuracy(), 2)); + float ecef_pos_std = std::sqrt(this->gps_variance_factor * std::pow(log.getHorizontalAccuracy(), 2) + this->gps_vertical_variance_factor * std::pow(log.getVerticalAccuracy(), 2)); MatrixXdr ecef_pos_R = Vector3d::Constant(std::pow(this->gps_std_factor * ecef_pos_std, 2)).asDiagonal(); MatrixXdr ecef_vel_R = Vector3d::Constant(std::pow(this->gps_std_factor * log.getSpeedAccuracy(), 2)).asDiagonal(); diff --git a/selfdrive/locationd/test/test_locationd.py b/selfdrive/locationd/test/test_locationd.py index 78de9216dc..cd032dbaf0 100755 --- a/selfdrive/locationd/test/test_locationd.py +++ b/selfdrive/locationd/test/test_locationd.py @@ -38,6 +38,7 @@ class TestLocationdProc(unittest.TestCase): if name == "gpsLocationExternal": msg.gpsLocationExternal.flags = 1 + msg.gpsLocationExternal.hasFix = True msg.gpsLocationExternal.verticalAccuracy = 1.0 msg.gpsLocationExternal.speedAccuracy = 1.0 msg.gpsLocationExternal.bearingAccuracyDeg = 1.0 diff --git a/selfdrive/locationd/test/test_locationd_scenarios.py b/selfdrive/locationd/test/test_locationd_scenarios.py index f48c83ce46..3fdd47275f 100755 --- a/selfdrive/locationd/test/test_locationd_scenarios.py +++ b/selfdrive/locationd/test/test_locationd_scenarios.py @@ -6,6 +6,7 @@ from collections import defaultdict from enum import Enum from openpilot.tools.lib.logreader import LogReader +from openpilot.selfdrive.test.process_replay.migration import migrate_all from openpilot.selfdrive.test.process_replay.process_replay import replay_process_with_name TEST_ROUTE = "ff2bd20623fcaeaa|2023-09-05--10-14-54/4" @@ -107,7 +108,7 @@ class TestLocationdScenarios(unittest.TestCase): @classmethod def setUpClass(cls): - cls.logs = list(LogReader(TEST_ROUTE)) + cls.logs = migrate_all(LogReader(TEST_ROUTE)) def test_base(self): """ diff --git a/selfdrive/locationd/torqued.py b/selfdrive/locationd/torqued.py index e5daf92648..73a2efeec8 100755 --- a/selfdrive/locationd/torqued.py +++ b/selfdrive/locationd/torqued.py @@ -168,8 +168,10 @@ class TorqueEstimator(ParameterEstimator): def handle_log(self, t, which, msg): if which == "carControl": self.raw_points["carControl_t"].append(t + self.lag) - self.raw_points["steer_torque"].append(-msg.actuatorsOutput.steer) self.raw_points["active"].append(msg.latActive) + elif which == "carOutput": + self.raw_points["carOutput_t"].append(t + self.lag) + self.raw_points["steer_torque"].append(-msg.actuatorsOutput.steer) elif which == "carState": self.raw_points["carState_t"].append(t + self.lag) self.raw_points["vego"].append(msg.vEgo) @@ -181,7 +183,7 @@ class TorqueEstimator(ParameterEstimator): active = np.interp(np.arange(t - MIN_ENGAGE_BUFFER, t, DT_MDL), self.raw_points['carControl_t'], self.raw_points['active']).astype(bool) steer_override = np.interp(np.arange(t - MIN_ENGAGE_BUFFER, t, DT_MDL), self.raw_points['carState_t'], self.raw_points['steer_override']).astype(bool) vego = np.interp(t, self.raw_points['carState_t'], self.raw_points['vego']) - steer = np.interp(t, self.raw_points['carControl_t'], self.raw_points['steer_torque']) + steer = np.interp(t, self.raw_points['carOutput_t'], self.raw_points['steer_torque']) lateral_acc = (vego * yaw_rate) - (np.sin(roll) * ACCELERATION_DUE_TO_GRAVITY) if all(active) and (not any(steer_override)) and (vego > MIN_VEL) and (abs(steer) > STEER_MIN_THRESHOLD) and (abs(lateral_acc) <= LAT_ACC_THRESHOLD): self.filtered_points.add_point(float(steer), float(lateral_acc)) @@ -227,7 +229,7 @@ def main(demo=False): config_realtime_process([0, 1, 2, 3], 5) pm = messaging.PubMaster(['liveTorqueParameters']) - sm = messaging.SubMaster(['carControl', 'carState', 'liveLocationKalman'], poll='liveLocationKalman') + sm = messaging.SubMaster(['carControl', 'carOutput', 'carState', 'liveLocationKalman'], poll='liveLocationKalman') params = Params() with car.CarParams.from_bytes(params.get("CarParams", block=True)) as CP: diff --git a/selfdrive/manager/build.py b/selfdrive/manager/build.py index 067e1b5a1e..859d0920c3 100755 --- a/selfdrive/manager/build.py +++ b/selfdrive/manager/build.py @@ -9,7 +9,7 @@ from openpilot.common.spinner import Spinner from openpilot.common.text_window import TextWindow from openpilot.system.hardware import AGNOS from openpilot.common.swaglog import cloudlog, add_file_handler -from openpilot.system.version import is_dirty +from openpilot.system.version import get_build_metadata MAX_CACHE_SIZE = 4e9 if "CI" in os.environ else 2e9 CACHE_DIR = Path("/data/scons_cache" if AGNOS else "/tmp/scons_cache") @@ -86,4 +86,5 @@ def build(spinner: Spinner, dirty: bool = False, minimal: bool = False) -> None: if __name__ == "__main__": spinner = Spinner() spinner.update_progress(0, 100) - build(spinner, is_dirty(), minimal = AGNOS) + build_metadata = get_build_metadata() + build(spinner, build_metadata.openpilot.is_dirty, minimal = AGNOS) diff --git a/selfdrive/manager/manager.py b/selfdrive/manager/manager.py index 4fc5a7412d..216131df08 100755 --- a/selfdrive/manager/manager.py +++ b/selfdrive/manager/manager.py @@ -17,19 +17,19 @@ from openpilot.selfdrive.manager.process import ensure_running from openpilot.selfdrive.manager.process_config import managed_processes from openpilot.selfdrive.athena.registration import register, UNREGISTERED_DONGLE_ID, is_registered_device from openpilot.common.swaglog import cloudlog, add_file_handler -from openpilot.system.version import is_dirty, get_commit, get_version, get_origin, get_short_branch, \ - get_normalized_origin, terms_version, training_version, \ - is_tested_branch, is_release_branch, get_commit_date, is_release_sp_branch +from openpilot.system.version import get_build_metadata, terms_version, training_version def manager_init() -> None: save_bootlog() + build_metadata = get_build_metadata() + params = Params() params.clear_all(ParamKeyType.CLEAR_ON_MANAGER_START) params.clear_all(ParamKeyType.CLEAR_ON_ONROAD_TRANSITION) params.clear_all(ParamKeyType.CLEAR_ON_OFFROAD_TRANSITION) - if is_release_branch(): + if build_metadata.release_channel: params.clear_all(ParamKeyType.DEVELOPMENT_ONLY) default_params: list[tuple[str, str | bytes]] = [ @@ -127,16 +127,16 @@ def manager_init() -> None: print("WARNING: failed to make /dev/shm") # set version params - params.put("Version", get_version()) + params.put("Version", build_metadata.openpilot.version) params.put("TermsVersion", terms_version) params.put("TrainingVersion", training_version) - params.put("GitCommit", get_commit()) - params.put("GitCommitDate", get_commit_date()) - params.put("GitBranch", get_short_branch()) - params.put("GitRemote", get_origin()) - params.put_bool("IsTestedBranch", is_tested_branch()) - params.put_bool("IsReleaseBranch", is_release_branch()) - params.put_bool("IsReleaseSPBranch", is_release_sp_branch()) + params.put("GitCommit", build_metadata.openpilot.git_commit) + params.put("GitCommitDate", build_metadata.openpilot.git_commit_date) + params.put("GitBranch", build_metadata.channel) + params.put("GitRemote", build_metadata.openpilot.git_origin) + params.put_bool("IsTestedBranch", build_metadata.tested_channel) + params.put_bool("IsReleaseBranch", build_metadata.release_channel) + params.put_bool("IsReleaseSPBranch", build_metadata.release_sp_channel) # set dongle id reg_res = register(show_spinner=True) @@ -152,21 +152,21 @@ def manager_init() -> None: except Exception: cloudlog.exception("Error getting serial for device") os.environ['DONGLE_ID'] = dongle_id # Needed for swaglog - os.environ['GIT_ORIGIN'] = get_normalized_origin() # Needed for swaglog - os.environ['GIT_BRANCH'] = get_short_branch() # Needed for swaglog - os.environ['GIT_COMMIT'] = get_commit() # Needed for swaglog + os.environ['GIT_ORIGIN'] = build_metadata.openpilot.git_normalized_origin # Needed for swaglog + os.environ['GIT_BRANCH'] = build_metadata.channel # Needed for swaglog + os.environ['GIT_COMMIT'] = build_metadata.openpilot.git_commit # Needed for swaglog - if not is_dirty(): + if not build_metadata.openpilot.is_dirty: os.environ['CLEAN'] = '1' # init logging sentry.init(sentry.SentryProject.SELFDRIVE) cloudlog.bind_global(dongle_id=dongle_id, - version=get_version(), - origin=get_normalized_origin(), - branch=get_short_branch(), - commit=get_commit(), - dirty=is_dirty(), + version=build_metadata.openpilot.version, + origin=build_metadata.openpilot.git_normalized_origin, + branch=build_metadata.channel, + commit=build_metadata.openpilot.git_commit, + dirty=build_metadata.openpilot.is_dirty, device=HARDWARE.get_device_type()) if os.path.isfile(os.path.join(sentry.CRASHES_DIR, 'error.txt')): diff --git a/selfdrive/manager/process_config.py b/selfdrive/manager/process_config.py index b85704442e..d602594e8a 100644 --- a/selfdrive/manager/process_config.py +++ b/selfdrive/manager/process_config.py @@ -5,6 +5,7 @@ from openpilot.common.params import Params from openpilot.system.hardware import PC, TICI from openpilot.selfdrive.manager.process import PythonProcess, NativeProcess, DaemonProcess from openpilot.selfdrive.mapd_manager import MAPD_PATH, COMMON_DIR +from openpilot.selfdrive.sunnypilot import get_model_generation WEBCAM = os.getenv("USE_WEBCAM") is not None @@ -42,6 +43,10 @@ def only_onroad(started: bool, params, CP: car.CarParams) -> bool: def only_offroad(started, params, CP: car.CarParams) -> bool: return not started +def model_use_nav(started, params, CP: car.CarParams) -> bool: + custom_model, model_gen = get_model_generation(params) + return started and custom_model and model_gen != 4 + procs = [ DaemonProcess("manage_athenad", "selfdrive.athena.manage_athenad", "AthenadPid"), @@ -57,8 +62,8 @@ procs = [ NativeProcess("stream_encoderd", "system/loggerd", ["./encoderd", "--stream"], notcar), NativeProcess("loggerd", "system/loggerd", ["./loggerd"], logging), NativeProcess("modeld", "selfdrive/modeld", ["./modeld"], only_onroad), - NativeProcess("mapsd", "selfdrive/navd", ["./mapsd"], only_onroad), - PythonProcess("navmodeld", "selfdrive.modeld.navmodeld", only_onroad), + NativeProcess("mapsd", "selfdrive/navd", ["./mapsd"], model_use_nav), + PythonProcess("navmodeld", "selfdrive.modeld.navmodeld", model_use_nav), NativeProcess("sensord", "system/sensord", ["./sensord"], only_onroad, enabled=not PC), #NativeProcess("ui", "selfdrive/ui", ["./ui"], always_run, watchdog_max_dt=(5 if not PC else None)), PythonProcess("soundd", "selfdrive.ui.soundd", only_onroad), @@ -70,16 +75,17 @@ procs = [ PythonProcess("deleter", "system.loggerd.deleter", always_run), PythonProcess("dmonitoringd", "selfdrive.monitoring.dmonitoringd", driverview, enabled=(not PC or WEBCAM)), PythonProcess("qcomgpsd", "system.qcomgpsd.qcomgpsd", qcomgps, enabled=TICI), + #PythonProcess("ugpsd", "system.ugpsd", only_onroad, enabled=TICI), PythonProcess("navd", "selfdrive.navd.navd", only_onroad), PythonProcess("pandad", "selfdrive.boardd.pandad", always_run), PythonProcess("paramsd", "selfdrive.locationd.paramsd", only_onroad), NativeProcess("ubloxd", "system/ubloxd", ["./ubloxd"], ublox, enabled=TICI), - PythonProcess("pigeond", "system.sensord.pigeond", ublox, enabled=TICI), + PythonProcess("pigeond", "system.ubloxd.pigeond", ublox, enabled=TICI), PythonProcess("plannerd", "selfdrive.controls.plannerd", only_onroad), PythonProcess("radard", "selfdrive.controls.radard", only_onroad), PythonProcess("thermald", "selfdrive.thermald.thermald", always_run), PythonProcess("tombstoned", "selfdrive.tombstoned", always_run, enabled=not PC), - PythonProcess("updated", "selfdrive.updated", only_offroad, enabled=not PC), + PythonProcess("updated", "selfdrive.updated.updated", only_offroad, enabled=not PC), PythonProcess("uploader", "system.loggerd.uploader", always_run), PythonProcess("statsd", "selfdrive.statsd", always_run), NativeProcess("ui", "selfdrive/ui", ["./ui"], always_run, watchdog_max_dt=(5 if not PC else None), always_watchdog=True), diff --git a/selfdrive/modeld/fill_model_msg.py b/selfdrive/modeld/fill_model_msg.py index 738987f061..b3b1582bb3 100644 --- a/selfdrive/modeld/fill_model_msg.py +++ b/selfdrive/modeld/fill_model_msg.py @@ -45,7 +45,8 @@ def fill_xyvat(builder, t, x, y, v, a, x_std=None, y_std=None, v_std=None, a_std def fill_model_msg(msg: capnp._DynamicStructBuilder, net_output_data: dict[str, np.ndarray], publish_state: PublishState, vipc_frame_id: int, vipc_frame_id_extra: int, frame_id: int, frame_drop: float, timestamp_eof: int, timestamp_llk: int, model_execution_time: float, - nav_enabled: bool, valid: bool, model_use_lateral_planner: bool) -> None: + nav_enabled: bool, valid: bool, + model_use_lateral_planner: bool, model_use_nav: bool) -> None: frame_age = frame_id - vipc_frame_id if frame_id > vipc_frame_id else 0 msg.valid = valid @@ -55,9 +56,11 @@ def fill_model_msg(msg: capnp._DynamicStructBuilder, net_output_data: dict[str, modelV2.frameAge = frame_age modelV2.frameDropPerc = frame_drop * 100 modelV2.timestampEof = timestamp_eof - modelV2.locationMonoTime = timestamp_llk + if model_use_nav: + modelV2.locationMonoTimeDEPRECATED = timestamp_llk modelV2.modelExecutionTime = model_execution_time - modelV2.navEnabled = nav_enabled + if model_use_nav: + modelV2.navEnabledDEPRECATED = nav_enabled # plan position = modelV2.position diff --git a/selfdrive/modeld/modeld.py b/selfdrive/modeld/modeld.py index 9bc9dbaf21..40e071294a 100755 --- a/selfdrive/modeld/modeld.py +++ b/selfdrive/modeld/modeld.py @@ -15,6 +15,7 @@ from openpilot.common.realtime import DT_MDL from openpilot.common.numpy_fast import interp from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.realtime import config_realtime_process +from openpilot.common.transformations.camera import DEVICE_CAMERAS from openpilot.common.transformations.model import get_warp_matrix from openpilot.selfdrive import sentry from openpilot.selfdrive.car.car_helpers import get_demo_car_params @@ -67,6 +68,7 @@ class ModelState: 'lateral_control_params': np.zeros(ModelConstants.LATERAL_CONTROL_PARAMS_LEN, dtype=np.float32), 'prev_desired_curv': np.zeros(ModelConstants.PREV_DESIRED_CURV_LEN * (ModelConstants.HISTORY_BUFFER_LEN+1), dtype=np.float32), } + _inputs_2 = {} if self.custom_model and self.model_gen != 0: if self.model_gen == 1: _inputs = { @@ -77,13 +79,17 @@ class ModelState: 'lateral_control_params': np.zeros(ModelConstants.LATERAL_CONTROL_PARAMS_LEN, dtype=np.float32), 'prev_desired_curvs': np.zeros(ModelConstants.PREV_DESIRED_CURVS_LEN, dtype=np.float32), } + if self.model_gen != 4: + _inputs_2 = { + 'nav_features': np.zeros(ModelConstants.NAV_FEATURE_LEN, dtype=np.float32), + 'nav_instructions': np.zeros(ModelConstants.NAV_INSTRUCTION_LEN, dtype=np.float32), + } self.inputs = { 'desire': np.zeros(ModelConstants.DESIRE_LEN * (ModelConstants.HISTORY_BUFFER_LEN+1), dtype=np.float32), 'traffic_convention': np.zeros(ModelConstants.TRAFFIC_CONVENTION_LEN, dtype=np.float32), **_inputs, - 'nav_features': np.zeros(ModelConstants.NAV_FEATURE_LEN, dtype=np.float32), - 'nav_instructions': np.zeros(ModelConstants.NAV_INSTRUCTION_LEN, dtype=np.float32), + **_inputs_2, 'features_buffer': np.zeros(ModelConstants.HISTORY_BUFFER_LEN * ModelConstants.FEATURE_LEN, dtype=np.float32), } @@ -127,8 +133,9 @@ class ModelState: self.inputs['traffic_convention'][:] = inputs['traffic_convention'] if not (self.custom_model and self.model_gen == 1): self.inputs['lateral_control_params'][:] = inputs['lateral_control_params'] - self.inputs['nav_features'][:] = inputs['nav_features'] - self.inputs['nav_instructions'][:] = inputs['nav_instructions'] + if not (self.custom_model and self.model_gen == 4): + self.inputs['nav_features'][:] = inputs['nav_features'] + self.inputs['nav_instructions'][:] = inputs['nav_instructions'] # if getCLBuffer is not None, frame will be None self.model.setInputBuffer("input_imgs", self.frame.prepare(buf, transform.flatten(), self.model.getCLBuffer("input_imgs"))) @@ -193,14 +200,18 @@ def main(demo=False): if use_extra_client: cloudlog.warning(f"connected extra cam with buffer size: {vipc_client_extra.buffer_len} ({vipc_client_extra.width} x {vipc_client_extra.height})") - # messaging - pm = PubMaster(["modelV2", "modelV2SP", "cameraOdometry"]) - sm = SubMaster(["carState", "roadCameraState", "liveCalibration", "driverMonitoringState", "navModel", "navInstruction", "carControl", "lateralPlanDEPRECATED", "lateralPlanSPDEPRECATED"]) - - publish_state = PublishState() params = Params() custom_model, model_gen = get_model_generation(params) + # messaging + extended_svs = ["lateralPlanDEPRECATED", "lateralPlanSPDEPRECATED"] + if custom_model and model_gen != 4: + extended_svs += ["navModelDEPRECATED", "navInstruction"] + pm = PubMaster(["modelV2", "modelV2SP", "cameraOdometry"]) + sm = SubMaster(["deviceState", "carState", "roadCameraState", "liveCalibration", "driverMonitoringState", "carControl"] + extended_svs) + + publish_state = PublishState() + # setup filter to track dropped frames frame_dropped_filter = FirstOrderFilter(0., 10., 1. / ModelConstants.MODEL_FREQ) frame_id = 0 @@ -212,8 +223,9 @@ def main(demo=False): live_calib_seen = False if custom_model and model_gen == 1: driving_style = np.array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], dtype=np.float32) - nav_features = np.zeros(ModelConstants.NAV_FEATURE_LEN, dtype=np.float32) - nav_instructions = np.zeros(ModelConstants.NAV_INSTRUCTION_LEN, dtype=np.float32) + if custom_model and model_gen != 4: + nav_features = np.zeros(ModelConstants.NAV_FEATURE_LEN, dtype=np.float32) + nav_instructions = np.zeros(ModelConstants.NAV_INSTRUCTION_LEN, dtype=np.float32) buf_main, buf_extra = None, None meta_main = FrameMeta() meta_extra = FrameMeta() @@ -240,7 +252,7 @@ def main(demo=False): break if buf_main is None: - cloudlog.error("vipc_client_main no frame") + cloudlog.debug("vipc_client_main no frame") continue if use_extra_client: @@ -252,7 +264,7 @@ def main(demo=False): break if buf_extra is None: - cloudlog.error("vipc_client_extra no frame") + cloudlog.debug("vipc_client_extra no frame") continue if abs(meta_main.timestamp_sof - meta_extra.timestamp_sof) > 10000000: @@ -271,10 +283,11 @@ def main(demo=False): frame_id = sm["roadCameraState"].frameId if not (custom_model and model_gen == 1): lateral_control_params = np.array([sm["carState"].vEgo, steer_delay], dtype=np.float32) - if sm.updated["liveCalibration"]: + if sm.updated["liveCalibration"] and sm.seen['roadCameraState'] and sm.seen['deviceState']: device_from_calib_euler = np.array(sm["liveCalibration"].rpyCalib, dtype=np.float32) - model_transform_main = get_warp_matrix(device_from_calib_euler, main_wide_camera, False).astype(np.float32) - model_transform_extra = get_warp_matrix(device_from_calib_euler, True, True).astype(np.float32) + dc = DEVICE_CAMERAS[(str(sm['deviceState'].deviceType), str(sm['roadCameraState'].sensor))] + model_transform_main = get_warp_matrix(device_from_calib_euler, dc.ecam.intrinsics if main_wide_camera else dc.fcam.intrinsics, False).astype(np.float32) + model_transform_extra = get_warp_matrix(device_from_calib_euler, dc.ecam.intrinsics, True).astype(np.float32) live_calib_seen = True traffic_convention = np.zeros(2) @@ -284,29 +297,32 @@ def main(demo=False): if desire >= 0 and desire < ModelConstants.DESIRE_LEN: vec_desire[desire] = 1 - # Enable/disable nav features - timestamp_llk = sm["navModel"].locationMonoTime - nav_valid = sm.valid["navModel"] # and (nanos_since_boot() - timestamp_llk < 1e9) - nav_enabled = nav_valid + timestamp_llk = 0 + nav_enabled = False + if custom_model and model_gen != 4: + # Enable/disable nav features + timestamp_llk = sm["navModelDEPRECATED"].locationMonoTime + nav_valid = sm.valid["navModelDEPRECATED"] # and (nanos_since_boot() - timestamp_llk < 1e9) + nav_enabled = nav_valid - if not nav_enabled: - nav_features[:] = 0 - nav_instructions[:] = 0 + if not nav_enabled: + nav_features[:] = 0 + nav_instructions[:] = 0 - if nav_enabled and sm.updated["navModel"]: - nav_features = np.array(sm["navModel"].features) + if nav_enabled and sm.updated["navModelDEPRECATED"]: + nav_features = np.array(sm["navModelDEPRECATED"].features) - if nav_enabled and sm.updated["navInstruction"]: - nav_instructions[:] = 0 - for maneuver in sm["navInstruction"].allManeuvers: - distance_idx = 25 + int(maneuver.distance / 20) - direction_idx = 0 - if maneuver.modifier in ("left", "slight left", "sharp left"): - direction_idx = 1 - if maneuver.modifier in ("right", "slight right", "sharp right"): - direction_idx = 2 - if 0 <= distance_idx < 50: - nav_instructions[distance_idx*3 + direction_idx] = 1 + if nav_enabled and sm.updated["navInstruction"]: + nav_instructions[:] = 0 + for maneuver in sm["navInstruction"].allManeuvers: + distance_idx = 25 + int(maneuver.distance / 20) + direction_idx = 0 + if maneuver.modifier in ("left", "slight left", "sharp left"): + direction_idx = 1 + if maneuver.modifier in ("right", "slight right", "sharp right"): + direction_idx = 2 + if 0 <= distance_idx < 50: + nav_instructions[distance_idx*3 + direction_idx] = 1 # tracked dropped frames vipc_dropped_frames = max(0, meta_main.frame_id - last_vipc_frame_id - 1) @@ -329,13 +345,20 @@ def main(demo=False): _inputs = { 'lateral_control_params': lateral_control_params } + if custom_model and model_gen != 4: + _inputs_2 = { + 'nav_features': nav_features, + 'nav_instructions': nav_instructions + } + else: + _inputs_2 = {} inputs:dict[str, np.ndarray] = { 'desire': vec_desire, 'traffic_convention': traffic_convention, **_inputs, - 'nav_features': nav_features, - 'nav_instructions': nav_instructions} + **_inputs_2, + } mt1 = time.perf_counter() model_output = model.run(buf_main, buf_extra, model_transform_main, model_transform_extra, inputs, prepare_only) @@ -348,7 +371,8 @@ def main(demo=False): modelv2_send = messaging.new_message('modelV2') posenet_send = messaging.new_message('cameraOdometry') fill_model_msg(modelv2_send, model_output, publish_state, meta_main.frame_id, meta_extra.frame_id, frame_id, frame_drop_ratio, - meta_main.timestamp_eof, timestamp_llk, model_execution_time, nav_enabled, live_calib_seen, custom_model and model_gen == 1) + meta_main.timestamp_eof, timestamp_llk, model_execution_time, nav_enabled, live_calib_seen, + custom_model and model_gen == 1, custom_model and model_gen != 4) if not (custom_model and model_gen == 1): desire_state = modelv2_send.modelV2.meta.desireState diff --git a/selfdrive/modeld/models/README.md b/selfdrive/modeld/models/README.md index ff5c91fe0c..9e11ca8255 100644 --- a/selfdrive/modeld/models/README.md +++ b/selfdrive/modeld/models/README.md @@ -21,10 +21,6 @@ To view the architecture of the ONNX networks, you can use [netron](https://netr * one-hot encoded vector to tell model whether traffic is right-hand or left-hand traffic : 2 * **feature buffer** * A buffer of intermediate features that gets appended to the current feature to form a 5 seconds temporal context (at 20FPS) : 99 * 512 -* **nav features** - * 1 * 150 -* **nav instructions** - * 1 * 256 ### Supercombo output format (Full size: XXX x float32) diff --git a/selfdrive/modeld/models/navmodel.onnx b/selfdrive/modeld/models/navmodel.onnx deleted file mode 100644 index 3b687b960a..0000000000 --- a/selfdrive/modeld/models/navmodel.onnx +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8254b569878b7472e3f63ed9f3527a87bde785c9037aee3ed66f972e072b5899 -size 14166696 diff --git a/selfdrive/modeld/models/navmodel_q.dlc b/selfdrive/modeld/models/navmodel_q.dlc deleted file mode 100644 index d5e43abcfb..0000000000 --- a/selfdrive/modeld/models/navmodel_q.dlc +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:89fda8380efa3e421fbcdb6bb204c36a4991f137ee01d47f3d0380895aa7c036 -size 3630942 diff --git a/selfdrive/modeld/models/supercombo.onnx b/selfdrive/modeld/models/supercombo.onnx index ce346a406a..c0f8b16fb1 100644 --- a/selfdrive/modeld/models/supercombo.onnx +++ b/selfdrive/modeld/models/supercombo.onnx @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c11f99aab832242a604b1bb4c4cf391c9c3d5e90cbc07ab0d4c133473b56a3a4 -size 48193749 +oid sha256:b31b504bc0b440d3bc72967507a00eb4f112285626fbfb3135011500325ee6d6 +size 51452435 diff --git a/selfdrive/modeld/navmodeld.py b/selfdrive/modeld/navmodeld.py index 57ff50c624..29d07b36f7 100755 --- a/selfdrive/modeld/navmodeld.py +++ b/selfdrive/modeld/navmodeld.py @@ -20,9 +20,7 @@ NAV_INPUT_SIZE = 256*256 NAV_FEATURE_LEN = 256 NAV_DESIRE_LEN = 32 NAV_OUTPUT_SIZE = 2*2*ModelConstants.IDX_N + NAV_DESIRE_LEN + NAV_FEATURE_LEN -MODEL_PATHS = { - ModelRunner.SNPE: Path(__file__).parent / 'models/navmodel_q.dlc', - ModelRunner.ONNX: Path(__file__).parent / 'models/navmodel.onnx'} +MODEL_PATHS = {} CUSTOM_MODEL_PATH = "/data/media/0/models" @@ -52,7 +50,7 @@ class ModelState: self.output = np.zeros(NAV_OUTPUT_SIZE, dtype=np.float32) self.param_s = Params() self.custom_model, self.model_gen = get_model_generation(self.param_s) - if self.custom_model and self.model_gen != 0: + if self.custom_model and self.model_gen not in (0, 4): _model_name = self.param_s.get("NavModelText", encoding="utf8") _model_paths = { ModelRunner.SNPE: f"{CUSTOM_MODEL_PATH}/navmodel_q_{_model_name}.dlc"} @@ -73,18 +71,19 @@ class ModelState: def get_navmodel_packet(model_output: np.ndarray, valid: bool, frame_id: int, location_ts: int, execution_time: float, dsp_execution_time: float): model_result = ctypes.cast(model_output.ctypes.data, ctypes.POINTER(NavModelResult)).contents - msg = messaging.new_message('navModel') + msg = messaging.new_message('navModelDEPRECATED') msg.valid = valid - msg.navModel.frameId = frame_id - msg.navModel.locationMonoTime = location_ts - msg.navModel.modelExecutionTime = execution_time - msg.navModel.dspExecutionTime = dsp_execution_time - msg.navModel.features = model_result.features[:] - msg.navModel.desirePrediction = model_result.desire_pred[:] - msg.navModel.position.x = [p.x for p in model_result.plan.mean] - msg.navModel.position.y = [p.y for p in model_result.plan.mean] - msg.navModel.position.xStd = [math.exp(p.x) for p in model_result.plan.std] - msg.navModel.position.yStd = [math.exp(p.y) for p in model_result.plan.std] + navModel = msg.navModelDEPRECATED + navModel.frameId = frame_id + navModel.locationMonoTime = location_ts + navModel.modelExecutionTime = execution_time + navModel.dspExecutionTime = dsp_execution_time + navModel.features = model_result.features[:] + navModel.desirePrediction = model_result.desire_pred[:] + navModel.position.x = [p.x for p in model_result.plan.mean] + navModel.position.y = [p.y for p in model_result.plan.mean] + navModel.position.xStd = [math.exp(p.x) for p in model_result.plan.std] + navModel.position.yStd = [math.exp(p.y) for p in model_result.plan.std] return msg @@ -108,7 +107,7 @@ def main(): cloudlog.warning(f"connected with buffer size: {vipc_client.buffer_len}") sm = SubMaster(["navInstruction"]) - pm = PubMaster(["navModel"]) + pm = PubMaster(["navModelDEPRECATED"]) while True: buf = vipc_client.recv() @@ -121,7 +120,7 @@ def main(): t2 = time.perf_counter() valid = vipc_client.valid and sm.valid["navInstruction"] - pm.send("navModel", get_navmodel_packet(model_output, valid, vipc_client.frame_id, vipc_client.timestamp_sof, t2 - t1, dsp_execution_time)) + pm.send("navModelDEPRECATED", get_navmodel_packet(model_output, valid, vipc_client.frame_id, vipc_client.timestamp_sof, t2 - t1, dsp_execution_time)) if __name__ == "__main__": diff --git a/selfdrive/modeld/tests/test_modeld.py b/selfdrive/modeld/tests/test_modeld.py index 257a9bc878..67c6f71038 100755 --- a/selfdrive/modeld/tests/test_modeld.py +++ b/selfdrive/modeld/tests/test_modeld.py @@ -5,13 +5,14 @@ import random import cereal.messaging as messaging from cereal.visionipc import VisionIpcServer, VisionStreamType -from openpilot.common.transformations.camera import tici_f_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS from openpilot.common.realtime import DT_MDL from openpilot.selfdrive.car.car_helpers import write_car_param from openpilot.selfdrive.manager.process_config import managed_processes from openpilot.selfdrive.test.process_replay.vision_meta import meta_from_camera_state -IMG = np.zeros(int(tici_f_frame_size[0]*tici_f_frame_size[1]*(3/2)), dtype=np.uint8) +CAM = DEVICE_CAMERAS[("tici", "ar0231")].fcam +IMG = np.zeros(int(CAM.width*CAM.height*(3/2)), dtype=np.uint8) IMG_BYTES = IMG.flatten().tobytes() @@ -19,9 +20,9 @@ class TestModeld(unittest.TestCase): def setUp(self): self.vipc_server = VisionIpcServer("camerad") - self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_ROAD, 40, False, *tici_f_frame_size) - self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_DRIVER, 40, False, *tici_f_frame_size) - self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_WIDE_ROAD, 40, False, *tici_f_frame_size) + self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_ROAD, 40, False, CAM.width, CAM.height) + self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_DRIVER, 40, False, CAM.width, CAM.height) + self.vipc_server.create_buffers(VisionStreamType.VISION_STREAM_WIDE_ROAD, 40, False, CAM.width, CAM.height) self.vipc_server.start_listener() write_car_param() diff --git a/selfdrive/monitoring/dmonitoringd.py b/selfdrive/monitoring/dmonitoringd.py index 0606dd6979..0bd95172d3 100755 --- a/selfdrive/monitoring/dmonitoringd.py +++ b/selfdrive/monitoring/dmonitoringd.py @@ -18,7 +18,7 @@ def dmonitoringd_thread(): pm = messaging.PubMaster(['driverMonitoringState', 'driverMonitoringStateSP']) sm = messaging.SubMaster(['driverStateV2', 'liveCalibration', 'carState', 'controlsState', 'modelV2'], poll='driverStateV2') - driver_status = DriverStatus(rhd_saved=params.get_bool("IsRhdDetected")) + driver_status = DriverStatus(rhd_saved=params.get_bool("IsRhdDetected"), always_on=params.get_bool("AlwaysOnDM")) hands_on_wheel_status = HandsOnWheelStatus() v_cruise_last = 0 @@ -26,7 +26,7 @@ def dmonitoringd_thread(): steering_wheel_engaged = False hands_on_wheel_monitoring_enabled = params.get_bool("HandsOnWheelMonitoring") - # 10Hz <- dmonitoringmodeld + # 20Hz <- dmonitoringmodeld while True: sm.update() if not sm.updated['driverStateV2']: @@ -53,13 +53,15 @@ def dmonitoringd_thread(): if sm.all_checks() and len(sm['liveCalibration'].rpyCalib): driver_status.update_states(sm['driverStateV2'], sm['liveCalibration'].rpyCalib, sm['carState'].vEgo, sm['controlsState'].enabled) - # Block engaging after max number of distrations + # Block engaging after max number of distrations or when alert active if driver_status.terminal_alert_cnt >= driver_status.settings._MAX_TERMINAL_ALERTS or \ - driver_status.terminal_time >= driver_status.settings._MAX_TERMINAL_DURATION: + driver_status.terminal_time >= driver_status.settings._MAX_TERMINAL_DURATION or \ + driver_status.always_on and driver_status.awareness <= driver_status.threshold_prompt: events.add(car.CarEvent.EventName.tooDistracted) # Update events from driver state - driver_status.update_events(events, driver_engaged, sm['controlsState'].enabled, sm['carState'].standstill) + driver_status.update_events(events, driver_engaged, sm['controlsState'].enabled, + sm['carState'].standstill, sm['carState'].gearShifter in [car.CarState.GearShifter.reverse, car.CarState.GearShifter.park], sm['carState'].vEgo) # Update events and state from hands on wheel monitoring status if hands_on_wheel_monitoring_enabled: hands_on_wheel_status.update(events, steering_wheel_engaged, sm['controlsState'].enabled, sm['carState'].vEgo) @@ -86,6 +88,9 @@ def dmonitoringd_thread(): } pm.send('driverMonitoringState', dat) + if sm['driverStateV2'].frameId % 40 == 1: + driver_status.always_on = params.get_bool("AlwaysOnDM") + sp_dat = messaging.new_message('driverMonitoringStateSP') sp_dat.driverMonitoringStateSP = { "handsOnWheelState": hands_on_wheel_status.hands_on_wheel_state, diff --git a/selfdrive/monitoring/driver_monitor.py b/selfdrive/monitoring/driver_monitor.py index 2279002f35..7db0bd6c9f 100644 --- a/selfdrive/monitoring/driver_monitor.py +++ b/selfdrive/monitoring/driver_monitor.py @@ -5,7 +5,7 @@ from openpilot.common.numpy_fast import interp from openpilot.common.realtime import DT_DMON from openpilot.common.filter_simple import FirstOrderFilter from openpilot.common.stat_live import RunningStatFilter -from openpilot.common.transformations.camera import tici_d_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS EventName = car.CarEvent.EventName @@ -55,6 +55,7 @@ class DRIVER_MONITOR_SETTINGS(): self._POSESTD_THRESHOLD = 0.3 self._HI_STD_FALLBACK_TIME = int(10 / self._DT_DMON) # fall back to wheel touch if model is uncertain for 10s self._DISTRACTED_FILTER_TS = 0.25 # 0.6Hz + self._ALWAYS_ON_ALERT_MIN_SPEED = 7 self._POSE_CALIB_MIN_SPEED = 13 # 30 mph self._POSE_OFFSET_MIN_COUNT = int(60 / self._DT_DMON) # valid data counts before calibration completes, 1min cumulative @@ -71,9 +72,11 @@ class DRIVER_MONITOR_SETTINGS(): self._MAX_TERMINAL_DURATION = int(30 / self._DT_DMON) # not allowed to engage after 30s of terminal alerts +# TODO: get these live # model output refers to center of undistorted+leveled image EFL = 598.0 # focal length in K -W, H = tici_d_frame_size # corrected image has same size as raw +cam = DEVICE_CAMERAS[("tici", "ar0231")] # corrected image has same size as raw +W, H = (cam.dcam.width, cam.dcam.height) # corrected image has same size as raw class DistractedType: NOT_DISTRACTED = 0 @@ -119,7 +122,7 @@ class DriverBlink(): self.right_blink = 0. class DriverStatus(): - def __init__(self, rhd_saved=False, settings=None): + def __init__(self, rhd_saved=False, settings=None, always_on=False): if settings is None: settings = DRIVER_MONITOR_SETTINGS() # init policy settings @@ -137,6 +140,7 @@ class DriverStatus(): self.ee1_calibrated = False self.ee2_calibrated = False + self.always_on = always_on self.awareness = 1. self.awareness_active = 1. self.awareness_passive = 1. @@ -299,8 +303,12 @@ class DriverStatus(): elif self.face_detected and self.pose.low_std: self.hi_stds = 0 - def update_events(self, events, driver_engaged, ctrl_active, standstill): - if (driver_engaged and self.awareness > 0 and not self.active_monitoring_mode) or not ctrl_active: # reset only when on disengagement if red reached + def update_events(self, events, driver_engaged, ctrl_active, standstill, wrong_gear, car_speed): + always_on_valid = self.always_on and not wrong_gear + if (driver_engaged and self.awareness > 0 and not self.active_monitoring_mode) or \ + (not always_on_valid and not ctrl_active) or \ + (always_on_valid and not ctrl_active and self.awareness <= 0): + # always reset on disengage with normal mode; disengage resets only on red if always on self._reset_awareness() return @@ -320,12 +328,19 @@ class DriverStatus(): if self.awareness > self.threshold_prompt: return - standstill_exemption = standstill and self.awareness - self.step_change <= self.threshold_prompt + _reaching_audible = self.awareness - self.step_change <= self.threshold_prompt + _reaching_terminal = self.awareness - self.step_change <= 0 + standstill_exemption = standstill and _reaching_audible + always_on_red_exemption = always_on_valid and not ctrl_active and _reaching_terminal + always_on_lowspeed_exemption = always_on_valid and not ctrl_active and car_speed < self.settings._ALWAYS_ON_ALERT_MIN_SPEED and _reaching_audible + certainly_distracted = self.driver_distraction_filter.x > 0.63 and self.driver_distracted and self.face_detected maybe_distracted = self.hi_stds > self.settings._HI_STD_FALLBACK_TIME or not self.face_detected + if certainly_distracted or maybe_distracted: - # should always be counting if distracted unless at standstill and reaching orange - if not standstill_exemption: + # should always be counting if distracted unless at standstill (lowspeed for always-on) and reaching orange + # also will not be reaching 0 if DM is active when not engaged + if not (standstill_exemption or always_on_red_exemption or always_on_lowspeed_exemption): self.awareness = max(self.awareness - self.step_change, -0.1) alert = None diff --git a/selfdrive/monitoring/test_monitoring.py b/selfdrive/monitoring/test_monitoring.py index c02d44849f..50b2746e2d 100755 --- a/selfdrive/monitoring/test_monitoring.py +++ b/selfdrive/monitoring/test_monitoring.py @@ -63,7 +63,7 @@ class TestMonitoring(unittest.TestCase): # cal_rpy and car_speed don't matter here # evaluate events at 10Hz for tests - DS.update_events(e, interaction[idx], engaged[idx], standstill[idx]) + DS.update_events(e, interaction[idx], engaged[idx], standstill[idx], 0, 0) events.append(e) assert len(events) == len(msgs), f"got {len(events)} for {len(msgs)} driverState input msgs" return events, DS diff --git a/selfdrive/navd/README.md b/selfdrive/navd/README.md index 3047b7f8eb..81de8ae39f 100644 --- a/selfdrive/navd/README.md +++ b/selfdrive/navd/README.md @@ -8,7 +8,7 @@ This directory contains two daemons, `navd` and `mapsd`, which support navigatio ### map renderer -The map renderer listens for the `navRoute` and publishes a rendered map view over VisionIPC for the navigation model, which lives in `selfdrive/modeld/`. The rendered maps look like this: +The map renderer listens for the `navRoute` and publishes a simplified rendered map view over VisionIPC. The rendered maps look like this: ![](https://i.imgur.com/oZLfmwq.png) diff --git a/selfdrive/navd/map_renderer.py b/selfdrive/navd/map_renderer.py index 8d525ac73e..e44b883436 100755 --- a/selfdrive/navd/map_renderer.py +++ b/selfdrive/navd/map_renderer.py @@ -31,7 +31,8 @@ void map_renderer_free_image(void *inst, uint8_t *buf); return ffi, ffi.dlopen(lib) -def wait_ready(lib, renderer): +def wait_ready(lib, renderer, timeout=None): + st = time.time() while not lib.map_renderer_loaded(renderer): lib.map_renderer_update(renderer) @@ -40,6 +41,9 @@ def wait_ready(lib, renderer): time.sleep(0.01) + if timeout is not None and time.time() - st > timeout: + raise TimeoutError("Timeout waiting for map renderer to be ready") + def get_image(lib, renderer): buf = lib.map_renderer_get_image(renderer) diff --git a/selfdrive/navd/navd.py b/selfdrive/navd/navd.py index 8e12fcba47..961e2ffdb4 100755 --- a/selfdrive/navd/navd.py +++ b/selfdrive/navd/navd.py @@ -48,15 +48,14 @@ class RouteEngine: self.reroute_counter = 0 + + self.api = None + self.mapbox_token = None if "MAPBOX_TOKEN" in os.environ: self.mapbox_token = os.environ["MAPBOX_TOKEN"] self.mapbox_host = "https://api.mapbox.com" else: - try: - self.mapbox_token = Api(self.params.get("DongleId", encoding='utf8')).get_token(expiry_hours=4 * 7 * 24) - except FileNotFoundError: - cloudlog.exception("Failed to generate mapbox token due to missing private key. Ensure device is registered.") - self.mapbox_token = "" + self.api = Api(self.params.get("DongleId", encoding='utf8')) self.mapbox_host = "https://maps.comma.ai" if self.mapbox_token != "" and self.params.get("CustomMapboxTokenSk") is not None: @@ -126,8 +125,12 @@ class RouteEngine: if lang is not None: lang = lang.replace('main_', '') + token = self.mapbox_token + if token is None: + token = self.api.get_token() + params = { - 'access_token': self.mapbox_token, + 'access_token': token, 'annotations': 'maxspeed', 'geometries': 'geojson', 'overview': 'full', diff --git a/selfdrive/navd/otisserv.py b/selfdrive/navd/otisserv.py index bd86bdf481..f5110e2598 100644 --- a/selfdrive/navd/otisserv.py +++ b/selfdrive/navd/otisserv.py @@ -52,7 +52,10 @@ class OtisServ(BaseHTTPRequestHandler): return if self.path == '/?reset=1': params.put("NavDestination", "") - if use_amap: + if self.path == '/locations': + self.get_locations() + return + elif use_amap: if self.path == '/style.css': self.send_response(200) self.send_header("Content-type", "text/css") @@ -110,16 +113,25 @@ class OtisServ(BaseHTTPRequestHandler): if self.get_app_token() is None: self.display_page_app_token() return - self.display_page_addr_input() + if self.path != '/locations': + self.display_page_addr_input() def do_POST(self): use_amap = params.get_bool("EnableAmap") use_gmap = not use_amap and params.get_bool("EnableGmap") postvars = self.parse_POST() - self.send_response(200) - self.send_header("Content-type", "text/html") - self.end_headers() + # set_destination endpoint + if self.path == '/set_destination': + self.send_response(200) + self.send_header("Content-type", "application/json") + self.end_headers() + response_data = {'success': True} + self.wfile.write(json.dumps(response_data).encode('utf-8')) + else: + self.send_response(200) + self.send_header("Content-type", "text/html") + self.end_headers() if use_amap: # amap token @@ -174,6 +186,16 @@ class OtisServ(BaseHTTPRequestHandler): lng, lat = self.gcj02towgs84(lng, lat) params.put('NavDestination', "{\"latitude\": %f, \"longitude\": %f, \"place_name\": \"%s\"}" % (lat, lng, name)) self.to_json(lat, lng, save_type, name) + if postvars is not None: + latitude_value = postvars.get("latitude") + longitude_value = postvars.get("longitude") + if latitude_value is not None and latitude_value != "" and longitude_value is not None and longitude_value != "": + lat = float(latitude_value) + lng = float(longitude_value) + save_type = "recent" + name = postvars.get("place_name", [""]) + params.put('NavDestination', "{\"latitude\": %f, \"longitude\": %f, \"place_name\": \"%s\"}" % (lat, lng, name)) + self.to_json(lat, lng, save_type, name) # favorites if not use_gmap and "fav_val" in postvars: addr = postvars.get("fav_val")[0] @@ -210,12 +232,13 @@ class OtisServ(BaseHTTPRequestHandler): else: self.display_page_addr_input("Place Not Found") return - if use_amap: - self.display_page_amap() - elif use_gmap: - self.display_page_gmap() - else: - self.display_page_addr_input() + if self.path != '/set_destination': + if use_amap: + self.display_page_amap() + elif use_gmap: + self.display_page_gmap() + else: + self.display_page_addr_input() def get_logo(self): self.send_response(200) @@ -225,6 +248,14 @@ class OtisServ(BaseHTTPRequestHandler): self.wfile.write(f.read()) f.close() + def get_locations(self): + self.send_response(200) + self.send_header('Content-type','application/json') + self.end_headers() + val = params.get("ApiCache_NavDestinations", encoding='utf-8') + if val is not None: + self.wfile.write(val.encode('utf-8')) + def get_gmap_css(self): self.wfile.write(bytes(self.get_parsed_template("gmap/style.css"), "utf-8")) @@ -337,6 +368,14 @@ class OtisServ(BaseHTTPRequestHandler): postvars = parse_qs( self.rfile.read(length).decode('utf-8'), keep_blank_values=1) + elif ctype == 'application/json': + length = int(self.headers['content-length']) + post_data = self.rfile.read(length).decode('utf-8') + try: + postvars = json.loads(post_data) + except json.JSONDecodeError: + self.send_error(400, 'Invalid JSON data') + return None else: postvars = {} return postvars diff --git a/selfdrive/navd/tests/test_map_renderer.py b/selfdrive/navd/tests/test_map_renderer.py index b5f186dbb0..7d5a4c297f 100755 --- a/selfdrive/navd/tests/test_map_renderer.py +++ b/selfdrive/navd/tests/test_map_renderer.py @@ -65,6 +65,7 @@ class MapBoxInternetDisabledServer(threading.Thread): MapBoxInternetDisabledRequestHandler.INTERNET_ACTIVE = True +@pytest.mark.skip(reason="not used") class TestMapRenderer(unittest.TestCase): server: MapBoxInternetDisabledServer diff --git a/selfdrive/sentry.py b/selfdrive/sentry.py index b94ab0fb8b..d7472e7819 100644 --- a/selfdrive/sentry.py +++ b/selfdrive/sentry.py @@ -1,3 +1,6 @@ +import os +import traceback +from datetime import datetime """Install exception handler for process crash.""" import sentry_sdk import subprocess @@ -9,12 +12,7 @@ from openpilot.common.params import Params from openpilot.selfdrive.athena.registration import UNREGISTERED_DONGLE_ID, is_registered_device from openpilot.system.hardware import HARDWARE, PC from openpilot.common.swaglog import cloudlog -from openpilot.system.version import get_branch, get_commit, get_origin, get_version, \ - is_comma_remote, is_dirty, is_tested_branch, get_branch_type - -import os -import traceback -from datetime import datetime +from openpilot.system.version import get_build_metadata, get_version class SentryProject(Enum): @@ -118,13 +116,14 @@ def get_init() -> None: def init(project: SentryProject) -> bool: + build_metadata = get_build_metadata() # forks like to mess with this, so double check - #comma_remote = is_comma_remote() and "commaai" in get_origin() + #comma_remote = build_metadata.openpilot.comma_remote and "commaai" in build_metadata.openpilot.git_origin #if not comma_remote or not is_registered_device() or PC: # return False - #env = "release" if is_tested_branch() else "master" - env = get_branch_type() + #env = "release" if build_metadata.tested_channel else "master" + env = build_metadata.channel_type dongle_id, gitname = get_properties() integrations = [] @@ -140,13 +139,15 @@ def init(project: SentryProject) -> bool: environment=env, send_default_pii=True) + build_metadata = get_build_metadata() + sentry_sdk.set_user({"id": dongle_id}) sentry_sdk.set_user({"ip_address": IP_ADDRESS}) sentry_sdk.set_user({"name": gitname}) - sentry_sdk.set_tag("dirty", is_dirty()) - sentry_sdk.set_tag("origin", get_origin()) - sentry_sdk.set_tag("branch", get_branch()) - sentry_sdk.set_tag("commit", get_commit()) + sentry_sdk.set_tag("dirty", build_metadata.openpilot.is_dirty) + sentry_sdk.set_tag("origin", build_metadata.openpilot.git_origin) + sentry_sdk.set_tag("branch", build_metadata.channel) + sentry_sdk.set_tag("commit", build_metadata.openpilot.git_commit) sentry_sdk.set_tag("device", HARDWARE.get_device_type()) if project == SentryProject.SELFDRIVE: diff --git a/selfdrive/statsd.py b/selfdrive/statsd.py index 299aa295d7..2f9149b096 100755 --- a/selfdrive/statsd.py +++ b/selfdrive/statsd.py @@ -13,7 +13,7 @@ from openpilot.system.hardware.hw import Paths from openpilot.common.swaglog import cloudlog from openpilot.system.hardware import HARDWARE from openpilot.common.file_helpers import atomic_write_in_dir -from openpilot.system.version import get_normalized_origin, get_short_branch, get_short_version, is_dirty +from openpilot.system.version import get_build_metadata from openpilot.system.loggerd.config import STATS_DIR_FILE_LIMIT, STATS_SOCKET, STATS_FLUSH_TIME_S @@ -86,13 +86,15 @@ def main() -> NoReturn: # initialize stats directory Path(STATS_DIR).mkdir(parents=True, exist_ok=True) + build_metadata = get_build_metadata() + # initialize tags tags = { 'started': False, - 'version': get_short_version(), - 'branch': get_short_branch(), - 'dirty': is_dirty(), - 'origin': get_normalized_origin(), + 'version': build_metadata.openpilot.version, + 'branch': build_metadata.channel, + 'dirty': build_metadata.openpilot.is_dirty, + 'origin': build_metadata.openpilot.git_normalized_origin, 'deviceType': HARDWARE.get_device_type(), } diff --git a/selfdrive/test/helpers.py b/selfdrive/test/helpers.py index 210a283699..ce8918aec3 100644 --- a/selfdrive/test/helpers.py +++ b/selfdrive/test/helpers.py @@ -1,3 +1,4 @@ +import contextlib import http.server import os import threading @@ -13,7 +14,7 @@ from openpilot.system.version import training_version, terms_version def set_params_enabled(): - os.environ['FINGERPRINT'] = "TOYOTA COROLLA TSS2 2019" + os.environ['FINGERPRINT'] = "TOYOTA_COROLLA_TSS2" os.environ['LOGPRINT'] = "debug" params = Params() @@ -43,27 +44,34 @@ def release_only(f): f(self, *args, **kwargs) return wrap -def with_processes(processes, init_time=0, ignore_stopped=None): + +@contextlib.contextmanager +def processes_context(processes, init_time=0, ignore_stopped=None): ignore_stopped = [] if ignore_stopped is None else ignore_stopped + # start and assert started + for n, p in enumerate(processes): + managed_processes[p].start() + if n < len(processes) - 1: + time.sleep(init_time) + + assert all(managed_processes[name].proc.exitcode is None for name in processes) + + try: + yield [managed_processes[name] for name in processes] + # assert processes are still started + assert all(managed_processes[name].proc.exitcode is None for name in processes if name not in ignore_stopped) + finally: + for p in processes: + managed_processes[p].stop() + + +def with_processes(processes, init_time=0, ignore_stopped=None): def wrapper(func): @wraps(func) def wrap(*args, **kwargs): - # start and assert started - for n, p in enumerate(processes): - managed_processes[p].start() - if n < len(processes) - 1: - time.sleep(init_time) - assert all(managed_processes[name].proc.exitcode is None for name in processes) - - # call the function - try: - func(*args, **kwargs) - # assert processes are still started - assert all(managed_processes[name].proc.exitcode is None for name in processes if name not in ignore_stopped) - finally: - for p in processes: - managed_processes[p].stop() + with processes_context(processes, init_time, ignore_stopped): + return func(*args, **kwargs) return wrap return wrapper @@ -80,23 +88,49 @@ def read_segment_list(segment_list_path): return [(platform[2:], segment) for platform, segment in zip(seg_list[::2], seg_list[1::2], strict=True)] +@contextlib.contextmanager +def http_server_context(handler, setup=None): + host = '127.0.0.1' + server = http.server.HTTPServer((host, 0), handler) + port = server.server_port + t = threading.Thread(target=server.serve_forever) + t.start() + + if setup is not None: + setup(host, port) + + try: + yield (host, port) + finally: + server.shutdown() + server.server_close() + t.join() + + def with_http_server(func, handler=http.server.BaseHTTPRequestHandler, setup=None): @wraps(func) def inner(*args, **kwargs): - host = '127.0.0.1' - server = http.server.HTTPServer((host, 0), handler) - port = server.server_port - t = threading.Thread(target=server.serve_forever) - t.start() - - if setup is not None: - setup(host, port) - - try: - return func(*args, f'http://{host}:{port}', **kwargs) - finally: - server.shutdown() - server.server_close() - t.join() - + with http_server_context(handler, setup) as (host, port): + return func(*args, f"http://{host}:{port}", **kwargs) return inner + + +def DirectoryHttpServer(directory) -> type[http.server.SimpleHTTPRequestHandler]: + # creates an http server that serves files from directory + class Handler(http.server.SimpleHTTPRequestHandler): + API_NO_RESPONSE = False + API_BAD_RESPONSE = False + + def do_GET(self): + if self.API_NO_RESPONSE: + return + + if self.API_BAD_RESPONSE: + self.send_response(500, "") + return + super().do_GET() + + def __init__(self, *args, **kwargs): + super().__init__(*args, directory=str(directory), **kwargs) + + return Handler diff --git a/selfdrive/test/longitudinal_maneuvers/maneuver.py b/selfdrive/test/longitudinal_maneuvers/maneuver.py index 000225ab77..6c8495cc3b 100644 --- a/selfdrive/test/longitudinal_maneuvers/maneuver.py +++ b/selfdrive/test/longitudinal_maneuvers/maneuver.py @@ -19,6 +19,7 @@ class Maneuver: self.ensure_start = kwargs.get("ensure_start", False) self.enabled = kwargs.get("enabled", True) self.e2e = kwargs.get("e2e", False) + self.personality = kwargs.get("personality", 0) self.force_decel = kwargs.get("force_decel", False) self.duration = duration @@ -33,6 +34,7 @@ class Maneuver: only_lead2=self.only_lead2, only_radar=self.only_radar, e2e=self.e2e, + personality=self.personality, force_decel=self.force_decel, ) diff --git a/selfdrive/test/longitudinal_maneuvers/plant.py b/selfdrive/test/longitudinal_maneuvers/plant.py index bb935fdc8e..ac54967f88 100755 --- a/selfdrive/test/longitudinal_maneuvers/plant.py +++ b/selfdrive/test/longitudinal_maneuvers/plant.py @@ -15,7 +15,7 @@ class Plant: messaging_initialized = False def __init__(self, lead_relevancy=False, speed=0.0, distance_lead=2.0, - enabled=True, only_lead2=False, only_radar=False, e2e=False, force_decel=False): + enabled=True, only_lead2=False, only_radar=False, e2e=False, personality=0, force_decel=False): self.rate = 1. / DT_MDL if not Plant.messaging_initialized: @@ -39,6 +39,7 @@ class Plant: self.only_lead2 = only_lead2 self.only_radar = only_radar self.e2e = e2e + self.personality = personality self.force_decel = force_decel self.rk = Ratekeeper(self.rate, print_delay_threshold=100.0) @@ -49,7 +50,7 @@ class Plant: from openpilot.selfdrive.car.honda.values import CAR from openpilot.selfdrive.car.honda.interface import CarInterface - self.planner = LongitudinalPlanner(CarInterface.get_non_essential_params(CAR.CIVIC), init_v=self.speed) + self.planner = LongitudinalPlanner(CarInterface.get_non_essential_params(CAR.HONDA_CIVIC), init_v=self.speed) @property def current_time(self): @@ -112,6 +113,7 @@ class Plant: control.controlsState.longControlState = LongCtrlState.pid if self.enabled else LongCtrlState.off control.controlsState.vCruise = float(v_cruise * 3.6) control.controlsState.experimentalMode = self.e2e + control.controlsState.personality = self.personality control.controlsState.forceDecel = self.force_decel car_state.carState.vEgo = float(self.speed) car_state.carState.standstill = self.speed < 0.01 diff --git a/selfdrive/test/process_replay/.gitignore b/selfdrive/test/process_replay/.gitignore index 63c37e64e1..a35cd58d41 100644 --- a/selfdrive/test/process_replay/.gitignore +++ b/selfdrive/test/process_replay/.gitignore @@ -1,2 +1 @@ fakedata/ -debayer_diff.txt diff --git a/selfdrive/test/process_replay/debayer_replay_ref_commit b/selfdrive/test/process_replay/debayer_replay_ref_commit deleted file mode 100644 index 551fc680ba..0000000000 --- a/selfdrive/test/process_replay/debayer_replay_ref_commit +++ /dev/null @@ -1 +0,0 @@ -8f9ba7540b4549b4a57312129b8ff678d045f70f \ No newline at end of file diff --git a/selfdrive/test/process_replay/imgproc_replay_ref_hash b/selfdrive/test/process_replay/imgproc_replay_ref_hash new file mode 100644 index 0000000000..defcb3681c --- /dev/null +++ b/selfdrive/test/process_replay/imgproc_replay_ref_hash @@ -0,0 +1 @@ +707434c540e685bbe2886b3ff7c82fd61939d362 \ No newline at end of file diff --git a/selfdrive/test/process_replay/migration.py b/selfdrive/test/process_replay/migration.py index ef74314172..377897448d 100644 --- a/selfdrive/test/process_replay/migration.py +++ b/selfdrive/test/process_replay/migration.py @@ -1,15 +1,19 @@ from collections import defaultdict from cereal import messaging +from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.selfdrive.test.process_replay.vision_meta import meta_from_encode_index from openpilot.selfdrive.car.toyota.values import EPS_SCALE from openpilot.selfdrive.manager.process_config import managed_processes from panda import Panda +# TODO: message migration should happen in-place def migrate_all(lr, old_logtime=False, manager_states=False, panda_states=False, camera_states=False): msgs = migrate_sensorEvents(lr, old_logtime) msgs = migrate_carParams(msgs, old_logtime) + msgs = migrate_gpsLocation(msgs) + msgs = migrate_deviceState(msgs) if manager_states: msgs = migrate_managerState(msgs) if panda_states: @@ -35,13 +39,43 @@ def migrate_managerState(lr): return all_msgs +def migrate_gpsLocation(lr): + all_msgs = [] + for msg in lr: + if msg.which() in ('gpsLocation', 'gpsLocationExternal'): + new_msg = msg.as_builder() + g = getattr(new_msg, new_msg.which()) + # hasFix is a newer field + if not g.hasFix and g.flags == 1: + g.hasFix = True + all_msgs.append(new_msg.as_reader()) + else: + all_msgs.append(msg) + return all_msgs + + +def migrate_deviceState(lr): + all_msgs = [] + dt = None + for msg in lr: + if msg.which() == 'initData': + dt = msg.initData.deviceType + if msg.which() == 'deviceState': + n = msg.as_builder() + n.deviceState.deviceType = dt + all_msgs.append(n.as_reader()) + else: + all_msgs.append(msg) + return all_msgs + + def migrate_pandaStates(lr): all_msgs = [] # TODO: safety param migration should be handled automatically safety_param_migration = { - "TOYOTA PRIUS 2017": EPS_SCALE["TOYOTA PRIUS 2017"] | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL, - "TOYOTA RAV4 2017": EPS_SCALE["TOYOTA RAV4 2017"] | Panda.FLAG_TOYOTA_ALT_BRAKE | Panda.FLAG_TOYOTA_GAS_INTERCEPTOR, - "KIA EV6 2022": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CANFD_HDA2, + "TOYOTA_PRIUS": EPS_SCALE["TOYOTA_PRIUS"] | Panda.FLAG_TOYOTA_STOCK_LONGITUDINAL, + "TOYOTA_RAV4": EPS_SCALE["TOYOTA_RAV4"] | Panda.FLAG_TOYOTA_ALT_BRAKE | Panda.FLAG_TOYOTA_GAS_INTERCEPTOR, + "KIA_EV6": Panda.FLAG_HYUNDAI_EV_GAS | Panda.FLAG_HYUNDAI_CANFD_HDA2, } # Migrate safety param base on carState @@ -152,6 +186,7 @@ def migrate_carParams(lr, old_logtime=False): CP = messaging.new_message('carParams') CP.valid = True CP.carParams = msg.carParams.as_builder() + CP.carParams.carFingerprint = MIGRATION.get(CP.carParams.carFingerprint, CP.carParams.carFingerprint) for car_fw in CP.carParams.carFw: car_fw.brand = CP.carParams.carName if old_logtime: diff --git a/selfdrive/test/process_replay/model_replay.py b/selfdrive/test/process_replay/model_replay.py index 97b7c7c46c..cba2edfd58 100755 --- a/selfdrive/test/process_replay/model_replay.py +++ b/selfdrive/test/process_replay/model_replay.py @@ -1,18 +1,14 @@ #!/usr/bin/env python3 import os import sys -import time from collections import defaultdict from typing import Any -import cereal.messaging as messaging -from openpilot.common.params import Params +from openpilot.common.git import get_commit from openpilot.system.hardware import PC -from openpilot.selfdrive.manager.process_config import managed_processes from openpilot.tools.lib.openpilotci import BASE_URL, get_url from openpilot.selfdrive.test.process_replay.compare_logs import compare_logs, format_diff from openpilot.selfdrive.test.process_replay.process_replay import get_process_config, replay_process -from openpilot.system.version import get_commit from openpilot.tools.lib.framereader import FrameReader from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.helpers import save_log @@ -20,9 +16,7 @@ from openpilot.tools.lib.helpers import save_log TEST_ROUTE = "2f4452b03ccb98f0|2022-12-03--13-45-30" SEGMENT = 6 MAX_FRAMES = 100 if PC else 600 -NAV_FRAMES = 50 -NO_NAV = "NO_NAV" in os.environ NO_MODEL = "NO_MODEL" in os.environ SEND_EXTRA_INPUTS = bool(int(os.getenv("SEND_EXTRA_INPUTS", "0"))) @@ -50,71 +44,21 @@ def trim_logs_to_max_frames(logs, max_frames, frs_types, include_all_types): return all_msgs -def nav_model_replay(lr): - sm = messaging.SubMaster(['navModel', 'navThumbnail', 'mapRenderState']) - pm = messaging.PubMaster(['liveLocationKalman', 'navRoute']) - - nav = [m for m in lr if m.which() == 'navRoute'] - llk = [m for m in lr if m.which() == 'liveLocationKalman'] - assert len(nav) > 0 and len(llk) >= NAV_FRAMES and nav[0].logMonoTime < llk[-NAV_FRAMES].logMonoTime - - log_msgs = [] - try: - assert "MAPBOX_TOKEN" in os.environ - os.environ['MAP_RENDER_TEST_MODE'] = '1' - Params().put_bool('DmModelInitialized', True) - managed_processes['mapsd'].start() - managed_processes['navmodeld'].start() - - # setup position and route - for _ in range(10): - for s in (llk[-NAV_FRAMES], nav[0]): - pm.send(s.which(), s.as_builder().to_bytes()) - sm.update(1000) - if sm.updated['navModel']: - break - time.sleep(1) - - if not sm.updated['navModel']: - raise Exception("no navmodeld outputs, failed to initialize") - - # drain - time.sleep(2) - sm.update(0) - - # run replay - for n in range(len(llk) - NAV_FRAMES, len(llk)): - pm.send(llk[n].which(), llk[n].as_builder().to_bytes()) - m = messaging.recv_one(sm.sock['navThumbnail']) - assert m is not None, f"no navThumbnail, frame={n}" - log_msgs.append(m) - - m = messaging.recv_one(sm.sock['mapRenderState']) - assert m is not None, f"no mapRenderState, frame={n}" - log_msgs.append(m) - - m = messaging.recv_one(sm.sock['navModel']) - assert m is not None, f"no navModel response, frame={n}" - log_msgs.append(m) - finally: - managed_processes['mapsd'].stop() - managed_processes['navmodeld'].stop() - - return log_msgs - - def model_replay(lr, frs): # modeld is using frame pairs modeld_logs = trim_logs_to_max_frames(lr, MAX_FRAMES, {"roadCameraState", "wideRoadCameraState"}, {"roadEncodeIdx", "wideRoadEncodeIdx", "carParams"}) dmodeld_logs = trim_logs_to_max_frames(lr, MAX_FRAMES, {"driverCameraState"}, {"driverEncodeIdx", "carParams"}) + if not SEND_EXTRA_INPUTS: - modeld_logs = [msg for msg in modeld_logs if msg.which() not in ["liveCalibration",]] - dmodeld_logs = [msg for msg in dmodeld_logs if msg.which() not in ["liveCalibration",]] - # initial calibration - cal_msg = next(msg for msg in lr if msg.which() == "liveCalibration").as_builder() - cal_msg.logMonoTime = lr[0].logMonoTime - modeld_logs.insert(0, cal_msg.as_reader()) - dmodeld_logs.insert(0, cal_msg.as_reader()) + modeld_logs = [msg for msg in modeld_logs if msg.which() != 'liveCalibration'] + dmodeld_logs = [msg for msg in dmodeld_logs if msg.which() != 'liveCalibration'] + + # initial setup + for s in ('liveCalibration', 'deviceState'): + msg = next(msg for msg in lr if msg.which() == s).as_builder() + msg.logMonoTime = lr[0].logMonoTime + modeld_logs.insert(1, msg.as_reader()) + dmodeld_logs.insert(1, msg.as_reader()) modeld = get_process_config("modeld") dmonitoringmodeld = get_process_config("dmonitoringmodeld") @@ -166,8 +110,6 @@ if __name__ == "__main__": # run replays if not NO_MODEL: log_msgs += model_replay(lr, frs) - if not NO_NAV: - log_msgs += nav_model_replay(lr) # get diff failed = False @@ -179,28 +121,19 @@ if __name__ == "__main__": all_logs = list(LogReader(BASE_URL + log_fn)) cmp_log = [] - # logs are ordered based on type: modelV2, driverStateV2, nav messages (navThumbnail, mapRenderState, navModel) + # logs are ordered based on type: modelV2, driverStateV2 if not NO_MODEL: model_start_index = next(i for i, m in enumerate(all_logs) if m.which() in ("modelV2", "cameraOdometry")) cmp_log += all_logs[model_start_index:model_start_index + MAX_FRAMES*2] dmon_start_index = next(i for i, m in enumerate(all_logs) if m.which() == "driverStateV2") cmp_log += all_logs[dmon_start_index:dmon_start_index + MAX_FRAMES] - if not NO_NAV: - nav_start_index = next(i for i, m in enumerate(all_logs) if m.which() in ["navThumbnail", "mapRenderState", "navModel"]) - nav_logs = all_logs[nav_start_index:nav_start_index + NAV_FRAMES*3] - cmp_log += nav_logs ignore = [ 'logMonoTime', 'modelV2.frameDropPerc', 'modelV2.modelExecutionTime', 'driverStateV2.modelExecutionTime', - 'driverStateV2.dspExecutionTime', - 'navModel.dspExecutionTime', - 'navModel.modelExecutionTime', - 'navThumbnail.timestampEof', - 'mapRenderState.locationMonoTime', - 'mapRenderState.renderTime', + 'driverStateV2.dspExecutionTime' ] if PC: ignore += [ @@ -218,7 +151,8 @@ if __name__ == "__main__": results[TEST_ROUTE]["models"] = compare_logs(cmp_log, log_msgs, tolerance=tolerance, ignore_fields=ignore) diff_short, diff_long, failed = format_diff(results, log_paths, ref_commit) - print(diff_long) + if "CI" in os.environ: + print(diff_long) print('-------------\n'*5) print(diff_short) with open("model_diff.txt", "w") as f: diff --git a/selfdrive/test/process_replay/model_replay_ref_commit b/selfdrive/test/process_replay/model_replay_ref_commit index 3b7b04df80..47571656e5 100644 --- a/selfdrive/test/process_replay/model_replay_ref_commit +++ b/selfdrive/test/process_replay/model_replay_ref_commit @@ -1 +1 @@ -fd6421f7551573c549480f9d29bb0dee4678344d +69a3b169ebc478285dad5eea87658ed2cb8fee13 diff --git a/selfdrive/test/process_replay/process_replay.py b/selfdrive/test/process_replay/process_replay.py index 5119be0a8c..233f5d746a 100755 --- a/selfdrive/test/process_replay/process_replay.py +++ b/selfdrive/test/process_replay/process_replay.py @@ -546,7 +546,7 @@ CONFIGS = [ ), ProcessConfig( proc_name="modeld", - pubs=["roadCameraState", "wideRoadCameraState", "liveCalibration", "driverMonitoringState"], + pubs=["deviceState", "roadCameraState", "wideRoadCameraState", "liveCalibration", "driverMonitoringState"], subs=["modelV2", "cameraOdometry"], ignore=["logMonoTime", "modelV2.frameDropPerc", "modelV2.modelExecutionTime"], should_recv_callback=ModeldCameraSyncRcvCallback(), diff --git a/selfdrive/test/process_replay/ref_commit b/selfdrive/test/process_replay/ref_commit index 9c627fb7c9..a0d3cc6bb2 100644 --- a/selfdrive/test/process_replay/ref_commit +++ b/selfdrive/test/process_replay/ref_commit @@ -1 +1 @@ -47609e372bf616932c4dca74d2616c3d97fa2443 +685a2bb9aacdd790e26d14aa49d3792c3ed65125 \ No newline at end of file diff --git a/selfdrive/test/process_replay/regen.py b/selfdrive/test/process_replay/regen.py index 8e882207b5..ec3023c5dc 100755 --- a/selfdrive/test/process_replay/regen.py +++ b/selfdrive/test/process_replay/regen.py @@ -10,7 +10,7 @@ from collections.abc import Iterable from openpilot.selfdrive.test.process_replay.process_replay import CONFIGS, FAKEDATA, ProcessConfig, replay_process, get_process_config, \ check_openpilot_enabled, get_custom_params_from_lr -from openpilot.selfdrive.test.process_replay.vision_meta import DRIVER_FRAME_SIZES +from openpilot.selfdrive.test.process_replay.vision_meta import DRIVER_CAMERA_FRAME_SIZES from openpilot.selfdrive.test.update_ci_routes import upload_route from openpilot.tools.lib.route import Route from openpilot.tools.lib.framereader import FrameReader, BaseFrameReader, FrameType @@ -37,7 +37,7 @@ class DummyFrameReader(BaseFrameReader): @staticmethod def zero_dcamera(): - return DummyFrameReader(*DRIVER_FRAME_SIZES["tici"], 1200, 0) + return DummyFrameReader(*DRIVER_CAMERA_FRAME_SIZES[("tici", "ar0231")], 1200, 0) def regen_segment( diff --git a/selfdrive/test/process_replay/test_debayer.py b/selfdrive/test/process_replay/test_debayer.py deleted file mode 100755 index edf2cbd469..0000000000 --- a/selfdrive/test/process_replay/test_debayer.py +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env python3 -import os -import sys -import bz2 -import numpy as np - -import pyopencl as cl # install with `PYOPENCL_CL_PRETEND_VERSION=2.0 pip install pyopencl` - -from openpilot.system.hardware import PC, TICI -from openpilot.common.basedir import BASEDIR -from openpilot.tools.lib.openpilotci import BASE_URL -from openpilot.system.version import get_commit -from openpilot.system.camerad.snapshot.snapshot import yuv_to_rgb -from openpilot.tools.lib.logreader import LogReader -from openpilot.tools.lib.filereader import FileReader - -TEST_ROUTE = "8345e3b82948d454|2022-05-04--13-45-33/0" - -FRAME_WIDTH = 1928 -FRAME_HEIGHT = 1208 -FRAME_STRIDE = 2896 - -UV_WIDTH = FRAME_WIDTH // 2 -UV_HEIGHT = FRAME_HEIGHT // 2 -UV_SIZE = UV_WIDTH * UV_HEIGHT - - -def get_frame_fn(ref_commit, test_route, tici=True): - return f"{test_route}_debayer{'_tici' if tici else ''}_{ref_commit}.bz2" - - -def bzip_frames(frames): - data = b'' - for y, u, v in frames: - data += y.tobytes() - data += u.tobytes() - data += v.tobytes() - return bz2.compress(data) - - -def unbzip_frames(url): - with FileReader(url) as f: - dat = f.read() - - data = bz2.decompress(dat) - - res = [] - for y_start in range(0, len(data), FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2): - u_start = y_start + FRAME_WIDTH * FRAME_HEIGHT - v_start = u_start + UV_SIZE - - y = np.frombuffer(data[y_start: u_start], dtype=np.uint8).reshape((FRAME_HEIGHT, FRAME_WIDTH)) - u = np.frombuffer(data[u_start: v_start], dtype=np.uint8).reshape((UV_HEIGHT, UV_WIDTH)) - v = np.frombuffer(data[v_start: v_start + UV_SIZE], dtype=np.uint8).reshape((UV_HEIGHT, UV_WIDTH)) - - res.append((y, u, v)) - - return res - - -def init_kernels(frame_offset=0): - ctx = cl.create_some_context(interactive=False) - - with open(os.path.join(BASEDIR, 'system/camerad/cameras/real_debayer.cl')) as f: - build_args = ' -cl-fast-relaxed-math -cl-denorms-are-zero -cl-single-precision-constant' + \ - f' -DFRAME_STRIDE={FRAME_STRIDE} -DRGB_WIDTH={FRAME_WIDTH} -DRGB_HEIGHT={FRAME_HEIGHT} -DFRAME_OFFSET={frame_offset} -DCAM_NUM=0' - if PC: - build_args += ' -DHALF_AS_FLOAT=1 -cl-std=CL2.0' - debayer_prg = cl.Program(ctx, f.read()).build(options=build_args) - - return ctx, debayer_prg - -def debayer_frame(ctx, debayer_prg, data, rgb=False): - q = cl.CommandQueue(ctx) - - yuv_buff = np.empty(FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2, dtype=np.uint8) - - cam_g = cl.Buffer(ctx, cl.mem_flags.READ_ONLY | cl.mem_flags.COPY_HOST_PTR, hostbuf=data) - yuv_g = cl.Buffer(ctx, cl.mem_flags.WRITE_ONLY, FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2) - - local_worksize = (20, 20) if TICI else (4, 4) - ev1 = debayer_prg.debayer10(q, (UV_WIDTH, UV_HEIGHT), local_worksize, cam_g, yuv_g) - cl.enqueue_copy(q, yuv_buff, yuv_g, wait_for=[ev1]).wait() - cl.enqueue_barrier(q) - - y = yuv_buff[:FRAME_WIDTH*FRAME_HEIGHT].reshape((FRAME_HEIGHT, FRAME_WIDTH)) - u = yuv_buff[FRAME_WIDTH*FRAME_HEIGHT:FRAME_WIDTH*FRAME_HEIGHT+UV_SIZE].reshape((UV_HEIGHT, UV_WIDTH)) - v = yuv_buff[FRAME_WIDTH*FRAME_HEIGHT+UV_SIZE:].reshape((UV_HEIGHT, UV_WIDTH)) - - if rgb: - return yuv_to_rgb(y, u, v) - else: - return y, u, v - - -def debayer_replay(lr): - ctx, debayer_prg = init_kernels() - - frames = [] - for m in lr: - if m.which() == 'roadCameraState': - cs = m.roadCameraState - if cs.image: - data = np.frombuffer(cs.image, dtype=np.uint8) - img = debayer_frame(ctx, debayer_prg, data) - - frames.append(img) - - return frames - - -if __name__ == "__main__": - update = "--update" in sys.argv - replay_dir = os.path.dirname(os.path.abspath(__file__)) - ref_commit_fn = os.path.join(replay_dir, "debayer_replay_ref_commit") - - # load logs - lr = list(LogReader(TEST_ROUTE)) - - # run replay - frames = debayer_replay(lr) - - # get diff - failed = False - diff = '' - yuv_i = ['y', 'u', 'v'] - if not update: - with open(ref_commit_fn) as f: - ref_commit = f.read().strip() - frame_fn = get_frame_fn(ref_commit, TEST_ROUTE, tici=TICI) - - try: - cmp_frames = unbzip_frames(BASE_URL + frame_fn) - - if len(frames) != len(cmp_frames): - failed = True - diff += 'amount of frames not equal\n' - - for i, (frame, cmp_frame) in enumerate(zip(frames, cmp_frames, strict=True)): - for j in range(3): - fr = frame[j] - cmp_f = cmp_frame[j] - if fr.shape != cmp_f.shape: - failed = True - diff += f'frame shapes not equal for ({i}, {yuv_i[j]})\n' - diff += f'{ref_commit}: {cmp_f.shape}\n' - diff += f'HEAD: {fr.shape}\n' - elif not np.array_equal(fr, cmp_f): - failed = True - if np.allclose(fr, cmp_f, atol=1): - diff += f'frames not equal for ({i}, {yuv_i[j]}), but are all close\n' - else: - diff += f'frames not equal for ({i}, {yuv_i[j]})\n' - - frame_diff = np.abs(np.subtract(fr, cmp_f)) - diff_len = len(np.nonzero(frame_diff)[0]) - if diff_len > 10000: - diff += f'different at a large amount of pixels ({diff_len})\n' - else: - diff += 'different at (frame, yuv, pixel, ref, HEAD):\n' - for k in zip(*np.nonzero(frame_diff), strict=True): - diff += f'{i}, {yuv_i[j]}, {k}, {cmp_f[k]}, {fr[k]}\n' - - if failed: - print(diff) - with open("debayer_diff.txt", "w") as f: - f.write(diff) - except Exception as e: - print(str(e)) - failed = True - - # upload new refs - if update or (failed and TICI): - from openpilot.tools.lib.openpilotci import upload_file - - print("Uploading new refs") - - frames_bzip = bzip_frames(frames) - - new_commit = get_commit() - frame_fn = os.path.join(replay_dir, get_frame_fn(new_commit, TEST_ROUTE, tici=TICI)) - with open(frame_fn, "wb") as f2: - f2.write(frames_bzip) - - try: - upload_file(frame_fn, os.path.basename(frame_fn)) - except Exception as e: - print("failed to upload", e) - - if update: - with open(ref_commit_fn, 'w') as f: - f.write(str(new_commit)) - - print("\nNew ref commit: ", new_commit) - - sys.exit(int(failed)) diff --git a/selfdrive/test/process_replay/test_fuzzy.py b/selfdrive/test/process_replay/test_fuzzy.py index adff06f88a..6c81119fbf 100755 --- a/selfdrive/test/process_replay/test_fuzzy.py +++ b/selfdrive/test/process_replay/test_fuzzy.py @@ -27,7 +27,7 @@ class TestFuzzProcesses(unittest.TestCase): msgs = FuzzyGenerator.get_random_event_msg(data.draw, events=cfg.pubs, real_floats=True) lr = [log.Event.new_message(**m).as_reader() for m in msgs] cfg.timeout = 5 - pr.replay_process(cfg, lr, fingerprint=TOYOTA.COROLLA_TSS2, disable_progress=True) + pr.replay_process(cfg, lr, fingerprint=TOYOTA.TOYOTA_COROLLA_TSS2, disable_progress=True) if __name__ == "__main__": unittest.main() diff --git a/selfdrive/test/process_replay/test_imgproc.py b/selfdrive/test/process_replay/test_imgproc.py new file mode 100755 index 0000000000..a980548baa --- /dev/null +++ b/selfdrive/test/process_replay/test_imgproc.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 +import os +import numpy as np +import hashlib + +import pyopencl as cl # install with `PYOPENCL_CL_PRETEND_VERSION=2.0 pip install pyopencl` + +from openpilot.system.hardware import PC, TICI +from openpilot.common.basedir import BASEDIR +from openpilot.common.transformations.camera import DEVICE_CAMERAS +from openpilot.system.camerad.snapshot.snapshot import yuv_to_rgb +from openpilot.tools.lib.logreader import LogReader + +# TODO: check all sensors +TEST_ROUTE = "8345e3b82948d454|2022-05-04--13-45-33/0" + +cam = DEVICE_CAMERAS[("tici", "ar0231")] +FRAME_WIDTH, FRAME_HEIGHT = (cam.dcam.width, cam.dcam.height) +FRAME_STRIDE = FRAME_WIDTH * 12 // 8 + 4 + +UV_WIDTH = FRAME_WIDTH // 2 +UV_HEIGHT = FRAME_HEIGHT // 2 +UV_SIZE = UV_WIDTH * UV_HEIGHT + + +def init_kernels(frame_offset=0): + ctx = cl.create_some_context(interactive=False) + + with open(os.path.join(BASEDIR, 'system/camerad/cameras/process_raw.cl')) as f: + build_args = f' -cl-fast-relaxed-math -cl-denorms-are-zero -cl-single-precision-constant -I{BASEDIR}/system/camerad/sensors ' + \ + f' -DFRAME_WIDTH={FRAME_WIDTH} -DFRAME_HEIGHT={FRAME_WIDTH} -DFRAME_STRIDE={FRAME_STRIDE} -DFRAME_OFFSET={frame_offset} ' + \ + f' -DRGB_WIDTH={FRAME_WIDTH} -DRGB_HEIGHT={FRAME_HEIGHT} -DYUV_STRIDE={FRAME_WIDTH} -DUV_OFFSET={FRAME_WIDTH*FRAME_HEIGHT}' + \ + ' -DSENSOR_ID=1 -DVIGNETTING=0 ' + if PC: + build_args += ' -DHALF_AS_FLOAT=1 -cl-std=CL2.0' + imgproc_prg = cl.Program(ctx, f.read()).build(options=build_args) + + return ctx, imgproc_prg + +def proc_frame(ctx, imgproc_prg, data, rgb=False): + q = cl.CommandQueue(ctx) + + yuv_buff = np.empty(FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2, dtype=np.uint8) + + cam_g = cl.Buffer(ctx, cl.mem_flags.READ_ONLY | cl.mem_flags.COPY_HOST_PTR, hostbuf=data) + yuv_g = cl.Buffer(ctx, cl.mem_flags.WRITE_ONLY, FRAME_WIDTH * FRAME_HEIGHT + UV_SIZE * 2) + + krn = imgproc_prg.process_raw + krn.set_scalar_arg_dtypes([None, None, np.int32]) + local_worksize = (20, 20) if TICI else (4, 4) + + ev1 = krn(q, (FRAME_WIDTH//2, FRAME_HEIGHT//2), local_worksize, cam_g, yuv_g, 1) + cl.enqueue_copy(q, yuv_buff, yuv_g, wait_for=[ev1]).wait() + cl.enqueue_barrier(q) + + y = yuv_buff[:FRAME_WIDTH*FRAME_HEIGHT].reshape((FRAME_HEIGHT, FRAME_WIDTH)) + u = yuv_buff[FRAME_WIDTH*FRAME_HEIGHT::2].reshape((UV_HEIGHT, UV_WIDTH)) + v = yuv_buff[FRAME_WIDTH*FRAME_HEIGHT+1::2].reshape((UV_HEIGHT, UV_WIDTH)) + + if rgb: + return yuv_to_rgb(y, u, v) + else: + return y, u, v + + +def imgproc_replay(lr): + ctx, imgproc_prg = init_kernels() + + frames = [] + for m in lr: + if m.which() == 'roadCameraState': + cs = m.roadCameraState + if cs.image: + data = np.frombuffer(cs.image, dtype=np.uint8) + img = proc_frame(ctx, imgproc_prg, data) + + frames.append(img) + + return frames + + +if __name__ == "__main__": + # load logs + lr = list(LogReader(TEST_ROUTE)) + # run replay + out_frames = imgproc_replay(lr) + + all_pix = np.concatenate([np.concatenate([d.flatten() for d in f]) for f in out_frames]) + pix_hash = hashlib.sha1(all_pix).hexdigest() + + with open('imgproc_replay_ref_hash') as f: + ref_hash = f.read() + + if pix_hash != ref_hash: + print("result changed! please check kernel") + print("ref: %s" % ref_hash) + print("new: %s" % pix_hash) + else: + print("test passed") diff --git a/selfdrive/test/process_replay/test_processes.py b/selfdrive/test/process_replay/test_processes.py index 2b917b0f61..5fa80f0e09 100755 --- a/selfdrive/test/process_replay/test_processes.py +++ b/selfdrive/test/process_replay/test_processes.py @@ -7,37 +7,37 @@ from collections import defaultdict from tqdm import tqdm from typing import Any +from openpilot.common.git import get_commit from openpilot.selfdrive.car.car_helpers import interface_names from openpilot.tools.lib.openpilotci import get_url, upload_file from openpilot.selfdrive.test.process_replay.compare_logs import compare_logs, format_diff from openpilot.selfdrive.test.process_replay.process_replay import CONFIGS, PROC_REPLAY_DIR, FAKEDATA, check_openpilot_enabled, replay_process -from openpilot.system.version import get_commit from openpilot.tools.lib.filereader import FileReader from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.helpers import save_log source_segments = [ - ("BODY", "937ccb7243511b65|2022-05-24--16-03-09--1"), # COMMA.BODY - ("HYUNDAI", "02c45f73a2e5c6e9|2021-01-01--19-08-22--1"), # HYUNDAI.SONATA - ("HYUNDAI2", "d545129f3ca90f28|2022-11-07--20-43-08--3"), # HYUNDAI.KIA_EV6 (+ QCOM GPS) - ("TOYOTA", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA.PRIUS - ("TOYOTA2", "0982d79ebb0de295|2021-01-03--20-03-36--6"), # TOYOTA.RAV4 - ("TOYOTA3", "f7d7e3538cda1a2a|2021-08-16--08-55-34--6"), # TOYOTA.COROLLA_TSS2 - ("HONDA", "eb140f119469d9ab|2021-06-12--10-46-24--27"), # HONDA.CIVIC (NIDEC) - ("HONDA2", "7d2244f34d1bbcda|2021-06-25--12-25-37--26"), # HONDA.ACCORD (BOSCH) - ("CHRYSLER", "4deb27de11bee626|2021-02-20--11-28-55--8"), # CHRYSLER.PACIFICA_2018_HYBRID - ("RAM", "17fc16d840fe9d21|2023-04-26--13-28-44--5"), # CHRYSLER.RAM_1500 - ("SUBARU", "341dccd5359e3c97|2022-09-12--10-35-33--3"), # SUBARU.OUTBACK - ("GM", "0c58b6a25109da2b|2021-02-23--16-35-50--11"), # GM.VOLT - ("GM2", "376bf99325883932|2022-10-27--13-41-22--1"), # GM.BOLT_EUV - ("NISSAN", "35336926920f3571|2021-02-12--18-38-48--46"), # NISSAN.XTRAIL - ("VOLKSWAGEN", "de9592456ad7d144|2021-06-29--11-00-15--6"), # VOLKSWAGEN.GOLF - ("MAZDA", "bd6a637565e91581|2021-10-30--15-14-53--4"), # MAZDA.CX9_2021 - ("FORD", "54827bf84c38b14f|2023-01-26--21-59-07--4"), # FORD.BRONCO_SPORT_MK1 + ("BODY", "937ccb7243511b65|2022-05-24--16-03-09--1"), # COMMA.COMMA_BODY + ("HYUNDAI", "02c45f73a2e5c6e9|2021-01-01--19-08-22--1"), # HYUNDAI.HYUNDAI_SONATA + ("HYUNDAI2", "d545129f3ca90f28|2022-11-07--20-43-08--3"), # HYUNDAI.HYUNDAI_KIA_EV6 (+ QCOM GPS) + ("TOYOTA", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA.TOYOTA_PRIUS + ("TOYOTA2", "0982d79ebb0de295|2021-01-03--20-03-36--6"), # TOYOTA.TOYOTA_RAV4 + ("TOYOTA3", "f7d7e3538cda1a2a|2021-08-16--08-55-34--6"), # TOYOTA.TOYOTA_COROLLA_TSS2 + ("HONDA", "eb140f119469d9ab|2021-06-12--10-46-24--27"), # HONDA.HONDA_CIVIC (NIDEC) + ("HONDA2", "7d2244f34d1bbcda|2021-06-25--12-25-37--26"), # HONDA.HONDA_ACCORD (BOSCH) + ("CHRYSLER", "4deb27de11bee626|2021-02-20--11-28-55--8"), # CHRYSLER.CHRYSLER_PACIFICA_2018_HYBRID + ("RAM", "17fc16d840fe9d21|2023-04-26--13-28-44--5"), # CHRYSLER.RAM_1500_5TH_GEN + ("SUBARU", "341dccd5359e3c97|2022-09-12--10-35-33--3"), # SUBARU.SUBARU_OUTBACK + ("GM", "0c58b6a25109da2b|2021-02-23--16-35-50--11"), # GM.CHEVROLET_VOLT + ("GM2", "376bf99325883932|2022-10-27--13-41-22--1"), # GM.CHEVROLET_BOLT_EUV + ("NISSAN", "35336926920f3571|2021-02-12--18-38-48--46"), # NISSAN.NISSAN_XTRAIL + ("VOLKSWAGEN", "de9592456ad7d144|2021-06-29--11-00-15--6"), # VOLKSWAGEN.VOLKSWAGEN_GOLF + ("MAZDA", "bd6a637565e91581|2021-10-30--15-14-53--4"), # MAZDA.MAZDA_CX9_2021 + ("FORD", "54827bf84c38b14f|2023-01-26--21-59-07--4"), # FORD.FORD_BRONCO_SPORT_MK1 # Enable when port is tested and dashcamOnly is no longer set - #("TESLA", "bb50caf5f0945ab1|2021-06-19--17-20-18--3"), # TESLA.AP2_MODELS - #("VOLKSWAGEN2", "3cfdec54aa035f3f|2022-07-19--23-45-10--2"), # VOLKSWAGEN.PASSAT_NMS + #("TESLA", "bb50caf5f0945ab1|2021-06-19--17-20-18--3"), # TESLA.TESLA_AP2_MODELS + #("VOLKSWAGEN2", "3cfdec54aa035f3f|2022-07-19--23-45-10--2"), # VOLKSWAGEN.VOLKSWAGEN_PASSAT_NMS ] segments = [ @@ -156,7 +156,8 @@ if __name__ == "__main__": assert full_test, "Need to run full test when updating refs" try: - ref_commit = open(REF_COMMIT_FN).read().strip() + with open(REF_COMMIT_FN) as f: + ref_commit = f.read().strip() except FileNotFoundError: print("Couldn't find reference commit") sys.exit(1) diff --git a/selfdrive/test/process_replay/test_regen.py b/selfdrive/test/process_replay/test_regen.py index 41d67ea376..d989635497 100755 --- a/selfdrive/test/process_replay/test_regen.py +++ b/selfdrive/test/process_replay/test_regen.py @@ -11,7 +11,7 @@ from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.framereader import FrameReader TESTED_SEGMENTS = [ - ("PRIUS_C2", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA PRIUS 2017: NEO, pandaStateDEPRECATED, no peripheralState, sensorEventsDEPRECATED + ("PRIUS_C2", "0982d79ebb0de295|2021-01-04--17-13-21--13"), # TOYOTA.TOYOTA_PRIUS: NEO, pandaStateDEPRECATED, no peripheralState, sensorEventsDEPRECATED # Enable these once regen on CI becomes faster or use them for different tests running controlsd in isolation # ("MAZDA_C3", "bd6a637565e91581|2021-10-30--15-14-53--4"), # MAZDA.CX9_2021: TICI, incomplete managerState # ("FORD_C3", "54827bf84c38b14f|2023-01-26--21-59-07--4"), # FORD.BRONCO_SPORT_MK1: TICI diff --git a/selfdrive/test/process_replay/vision_meta.py b/selfdrive/test/process_replay/vision_meta.py index b3c3dc0c9c..9bfe214c1e 100644 --- a/selfdrive/test/process_replay/vision_meta.py +++ b/selfdrive/test/process_replay/vision_meta.py @@ -1,17 +1,17 @@ from collections import namedtuple from cereal.visionipc import VisionStreamType from openpilot.common.realtime import DT_MDL, DT_DMON -from openpilot.common.transformations.camera import tici_f_frame_size, tici_d_frame_size, tici_e_frame_size, eon_f_frame_size, eon_d_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS VideoStreamMeta = namedtuple("VideoStreamMeta", ["camera_state", "encode_index", "stream", "dt", "frame_sizes"]) -ROAD_CAMERA_FRAME_SIZES = {"tici": tici_f_frame_size, "tizi": tici_f_frame_size, "neo": eon_f_frame_size} -WIDE_ROAD_CAMERA_FRAME_SIZES = {"tici": tici_e_frame_size, "tizi": tici_e_frame_size} -DRIVER_FRAME_SIZES = {"tici": tici_d_frame_size, "tizi": tici_d_frame_size, "neo": eon_d_frame_size} +ROAD_CAMERA_FRAME_SIZES = {k: (v.dcam.width, v.dcam.height) for k, v in DEVICE_CAMERAS.items()} +WIDE_ROAD_CAMERA_FRAME_SIZES = {k: (v.ecam.width, v.ecam.height) for k, v in DEVICE_CAMERAS.items() if v.ecam is not None} +DRIVER_CAMERA_FRAME_SIZES = {k: (v.dcam.width, v.dcam.height) for k, v in DEVICE_CAMERAS.items()} VIPC_STREAM_METADATA = [ # metadata: (state_msg_type, encode_msg_type, stream_type, dt, frame_sizes) ("roadCameraState", "roadEncodeIdx", VisionStreamType.VISION_STREAM_ROAD, DT_MDL, ROAD_CAMERA_FRAME_SIZES), ("wideRoadCameraState", "wideRoadEncodeIdx", VisionStreamType.VISION_STREAM_WIDE_ROAD, DT_MDL, WIDE_ROAD_CAMERA_FRAME_SIZES), - ("driverCameraState", "driverEncodeIdx", VisionStreamType.VISION_STREAM_DRIVER, DT_DMON, DRIVER_FRAME_SIZES), + ("driverCameraState", "driverEncodeIdx", VisionStreamType.VISION_STREAM_DRIVER, DT_DMON, DRIVER_CAMERA_FRAME_SIZES), ] diff --git a/selfdrive/test/profiling/profiler.py b/selfdrive/test/profiling/profiler.py index 6571825418..2cd547171a 100755 --- a/selfdrive/test/profiling/profiler.py +++ b/selfdrive/test/profiling/profiler.py @@ -16,8 +16,8 @@ from openpilot.selfdrive.car.volkswagen.values import CAR as VW BASE_URL = "https://commadataci.blob.core.windows.net/openpilotci/" CARS = { - 'toyota': ("0982d79ebb0de295|2021-01-03--20-03-36/6", TOYOTA.RAV4), - 'honda': ("0982d79ebb0de295|2021-01-08--10-13-10/6", HONDA.CIVIC), + 'toyota': ("0982d79ebb0de295|2021-01-03--20-03-36/6", TOYOTA.TOYOTA_RAV4), + 'honda': ("0982d79ebb0de295|2021-01-08--10-13-10/6", HONDA.HONDA_CIVIC), "vw": ("ef895f46af5fd73f|2021-05-22--14-06-35/6", VW.AUDI_A3_MK3), } diff --git a/selfdrive/test/test_onroad.py b/selfdrive/test/test_onroad.py index 8f8c93ecff..cd0846c894 100755 --- a/selfdrive/test/test_onroad.py +++ b/selfdrive/test/test_onroad.py @@ -27,14 +27,20 @@ from openpilot.selfdrive.test.helpers import set_params_enabled, release_only from openpilot.system.hardware.hw import Paths from openpilot.tools.lib.logreader import LogReader -# Baseline CPU usage by process +""" +CPU usage budget +* each process is entitled to at least 8% +* total CPU usage of openpilot (sum(PROCS.values()) + should not exceed MAX_TOTAL_CPU +""" +MAX_TOTAL_CPU = 250. # total for all 8 cores PROCS = { - "selfdrive.controls.controlsd": 41.0, + # Baseline CPU usage by process + "selfdrive.controls.controlsd": 46.0, "./loggerd": 14.0, "./encoderd": 17.0, "./camerad": 14.5, "./locationd": 11.0, - "./mapsd": (0.5, 10.0), "selfdrive.controls.plannerd": 11.0, "./ui": 18.0, "selfdrive.locationd.paramsd": 9.0, @@ -42,7 +48,6 @@ PROCS = { "selfdrive.controls.radard": 7.0, "selfdrive.modeld.modeld": 13.0, "selfdrive.modeld.dmonitoringmodeld": 8.0, - "selfdrive.modeld.navmodeld": 1.0, "selfdrive.thermald.thermald": 3.87, "selfdrive.locationd.calibrationd": 2.0, "selfdrive.locationd.torqued": 5.0, @@ -65,7 +70,7 @@ PROCS.update({ "tici": { "./boardd": 4.0, "./ubloxd": 0.02, - "system.sensord.pigeond": 6.0, + "system.ubloxd.pigeond": 6.0, }, "tizi": { "./boardd": 19.0, @@ -87,8 +92,6 @@ TIMINGS = { "driverCameraState": [2.5, 0.35], "modelV2": [2.5, 0.35], "driverStateV2": [2.5, 0.40], - "navModel": [2.5, 0.35], - "mapRenderState": [2.5, 0.35], "liveLocationKalman": [2.5, 0.35], "wideRoadCameraState": [1.5, 0.35], } @@ -278,6 +281,7 @@ class TestOnroad(unittest.TestCase): result += f"{proc_name.ljust(35)} {cpu_usage:5.2f}% ({exp}%) {err}\n" if len(err) > 0: cpu_ok = False + result += "------------------------------------------------\n" # Ensure there's no missing procs all_procs = {p.name for p in self.service_msgs['managerState'][0].managerState.processes if p.shouldBeRunning} @@ -285,7 +289,14 @@ class TestOnroad(unittest.TestCase): with self.subTest(proc=p): assert any(p in pp for pp in PROCS.keys()), f"Expected CPU usage missing for {p}" - result += "------------------------------------------------\n" + # total CPU check + procs_tot = sum([(max(x) if isinstance(x, tuple) else x) for x in PROCS.values()]) + with self.subTest(name="total CPU"): + assert procs_tot < MAX_TOTAL_CPU, "Total CPU budget exceeded" + result += "------------------------------------------------\n" + result += f"Total allocated CPU usage is {procs_tot}%, budget is {MAX_TOTAL_CPU}%, {MAX_TOTAL_CPU-procs_tot:.1f}% left\n" + result += "------------------------------------------------\n" + print(result) self.assertTrue(cpu_ok) @@ -304,7 +315,7 @@ class TestOnroad(unittest.TestCase): def test_camera_processing_time(self): result = "\n" result += "------------------------------------------------\n" - result += "-------------- Debayer Timing ------------------\n" + result += "-------------- ImgProc Timing ------------------\n" result += "------------------------------------------------\n" ts = [getattr(m, m.which()).processingTime for m in self.lr if 'CameraState' in m.which()] diff --git a/selfdrive/thermald/thermald.py b/selfdrive/thermald/thermald.py index 37206c2f06..10d0c13883 100755 --- a/selfdrive/thermald/thermald.py +++ b/selfdrive/thermald/thermald.py @@ -209,16 +209,10 @@ def thermald_thread(end_event, hw_queue) -> None: while not end_event.is_set(): sm.update(PANDA_STATES_TIMEOUT) - # Run at 2Hz - if sm.frame % round(SERVICE_LIST['pandaStates'].frequency * DT_TRML) != 0: - continue - pandaStates = sm['pandaStates'] peripheralState = sm['peripheralState'] peripheral_panda_present = peripheralState.pandaType != log.PandaState.PandaType.unknown - msg = read_thermal(thermal_config) - if sm.updated['pandaStates'] and len(pandaStates) > 0: # Set ignition based on any panda connected @@ -238,6 +232,14 @@ def thermald_thread(end_event, hw_queue) -> None: onroad_conditions["ignition"] = False cloudlog.error("panda timed out onroad") + # Run at 2Hz, plus rising edge of ignition + ign_edge = started_ts is None and onroad_conditions["ignition"] + if (sm.frame % round(SERVICE_LIST['pandaStates'].frequency * DT_TRML) != 0) and not ign_edge: + continue + + msg = read_thermal(thermal_config) + msg.deviceState.deviceType = HARDWARE.get_device_type() + try: last_hw_state = hw_queue.get_nowait() except queue.Empty: diff --git a/selfdrive/tombstoned.py b/selfdrive/tombstoned.py index ba3582d130..2c99c7eafe 100755 --- a/selfdrive/tombstoned.py +++ b/selfdrive/tombstoned.py @@ -12,7 +12,7 @@ from typing import NoReturn import openpilot.selfdrive.sentry as sentry from openpilot.system.hardware.hw import Paths from openpilot.common.swaglog import cloudlog -from openpilot.system.version import get_commit +from openpilot.system.version import get_build_metadata MAX_SIZE = 1_000_000 * 100 # allow up to 100M MAX_TOMBSTONE_FN_LEN = 62 # 85 - 23 ("/crash/") @@ -124,7 +124,9 @@ def report_tombstone_apport(fn): clean_path = path.replace('/', '_') date = datetime.datetime.now().strftime("%Y-%m-%d--%H-%M-%S") - new_fn = f"{date}_{(get_commit() or 'nocommit')[:8]}_{safe_fn(clean_path)}"[:MAX_TOMBSTONE_FN_LEN] + build_metadata = get_build_metadata() + + new_fn = f"{date}_{(build_metadata.openpilot.git_commit or 'nocommit')[:8]}_{safe_fn(clean_path)}"[:MAX_TOMBSTONE_FN_LEN] crashlog_dir = os.path.join(Paths.log_root(), "crash") os.makedirs(crashlog_dir, exist_ok=True) diff --git a/selfdrive/ui/SConscript b/selfdrive/ui/SConscript index b5bb2bb3c5..155e790e7c 100644 --- a/selfdrive/ui/SConscript +++ b/selfdrive/ui/SConscript @@ -50,10 +50,12 @@ widgets = qt_env.Library("qt_widgets", widgets_src, LIBS=base_libs) Export('widgets') qt_libs = [widgets, qt_util] + base_libs -qt_src = ["main.cc", "qt/sidebar.cc", "qt/onroad.cc", "qt/body.cc", +qt_src = ["main.cc", "qt/sidebar.cc", "qt/body.cc", "qt/window.cc", "qt/home.cc", "qt/offroad/settings.cc", "qt/offroad/software_settings.cc", "qt/offroad/onboarding.cc", "qt/offroad/driverview.cc", "qt/offroad/experimental_mode.cc", + "qt/onroad/onroad_home.cc", "qt/onroad/annotated_camera.cc", + "qt/onroad/buttons.cc", "qt/onroad/alerts.cc", "qt/onroad_settings.cc", "qt/onroad_settings_panel.cc"] # build translation files diff --git a/selfdrive/ui/qt/home.h b/selfdrive/ui/qt/home.h index 24aed7a756..7e0267a8a9 100644 --- a/selfdrive/ui/qt/home.h +++ b/selfdrive/ui/qt/home.h @@ -10,7 +10,7 @@ #include "common/params.h" #include "selfdrive/ui/qt/offroad/driverview.h" #include "selfdrive/ui/qt/body.h" -#include "selfdrive/ui/qt/onroad.h" +#include "selfdrive/ui/qt/onroad/onroad_home.h" #include "selfdrive/ui/qt/sidebar.h" #include "selfdrive/ui/qt/widgets/controls.h" #include "selfdrive/ui/qt/widgets/offroad_alerts.h" diff --git a/selfdrive/ui/qt/maps/map.cc b/selfdrive/ui/qt/maps/map.cc index c00e38bc78..48ff003ab3 100644 --- a/selfdrive/ui/qt/maps/map.cc +++ b/selfdrive/ui/qt/maps/map.cc @@ -74,7 +74,7 @@ void MapWindow::initLayers() { QVariantMap transition; transition["duration"] = 400; // ms - m_map->setPaintProperty("navLayer", "line-color", getNavPathColor(uiState()->scene.navigate_on_openpilot)); + m_map->setPaintProperty("navLayer", "line-color", getNavPathColor(uiState()->scene.navigate_on_openpilot_deprecated)); m_map->setPaintProperty("navLayer", "line-color-transition", transition); m_map->setPaintProperty("navLayer", "line-width", 7.5); m_map->setLayoutProperty("navLayer", "line-cap", "round"); @@ -161,12 +161,12 @@ void MapWindow::updateState(const UIState &s) { const SubMaster &sm = *(s.sm); update(); - if (sm.updated("modelV2")) { + if (sm.updated("modelV2") && uiState()->scene.custom_driving_model && uiState()->scene.driving_model_gen != 4) { // set path color on change, and show map on rising edge of navigate on openpilot auto car_control = sm["carControl"].getCarControl(); - bool nav_enabled = sm["modelV2"].getModelV2().getNavEnabled() && + bool nav_enabled = sm["modelV2"].getModelV2().getNavEnabledDEPRECATED() && (sm["controlsState"].getControlsState().getEnabled() || car_control.getLatActive() || car_control.getLongActive()); - if (nav_enabled != uiState()->scene.navigate_on_openpilot) { + if (nav_enabled != uiState()->scene.navigate_on_openpilot_deprecated) { if (loaded_once) { m_map->setPaintProperty("navLayer", "line-color", getNavPathColor(nav_enabled)); } @@ -174,7 +174,7 @@ void MapWindow::updateState(const UIState &s) { emit requestVisible(true); } } - uiState()->scene.navigate_on_openpilot = nav_enabled; + uiState()->scene.navigate_on_openpilot_deprecated = nav_enabled; } if (sm.updated("liveLocationKalman")) { @@ -182,12 +182,15 @@ void MapWindow::updateState(const UIState &s) { auto locationd_pos = locationd_location.getPositionGeodetic(); auto locationd_orientation = locationd_location.getCalibratedOrientationNED(); auto locationd_velocity = locationd_location.getVelocityCalibrated(); + auto locationd_ecef = locationd_location.getPositionECEF(); - // Check std norm - auto pos_ecef_std = locationd_location.getPositionECEF().getStd(); - bool pos_accurate_enough = sqrt(pow(pos_ecef_std[0], 2) + pow(pos_ecef_std[1], 2) + pow(pos_ecef_std[2], 2)) < 100; - - locationd_valid = (locationd_pos.getValid() && locationd_orientation.getValid() && locationd_velocity.getValid() && pos_accurate_enough); + locationd_valid = (locationd_pos.getValid() && locationd_orientation.getValid() && locationd_velocity.getValid() && locationd_ecef.getValid()); + if (locationd_valid) { + // Check std norm + auto pos_ecef_std = locationd_ecef.getStd(); + bool pos_accurate_enough = sqrt(pow(pos_ecef_std[0], 2) + pow(pos_ecef_std[1], 2) + pow(pos_ecef_std[2], 2)) < 100; + locationd_valid = pos_accurate_enough; + } if (locationd_valid) { last_position = QMapLibre::Coordinate(locationd_pos.getValue()[0], locationd_pos.getValue()[1]); @@ -409,7 +412,7 @@ void MapWindow::pinchTriggered(QPinchGesture *gesture) { void MapWindow::offroadTransition(bool offroad) { if (offroad) { clearRoute(); - uiState()->scene.navigate_on_openpilot = false; + uiState()->scene.navigate_on_openpilot_deprecated = false; routing_problem = false; } else { auto dest = coordinate_from_param("NavDestination"); diff --git a/selfdrive/ui/qt/maps/map_eta.cc b/selfdrive/ui/qt/maps/map_eta.cc index 161844c618..0eb77e36ce 100644 --- a/selfdrive/ui/qt/maps/map_eta.cc +++ b/selfdrive/ui/qt/maps/map_eta.cc @@ -38,10 +38,13 @@ void MapETA::updateETA(float s, float s_typical, float d) { auto remaining = s < 3600 ? std::pair{QString::number(int(s / 60)), tr("min")} : std::pair{QString("%1:%2").arg((int)s / 3600).arg(((int)s % 3600) / 60, 2, 10, QLatin1Char('0')), tr("hr")}; QString color = "#25DA6E"; - if (s / s_typical > 1.5) - color = "#DA3025"; - else if (s / s_typical > 1.2) - color = "#DAA725"; + if (std::abs(s_typical) > 1e-5) { + if (s / s_typical > 1.5) { + color = "#DA3025"; + } else if (s / s_typical > 1.2) { + color = "#DAA725"; + } + } // Distance auto distance = map_format_distance(d, uiState()->scene.is_metric); diff --git a/selfdrive/ui/qt/maps/map_helpers.cc b/selfdrive/ui/qt/maps/map_helpers.cc index 3907ff7b05..16923f7a43 100644 --- a/selfdrive/ui/qt/maps/map_helpers.cc +++ b/selfdrive/ui/qt/maps/map_helpers.cc @@ -137,17 +137,17 @@ std::optional coordinate_from_param(const std::string &pa // return {distance, unit} std::pair map_format_distance(float d, bool is_metric) { - auto round_distance = [](float d) -> float { - return (d > 10) ? std::nearbyint(d) : std::nearbyint(d * 10) / 10.0; + auto round_distance = [](float d) -> QString { + return (d > 10) ? QString::number(std::nearbyint(d)) : QString::number(std::nearbyint(d * 10) / 10.0, 'f', 1); }; d = std::max(d, 0.0f); if (is_metric) { - return (d > 500) ? std::pair{QString::number(round_distance(d / 1000)), QObject::tr("km")} + return (d > 500) ? std::pair{round_distance(d / 1000), QObject::tr("km")} : std::pair{QString::number(50 * std::nearbyint(d / 50)), QObject::tr("m")}; } else { float feet = d * METER_TO_FOOT; - return (feet > 500) ? std::pair{QString::number(round_distance(d * METER_TO_MILE)), QObject::tr("mi")} + return (feet > 500) ? std::pair{round_distance(d * METER_TO_MILE), QObject::tr("mi")} : std::pair{QString::number(50 * std::nearbyint(d / 50)), QObject::tr("ft")}; } } diff --git a/selfdrive/ui/qt/network/networking.cc b/selfdrive/ui/qt/network/networking.cc index 7934fa10da..484536acf2 100644 --- a/selfdrive/ui/qt/network/networking.cc +++ b/selfdrive/ui/qt/network/networking.cc @@ -94,11 +94,11 @@ void Networking::connectToNetwork(const Network n) { if (wifi->isKnownConnection(n.ssid)) { wifi->activateWifiConnection(n.ssid); } else if (n.security_type == SecurityType::OPEN) { - wifi->connect(n); + wifi->connect(n, false); } else if (n.security_type == SecurityType::WPA) { QString pass = InputDialog::getText(tr("Enter password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8); if (!pass.isEmpty()) { - wifi->connect(n, pass); + wifi->connect(n, false, pass); } } } @@ -108,7 +108,7 @@ void Networking::wrongPassword(const QString &ssid) { const Network &n = wifi->seenNetworks.value(ssid); QString pass = InputDialog::getText(tr("Wrong password"), this, tr("for \"%1\"").arg(QString::fromUtf8(n.ssid)), true, 8); if (!pass.isEmpty()) { - wifi->connect(n, pass); + wifi->connect(n, false, pass); } } } @@ -217,9 +217,9 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid hidden_network.ssid = ssid.toUtf8(); if (!pass.isEmpty()) { hidden_network.security_type = SecurityType::WPA; - wifi->connect(hidden_network, pass); + wifi->connect(hidden_network, true, pass); } else { - wifi->connect(hidden_network); + wifi->connect(hidden_network, true); } emit requestWifiScreen(); } diff --git a/selfdrive/ui/qt/network/networkmanager.h b/selfdrive/ui/qt/network/networkmanager.h index 2896b0fff7..8bdeaf3bbd 100644 --- a/selfdrive/ui/qt/network/networkmanager.h +++ b/selfdrive/ui/qt/network/networkmanager.h @@ -32,6 +32,7 @@ const QString NM_DBUS_INTERFACE_IP4_CONFIG = "org.freedesktop.NetworkMa const QString NM_DBUS_SERVICE = "org.freedesktop.NetworkManager"; +const int NM_DEVICE_STATE_UNKNOWN = 0; const int NM_DEVICE_STATE_ACTIVATED = 100; const int NM_DEVICE_STATE_NEED_AUTH = 60; const int NM_DEVICE_TYPE_WIFI = 2; diff --git a/selfdrive/ui/qt/network/wifi_manager.cc b/selfdrive/ui/qt/network/wifi_manager.cc index ebb5cb8736..717da47096 100644 --- a/selfdrive/ui/qt/network/wifi_manager.cc +++ b/selfdrive/ui/qt/network/wifi_manager.cc @@ -1,5 +1,7 @@ #include "selfdrive/ui/qt/network/wifi_manager.h" +#include + #include "selfdrive/ui/ui.h" #include "selfdrive/ui/qt/widgets/prime.h" @@ -14,9 +16,15 @@ bool compare_by_strength(const Network &a, const Network &b) { template T call(const QString &path, const QString &interface, const QString &method, Args &&...args) { - QDBusInterface nm = QDBusInterface(NM_DBUS_SERVICE, path, interface, QDBusConnection::systemBus()); + QDBusInterface nm(NM_DBUS_SERVICE, path, interface, QDBusConnection::systemBus()); nm.setTimeout(DBUS_TIMEOUT); - QDBusMessage response = nm.call(method, args...); + + QDBusMessage response = nm.call(method, std::forward(args)...); + if (response.type() == QDBusMessage::ErrorMessage) { + qCritical() << "DBus call error:" << response.errorMessage(); + return T(); + } + if constexpr (std::is_same_v) { return response; } else if (response.arguments().count() >= 1) { @@ -98,11 +106,21 @@ void WifiManager::refreshFinished(QDBusPendingCallWatcher *watcher) { ipv4_address = getIp4Address(); seenNetworks.clear(); - const QDBusReply> wather_reply = *watcher; - for (const QDBusObjectPath &path : wather_reply.value()) { - QDBusReply replay = call(path.path(), NM_DBUS_INTERFACE_PROPERTIES, "GetAll", NM_DBUS_INTERFACE_ACCESS_POINT); - auto properties = replay.value(); + const QDBusReply> watcher_reply = *watcher; + if (!watcher_reply.isValid()) { + qCritical() << "Failed to refresh"; + watcher->deleteLater(); + return; + } + for (const QDBusObjectPath &path : watcher_reply.value()) { + QDBusReply reply = call(path.path(), NM_DBUS_INTERFACE_PROPERTIES, "GetAll", NM_DBUS_INTERFACE_ACCESS_POINT); + if (!reply.isValid()) { + qCritical() << "Failed to retrieve properties for path:" << path.path(); + continue; + } + + auto properties = reply.value(); const QByteArray ssid = properties["Ssid"].toByteArray(); if (ssid.isEmpty()) continue; @@ -166,7 +184,7 @@ SecurityType WifiManager::getSecurityType(const QVariantMap &properties) { } } -void WifiManager::connect(const Network &n, const QString &password, const QString &username) { +void WifiManager::connect(const Network &n, const bool is_hidden, const QString &password, const QString &username) { setCurrentConnecting(n.ssid); forgetConnection(n.ssid); // Clear all connections that may already exist to the network we are connecting Connection connection; @@ -176,6 +194,7 @@ void WifiManager::connect(const Network &n, const QString &password, const QStri connection["connection"]["autoconnect-retries"] = 0; connection["802-11-wireless"]["ssid"] = n.ssid; + connection["802-11-wireless"]["hidden"] = is_hidden; connection["802-11-wireless"]["mode"] = "infrastructure"; if (n.security_type == SecurityType::WPA) { @@ -209,16 +228,8 @@ void WifiManager::deactivateConnection(const QDBusObjectPath &path) { } QVector WifiManager::getActiveConnections() { - QVector conns; - QDBusObjectPath path; - const QDBusArgument &arr = call(NM_DBUS_PATH, NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE, "ActiveConnections"); - arr.beginArray(); - while (!arr.atEnd()) { - arr >> path; - conns.push_back(path); - } - arr.endArray(); - return conns; + auto result = call(NM_DBUS_PATH, NM_DBUS_INTERFACE_PROPERTIES, "Get", NM_DBUS_INTERFACE, "ActiveConnections"); + return qdbus_cast>(result); } bool WifiManager::isKnownConnection(const QString &ssid) { @@ -427,7 +438,10 @@ void WifiManager::addTetheringConnection() { connection["ipv4"]["route-metric"] = 1100; connection["ipv6"]["method"] = "ignore"; - call(NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, "AddConnection", QVariant::fromValue(connection)); + auto path = call(NM_DBUS_PATH_SETTINGS, NM_DBUS_INTERFACE_SETTINGS, "AddConnection", QVariant::fromValue(connection)); + if (!path.path().isEmpty()) { + knownConnections[path] = tethering_ssid; + } } void WifiManager::tetheringActivated(QDBusPendingCallWatcher *call) { diff --git a/selfdrive/ui/qt/network/wifi_manager.h b/selfdrive/ui/qt/network/wifi_manager.h index 7debffa452..2f6a1829d7 100644 --- a/selfdrive/ui/qt/network/wifi_manager.h +++ b/selfdrive/ui/qt/network/wifi_manager.h @@ -52,7 +52,7 @@ public: std::optional activateWifiConnection(const QString &ssid); NetworkType currentNetworkType(); void updateGsmSettings(bool roaming, QString apn, bool metered); - void connect(const Network &ssid, const QString &password = {}, const QString &username = {}); + void connect(const Network &ssid, const bool is_hidden = false, const QString &password = {}, const QString &username = {}); // Tethering functions void setTetheringEnabled(bool enabled); @@ -63,7 +63,7 @@ public: private: QString adapter; // Path to network manager wifi-device QTimer timer; - unsigned int raw_adapter_state; // Connection status https://developer.gnome.org/NetworkManager/1.26/nm-dbus-types.html#NMDeviceState + unsigned int raw_adapter_state = NM_DEVICE_STATE_UNKNOWN; // Connection status https://developer.gnome.org/NetworkManager/1.26/nm-dbus-types.html#NMDeviceState QString connecting_to_network; QString tethering_ssid; const QString defaultTetheringPassword = "swagswagcomma"; diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index d401102c5d..886653bd4b 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -1,5 +1,3 @@ -#include "selfdrive/ui/qt/offroad/settings.h" - #include #include #include @@ -11,21 +9,15 @@ #include #include -#include "selfdrive/ui/qt/network/networking.h" - -#include "common/params.h" #include "common/watchdog.h" #include "common/util.h" -#include "system/hardware/hw.h" +#include "selfdrive/ui/qt/network/networking.h" +#include "selfdrive/ui/qt/offroad/settings.h" #include "selfdrive/ui/qt/offroad/sunnypilot_main.h" -#include "selfdrive/ui/qt/widgets/controls.h" -#include "selfdrive/ui/qt/widgets/input.h" +#include "selfdrive/ui/qt/qt_window.h" +#include "selfdrive/ui/qt/widgets/prime.h" #include "selfdrive/ui/qt/widgets/scrollview.h" #include "selfdrive/ui/qt/widgets/ssh_keys.h" -#include "selfdrive/ui/qt/widgets/toggle.h" -#include "selfdrive/ui/ui.h" -#include "selfdrive/ui/qt/util.h" -#include "selfdrive/ui/qt/qt_window.h" TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { // param, title, desc, icon @@ -75,6 +67,12 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { tr("Receive alerts to steer back into the lane when your vehicle drifts over a detected lane line without a turn signal activated while driving over 31 mph (50 km/h)."), "../assets/offroad/icon_blank.png", }, + { + "AlwaysOnDM", + tr("Always-On Driver Monitoring"), + tr("Enable driver monitoring even when openpilot is not engaged."), + "../assets/offroad/icon_blank.png", + }, { "RecordFront", tr("Record and Upload Driver Camera"), @@ -113,11 +111,16 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { std::vector longi_button_texts{tr("Maniac"), tr("Aggressive"), tr("Stock"), tr("Relaxed")}; long_personality_setting = new ButtonParamControl("LongitudinalPersonality", tr("Driving Personality"), tr("Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. " - "In relaxed mode openpilot will stay further away from lead cars."), + "In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with " + "your steering wheel distance button."), "../assets/offroad/icon_blank.png", longi_button_texts, 380); long_personality_setting->showDescription(); + + // set up uiState update for personality setting + QObject::connect(uiState(), &UIState::uiUpdate, this, &TogglesPanel::updateState); + for (auto &[param, title, desc, icon] : toggle_defs) { auto toggle = new ParamControl(param, title, desc, icon, this); @@ -153,6 +156,18 @@ TogglesPanel::TogglesPanel(SettingsWindow *parent) : ListWidget(parent) { }); } +void TogglesPanel::updateState(const UIState &s) { + const SubMaster &sm = *(s.sm); + + if (sm.updated("controlsState")) { + auto personality = sm["controlsState"].getControlsState().getPersonality(); + if (personality != s.scene.personality && s.scene.started && isVisible()) { + long_personality_setting->setCheckedButton(static_cast(personality)); + } + uiState()->scene.personality = personality; + } +} + void TogglesPanel::expandToggleDescription(const QString ¶m) { toggles[param.toStdString()]->showDescription(); } @@ -166,8 +181,6 @@ void TogglesPanel::updateToggles() { if (!isVisible()) return; - long_personality_setting->setButton("LongitudinalPersonality"); - auto experimental_mode_toggle = toggles["ExperimentalMode"]; auto op_long_toggle = toggles["ExperimentalLongitudinalEnabled"]; auto custom_stock_long_toggle = toggles["CustomStockLong"]; @@ -176,21 +189,14 @@ void TogglesPanel::updateToggles() { "

%2


" "%3
" "

%4


" - "%5
" - "

%6


" - "%7") + "%5
") .arg(tr("openpilot defaults to driving in chill mode. Experimental mode enables alpha-level features that aren't ready for chill mode. Experimental features are listed below:")) .arg(tr("End-to-End Longitudinal Control")) .arg(tr("Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. " "Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; " "mistakes should be expected.")) - .arg(tr("Navigate on openpilot")) - .arg(tr("When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right " - "appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around " - "exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc.")) .arg(tr("New Driving Visualization")) - .arg(tr("The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. " - "When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green.")); + .arg(tr("The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner.")); const bool is_release = params.getBool("IsReleaseBranch"); auto cp_bytes = params.get("CarParamsPersistent"); @@ -304,6 +310,14 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { }); addItem(errorBtn); + pair_device = new ButtonControl(tr("Pair Device"), tr("PAIR"), + tr("Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer.")); + connect(pair_device, &ButtonControl::clicked, [=]() { + PairingPopup popup(this); + popup.exec(); + }); + addItem(pair_device); + // offroad-only buttons auto dcamBtn = new ButtonControl(tr("Driver Camera"), tr("PREVIEW"), @@ -377,9 +391,12 @@ DevicePanel::DevicePanel(SettingsWindow *parent) : ListWidget(parent) { }); addItem(translateBtn); + QObject::connect(uiState(), &UIState::primeTypeChanged, [this] (PrimeType type) { + pair_device->setVisible(type == PrimeType::UNPAIRED); + }); QObject::connect(uiState(), &UIState::offroadTransition, [=](bool offroad) { for (auto btn : findChildren()) { - if (btn != errorBtn) { + if ((btn != pair_device) && (btn != errorBtn)) { btn->setEnabled(offroad); } } @@ -484,6 +501,11 @@ void DevicePanel::poweroff() { } } +void DevicePanel::showEvent(QShowEvent *event) { + pair_device->setVisible(uiState()->primeType() == PrimeType::UNPAIRED); + ListWidget::showEvent(event); +} + void SettingsWindow::showEvent(QShowEvent *event) { setCurrentPanel(0); } diff --git a/selfdrive/ui/qt/offroad/settings.h b/selfdrive/ui/qt/offroad/settings.h index 4f12609269..b1ee32f39d 100644 --- a/selfdrive/ui/qt/offroad/settings.h +++ b/selfdrive/ui/qt/offroad/settings.h @@ -11,7 +11,7 @@ #include #include - +#include "selfdrive/ui/ui.h" #include "selfdrive/ui/qt/util.h" #include "selfdrive/ui/qt/widgets/controls.h" @@ -51,6 +51,8 @@ class DevicePanel : public ListWidget { Q_OBJECT public: explicit DevicePanel(SettingsWindow *parent); + void showEvent(QShowEvent *event) override; + signals: void reviewTrainingGuide(); void showDriverView(); @@ -64,6 +66,7 @@ private slots: private: Params params; + ButtonControl *pair_device; ButtonControl *fleetManagerPin; QString pin_title = tr("Fleet Manager PIN:") + " "; @@ -81,6 +84,9 @@ public slots: void expandToggleDescription(const QString ¶m); void updateToggles(); +private slots: + void updateState(const UIState &s); + private: Params params; std::map toggles; diff --git a/selfdrive/ui/qt/offroad/software_settings.cc b/selfdrive/ui/qt/offroad/software_settings.cc index 633b085c9c..43982daee9 100644 --- a/selfdrive/ui/qt/offroad/software_settings.cc +++ b/selfdrive/ui/qt/offroad/software_settings.cc @@ -18,7 +18,7 @@ void SoftwarePanel::checkForUpdates() { - std::system("pkill -SIGUSR1 -f selfdrive.updated"); + std::system("pkill -SIGUSR1 -f selfdrive.updated.updated"); } SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { @@ -40,7 +40,7 @@ SoftwarePanel::SoftwarePanel(QWidget* parent) : ListWidget(parent) { if (downloadBtn->text() == tr("CHECK")) { checkForUpdates(); } else { - std::system("pkill -SIGHUP -f selfdrive.updated"); + std::system("pkill -SIGHUP -f selfdrive.updated.updated"); } }); addItem(downloadBtn); diff --git a/selfdrive/ui/qt/offroad/sunnypilot/models_fetcher.cc b/selfdrive/ui/qt/offroad/sunnypilot/models_fetcher.cc index f45aa55e5c..230af1fe9c 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot/models_fetcher.cc +++ b/selfdrive/ui/qt/offroad/sunnypilot/models_fetcher.cc @@ -150,5 +150,5 @@ std::vector ModelsFetcher::getModelsFromURL(const QString&url) { } std::vector ModelsFetcher::getModelsFromURL() { - return getModelsFromURL("https://docs.sunnypilot.ai/models_v3.json"); + return getModelsFromURL("https://docs.sunnypilot.ai/models_v4.json"); } diff --git a/selfdrive/ui/qt/offroad/sunnypilot/software_settings_sp.cc b/selfdrive/ui/qt/offroad/sunnypilot/software_settings_sp.cc index ec72e71a78..eee55f119a 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot/software_settings_sp.cc +++ b/selfdrive/ui/qt/offroad/sunnypilot/software_settings_sp.cc @@ -23,6 +23,7 @@ SoftwarePanelSP::SoftwarePanelSP(QWidget *parent) : SoftwarePanel(parent) { if (!isDownloadingModel() && modelDownloadProgress.has_value()) { params.put("DrivingModelText", selectedModelToDownload->fullName.toStdString()); params.put("DrivingModelName", selectedModelToDownload->displayName.toStdString()); + params.put("DrivingModelGeneration", selectedModelToDownload->generation.toStdString()); selectedModelToDownload.reset(); modelDownloadProgress.reset(); params.putBool("CustomDrivingModel", !model_download_failed); @@ -34,7 +35,6 @@ SoftwarePanelSP::SoftwarePanelSP(QWidget *parent) : SoftwarePanel(parent) { connect(&nav_models_fetcher, &ModelsFetcher::downloadComplete, this, [this](const QByteArray&data, bool fromCache = false) { navModelFromCache = fromCache; if (!isDownloadingNavModel() && navModelDownloadProgress.has_value()) { - params.put("DrivingModelGeneration", selectedNavModelToDownload->generation.toStdString()); params.put("NavModelText", selectedNavModelToDownload->fullNameNav.toStdString()); selectedNavModelToDownload.reset(); navModelDownloadProgress.reset(); @@ -136,22 +136,22 @@ void SoftwarePanelSP::HandleModelDownloadProgressReport() { } // Navigation model status - if (isDownloadingNavModel()) { + if (isDownloadingNavModel() && !navModelName.isEmpty()) { if (!description.isEmpty()) description += "\n"; // Add newline if driving model status is already appended description += QString(tr("Downloading Navigation model") + " [%1]... (%2%)") .arg(navModelName, QString::number(navModelDownloadProgress.value_or(0.0), 'f', 2)); - } else { + } else if (!navModelName.isEmpty()) { if (navModelFromCache) navModelName += QString(" " + tr("(CACHED)")); if (!description.isEmpty()) description += "\n"; // Ensure newline separation description += QString(tr("Navigation model") + " [%1] " + tr("downloaded")).arg(navModelName); } // Metadata status - if (isDownloadingMetadata()) { + if (isDownloadingMetadata() && !metadataName.isEmpty()) { if (!description.isEmpty()) description += "\n"; description += QString(tr("Downloading Metadata model") + " [%1]... (%2%)") .arg(metadataName, QString::number(metadataDownloadProgress.value_or(0.0), 'f', 2)); - } else { + } else if (!metadataName.isEmpty()) { if (metadataFromCache) metadataName += QString(" " + tr("(CACHED)")); if (!description.isEmpty()) description += "\n"; description += QString(tr("Metadata model") + " [%1] " + tr("downloaded")).arg(metadataName); @@ -236,8 +236,8 @@ void SoftwarePanelSP::handleCurrentModelLblBtnClicked() { modelDownloadProgress = 0.01; metadataDownloadProgress = 0.01; - //Start the download, we download the other models on emit of downloadComplete - if(params.get("DrivingModelGeneration") != selectedModelToDownload->generation.toStdString()) + // Start the download, we download the other models on emit of downloadComplete + if (params.get("DrivingModelGeneration") != selectedModelToDownload->generation.toStdString()) showResetParamsDialog(); models_fetcher.download(selectedModelToDownload->downloadUri, selectedModelToDownload->fileName); @@ -260,7 +260,7 @@ void SoftwarePanelSP::updateLabels() { return; } - if(!model_download_failed) + if (!model_download_failed) failed_downloads_description = ""; checkNetwork(); diff --git a/selfdrive/ui/qt/offroad/sunnypilot/speed_limit_control_settings.cc b/selfdrive/ui/qt/offroad/sunnypilot/speed_limit_control_settings.cc index c93fea612b..7686f0a873 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot/speed_limit_control_settings.cc +++ b/selfdrive/ui/qt/offroad/sunnypilot/speed_limit_control_settings.cc @@ -63,6 +63,7 @@ void SlcSettings::updateToggles() { params.put("SpeedLimitEngageType", "1"); } + // TODO: SP: use upstream's setCheckedButton speed_limit_engage_settings->setButton("SpeedLimitEngageType"); auto cp_bytes = params.get("CarParamsPersistent"); diff --git a/selfdrive/ui/qt/offroad/sunnypilot/speed_limit_policy_settings.cc b/selfdrive/ui/qt/offroad/sunnypilot/speed_limit_policy_settings.cc index 63840923c9..2de70e9b30 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot/speed_limit_policy_settings.cc +++ b/selfdrive/ui/qt/offroad/sunnypilot/speed_limit_policy_settings.cc @@ -44,6 +44,7 @@ void SpeedLimitPolicySettings::updateToggles() { return; } + // TODO: SP: use upstream's setCheckedButton speed_limit_policy->setButton("SpeedLimitControlPolicy"); speed_limit_policy->setDescription(speedLimitPolicyDescriptionBuilder("SpeedLimitControlPolicy", speed_limit_policy_descriptions)); diff --git a/selfdrive/ui/qt/offroad/sunnypilot/sunnylink_settings.cc b/selfdrive/ui/qt/offroad/sunnypilot/sunnylink_settings.cc index 935ed3fc56..e765792b4d 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot/sunnylink_settings.cc +++ b/selfdrive/ui/qt/offroad/sunnypilot/sunnylink_settings.cc @@ -200,6 +200,11 @@ void SunnylinkPanel::updateLabels() { bool is_paired = uiState()->isSunnylinkPaired(); auto paired_users = uiState()->sunnylinkDeviceUsers(); + //little easter egg for Panda :D + if(sunnylinkDongleId == "d689627422cefcbc") { + role_name = "Panda 🐼"; + } + sunnylinkEnabledBtn->setEnabled(!is_onroad); sunnylinkEnabledBtn->setValue(tr("Device ID ")+ sunnylinkDongleId); diff --git a/selfdrive/ui/qt/offroad/sunnypilot/sunnypilot_settings.cc b/selfdrive/ui/qt/offroad/sunnypilot/sunnypilot_settings.cc index 56e783072f..ce5b115b69 100644 --- a/selfdrive/ui/qt/offroad/sunnypilot/sunnypilot_settings.cc +++ b/selfdrive/ui/qt/offroad/sunnypilot/sunnypilot_settings.cc @@ -428,6 +428,7 @@ void SunnypilotPanel::updateToggles() { return; } + // TODO: SP: use upstream's setCheckedButton dlp_settings->setButton("DynamicLaneProfile"); // toggle VisionCurveLaneless when DynamicLaneProfile == 2/Auto diff --git a/selfdrive/ui/qt/onroad/alerts.cc b/selfdrive/ui/qt/onroad/alerts.cc new file mode 100644 index 0000000000..0235c5ff42 --- /dev/null +++ b/selfdrive/ui/qt/onroad/alerts.cc @@ -0,0 +1,112 @@ +#include "selfdrive/ui/qt/onroad/alerts.h" + +#include +#include + +#include "selfdrive/ui/qt/util.h" + +void OnroadAlerts::updateState(const UIState &s) { + Alert a = getAlert(*(s.sm), s.scene.started_frame); + if (!alert.equal(a)) { + alert = a; + update(); + } +} + +void OnroadAlerts::clear() { + alert = {}; + update(); +} + +OnroadAlerts::Alert OnroadAlerts::getAlert(const SubMaster &sm, uint64_t started_frame) { + const cereal::ControlsState::Reader &cs = sm["controlsState"].getControlsState(); + const uint64_t controls_frame = sm.rcv_frame("controlsState"); + + Alert a = {}; + if (controls_frame >= started_frame) { // Don't get old alert. + a = {cs.getAlertText1().cStr(), cs.getAlertText2().cStr(), + cs.getAlertType().cStr(), cs.getAlertSize(), cs.getAlertStatus()}; + } + + if (!sm.updated("controlsState") && (sm.frame - started_frame) > 5 * UI_FREQ) { + const int CONTROLS_TIMEOUT = 5; + const int controls_missing = (nanos_since_boot() - sm.rcv_time("controlsState")) / 1e9; + + // Handle controls timeout + if (controls_frame < started_frame) { + // car is started, but controlsState hasn't been seen at all + a = {tr("openpilot Unavailable"), tr("Waiting for controls to start"), + "controlsWaiting", cereal::ControlsState::AlertSize::MID, + cereal::ControlsState::AlertStatus::NORMAL}; + } else if (controls_missing > CONTROLS_TIMEOUT && !Hardware::PC()) { + // car is started, but controls is lagging or died + if (cs.getEnabled() && (controls_missing - CONTROLS_TIMEOUT) < 10) { + a = {tr("TAKE CONTROL IMMEDIATELY"), tr("Controls Unresponsive"), + "controlsUnresponsive", cereal::ControlsState::AlertSize::FULL, + cereal::ControlsState::AlertStatus::CRITICAL}; + } else { + a = {tr("Controls Unresponsive"), tr("Reboot Device"), + "controlsUnresponsivePermanent", cereal::ControlsState::AlertSize::MID, + cereal::ControlsState::AlertStatus::NORMAL}; + } + } + } + return a; +} + +void OnroadAlerts::paintEvent(QPaintEvent *event) { + if (alert.size == cereal::ControlsState::AlertSize::NONE) { + return; + } + static std::map alert_heights = { + {cereal::ControlsState::AlertSize::SMALL, 271}, + {cereal::ControlsState::AlertSize::MID, 420}, + {cereal::ControlsState::AlertSize::FULL, height()}, + }; + int h = alert_heights[alert.size]; + + int margin = 40; + int radius = 30; + if (alert.size == cereal::ControlsState::AlertSize::FULL) { + margin = 0; + radius = 0; + } + QRect r = QRect(0 + margin, height() - h + margin, width() - margin*2, h - margin*2); + + QPainter p(this); + + // draw background + gradient + p.setPen(Qt::NoPen); + p.setCompositionMode(QPainter::CompositionMode_SourceOver); + p.setBrush(QBrush(alert_colors[alert.status])); + p.drawRoundedRect(r, radius, radius); + + QLinearGradient g(0, r.y(), 0, r.bottom()); + g.setColorAt(0, QColor::fromRgbF(0, 0, 0, 0.05)); + g.setColorAt(1, QColor::fromRgbF(0, 0, 0, 0.35)); + + p.setCompositionMode(QPainter::CompositionMode_DestinationOver); + p.setBrush(QBrush(g)); + p.drawRoundedRect(r, radius, radius); + p.setCompositionMode(QPainter::CompositionMode_SourceOver); + + // text + const QPoint c = r.center(); + p.setPen(QColor(0xff, 0xff, 0xff)); + p.setRenderHint(QPainter::TextAntialiasing); + if (alert.size == cereal::ControlsState::AlertSize::SMALL) { + p.setFont(InterFont(74, QFont::DemiBold)); + p.drawText(r, Qt::AlignCenter, alert.text1); + } else if (alert.size == cereal::ControlsState::AlertSize::MID) { + p.setFont(InterFont(88, QFont::Bold)); + p.drawText(QRect(0, c.y() - 125, width(), 150), Qt::AlignHCenter | Qt::AlignTop, alert.text1); + p.setFont(InterFont(66)); + p.drawText(QRect(0, c.y() + 21, width(), 90), Qt::AlignHCenter, alert.text2); + } else if (alert.size == cereal::ControlsState::AlertSize::FULL) { + bool l = alert.text1.length() > 15; + p.setFont(InterFont(l ? 132 : 177, QFont::Bold)); + p.drawText(QRect(0, r.y() + (l ? 240 : 270), width(), 600), Qt::AlignHCenter | Qt::TextWordWrap, alert.text1); + p.setFont(InterFont(88)); + p.drawText(QRect(0, r.height() - (l ? 361 : 420), width(), 300), Qt::AlignHCenter | Qt::TextWordWrap, alert.text2); + } +} diff --git a/selfdrive/ui/qt/onroad/alerts.h b/selfdrive/ui/qt/onroad/alerts.h new file mode 100644 index 0000000000..1f76ba305b --- /dev/null +++ b/selfdrive/ui/qt/onroad/alerts.h @@ -0,0 +1,39 @@ +#pragma once + +#include + +#include "selfdrive/ui/ui.h" + +class OnroadAlerts : public QWidget { + Q_OBJECT + +public: + OnroadAlerts(QWidget *parent = 0) : QWidget(parent) {} + void updateState(const UIState &s); + void clear(); + +protected: + struct Alert { + QString text1; + QString text2; + QString type; + cereal::ControlsState::AlertSize size; + cereal::ControlsState::AlertStatus status; + + bool equal(const Alert &other) const { + return text1 == other.text1 && text2 == other.text2 && type == other.type; + } + }; + + const QMap alert_colors = { + {cereal::ControlsState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, + {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, + {cereal::ControlsState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, + }; + + void paintEvent(QPaintEvent*) override; + OnroadAlerts::Alert getAlert(const SubMaster &sm, uint64_t started_frame); + + QColor bg; + Alert alert = {}; +}; diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad/annotated_camera.cc similarity index 85% rename from selfdrive/ui/qt/onroad.cc rename to selfdrive/ui/qt/onroad/annotated_camera.cc index dc091422df..9b990de1df 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad/annotated_camera.cc @@ -1,47 +1,13 @@ -#include "selfdrive/ui/qt/onroad.h" +#include "selfdrive/ui/qt/onroad/annotated_camera.h" #include #include -#include -#include -#include -#include - -#include #include #include #include "common/swaglog.h" -#include "common/timing.h" +#include "selfdrive/ui/qt/onroad/buttons.h" #include "selfdrive/ui/qt/util.h" -#ifdef ENABLE_MAPS -#include "selfdrive/ui/qt/maps/map_helpers.h" -#include "selfdrive/ui/qt/maps/map_panel.h" -#endif -#include "selfdrive/ui/qt/onroad_settings_panel.h" - -static void drawIcon(QPainter &p, const QPoint ¢er, const QPixmap &img, const QBrush &bg, float opacity) { - p.setRenderHint(QPainter::Antialiasing); - p.setOpacity(1.0); // bg dictates opacity of ellipse - p.setPen(Qt::NoPen); - p.setBrush(bg); - p.drawEllipse(center, btn_size / 2, btn_size / 2); - p.setOpacity(opacity); - p.drawPixmap(center - QPoint(img.width() / 2, img.height() / 2), img); - p.setOpacity(1.0); -} - -static void drawCustomButtonIcon(QPainter &p, const int btn_size_x, const int btn_size_y, const QPixmap &img, const QBrush &bg, float opacity) { - QPoint center(btn_size_x / 2, btn_size_y / 2); - p.setRenderHint(QPainter::Antialiasing); - p.setOpacity(1.0); // bg dictates opacity of ellipse - p.setPen(Qt::NoPen); - p.setBrush(bg); - p.drawEllipse(center, btn_size_x / 2, btn_size_y / 2); - p.setOpacity(opacity); - p.drawPixmap(center - QPoint(img.width() / 2, img.height() / 2), img); - p.setOpacity(1.0); -} static std::pair getFeatureStatus(int value, QStringList text_list, QStringList color_list, bool condition, QString off_text) { @@ -60,302 +26,6 @@ static std::pair getFeatureStatus(int value, QStringList text_l return {text, color}; } -OnroadWindow::OnroadWindow(QWidget *parent) : QWidget(parent) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->setMargin(UI_BORDER_SIZE); - QStackedLayout *stacked_layout = new QStackedLayout; - stacked_layout->setStackingMode(QStackedLayout::StackAll); - main_layout->addLayout(stacked_layout); - - nvg = new AnnotatedCameraWidget(VISION_STREAM_ROAD, this); - - QWidget * split_wrapper = new QWidget; - split = new QHBoxLayout(split_wrapper); - split->setContentsMargins(0, 0, 0, 0); - split->setSpacing(0); - split->addWidget(nvg); - - if (getenv("DUAL_CAMERA_VIEW")) { - CameraWidget *arCam = new CameraWidget("camerad", VISION_STREAM_ROAD, true, this); - split->insertWidget(0, arCam); - } - - if (getenv("MAP_RENDER_VIEW")) { - CameraWidget *map_render = new CameraWidget("navd", VISION_STREAM_MAP, false, this); - split->insertWidget(0, map_render); - } - - stacked_layout->addWidget(split_wrapper); - - alerts = new OnroadAlerts(this); - alerts->setAttribute(Qt::WA_TransparentForMouseEvents, true); - stacked_layout->addWidget(alerts); - - // setup stacking order - alerts->raise(); - - setAttribute(Qt::WA_OpaquePaintEvent); - QObject::connect(uiState(), &UIState::uiUpdate, this, &OnroadWindow::updateState); - QObject::connect(uiState(), &UIState::offroadTransition, this, &OnroadWindow::offroadTransition); - QObject::connect(uiState(), &UIState::primeChanged, this, &OnroadWindow::primeChanged); -} - -void OnroadWindow::updateState(const UIState &s) { - if (!s.scene.started) { - return; - } - - QColor bgColor = bg_colors[s.status]; - Alert alert = Alert::get(*(s.sm), s.scene.started_frame); - alerts->updateAlert(alert); - - if (s.scene.map_on_left || s.scene.mapbox_fullscreen) { - split->setDirection(QBoxLayout::LeftToRight); - } else { - split->setDirection(QBoxLayout::RightToLeft); - } - - nvg->updateState(s); - - if (bg != bgColor) { - // repaint border - bg = bgColor; - update(); - } -} - - -void OnroadWindow::mousePressEvent(QMouseEvent* e) { -#ifdef ENABLE_MAPS - UIState *s = uiState(); - UIScene &scene = s->scene; - if (map != nullptr && !isOnroadSettingsVisible()) { - if (wakeScreenTimeout()) { - // Switch between map and sidebar when using navigate on openpilot - bool sidebarVisible = geometry().x() > 0; - bool show_map = uiState()->scene.navigate_on_openpilot ? sidebarVisible : !sidebarVisible; - updateMapSize(scene); - map->setVisible(show_map && !map->isVisible()); - } - } -#endif - if (onroad_settings != nullptr && !isMapVisible()) { - if (wakeScreenTimeout()) { - onroad_settings->setVisible(false); - } - } - // propagation event to parent(HomeWindow) - QWidget::mousePressEvent(e); -} - -void OnroadWindow::offroadTransition(bool offroad) { - if (!offroad) { -#ifdef ENABLE_MAPS - if (map == nullptr && (uiState()->hasPrime() || !MAPBOX_TOKEN.isEmpty())) { - auto m = new MapPanel(get_mapbox_settings()); - map = m; - - QObject::connect(m, &MapPanel::mapPanelRequested, this, &OnroadWindow::mapPanelRequested); - QObject::connect(m, &MapPanel::mapPanelRequested, this, &OnroadWindow::onroadSettingsPanelNotRequested); - QObject::connect(nvg->map_settings_btn, &MapSettingsButton::clicked, m, &MapPanel::toggleMapSettings); - nvg->map_settings_btn->setEnabled(true); - - m->setFixedWidth(uiState()->scene.mapbox_fullscreen ? topWidget(this)->width() : - topWidget(this)->width() / 2 - UI_BORDER_SIZE); - split->insertWidget(0, m); - - // hidden by default, made visible when navRoute is published - m->setVisible(false); - } -#endif - if (onroad_settings == nullptr) { - auto os = new OnroadSettingsPanel(this); - onroad_settings = os; - - QObject::connect(os, &OnroadSettingsPanel::onroadSettingsPanelRequested, this, &OnroadWindow::onroadSettingsPanelRequested); - QObject::connect(os, &OnroadSettingsPanel::onroadSettingsPanelRequested, this, &OnroadWindow::mapPanelNotRequested); - QObject::connect(nvg->onroad_settings_btn, &OnroadSettingsButton::clicked, os, &OnroadSettingsPanel::toggleOnroadSettings); - nvg->onroad_settings_btn->setEnabled(true); - - os->setFixedWidth(topWidget(this)->width() / 2.67 - UI_BORDER_SIZE); - split->insertWidget(0, os); - - // hidden by default - os->setVisible(false); - } - } - - alerts->updateAlert({}); -} - -void OnroadWindow::updateMapSize(const UIScene &scene) { - map->setFixedWidth(scene.mapbox_fullscreen ? topWidget(this)->width() : - topWidget(this)->width() / 2 - UI_BORDER_SIZE); - split->insertWidget(0, map); -} - -void OnroadWindow::primeChanged(bool prime) { -#ifdef ENABLE_MAPS - if (map && (!prime && MAPBOX_TOKEN.isEmpty())) { - nvg->map_settings_btn->setEnabled(false); - nvg->map_settings_btn->setVisible(false); - map->deleteLater(); - map = nullptr; - } -#endif -} - -void OnroadWindow::paintEvent(QPaintEvent *event) { - QPainter p(this); - p.fillRect(rect(), QColor(bg.red(), bg.green(), bg.blue(), 255)); -} - -// ***** onroad widgets ***** - -// OnroadAlerts -void OnroadAlerts::updateAlert(const Alert &a) { - if (!alert.equal(a)) { - alert = a; - update(); - } -} - -void OnroadAlerts::paintEvent(QPaintEvent *event) { - if (alert.size == cereal::ControlsState::AlertSize::NONE) { - return; - } - static std::map alert_heights = { - {cereal::ControlsState::AlertSize::SMALL, 271}, - {cereal::ControlsState::AlertSize::MID, 420}, - {cereal::ControlsState::AlertSize::FULL, height()}, - }; - int h = alert_heights[alert.size]; - - int margin = 40; - int radius = 30; - if (alert.size == cereal::ControlsState::AlertSize::FULL) { - margin = 0; - radius = 0; - } - QRect r = QRect(0 + margin, height() - h + margin, width() - margin*2, h - margin*2); - - QPainter p(this); - - // draw background + gradient - p.setPen(Qt::NoPen); - p.setCompositionMode(QPainter::CompositionMode_SourceOver); - p.setBrush(QBrush(alert_colors[alert.status])); - p.drawRoundedRect(r, radius, radius); - - QLinearGradient g(0, r.y(), 0, r.bottom()); - g.setColorAt(0, QColor::fromRgbF(0, 0, 0, 0.05)); - g.setColorAt(1, QColor::fromRgbF(0, 0, 0, 0.35)); - - p.setCompositionMode(QPainter::CompositionMode_DestinationOver); - p.setBrush(QBrush(g)); - p.drawRoundedRect(r, radius, radius); - p.setCompositionMode(QPainter::CompositionMode_SourceOver); - - // text - const QPoint c = r.center(); - p.setPen(QColor(0xff, 0xff, 0xff)); - p.setRenderHint(QPainter::TextAntialiasing); - if (alert.size == cereal::ControlsState::AlertSize::SMALL) { - p.setFont(InterFont(74, QFont::DemiBold)); - p.drawText(r, Qt::AlignCenter, alert.text1); - } else if (alert.size == cereal::ControlsState::AlertSize::MID) { - p.setFont(InterFont(88, QFont::Bold)); - p.drawText(QRect(0, c.y() - 125, width(), 150), Qt::AlignHCenter | Qt::AlignTop, alert.text1); - p.setFont(InterFont(66)); - p.drawText(QRect(0, c.y() + 21, width(), 90), Qt::AlignHCenter, alert.text2); - } else if (alert.size == cereal::ControlsState::AlertSize::FULL) { - bool l = alert.text1.length() > 15; - p.setFont(InterFont(l ? 132 : 177, QFont::Bold)); - p.drawText(QRect(0, r.y() + (l ? 240 : 270), width(), 600), Qt::AlignHCenter | Qt::TextWordWrap, alert.text1); - p.setFont(InterFont(88)); - p.drawText(QRect(0, r.height() - (l ? 361 : 420), width(), 300), Qt::AlignHCenter | Qt::TextWordWrap, alert.text2); - } -} - -// ExperimentalButton -ExperimentalButton::ExperimentalButton(QWidget *parent) : experimental_mode(false), engageable(false), QPushButton(parent) { - setFixedSize(btn_size, btn_size); - - engage_img = loadPixmap("../assets/img_chffr_wheel.png", {img_size, img_size}); - experimental_img = loadPixmap("../assets/img_experimental.svg", {img_size, img_size}); - QObject::connect(this, &QPushButton::clicked, this, &ExperimentalButton::changeMode); -} - -void ExperimentalButton::changeMode() { - const auto cp = (*uiState()->sm)["carParams"].getCarParams(); - bool can_change = hasLongitudinalControl(cp) && params.getBool("ExperimentalModeConfirmed"); - if (can_change) { - params.putBool("ExperimentalMode", !experimental_mode); - } -} - -void ExperimentalButton::updateState(const UIState &s) { - const auto cs = (*s.sm)["controlsState"].getControlsState(); - const auto lp_sp = (*s.sm)["longitudinalPlanSP"].getLongitudinalPlanSP(); - bool eng = (cs.getEngageable() || cs.getEnabled()) && !(lp_sp.getVisionTurnControllerState() > cereal::LongitudinalPlanSP::VisionTurnControllerState::DISABLED); - if ((cs.getExperimentalMode() != experimental_mode) || (eng != engageable)) { - engageable = eng; - experimental_mode = cs.getExperimentalMode(); - update(); - } -} - -void ExperimentalButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - QPixmap img = experimental_mode ? experimental_img : engage_img; - drawIcon(p, QPoint(btn_size / 2, btn_size / 2), img, QColor(0, 0, 0, 166), (isDown() || !engageable) ? 0.6 : 1.0); -} - - -// MapSettingsButton -MapSettingsButton::MapSettingsButton(QWidget *parent) : QPushButton(parent) { - // btn_size: 192 * 80% ~= 152 - // img_size: (152 / 4) * 3 = 114 - setFixedSize(152, 152); - settings_img = loadPixmap("../assets/navigation/icon_directions_outlined.svg", {114, 114}); - - // hidden by default, made visible if map is created (has prime or mapbox token) - setVisible(false); - setEnabled(false); -} - -void MapSettingsButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - drawCustomButtonIcon(p, 152, 152, settings_img, QColor(0, 0, 0, 166), isDown() ? 0.6 : 1.0); -} - - -// OnroadSettingsButton -OnroadSettingsButton::OnroadSettingsButton(QWidget *parent) : QPushButton(parent) { - // btn_size: 192 * 80% ~= 152 - // img_size: (152 / 4) * 3 = 114 - setFixedSize(152, 152); - settings_img = loadPixmap("../assets/navigation/icon_settings.svg", {114, 114}); - - // hidden by default, made visible if Driving Personality / GAC, DLP, DEC, or SLC is enabled - setVisible(false); - setEnabled(false); -} - -void OnroadSettingsButton::paintEvent(QPaintEvent *event) { - QPainter p(this); - drawCustomButtonIcon(p, 152, 152, settings_img, QColor(0, 0, 0, 166), isDown() ? 0.6 : 1.0); -} - -void OnroadSettingsButton::updateState(const UIState &s) { - const auto cp = (*s.sm)["carParams"].getCarParams(); - auto dlp_enabled = true; - bool allow_btn = s.scene.onroad_settings_toggle && (dlp_enabled || hasLongitudinalControl(cp) || !cp.getPcmCruiseSpeed()); - - setVisible(allow_btn); - setEnabled(allow_btn); -} - // Window that shows camera view and variety of info drawn on top AnnotatedCameraWidget::AnnotatedCameraWidget(VisionStreamType type, QWidget* parent) : fps_filter(UI_FREQ, 3, 1. / UI_FREQ), CameraWidget("camerad", type, true, parent) { @@ -527,7 +197,7 @@ void AnnotatedCameraWidget::updateState(const UIState &s) { roll = sm["liveParameters"].getLiveParameters().getRoll(); memoryUsagePercent = sm["deviceState"].getDeviceState().getMemoryUsagePercent(); devUiInfo = s.scene.dev_ui_info; - gpsAccuracy = is_gps_location_external ? gpsLocation.getAccuracy() : 1.0; //External reports accuracy, internal does not. + gpsAccuracy = is_gps_location_external ? gpsLocation.getHorizontalAccuracy() : 1.0; //External reports accuracy, internal does not. altitude = gpsLocation.getAltitude(); vEgo = car_state.getVEgo(); aEgo = car_state.getAEgo(); @@ -1190,10 +860,12 @@ AnnotatedCameraWidget::UiElement AnnotatedCameraWidget::getSteeringAngleDesiredD color = QColor(255, 0, 0, 255); } else if (std::fabs(angleSteers) > 90) { color = QColor(255, 188, 0, 255); + } else { + color = QColor(0, 255, 0, 255); } } - return UiElement(value, "DESIR STEER", "", color); + return UiElement(value, "DESIRED STEER", "", color); } AnnotatedCameraWidget::UiElement AnnotatedCameraWidget::getMemoryUsagePercent() { @@ -1275,7 +947,7 @@ AnnotatedCameraWidget::UiElement AnnotatedCameraWidget::getBearingDeg() { dir_value = "OFF"; } - return UiElement("B.D.", QString("%1 | %2").arg(dir_value).arg(value), "", color); + return UiElement(QString("%1 | %2").arg(dir_value).arg(value), "B.D.", "", color); } AnnotatedCameraWidget::UiElement AnnotatedCameraWidget::getAltitude() { @@ -1888,7 +1560,7 @@ void AnnotatedCameraWidget::drawLead(QPainter &painter, const cereal::RadarState if (num == 0) { // Display metrics to the 0th lead car QStringList chevron_text[2]; if (chevron_data == 1 || chevron_data == 3) { - chevron_text[0].append(QString::number(radar_d_rel,'f', 1) + " " + "m"); + chevron_text[0].append(QString::number(radar_d_rel,'f', 0) + " " + "m"); } if (chevron_data == 2 || chevron_data == 3) { chevron_text[chevron_data - 2].append(QString::number((radar_v_rel + v_ego) * (isMetric ? MS_TO_KPH : MS_TO_MPH),'f', 0) + " " + (isMetric ? "km/h" : "mph")); diff --git a/selfdrive/ui/qt/onroad.h b/selfdrive/ui/qt/onroad/annotated_camera.h similarity index 72% rename from selfdrive/ui/qt/onroad.h rename to selfdrive/ui/qt/onroad/annotated_camera.h index fe74cf55a9..195056ecd4 100644 --- a/selfdrive/ui/qt/onroad.h +++ b/selfdrive/ui/qt/onroad/annotated_camera.h @@ -1,88 +1,19 @@ #pragma once +#include #include - -#include -#include -#include #include -#include "common/util.h" -#include "selfdrive/ui/ui.h" +#include "selfdrive/ui/qt/onroad/buttons.h" #include "selfdrive/ui/qt/widgets/cameraview.h" #ifdef ENABLE_DASHCAM #include "selfdrive/ui/qt/screenrecorder/screenrecorder.h" #endif - -const int btn_size = 192; -const int img_size = (btn_size / 4) * 3; const int subsign_img_size = 35; - const int blinker_size = 120; -// ***** onroad widgets ***** -class OnroadAlerts : public QWidget { - Q_OBJECT - -public: - OnroadAlerts(QWidget *parent = 0) : QWidget(parent) {} - void updateAlert(const Alert &a); - -protected: - void paintEvent(QPaintEvent*) override; - -private: - QColor bg; - Alert alert = {}; -}; - -class ExperimentalButton : public QPushButton { - Q_OBJECT - -public: - explicit ExperimentalButton(QWidget *parent = 0); - void updateState(const UIState &s); - -private: - void paintEvent(QPaintEvent *event) override; - void changeMode(); - - Params params; - QPixmap engage_img; - QPixmap experimental_img; - bool experimental_mode; - bool engageable; -}; - - -class MapSettingsButton : public QPushButton { - Q_OBJECT - -public: - explicit MapSettingsButton(QWidget *parent = 0); - -private: - void paintEvent(QPaintEvent *event) override; - - QPixmap settings_img; -}; - -class OnroadSettingsButton : public QPushButton { - Q_OBJECT - -public: - explicit OnroadSettingsButton(QWidget *parent = 0); - void updateState(const UIState &s); - -private: - void paintEvent(QPaintEvent *event) override; - - QPixmap settings_img; -}; - -// container window for the NVG UI class AnnotatedCameraWidget : public CameraWidget { Q_OBJECT @@ -91,7 +22,6 @@ public: void updateState(const UIState &s); MapSettingsButton *map_settings_btn; - OnroadSettingsButton *onroad_settings_btn; private: @@ -153,15 +83,10 @@ private: void speedLimitWarning(QPainter &p, QRect sign_rect, const int sign_margin); void mousePressEvent(QMouseEvent* e) override; void drawRoadNameText(QPainter &p, int x, int y, const QString &text, QColor color); - Params params; QVBoxLayout *main_layout; - QHBoxLayout *buttons_layout; ExperimentalButton *experimental_btn; QPixmap dm_img; - QPixmap map_img; - QPixmap left_img; - QPixmap right_img; float speed; QString speedUnit; float setSpeed; @@ -175,15 +100,21 @@ private: bool has_us_speed_limit = false; bool has_eu_speed_limit = false; bool v_ego_cluster_seen = false; - bool left_blindspot = false; - bool right_blindspot = false; int status = STATUS_DISENGAGED; std::unique_ptr pm; - std::unique_ptr e2e_state; int skip_frame_count = 0; bool wide_cam_requested = false; + Params params; + QHBoxLayout *buttons_layout; + QPixmap map_img; + QPixmap left_img; + QPixmap right_img; + bool left_blindspot = false; + bool right_blindspot = false; + std::unique_ptr e2e_state; + bool steerOverride = false; bool gasOverride = false; bool latActive = false; @@ -287,14 +218,15 @@ protected: void drawLead(QPainter &painter, const cereal::RadarState::LeadData::Reader &lead_data, const QPointF &vd, int num, float radar_d_rel, float v_ego, float radar_v_rel, int chevron_data, bool isMetric); void drawHud(QPainter &p); void drawDriverState(QPainter &painter, const UIState *s); - void paintEvent(QPaintEvent *event) override; inline QColor redColor(int alpha = 255) { return QColor(201, 34, 49, alpha); } inline QColor whiteColor(int alpha = 255) { return QColor(255, 255, 255, alpha); } inline QColor blackColor(int alpha = 255) { return QColor(0, 0, 0, alpha); } + void paintEvent(QPaintEvent *event) override; + void rocketFuel(QPainter &p); + double prev_draw_t = 0; FirstOrderFilter fps_filter; - void rocketFuel(QPainter &p); // neokii #ifdef ENABLE_DASHCAM @@ -302,52 +234,7 @@ private: ScreenRecoder* recorder; std::shared_ptr record_timer; -private slots: - void offroadTransition(bool offroad); + private slots: + void offroadTransition(bool offroad); #endif }; - -// container for all onroad widgets -class OnroadWindow : public QWidget { - Q_OBJECT - -public: - OnroadWindow(QWidget* parent = 0); - bool isMapVisible() const { return map && map->isVisible(); } - void showMapPanel(bool show) { if (map) map->setVisible(show); } - - bool isOnroadSettingsVisible() const { return onroad_settings && onroad_settings->isVisible(); } - bool isMapAvailable() const { return map; } - void mapPanelNotRequested() { if (map) map->setVisible(false); } - void onroadSettingsPanelNotRequested() { if (onroad_settings) onroad_settings->setVisible(false); } - - bool wakeScreenTimeout() { - if ((uiState()->scene.sleep_btn != 0 && uiState()->scene.sleep_btn_opacity != 0) || - (uiState()->scene.sleep_time != 0 && uiState()->scene.onroadScreenOff != -2)) { - return true; - } - return false; - } - -signals: - void mapPanelRequested(); - void onroadSettingsPanelRequested(); - -private: - void paintEvent(QPaintEvent *event); - void mousePressEvent(QMouseEvent* e) override; - OnroadAlerts *alerts; - AnnotatedCameraWidget *nvg; - QColor bg = bg_colors[STATUS_DISENGAGED]; - QWidget *map = nullptr; - QHBoxLayout* split; - - QWidget *onroad_settings = nullptr; - Params params; - -private slots: - void offroadTransition(bool offroad); - void primeChanged(bool prime); - void updateState(const UIState &s); - void updateMapSize(const UIScene &scene); -}; diff --git a/selfdrive/ui/qt/onroad/buttons.cc b/selfdrive/ui/qt/onroad/buttons.cc new file mode 100644 index 0000000000..1670552c4c --- /dev/null +++ b/selfdrive/ui/qt/onroad/buttons.cc @@ -0,0 +1,107 @@ +#include "selfdrive/ui/qt/onroad/buttons.h" + +#include + +#include "selfdrive/ui/qt/util.h" + +void drawIcon(QPainter &p, const QPoint ¢er, const QPixmap &img, const QBrush &bg, float opacity) { + p.setRenderHint(QPainter::Antialiasing); + p.setOpacity(1.0); // bg dictates opacity of ellipse + p.setPen(Qt::NoPen); + p.setBrush(bg); + p.drawEllipse(center, btn_size / 2, btn_size / 2); + p.setOpacity(opacity); + p.drawPixmap(center - QPoint(img.width() / 2, img.height() / 2), img); + p.setOpacity(1.0); +} + +static void drawCustomButtonIcon(QPainter &p, const int btn_size_x, const int btn_size_y, const QPixmap &img, const QBrush &bg, float opacity) { + QPoint center(btn_size_x / 2, btn_size_y / 2); + p.setRenderHint(QPainter::Antialiasing); + p.setOpacity(1.0); // bg dictates opacity of ellipse + p.setPen(Qt::NoPen); + p.setBrush(bg); + p.drawEllipse(center, btn_size_x / 2, btn_size_y / 2); + p.setOpacity(opacity); + p.drawPixmap(center - QPoint(img.width() / 2, img.height() / 2), img); + p.setOpacity(1.0); +} + +// ExperimentalButton +ExperimentalButton::ExperimentalButton(QWidget *parent) : experimental_mode(false), engageable(false), QPushButton(parent) { + setFixedSize(btn_size, btn_size); + + engage_img = loadPixmap("../assets/img_chffr_wheel.png", {img_size, img_size}); + experimental_img = loadPixmap("../assets/img_experimental.svg", {img_size, img_size}); + QObject::connect(this, &QPushButton::clicked, this, &ExperimentalButton::changeMode); +} + +void ExperimentalButton::changeMode() { + const auto cp = (*uiState()->sm)["carParams"].getCarParams(); + bool can_change = hasLongitudinalControl(cp) && params.getBool("ExperimentalModeConfirmed"); + if (can_change) { + params.putBool("ExperimentalMode", !experimental_mode); + } +} + +void ExperimentalButton::updateState(const UIState &s) { + const auto cs = (*s.sm)["controlsState"].getControlsState(); + const auto lp_sp = (*s.sm)["longitudinalPlanSP"].getLongitudinalPlanSP(); + bool eng = (cs.getEngageable() || cs.getEnabled()) && !(lp_sp.getVisionTurnControllerState() > cereal::LongitudinalPlanSP::VisionTurnControllerState::DISABLED); + if ((cs.getExperimentalMode() != experimental_mode) || (eng != engageable)) { + engageable = eng; + experimental_mode = cs.getExperimentalMode(); + update(); + } +} + +void ExperimentalButton::paintEvent(QPaintEvent *event) { + QPainter p(this); + QPixmap img = experimental_mode ? experimental_img : engage_img; + drawIcon(p, QPoint(btn_size / 2, btn_size / 2), img, QColor(0, 0, 0, 166), (isDown() || !engageable) ? 0.6 : 1.0); +} + + +// MapSettingsButton +MapSettingsButton::MapSettingsButton(QWidget *parent) : QPushButton(parent) { + // btn_size: 192 * 80% ~= 152 + // img_size: (152 / 4) * 3 = 114 + setFixedSize(152, 152); + settings_img = loadPixmap("../assets/navigation/icon_directions_outlined.svg", {114, 114}); + + // hidden by default, made visible if map is created (has prime or mapbox token) + setVisible(false); + setEnabled(false); +} + +void MapSettingsButton::paintEvent(QPaintEvent *event) { + QPainter p(this); + drawCustomButtonIcon(p, 152, 152, settings_img, QColor(0, 0, 0, 166), isDown() ? 0.6 : 1.0); +} + + +// OnroadSettingsButton +OnroadSettingsButton::OnroadSettingsButton(QWidget *parent) : QPushButton(parent) { + // btn_size: 192 * 80% ~= 152 + // img_size: (152 / 4) * 3 = 114 + setFixedSize(152, 152); + settings_img = loadPixmap("../assets/navigation/icon_settings.svg", {114, 114}); + + // hidden by default, made visible if Driving Personality / GAC, DLP, DEC, or SLC is enabled + setVisible(false); + setEnabled(false); +} + +void OnroadSettingsButton::paintEvent(QPaintEvent *event) { + QPainter p(this); + drawCustomButtonIcon(p, 152, 152, settings_img, QColor(0, 0, 0, 166), isDown() ? 0.6 : 1.0); +} + +void OnroadSettingsButton::updateState(const UIState &s) { + const auto cp = (*s.sm)["carParams"].getCarParams(); + auto dlp_enabled = true; + bool allow_btn = s.scene.onroad_settings_toggle && (dlp_enabled || hasLongitudinalControl(cp) || !cp.getPcmCruiseSpeed()); + + setVisible(allow_btn); + setEnabled(allow_btn); +} diff --git a/selfdrive/ui/qt/onroad/buttons.h b/selfdrive/ui/qt/onroad/buttons.h new file mode 100644 index 0000000000..feee1ba639 --- /dev/null +++ b/selfdrive/ui/qt/onroad/buttons.h @@ -0,0 +1,55 @@ +#pragma once + +#include + +#include "selfdrive/ui/ui.h" + +const int btn_size = 192; +const int img_size = (btn_size / 4) * 3; + +class ExperimentalButton : public QPushButton { + Q_OBJECT + +public: + explicit ExperimentalButton(QWidget *parent = 0); + void updateState(const UIState &s); + +private: + void paintEvent(QPaintEvent *event) override; + void changeMode(); + + Params params; + QPixmap engage_img; + QPixmap experimental_img; + bool experimental_mode; + bool engageable; +}; + + +class MapSettingsButton : public QPushButton { + Q_OBJECT + +public: + explicit MapSettingsButton(QWidget *parent = 0); + +private: + void paintEvent(QPaintEvent *event) override; + + QPixmap settings_img; +}; + + +class OnroadSettingsButton : public QPushButton { + Q_OBJECT + +public: + explicit OnroadSettingsButton(QWidget *parent = 0); + void updateState(const UIState &s); + +private: + void paintEvent(QPaintEvent *event) override; + + QPixmap settings_img; +}; + +void drawIcon(QPainter &p, const QPoint ¢er, const QPixmap &img, const QBrush &bg, float opacity); diff --git a/selfdrive/ui/qt/onroad/onroad_home.cc b/selfdrive/ui/qt/onroad/onroad_home.cc new file mode 100644 index 0000000000..d7dead3385 --- /dev/null +++ b/selfdrive/ui/qt/onroad/onroad_home.cc @@ -0,0 +1,172 @@ +#include "selfdrive/ui/qt/onroad/onroad_home.h" + +#include +#include + +#ifdef ENABLE_MAPS +#include "selfdrive/ui/qt/maps/map_helpers.h" +#include "selfdrive/ui/qt/maps/map_panel.h" +#endif +#include "selfdrive/ui/qt/onroad_settings_panel.h" + +#include "selfdrive/ui/qt/util.h" + +OnroadWindow::OnroadWindow(QWidget *parent) : QWidget(parent) { + QVBoxLayout *main_layout = new QVBoxLayout(this); + main_layout->setMargin(UI_BORDER_SIZE); + QStackedLayout *stacked_layout = new QStackedLayout; + stacked_layout->setStackingMode(QStackedLayout::StackAll); + main_layout->addLayout(stacked_layout); + + nvg = new AnnotatedCameraWidget(VISION_STREAM_ROAD, this); + + QWidget * split_wrapper = new QWidget; + split = new QHBoxLayout(split_wrapper); + split->setContentsMargins(0, 0, 0, 0); + split->setSpacing(0); + split->addWidget(nvg); + + if (getenv("DUAL_CAMERA_VIEW")) { + CameraWidget *arCam = new CameraWidget("camerad", VISION_STREAM_ROAD, true, this); + split->insertWidget(0, arCam); + } + + if (getenv("MAP_RENDER_VIEW")) { + CameraWidget *map_render = new CameraWidget("navd", VISION_STREAM_MAP, false, this); + split->insertWidget(0, map_render); + } + + stacked_layout->addWidget(split_wrapper); + + alerts = new OnroadAlerts(this); + alerts->setAttribute(Qt::WA_TransparentForMouseEvents, true); + stacked_layout->addWidget(alerts); + + // setup stacking order + alerts->raise(); + + setAttribute(Qt::WA_OpaquePaintEvent); + QObject::connect(uiState(), &UIState::uiUpdate, this, &OnroadWindow::updateState); + QObject::connect(uiState(), &UIState::offroadTransition, this, &OnroadWindow::offroadTransition); + QObject::connect(uiState(), &UIState::primeChanged, this, &OnroadWindow::primeChanged); +} + +void OnroadWindow::updateState(const UIState &s) { + if (!s.scene.started) { + return; + } + + if (s.scene.map_on_left || s.scene.mapbox_fullscreen) { + split->setDirection(QBoxLayout::LeftToRight); + } else { + split->setDirection(QBoxLayout::RightToLeft); + } + + alerts->updateState(s); + nvg->updateState(s); + + QColor bgColor = bg_colors[s.status]; + if (bg != bgColor) { + // repaint border + bg = bgColor; + update(); + } +} + + +void OnroadWindow::mousePressEvent(QMouseEvent* e) { +#ifdef ENABLE_MAPS + UIState *s = uiState(); + UIScene &scene = s->scene; + if (map != nullptr && !isOnroadSettingsVisible()) { + if (wakeScreenTimeout()) { + // Switch between map and sidebar when using navigate on openpilot + bool sidebarVisible = geometry().x() > 0; + bool show_map = uiState()->scene.navigate_on_openpilot_deprecated ? sidebarVisible : !sidebarVisible; + updateMapSize(scene); + map->setVisible(show_map && !map->isVisible()); + } + } +#endif + if (onroad_settings != nullptr && !isMapVisible()) { + if (wakeScreenTimeout()) { + onroad_settings->setVisible(false); + } + } + // propagation event to parent(HomeWindow) + QWidget::mousePressEvent(e); +} + +void OnroadWindow::createMapWidget() { +#ifdef ENABLE_MAPS + auto m = new MapPanel(get_mapbox_settings()); + map = m; + + QObject::connect(m, &MapPanel::mapPanelRequested, this, &OnroadWindow::mapPanelRequested); + QObject::connect(m, &MapPanel::mapPanelRequested, this, &OnroadWindow::onroadSettingsPanelNotRequested); + QObject::connect(nvg->map_settings_btn, &MapSettingsButton::clicked, m, &MapPanel::toggleMapSettings); + nvg->map_settings_btn->setEnabled(true); + + m->setFixedWidth(uiState()->scene.mapbox_fullscreen ? topWidget(this)->width() : + topWidget(this)->width() / 2 - UI_BORDER_SIZE); + split->insertWidget(0, m); + + // hidden by default, made visible when navRoute is published + m->setVisible(false); +#endif +} + +void OnroadWindow::createOnroadSettingsWidget() { + auto os = new OnroadSettingsPanel(this); + onroad_settings = os; + + QObject::connect(os, &OnroadSettingsPanel::onroadSettingsPanelRequested, this, &OnroadWindow::onroadSettingsPanelRequested); + QObject::connect(os, &OnroadSettingsPanel::onroadSettingsPanelRequested, this, &OnroadWindow::mapPanelNotRequested); + QObject::connect(nvg->onroad_settings_btn, &OnroadSettingsButton::clicked, os, &OnroadSettingsPanel::toggleOnroadSettings); + nvg->onroad_settings_btn->setEnabled(true); + + os->setFixedWidth(topWidget(this)->width() / 2.67 - UI_BORDER_SIZE); + split->insertWidget(0, os); + + // hidden by default + os->setVisible(false); +} + +void OnroadWindow::offroadTransition(bool offroad) { + if (!offroad) { +#ifdef ENABLE_MAPS + if (map == nullptr && (uiState()->hasPrime() || !MAPBOX_TOKEN.isEmpty())) { + createMapWidget(); + } +#endif + if (onroad_settings == nullptr) { + createOnroadSettingsWidget(); + } + } + + alerts->clear(); +} + +void OnroadWindow::updateMapSize(const UIScene &scene) { + map->setFixedWidth(scene.mapbox_fullscreen ? topWidget(this)->width() : + topWidget(this)->width() / 2 - UI_BORDER_SIZE); + split->insertWidget(0, map); +} + +void OnroadWindow::primeChanged(bool prime) { +#ifdef ENABLE_MAPS + if (map && (!prime && MAPBOX_TOKEN.isEmpty())) { + nvg->map_settings_btn->setEnabled(false); + nvg->map_settings_btn->setVisible(false); + map->deleteLater(); + map = nullptr; + } else if (!map && (prime || !MAPBOX_TOKEN.isEmpty())) { + createMapWidget(); + } +#endif +} + +void OnroadWindow::paintEvent(QPaintEvent *event) { + QPainter p(this); + p.fillRect(rect(), QColor(bg.red(), bg.green(), bg.blue(), 255)); +} diff --git a/selfdrive/ui/qt/onroad/onroad_home.h b/selfdrive/ui/qt/onroad/onroad_home.h new file mode 100644 index 0000000000..1beadcd13b --- /dev/null +++ b/selfdrive/ui/qt/onroad/onroad_home.h @@ -0,0 +1,51 @@ +#pragma once + +#include "common/params.h" +#include "selfdrive/ui/qt/onroad/alerts.h" +#include "selfdrive/ui/qt/onroad/annotated_camera.h" + +class OnroadWindow : public QWidget { + Q_OBJECT + +public: + OnroadWindow(QWidget* parent = 0); + bool isMapVisible() const { return map && map->isVisible(); } + void showMapPanel(bool show) { if (map) map->setVisible(show); } + + bool isOnroadSettingsVisible() const { return onroad_settings && onroad_settings->isVisible(); } + bool isMapAvailable() const { return map; } + void mapPanelNotRequested() { if (map) map->setVisible(false); } + void onroadSettingsPanelNotRequested() { if (onroad_settings) onroad_settings->setVisible(false); } + + bool wakeScreenTimeout() { + if ((uiState()->scene.sleep_btn != 0 && uiState()->scene.sleep_btn_opacity != 0) || + (uiState()->scene.sleep_time != 0 && uiState()->scene.onroadScreenOff != -2)) { + return true; + } + return false; + } + +signals: + void mapPanelRequested(); + void onroadSettingsPanelRequested(); + +private: + void createMapWidget(); + void createOnroadSettingsWidget(); + void paintEvent(QPaintEvent *event); + void mousePressEvent(QMouseEvent* e) override; + OnroadAlerts *alerts; + AnnotatedCameraWidget *nvg; + QColor bg = bg_colors[STATUS_DISENGAGED]; + QWidget *map = nullptr; + QWidget *onroad_settings = nullptr; + QHBoxLayout* split; + + Params params; + +private slots: + void offroadTransition(bool offroad); + void primeChanged(bool prime); + void updateState(const UIState &s); + void updateMapSize(const UIScene &scene); +}; diff --git a/selfdrive/ui/qt/screenrecorder/screenrecorder.cc b/selfdrive/ui/qt/screenrecorder/screenrecorder.cc index 8f686977fe..7ffc97f660 100644 --- a/selfdrive/ui/qt/screenrecorder/screenrecorder.cc +++ b/selfdrive/ui/qt/screenrecorder/screenrecorder.cc @@ -9,7 +9,7 @@ #include "libyuv.h" #include "common/clutil.h" -#include "selfdrive/ui/qt/onroad.h" +#include "selfdrive/ui/qt/onroad/annotated_camera.h" #include "selfdrive/ui/qt/screenrecorder/screenrecorder.h" #include "selfdrive/ui/qt/util.h" #include "selfdrive/ui/ui.h" diff --git a/selfdrive/ui/qt/setup/setup.cc b/selfdrive/ui/qt/setup/setup.cc index 4f2e4f48cb..aff9b015b3 100644 --- a/selfdrive/ui/qt/setup/setup.cc +++ b/selfdrive/ui/qt/setup/setup.cc @@ -20,7 +20,7 @@ #include "selfdrive/ui/qt/widgets/input.h" const std::string USER_AGENT = "AGNOSSetup-"; -const QString TEST_URL = "https://openpilot.comma.ai"; +const QString OPENPILOT_URL = "https://openpilot.comma.ai"; bool is_elf(char *fname) { FILE *fp = fopen(fname, "rb"); @@ -51,7 +51,7 @@ void Setup::download(QString url) { list = curl_slist_append(list, ("X-openpilot-serial: " + Hardware::get_serial()).c_str()); char tmpfile[] = "/tmp/installer_XXXXXX"; - FILE *fp = fdopen(mkstemp(tmpfile), "w"); + FILE *fp = fdopen(mkstemp(tmpfile), "wb"); curl_easy_setopt(curl, CURLOPT_URL, url.toStdString().c_str()); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, NULL); @@ -201,20 +201,8 @@ QWidget * Setup::network_setup() { QPushButton *cont = new QPushButton(); cont->setObjectName("navBtn"); cont->setProperty("primary", true); - QObject::connect(cont, &QPushButton::clicked, [=]() { - auto w = currentWidget(); - QTimer::singleShot(0, [=]() { - setCurrentWidget(downloading_widget); - }); - QString url = InputDialog::getText(tr("Enter URL"), this, tr("for Custom Software")); - if (!url.isEmpty()) { - QTimer::singleShot(1000, this, [=]() { - download(url); - }); - } else { - setCurrentWidget(w); - } - }); + cont->setEnabled(false); + QObject::connect(cont, &QPushButton::clicked, this, &Setup::nextPage); blayout->addWidget(cont); // setup timer for testing internet connection @@ -229,11 +217,11 @@ QWidget * Setup::network_setup() { } repaint(); }); - request->sendRequest(TEST_URL); + request->sendRequest(OPENPILOT_URL); QTimer *timer = new QTimer(this); QObject::connect(timer, &QTimer::timeout, [=]() { if (!request->active() && cont->isVisible()) { - request->sendRequest(TEST_URL); + request->sendRequest(OPENPILOT_URL); } }); timer->start(1000); @@ -241,6 +229,106 @@ QWidget * Setup::network_setup() { return widget; } +QWidget * radio_button(QString title, QButtonGroup *group) { + QPushButton *btn = new QPushButton(title); + btn->setCheckable(true); + group->addButton(btn); + btn->setStyleSheet(R"( + QPushButton { + height: 230; + padding-left: 100px; + padding-right: 100px; + text-align: left; + font-size: 80px; + font-weight: 400; + border-radius: 10px; + background-color: #4F4F4F; + } + QPushButton:checked { + background-color: #465BEA; + } + )"); + + // checkmark icon + QPixmap pix(":/img_circled_check.svg"); + btn->setIcon(pix); + btn->setIconSize(QSize(0, 0)); + btn->setLayoutDirection(Qt::RightToLeft); + QObject::connect(btn, &QPushButton::toggled, [=](bool checked) { + btn->setIconSize(checked ? QSize(104, 104) : QSize(0, 0)); + }); + return btn; +} + +QWidget * Setup::software_selection() { + QWidget *widget = new QWidget(); + QVBoxLayout *main_layout = new QVBoxLayout(widget); + main_layout->setContentsMargins(55, 50, 55, 50); + main_layout->setSpacing(0); + + // title + QLabel *title = new QLabel(tr("Choose Software to Install")); + title->setStyleSheet("font-size: 90px; font-weight: 500;"); + main_layout->addWidget(title, 0, Qt::AlignLeft | Qt::AlignTop); + + main_layout->addSpacing(50); + + // openpilot + custom radio buttons + QButtonGroup *group = new QButtonGroup(widget); + group->setExclusive(true); + + QWidget *openpilot = radio_button(tr("openpilot"), group); + main_layout->addWidget(openpilot); + + main_layout->addSpacing(30); + + QWidget *custom = radio_button(tr("Custom Software"), group); + main_layout->addWidget(custom); + + main_layout->addStretch(); + + // back + continue buttons + QHBoxLayout *blayout = new QHBoxLayout; + main_layout->addLayout(blayout); + blayout->setSpacing(50); + + QPushButton *back = new QPushButton(tr("Back")); + back->setObjectName("navBtn"); + QObject::connect(back, &QPushButton::clicked, this, &Setup::prevPage); + blayout->addWidget(back); + + QPushButton *cont = new QPushButton(tr("Continue")); + cont->setObjectName("navBtn"); + cont->setEnabled(false); + cont->setProperty("primary", true); + blayout->addWidget(cont); + + QObject::connect(cont, &QPushButton::clicked, [=]() { + auto w = currentWidget(); + QTimer::singleShot(0, [=]() { + setCurrentWidget(downloading_widget); + }); + QString url = OPENPILOT_URL; + if (group->checkedButton() != openpilot) { + url = InputDialog::getText(tr("Enter URL"), this, tr("for Custom Software")); + } + if (!url.isEmpty()) { + QTimer::singleShot(1000, this, [=]() { + download(url); + }); + } else { + setCurrentWidget(w); + } + }); + + connect(group, QOverload::of(&QButtonGroup::buttonClicked), [=](QAbstractButton *btn) { + btn->setChecked(true); + cont->setEnabled(true); + }); + + return widget; +} + QWidget * Setup::downloading() { QWidget *widget = new QWidget(); QVBoxLayout *main_layout = new QVBoxLayout(widget); @@ -326,6 +414,7 @@ Setup::Setup(QWidget *parent) : QStackedWidget(parent) { addWidget(getting_started()); addWidget(network_setup()); + addWidget(software_selection()); downloading_widget = downloading(); addWidget(downloading_widget); diff --git a/selfdrive/ui/qt/setup/setup.h b/selfdrive/ui/qt/setup/setup.h index 8c33acc380..ee5cc85483 100644 --- a/selfdrive/ui/qt/setup/setup.h +++ b/selfdrive/ui/qt/setup/setup.h @@ -17,6 +17,7 @@ private: QWidget *low_voltage(); QWidget *getting_started(); QWidget *network_setup(); + QWidget *software_selection(); QWidget *downloading(); QWidget *download_failed(QLabel *url, QLabel *body); diff --git a/selfdrive/ui/qt/sidebar.cc b/selfdrive/ui/qt/sidebar.cc index 425f8fb92e..df9ebc45c0 100644 --- a/selfdrive/ui/qt/sidebar.cc +++ b/selfdrive/ui/qt/sidebar.cc @@ -58,7 +58,7 @@ void Sidebar::mouseReleaseEvent(QMouseEvent *event) { flag_pressed = settings_pressed = false; update(); } - if (home_btn.contains(event->pos())) { + if (onroad && home_btn.contains(event->pos())) { MessageBuilder msg; msg.initEvent().initUserFlag(); pm->send("userFlag", msg); diff --git a/selfdrive/ui/qt/util.cc b/selfdrive/ui/qt/util.cc index 3e1c26c65f..173d9ba970 100644 --- a/selfdrive/ui/qt/util.cc +++ b/selfdrive/ui/qt/util.cc @@ -84,7 +84,7 @@ QString timeAgo(const QDateTime &date) { QString s; if (diff < 60) { - s = "now"; + s = QObject::tr("now"); } else if (diff < 60 * 60) { int minutes = diff / 60; s = QObject::tr("%n minute(s) ago", "", minutes); @@ -128,20 +128,21 @@ void initApp(int argc, char *argv[], bool disable_hidpi) { std::signal(SIGINT, sigTermHandler); std::signal(SIGTERM, sigTermHandler); - if (disable_hidpi) { + QString app_dir; #ifdef __APPLE__ - // Get the devicePixelRatio, and scale accordingly to maintain 1:1 rendering - QApplication tmp(argc, argv); - qputenv("QT_SCALE_FACTOR", QString::number(1.0 / tmp.devicePixelRatio() ).toLocal8Bit()); -#endif + // Get the devicePixelRatio, and scale accordingly to maintain 1:1 rendering + QApplication tmp(argc, argv); + app_dir = QCoreApplication::applicationDirPath(); + if (disable_hidpi) { + qputenv("QT_SCALE_FACTOR", QString::number(1.0 / tmp.devicePixelRatio()).toLocal8Bit()); } +#else + app_dir = QFileInfo(util::readlink("/proc/self/exe").c_str()).path(); +#endif qputenv("QT_DBL_CLICK_DIST", QByteArray::number(150)); - // ensure the current dir matches the exectuable's directory - QApplication tmp(argc, argv); - QString appDir = QCoreApplication::applicationDirPath(); - QDir::setCurrent(appDir); + QDir::setCurrent(app_dir); setQtSurfaceFormat(); } diff --git a/selfdrive/ui/qt/widgets/cameraview.cc b/selfdrive/ui/qt/widgets/cameraview.cc index 8a42be1e2b..07f18afe84 100644 --- a/selfdrive/ui/qt/widgets/cameraview.cc +++ b/selfdrive/ui/qt/widgets/cameraview.cc @@ -41,6 +41,8 @@ const char frame_fragment_shader[] = "out vec4 colorOut;\n" "void main() {\n" " colorOut = texture(uTexture, vTexCoord);\n" + // gamma to improve worst case visibility when dark + " colorOut.rgb = pow(colorOut.rgb, vec3(1.0/1.28));\n" "}\n"; #else #ifdef __APPLE__ @@ -97,7 +99,7 @@ mat4 get_fit_view_transform(float widget_aspect_ratio, float frame_aspect_ratio) } // namespace CameraWidget::CameraWidget(std::string stream_name, VisionStreamType type, bool zoom, QWidget* parent) : - stream_name(stream_name), requested_stream_type(type), zoomed_view(zoom), QOpenGLWidget(parent) { + stream_name(stream_name), active_stream_type(type), requested_stream_type(type), zoomed_view(zoom), QOpenGLWidget(parent) { setAttribute(Qt::WA_OpaquePaintEvent); qRegisterMetaType>("availableStreams"); QObject::connect(this, &CameraWidget::vipcThreadConnected, this, &CameraWidget::vipcConnected, Qt::BlockingQueuedConnection); diff --git a/selfdrive/ui/qt/widgets/controls.h b/selfdrive/ui/qt/widgets/controls.h index 2eeeb93093..860cb7ad2b 100644 --- a/selfdrive/ui/qt/widgets/controls.h +++ b/selfdrive/ui/qt/widgets/controls.h @@ -285,11 +285,9 @@ public: hlayout->setAlignment(Qt::AlignLeft); - QObject::connect(button_group, QOverload::of(&QButtonGroup::buttonToggled), [=](int id, bool checked) { - if (checked) { - params.put(key, std::to_string(id)); - emit buttonToggled(id); - } + QObject::connect(button_group, QOverload::of(&QButtonGroup::buttonClicked), [=](int id) { + params.put(key, std::to_string(id)); + emit buttonToggled(id); }); } @@ -302,6 +300,19 @@ public: update(); } + void setCheckedButton(int id) { + button_group->button(id)->setChecked(true); + } + + void refresh() { + int value = atoi(params.get(key).c_str()); + button_group->button(value)->setChecked(true); + } + + void showEvent(QShowEvent *event) override { + refresh(); + } + void setButton(QString param) { key = param.toStdString(); int value = atoi(params.get(key).c_str()); diff --git a/selfdrive/ui/qt/widgets/prime.cc b/selfdrive/ui/qt/widgets/prime.cc index 324d6cf6ae..2621612f67 100644 --- a/selfdrive/ui/qt/widgets/prime.cc +++ b/selfdrive/ui/qt/widgets/prime.cc @@ -235,7 +235,7 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) { mainLayout->addWidget(content); - primeUser->setVisible(uiState()->primeType()); + primeUser->setVisible(uiState()->hasPrime()); mainLayout->setCurrentIndex(1); setStyleSheet(R"( @@ -269,15 +269,16 @@ void SetupWidget::replyFinished(const QString &response, bool success) { } QJsonObject json = doc.object(); + bool is_paired = json["is_paired"].toBool(); PrimeType prime_type = static_cast(json["prime_type"].toInt()); - uiState()->setPrimeType(prime_type); + uiState()->setPrimeType(is_paired ? prime_type : PrimeType::UNPAIRED); - if (!json["is_paired"].toBool()) { + if (!is_paired) { mainLayout->setCurrentIndex(0); } else { popup->reject(); - primeUser->setVisible(prime_type); + primeUser->setVisible(uiState()->hasPrime()); mainLayout->setCurrentIndex(1); } } diff --git a/selfdrive/ui/qt/window.cc b/selfdrive/ui/qt/window.cc index 74fd05ed7b..6b6f939af4 100644 --- a/selfdrive/ui/qt/window.cc +++ b/selfdrive/ui/qt/window.cc @@ -76,7 +76,7 @@ void MainWindow::closeSettings() { if (uiState()->scene.started) { homeWindow->showSidebar(false); // Map is always shown when using navigate on openpilot - if (uiState()->scene.navigate_on_openpilot) { + if (uiState()->scene.navigate_on_openpilot_deprecated) { homeWindow->showMapPanel(true); } } diff --git a/selfdrive/ui/tests/body.py b/selfdrive/ui/tests/body.py index c34e717eaf..7e24c2beb7 100755 --- a/selfdrive/ui/tests/body.py +++ b/selfdrive/ui/tests/body.py @@ -8,7 +8,7 @@ if __name__ == "__main__": batt = 1. while True: msg = messaging.new_message('carParams') - msg.carParams.carName = "COMMA BODY" + msg.carParams.carName = "BODY" msg.carParams.notCar = True pm.send('carParams', msg) diff --git a/selfdrive/ui/tests/test_ui/run.py b/selfdrive/ui/tests/test_ui/run.py index 7a2ac9a110..c834107780 100644 --- a/selfdrive/ui/tests/test_ui/run.py +++ b/selfdrive/ui/tests/test_ui/run.py @@ -18,7 +18,7 @@ from cereal.messaging import SubMaster, PubMaster from openpilot.common.mock import mock_messages from openpilot.common.params import Params from openpilot.common.realtime import DT_MDL -from openpilot.common.transformations.camera import tici_f_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS from openpilot.selfdrive.test.helpers import with_processes from openpilot.selfdrive.test.process_replay.vision_meta import meta_from_camera_state from openpilot.tools.webcam.camera import Camera @@ -69,15 +69,16 @@ def setup_onroad(click, pm: PubMaster): pm.send("pandaStates", dat) + d = DEVICE_CAMERAS[("tici", "ar0231")] server = VisionIpcServer("camerad") - server.create_buffers(VisionStreamType.VISION_STREAM_ROAD, 40, False, *tici_f_frame_size) - server.create_buffers(VisionStreamType.VISION_STREAM_DRIVER, 40, False, *tici_f_frame_size) - server.create_buffers(VisionStreamType.VISION_STREAM_WIDE_ROAD, 40, False, *tici_f_frame_size) + server.create_buffers(VisionStreamType.VISION_STREAM_ROAD, 40, False, d.fcam.width, d.fcam.height) + server.create_buffers(VisionStreamType.VISION_STREAM_DRIVER, 40, False, d.dcam.width, d.dcam.height) + server.create_buffers(VisionStreamType.VISION_STREAM_WIDE_ROAD, 40, False, d.fcam.width, d.fcam.height) server.start_listener() time.sleep(0.5) # give time for vipc server to start - IMG = Camera.bgr2nv12(np.random.randint(0, 255, (*tici_f_frame_size,3), dtype=np.uint8)) + IMG = Camera.bgr2nv12(np.random.randint(0, 255, (d.fcam.width, d.fcam.height, 3), dtype=np.uint8)) IMG_BYTES = IMG.flatten().tobytes() cams = ('roadCameraState', 'wideRoadCameraState') diff --git a/selfdrive/ui/translations/main_ar.ts b/selfdrive/ui/translations/main_ar.ts index 74e61489a6..acf88c4ab5 100644 --- a/selfdrive/ui/translations/main_ar.ts +++ b/selfdrive/ui/translations/main_ar.ts @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Review مراجعة + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + اقرن جهازك بجهاز (connect.comma.ai) واحصل على عرضك من comma prime. + + + Pair Device + إقران الجهاز + + + PAIR + إقران + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -728,6 +748,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password كلمة مرور خاطئة + + Scan + + + + Scanning... + + OffroadAlert @@ -749,10 +777,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.غير قادر على تحميل التحديثات %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - إعدادات التاريخ والتوقيت غير صحيحة، لن يبدأ النظام. اتصل بالإنترنت من أجل ضبط الوقت. - Taking camera snapshots. System won't start until finished. التقاط لقطات كاميرا. لن يبدأ النظام حتى تنتهي هذه العملية. @@ -807,6 +831,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. تنبيه + + OnroadAlerts + + openpilot Unavailable + openpilot غير متوفر + + + Waiting for controls to start + في انتظار بدء عناصر التحكم + + + TAKE CONTROL IMMEDIATELY + تحكم على الفور + + + Controls Unresponsive + الضوابط غير مستجيبة + + + Reboot Device + إعادة التشغيل + + OnroadScreenOff @@ -1137,6 +1184,10 @@ Warning: You are on a metered connection! ft قدم + + now + الآن + sunnypilot @@ -1180,7 +1231,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + تم تفعيل إعادة ضبط النظام. اضغط على تأكيد لمسح جميع المحتويات والإعدادات. اضغط على إلغاء لاستئناف التمهيد. @@ -1189,6 +1240,14 @@ This may take up to a minute. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1205,6 +1264,14 @@ This may take up to a minute. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1217,34 +1284,6 @@ This may take up to a minute. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1261,6 +1300,18 @@ This may take up to a minute. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1399,6 +1450,18 @@ This may take up to a minute. Select a language اختر لغة + + Choose Software to Install + اختر البرنامج للتثبيت + + + openpilot + openpilot + + + Custom Software + البرمجيات المخصصة + SetupWidget @@ -1532,6 +1595,10 @@ This may take up to a minute. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1544,10 +1611,6 @@ This may take up to a minute. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1638,22 +1701,14 @@ This may take up to a minute. SELECT اختيار - - Select a Driving Model - - - - Reset Calibration - إعادة ضبط المعايرة - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1662,10 +1717,6 @@ This may take up to a minute. downloaded - - (CACHED) - - Downloading Navigation model @@ -1694,10 +1745,26 @@ This may take up to a minute. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + إعادة ضبط المعايرة + + + Warning: You are on a metered connection! + + Continue متابعة @@ -1706,10 +1773,6 @@ This may take up to a minute. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1717,6 +1780,26 @@ This may take up to a minute. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1745,26 +1828,6 @@ This may take up to a minute. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1838,6 +1901,10 @@ This may take up to a minute. SpeedLimitWarningValueOffset + + N/A + غير متاح + km/h كم/س @@ -1846,10 +1913,6 @@ This may take up to a minute. mph ميل/س - - N/A - غير متاح - SshControl @@ -1900,13 +1963,53 @@ This may take up to a minute. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A غير متاح + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1916,7 +2019,19 @@ This may take up to a minute. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + إقران + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1932,11 +2047,7 @@ This may take up to a minute. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1951,16 +2062,28 @@ This may take up to a minute. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1971,15 +2094,23 @@ This may take up to a minute. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1994,6 +2125,14 @@ This may take up to a minute. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2165,34 +2304,22 @@ This may take up to a minute. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2201,6 +2328,10 @@ This may take up to a minute. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2233,12 +2364,20 @@ This may take up to a minute. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2265,7 +2404,7 @@ This may take up to a minute. TogglesPanel Enable openpilot - تمكين + تمكين openpilot Use the openpilot system for adaptive cruise control and lane keep driver assistance. Your attention is required at all times to use this feature. Changing this setting takes effect when the car is powered off. @@ -2351,10 +2490,6 @@ This may take up to a minute. Driving Personality شخصية القيادة - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - يوصى بالوضع القياسي. في الوضع الهجومي، سيتبع openpilot السيارات الرائدة بشكل أقرب، ويصبح أكثر هجومية في دواسات الوقود والمكابح. في وضعية الراحة يبقى openplot بعيداً لمسافة جيدة عن السيارة الرائدة. - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: يتم وضع openpilot بشكل قياسي في <b>وضعية الراحة</b>. يمكن الوضع التجريبي <b>ميزات المستوى ألفا</b> التي لا تكون جاهزة في وضع الراحة: @@ -2367,22 +2502,10 @@ This may take up to a minute. Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. دع نظام القيادة يتحكم بالوقود والمكابح. سيقوم openpilot بالقيادة كما لو أنه كائن بشري، بما في ذلك التوقف عند الإشارة الحمراء، وإشارات التوقف. وبما أن نمط القيادة يحدد سرعة القيادة، فإن السرعة المضبوطة تشكل الحد الأقصى فقط. هذه خاصية الجودة ألفا، فيجب توقع حدوث الأخطاء. - - Navigate on openpilot - التنقل على openpilot - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - عندما يكون هناك وجهة للتنقل، فإن openpilot سيقوم بإدخال معلومات الخريطة في هذا النموذج. وهذا يقدم سياقاً مفيداً ويسمح لـopenpilot بالبقاء يساراً أو يميناً بالشكل المناسب عند المنعطفات/المخارج. يبقى سلوك تغيير المسار مفعلاً عند السائق،. هذه هي خاصية الجودة ألفا، ولذلك يجب توقع الأخطاء لا سيما عند المخارج والمنعطفات هذه الأخطاء قد تشمل العبور غير المقصود لخطوط المسارات، والتأخر في الخروج، والقيادة نحو الحواجز الفاصلة في المناطق المثلثة بين الطريق الرئيسي والمخارج، وغير ذلك من الأخطاء المشابهة. - New Driving Visualization تصور القيادة الديد - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - تصور القيادة سينتقل إلى الكاميرا واسعة الزاوية المواجهة للطريق في السرعات المنخفضة من أجل إظهار بعض المنعطفات بشكل أفضل. سيتم أيضاً إظهار شعار الوضع التجريبي في الزاوية العلوية اليمنى. عند تحديد وجهة التنقل، واستخدام نظام القيادة لها كوضع مدخل، سيتحول مسار القيادة على الخريطة إلى اللون الأخضر. - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. الوضع التجريبي غير متوفر حالياً في هذه السيارة نظراً لاستخدام رصيد التحكم التكيفي بالسرعة من أجل التحكم الطولي. @@ -2399,6 +2522,22 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. تمكين التحكم الطولي من openpilot (ألفا) للسماح بالوضع التجريبي. + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + يوصى بالمعيار. في الوضع العدواني، سيتبع الطيار المفتوح السيارات الرائدة بشكل أقرب ويكون أكثر عدوانية مع البنزين والفرامل. في الوضع المريح، سيبقى openpilot بعيدًا عن السيارات الرائدة. في السيارات المدعومة، يمكنك التنقل بين هذه الشخصيات باستخدام زر مسافة عجلة القيادة. + + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Enable sunnypilot @@ -2441,7 +2580,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2627,6 +2766,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2640,6 +2787,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2656,22 +2811,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/translations/main_de.ts b/selfdrive/ui/translations/main_de.ts index 6632793bed..af518c47a8 100644 --- a/selfdrive/ui/translations/main_de.ts +++ b/selfdrive/ui/translations/main_de.ts @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Review Überprüfen + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Koppele dein Gerät mit Comma Connect (connect.comma.ai) und sichere dir dein Comma Prime Angebot. + + + Pair Device + + + + PAIR + + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -724,6 +744,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password Falsches Passwort + + Scan + + + + Scanning... + + OffroadAlert @@ -740,10 +768,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. - - Invalid date and time settings, system won't start. Connect to internet to set time. - - Taking camera snapshots. System won't start until finished. @@ -802,6 +826,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. HINWEIS + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + OnroadScreenOff @@ -1120,6 +1167,10 @@ Warning: You are on a metered connection! ft fuß + + now + + sunnypilot @@ -1171,6 +1222,14 @@ This may take up to a minute. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1187,6 +1246,14 @@ This may take up to a minute. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1199,34 +1266,6 @@ This may take up to a minute. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1243,6 +1282,18 @@ This may take up to a minute. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1381,6 +1432,18 @@ This may take up to a minute. Select a language Sprache wählen + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget @@ -1515,6 +1578,10 @@ This may take up to a minute. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1527,10 +1594,6 @@ This may take up to a minute. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1622,22 +1685,14 @@ This may take up to a minute. SELECT AUSWÄHLEN - - Select a Driving Model - - - - Reset Calibration - Neu kalibrieren - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1646,10 +1701,6 @@ This may take up to a minute. downloaded - - (CACHED) - - Downloading Navigation model @@ -1678,10 +1729,26 @@ This may take up to a minute. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + Neu kalibrieren + + + Warning: You are on a metered connection! + + Continue Fortsetzen @@ -1690,10 +1757,6 @@ This may take up to a minute. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1701,6 +1764,26 @@ This may take up to a minute. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1729,26 +1812,6 @@ This may take up to a minute. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1822,6 +1885,10 @@ This may take up to a minute. SpeedLimitWarningValueOffset + + N/A + Nicht verfügbar + km/h km/h @@ -1830,10 +1897,6 @@ This may take up to a minute. mph mph - - N/A - Nicht verfügbar - SshControl @@ -1884,13 +1947,53 @@ This may take up to a minute. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A Nicht verfügbar + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1900,7 +2003,19 @@ This may take up to a minute. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1916,11 +2031,7 @@ This may take up to a minute. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1935,16 +2046,28 @@ This may take up to a minute. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1955,15 +2078,23 @@ This may take up to a minute. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1978,6 +2109,14 @@ This may take up to a minute. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2149,34 +2288,22 @@ This may take up to a minute. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2185,6 +2312,10 @@ This may take up to a minute. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2217,12 +2348,20 @@ This may take up to a minute. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2353,18 +2492,6 @@ This may take up to a minute. End-to-End Longitudinal Control - - Navigate on openpilot - - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - - openpilot longitudinal control may come in a future update. @@ -2377,6 +2504,18 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Enable sunnypilot @@ -2419,7 +2558,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2605,6 +2744,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2618,6 +2765,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2634,22 +2789,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/translations/main_fr.ts b/selfdrive/ui/translations/main_fr.ts index c2ade75df6..afe9525b6d 100644 --- a/selfdrive/ui/translations/main_fr.ts +++ b/selfdrive/ui/translations/main_fr.ts @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Disengage to Power Off Désengager pour éteindre + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Associez votre appareil avec comma connect (connect.comma.ai) et profitez de l'offre comma prime. + + + Pair Device + + + + PAIR + + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -724,6 +744,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password Mot de passe incorrect + + Scan + + + + Scanning... + + OffroadAlert @@ -745,10 +773,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Impossible de télécharger les mises à jour %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - Paramètres de date et d'heure invalides, le système ne démarrera pas. Connectez l'appareil à Internet pour régler l'heure. - Taking camera snapshots. System won't start until finished. Capture de clichés photo. Le système ne démarrera pas tant qu'il n'est pas terminé. @@ -803,6 +827,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. ALERTE + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + OnroadScreenOff @@ -1121,6 +1168,10 @@ Warning: You are on a metered connection! ft ft + + now + + sunnypilot @@ -1173,6 +1224,14 @@ Cela peut prendre jusqu'à une minute. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1189,6 +1248,14 @@ Cela peut prendre jusqu'à une minute. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1201,34 +1268,6 @@ Cela peut prendre jusqu'à une minute. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1245,6 +1284,18 @@ Cela peut prendre jusqu'à une minute. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1383,6 +1434,18 @@ Cela peut prendre jusqu'à une minute. Select a language Choisir une langue + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget @@ -1516,6 +1579,10 @@ Cela peut prendre jusqu'à une minute. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1528,10 +1595,6 @@ Cela peut prendre jusqu'à une minute. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1622,22 +1685,14 @@ Cela peut prendre jusqu'à une minute. SELECT SÉLECTIONNER - - Select a Driving Model - - - - Reset Calibration - Réinitialiser la calibration - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1646,10 +1701,6 @@ Cela peut prendre jusqu'à une minute. downloaded - - (CACHED) - - Downloading Navigation model @@ -1678,10 +1729,26 @@ Cela peut prendre jusqu'à une minute. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + Réinitialiser la calibration + + + Warning: You are on a metered connection! + + Continue Continuer @@ -1690,10 +1757,6 @@ Cela peut prendre jusqu'à une minute. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1701,6 +1764,26 @@ Cela peut prendre jusqu'à une minute. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1729,26 +1812,6 @@ Cela peut prendre jusqu'à une minute. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1822,6 +1885,10 @@ Cela peut prendre jusqu'à une minute. SpeedLimitWarningValueOffset + + N/A + N/A + km/h km/h @@ -1830,10 +1897,6 @@ Cela peut prendre jusqu'à une minute. mph mi/h - - N/A - N/A - SshControl @@ -1884,13 +1947,53 @@ Cela peut prendre jusqu'à une minute. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A N/A + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1900,7 +2003,19 @@ Cela peut prendre jusqu'à une minute. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1916,11 +2031,7 @@ Cela peut prendre jusqu'à une minute. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1935,16 +2046,28 @@ Cela peut prendre jusqu'à une minute. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1955,15 +2078,23 @@ Cela peut prendre jusqu'à une minute. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1978,6 +2109,14 @@ Cela peut prendre jusqu'à une minute. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2149,34 +2288,22 @@ Cela peut prendre jusqu'à une minute. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2185,6 +2312,10 @@ Cela peut prendre jusqu'à une minute. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2217,12 +2348,20 @@ Cela peut prendre jusqu'à une minute. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2335,10 +2474,6 @@ Cela peut prendre jusqu'à une minute. Driving Personality Personnalité de conduite - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - Le mode standard est recommandé. En mode agressif, openpilot suivra de plus près les voitures de tête et sera plus agressif avec l'accélérateur et le frein. En mode détendu, openpilot restera plus éloigné des voitures de tête. - openpilot defaults to driving in <b>chill mode</b>. Experimental mode enables <b>alpha-level features</b> that aren't ready for chill mode. Experimental features are listed below: Par défaut, openpilot conduit en <b>mode détente</b>. Le mode expérimental permet d'activer des <b>fonctionnalités alpha</b> qui ne sont pas prêtes pour le mode détente. Les fonctionnalités expérimentales sont listées ci-dessous : @@ -2367,22 +2502,22 @@ Cela peut prendre jusqu'à une minute. End-to-End Longitudinal Control Contrôle longitudinal de bout en bout - - Navigate on openpilot - Navigation avec openpilot - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - Lorsque la navigation dispose d'une destination, openpilot entrera les informations de la carte dans le modèle. Cela fournit un contexte utile pour le modèle et permet à openpilot de se diriger à gauche ou à droite de manière appropriée aux bifurcations/sorties. Le comportement relatif au changement de voie reste inchangé et doit toujours être activé par le conducteur. Il s'agit d'une fonctionnalité alpha ; il faut s'attendre à des erreurs, en particulier aux abords des sorties et des bifurcations. Ces erreurs peuvent inclure des franchissements involontaires de passages piétons, des prises de sortie tardives, la conduite vers des zones de séparation de type zebras, etc. - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - La visualisation de la conduite passera sur la caméra grand angle dirigée vers la route à faible vitesse afin de mieux montrer certains virages. Le logo du mode expérimental s'affichera également dans le coin supérieur droit. Lorsqu'une destination de navigation est définie et que le modèle de conduite l'utilise comme entrée, la trajectoire de conduite sur la carte deviendra verte. - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. Activer le contrôle longitudinal d'openpilot (en alpha) pour autoriser le mode expérimental. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + La visualisation de la conduite passera sur la caméra grand angle dirigée vers la route à faible vitesse afin de mieux montrer certains virages. Le logo du mode expérimental s'affichera également dans le coin supérieur droit. + + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Enable sunnypilot @@ -2425,7 +2560,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2611,6 +2746,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2624,6 +2767,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2640,22 +2791,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/translations/main_ja.ts b/selfdrive/ui/translations/main_ja.ts index e71735be0e..9edf07f110 100644 --- a/selfdrive/ui/translations/main_ja.ts +++ b/selfdrive/ui/translations/main_ja.ts @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Review 確認 + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + デバイスを comma connect (connect.comma.ai)でペアリングし、comma primeの特典を申請してください。 + + + Pair Device + + + + PAIR + + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -723,6 +743,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password パスワードが間違っています + + Scan + + + + Scanning... + + OffroadAlert @@ -739,10 +767,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. - - Invalid date and time settings, system won't start. Connect to internet to set time. - - Taking camera snapshots. System won't start until finished. @@ -801,6 +825,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. 警告 + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + OnroadScreenOff @@ -1116,6 +1163,10 @@ Warning: You are on a metered connection! ft フィート + + now + + sunnypilot @@ -1167,6 +1218,14 @@ This may take up to a minute. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1183,6 +1242,14 @@ This may take up to a minute. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1195,34 +1262,6 @@ This may take up to a minute. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1239,6 +1278,18 @@ This may take up to a minute. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1377,6 +1428,18 @@ This may take up to a minute. Select a language 言語を選択 + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget @@ -1510,6 +1573,10 @@ This may take up to a minute. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1522,10 +1589,6 @@ This may take up to a minute. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1616,22 +1679,14 @@ This may take up to a minute. SELECT 選択 - - Select a Driving Model - - - - Reset Calibration - キャリブレーションをリセット - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1640,10 +1695,6 @@ This may take up to a minute. downloaded - - (CACHED) - - Downloading Navigation model @@ -1672,10 +1723,26 @@ This may take up to a minute. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + キャリブレーションをリセット + + + Warning: You are on a metered connection! + + Continue 続ける @@ -1684,10 +1751,6 @@ This may take up to a minute. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1695,6 +1758,26 @@ This may take up to a minute. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1723,26 +1806,6 @@ This may take up to a minute. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1816,6 +1879,10 @@ This may take up to a minute. SpeedLimitWarningValueOffset + + N/A + N/A + km/h km/h @@ -1824,10 +1891,6 @@ This may take up to a minute. mph mph - - N/A - N/A - SshControl @@ -1878,13 +1941,53 @@ This may take up to a minute. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A N/A + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1894,7 +1997,19 @@ This may take up to a minute. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1910,11 +2025,7 @@ This may take up to a minute. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1929,16 +2040,28 @@ This may take up to a minute. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1949,15 +2072,23 @@ This may take up to a minute. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1972,6 +2103,14 @@ This may take up to a minute. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2143,34 +2282,22 @@ This may take up to a minute. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2179,6 +2306,10 @@ This may take up to a minute. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2211,12 +2342,20 @@ This may take up to a minute. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2345,18 +2484,6 @@ This may take up to a minute. End-to-End Longitudinal Control - - Navigate on openpilot - - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - - openpilot longitudinal control may come in a future update. @@ -2369,6 +2496,18 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Enable sunnypilot @@ -2411,7 +2550,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2597,6 +2736,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2610,6 +2757,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2626,22 +2781,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/translations/main_ko.ts b/selfdrive/ui/translations/main_ko.ts index a3d31a6b28..2a5ee18826 100644 --- a/selfdrive/ui/translations/main_ko.ts +++ b/selfdrive/ui/translations/main_ko.ts @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Review 다시보기 + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + 장치를 comma connect (connect.comma.ai)에서 페어링하고 comma prime 무료 이용권을 사용하세요. + + + Pair Device + 장치 동기화 + + + PAIR + 동기화 + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -723,6 +743,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password 비밀번호가 틀렸습니다 + + Scan + + + + Scanning... + + OffroadAlert @@ -740,10 +768,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.업데이트를 다운로드할 수 없습니다 %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - 날짜 및 시간 설정이 잘못되어 시스템이 시작되지 않습니다. 날짜와 시간을 동기화하려면 인터넷에 연결하세요. - Taking camera snapshots. System won't start until finished. 카메라 스냅샷 찍기가 완료될 때까지 시스템이 시작되지 않습니다. @@ -802,6 +826,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. 알림 + + OnroadAlerts + + openpilot Unavailable + 오픈파일럿을 사용할수없습니다 + + + Waiting for controls to start + 프로세스가 준비중입니다 + + + TAKE CONTROL IMMEDIATELY + 핸들을 잡아주세요 + + + Controls Unresponsive + 프로세스가 응답하지않습니다 + + + Reboot Device + 장치를 재부팅하세요 + + OnroadScreenOff @@ -986,7 +1033,7 @@ Warning: You are on a metered connection! PairingPopup Pair your device to your comma account - 장치를 comma 계정에 페어링합니다 + 장치를 comma 계정에 동기화합니다 Go to https://connect.comma.ai on your phone @@ -1117,6 +1164,10 @@ Warning: You are on a metered connection! ft ft + + now + now + sunnypilot @@ -1160,7 +1211,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + 시스템 재설정이 시작되었습니다. 모든 콘텐츠와 설정을 지우려면 확인을 누르시고 부팅을 재개하려면 취소를 누르세요. @@ -1169,6 +1220,14 @@ This may take up to a minute. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1185,6 +1244,14 @@ This may take up to a minute. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1197,34 +1264,6 @@ This may take up to a minute. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1241,6 +1280,18 @@ This may take up to a minute. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1379,6 +1430,18 @@ This may take up to a minute. Select a language 언어를 선택하세요 + + Choose Software to Install + 설치할 소프트웨어 선택 + + + openpilot + openpilot + + + Custom Software + 커스텀 소프트웨어 + SetupWidget @@ -1512,6 +1575,10 @@ This may take up to a minute. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1524,10 +1591,6 @@ This may take up to a minute. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1618,22 +1681,14 @@ This may take up to a minute. SELECT 선택 - - Select a Driving Model - - - - Reset Calibration - 캘리브레이션 초기화 - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1642,10 +1697,6 @@ This may take up to a minute. downloaded - - (CACHED) - - Downloading Navigation model @@ -1674,10 +1725,26 @@ This may take up to a minute. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + 캘리브레이션 초기화 + + + Warning: You are on a metered connection! + + Continue 계속 @@ -1686,10 +1753,6 @@ This may take up to a minute. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1697,6 +1760,26 @@ This may take up to a minute. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1725,26 +1808,6 @@ This may take up to a minute. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1818,6 +1881,10 @@ This may take up to a minute. SpeedLimitWarningValueOffset + + N/A + N/A + km/h km/h @@ -1826,10 +1893,6 @@ This may take up to a minute. mph mph - - N/A - N/A - SshControl @@ -1880,13 +1943,53 @@ This may take up to a minute. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A N/A + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1896,7 +1999,19 @@ This may take up to a minute. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + 동기화 + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1912,11 +2027,7 @@ This may take up to a minute. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1931,16 +2042,28 @@ This may take up to a minute. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1951,15 +2074,23 @@ This may take up to a minute. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1974,6 +2105,14 @@ This may take up to a minute. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2145,34 +2284,22 @@ This may take up to a minute. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2181,6 +2308,10 @@ This may take up to a minute. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2213,12 +2344,20 @@ This may take up to a minute. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2351,18 +2490,10 @@ This may take up to a minute. Driving Personality 주행 모드 - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - 표준 모드를 권장합니다. 공격적 모드에서 openpilot은 앞 차량을 더 가까이 따라가며 적극적으로 가감속합니다. 편안한 모드에서 openpilot은 앞 차량을 더 멀리서 따라갑니다. - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. openpilot 가감속 제어 알파 버전은 비 릴리즈 브랜치에서 실험 모드와 함께 테스트할 수 있습니다. - - Navigate on openpilot - openpilot 내비게이트 - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. 실험 모드를 사용하려면 openpilot E2E 가감속 제어 (알파) 토글을 활성화하세요. @@ -2372,12 +2503,20 @@ This may take up to a minute. E2E 가감속 제어 - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - 내비게이션에 목적지가 설정되어 있으면 openpilot이 지도 정보를 주행 모델에 입력합니다. 이는 모델에 유용한 정보를 제공하고 openpilot이 진출입로 및 램프에서 적절하게 왼쪽 또는 오른쪽을 유지할 수 있도록 해 줍니다. 차선 변경 기능은 여전히 운전자의 조작에 의해 활성화됩니다. 이 기능은 알파 버전입니다. 특히 진출입로 및 분기점 주변에서 실수가 발생할 수 있으며 이러한 실수에는 의도하지 않은 차선 이탈, 늦은 진출, 도로 가장자리의 분리대 또는 경계석을 향해 운전하는 행동 등이 포함됩니다. + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + 표준 모드를 권장합니다. 공격적 모드의 openpilot은 선두 차량을 더 가까이 따라가고 가감속제어를 사용하여 더욱 공격적으로 움직입니다. 편안한 모드의 openpilot은 선두 차량으로부터 더 멀리 떨어져 있습니다. 지원되는 차량에서는 스티어링 휠 거리 버튼을 사용하여 이러한 특성을 순환할 수 있습니다. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - 주행 시각화는 저속으로 주행 시 도로를 향한 광각 카메라로 자동 전환되어 일부 곡선 경로를 더 잘 보여줍니다. 실험 모드 로고는 우측 상단에 표시됩니다. 내비게이션 목적지가 설정되고 주행 모델에 입력되면 지도의 주행 경로가 녹색으로 바뀝니다. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + Enable sunnypilot @@ -2421,7 +2560,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2607,6 +2746,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2620,6 +2767,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2636,22 +2791,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/translations/main_pt-BR.ts b/selfdrive/ui/translations/main_pt-BR.ts index 03f4e053b3..ca0fe547f6 100644 --- a/selfdrive/ui/translations/main_pt-BR.ts +++ b/selfdrive/ui/translations/main_pt-BR.ts @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Review Revisar + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Pareie seu dispositivo com comma connect (connect.comma.ai) e reivindique sua oferta de comma prime. + + + Pair Device + Parear Dispositivo + + + PAIR + PAREAR + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -724,6 +744,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password Senha incorreta + + Scan + + + + Scanning... + + OffroadAlert @@ -741,10 +769,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Não é possível baixar atualizações %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - Configurações de data e hora inválidas, o sistema não será iniciado. Conecte-se à internet para definir o horário. - Taking camera snapshots. System won't start until finished. Tirando fotos da câmera. O sistema não será iniciado até terminar. @@ -803,6 +827,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. ALERTA + + OnroadAlerts + + openpilot Unavailable + openpilot Indisponível + + + Waiting for controls to start + Aguardando controles para iniciar + + + TAKE CONTROL IMMEDIATELY + ASSUMA IMEDIATAMENTE + + + Controls Unresponsive + Controles Não Respondem + + + Reboot Device + Reinicie o Dispositivo + + OnroadScreenOff @@ -1121,6 +1168,10 @@ Warning: You are on a metered connection! ft pés + + now + agora + sunnypilot @@ -1164,7 +1215,7 @@ Isso pode levar até um minuto. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - Reinicialização do sistema acionada. Pressione confirmar para apagar todo o conteúdo e configurações. Pressione cancel para retomar a inicialização. + Reinicialização do sistema acionada. Pressione confirmar para apagar todo o conteúdo e configurações. Pressione cancel para retomar a inicialização. @@ -1173,6 +1224,14 @@ Isso pode levar até um minuto. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1189,6 +1248,14 @@ Isso pode levar até um minuto. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1201,34 +1268,6 @@ Isso pode levar até um minuto. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1245,6 +1284,18 @@ Isso pode levar até um minuto. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1383,6 +1434,18 @@ Isso pode levar até um minuto. Select a language Selecione o Idioma + + Choose Software to Install + Escolha o Software a ser Instalado + + + openpilot + openpilot + + + Custom Software + Software Customizado + SetupWidget @@ -1516,6 +1579,10 @@ Isso pode levar até um minuto. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1528,10 +1595,6 @@ Isso pode levar até um minuto. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1622,22 +1685,14 @@ Isso pode levar até um minuto. SELECT SELECIONE - - Select a Driving Model - - - - Reset Calibration - Reinicializar Calibragem - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1646,10 +1701,6 @@ Isso pode levar até um minuto. downloaded - - (CACHED) - - Downloading Navigation model @@ -1678,10 +1729,26 @@ Isso pode levar até um minuto. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + Reinicializar Calibragem + + + Warning: You are on a metered connection! + + Continue Continuar @@ -1690,10 +1757,6 @@ Isso pode levar até um minuto. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1701,6 +1764,26 @@ Isso pode levar até um minuto. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1729,26 +1812,6 @@ Isso pode levar até um minuto. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1822,6 +1885,10 @@ Isso pode levar até um minuto. SpeedLimitWarningValueOffset + + N/A + N/A + km/h km/h @@ -1830,10 +1897,6 @@ Isso pode levar até um minuto. mph mph - - N/A - N/A - SshControl @@ -1884,13 +1947,53 @@ Isso pode levar até um minuto. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A N/A + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1900,7 +2003,19 @@ Isso pode levar até um minuto. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + PAREAR + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1916,11 +2031,7 @@ Isso pode levar até um minuto. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1935,16 +2046,28 @@ Isso pode levar até um minuto. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1955,15 +2078,23 @@ Isso pode levar até um minuto. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1978,6 +2109,14 @@ Isso pode levar até um minuto. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2149,34 +2288,22 @@ Isso pode levar até um minuto. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2185,6 +2312,10 @@ Isso pode levar até um minuto. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2217,12 +2348,20 @@ Isso pode levar até um minuto. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2355,18 +2494,10 @@ Isso pode levar até um minuto. Driving Personality Temperamento de Direção - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - Neutro é o recomendado. No modo disputa o openpilot seguirá o carro da frente mais de perto e será mais agressivo com a aceleração e frenagem. No modo calmo o openpilot se manterá mais longe do carro da frente. - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. Uma versão embrionária do controle longitudinal openpilot pode ser testada em conjunto com o modo Experimental, em branches que não sejam de produção. - - Navigate on openpilot - Navegação no openpilot - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. Habilite o controle longitudinal (embrionário) openpilot para permitir o modo Experimental. @@ -2376,12 +2507,20 @@ Isso pode levar até um minuto. Controle Longitudinal de Ponta a Ponta - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - Quando a navegação tem um destino, o openpilot insere as informações do mapa no modelo. Isso fornece contexto útil para o modelo e permite que o openpilot mantenha a esquerda ou a direita apropriadamente em bifurcações/saídas. O comportamento de mudança de faixa permanece inalterado e ainda é ativado somente pelo motorista. Este é um recurso de qualidade embrionária; erros devem ser esperados, principalmente em torno de saídas e bifurcações. Esses erros podem incluir travessias não intencionais na faixa de rodagem, saída tardia, condução em direção a barreiras divisórias nas áreas de marcas de canalização, etc. + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + Neutro é o recomendado. No modo disputa o openpilot seguirá o carro da frente mais de perto e será mais agressivo com a aceleração e frenagem. No modo calmo o openpilot se manterá mais longe do carro da frente. Em carros compatíveis, você pode alternar esses temperamentos com o botão de distância do volante. - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - A visualização de condução fará a transição para a câmera grande angular voltada para a estrada em baixas velocidades para mostrar melhor algumas curvas. O logotipo do modo Experimental também será mostrado no canto superior direito. Quando um destino de navegação é definido e o modelo de condução o utiliza como entrada o caminho de condução no mapa fica verde. + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + A visualização de condução fará a transição para a câmera grande angular voltada para a estrada em baixas velocidades para mostrar melhor algumas curvas. O logotipo do modo Experimental também será mostrado no canto superior direito. + + + Always-On Driver Monitoring + Monitoramento do Motorista Sempre Ativo + + + Enable driver monitoring even when openpilot is not engaged. + Habilite o monitoramento do motorista mesmo quando o openpilot não estiver acionado. Enable sunnypilot @@ -2425,7 +2564,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2611,6 +2750,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2624,6 +2771,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2640,22 +2795,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/translations/main_th.ts b/selfdrive/ui/translations/main_th.ts index b758866a21..da9988e3a3 100644 --- a/selfdrive/ui/translations/main_th.ts +++ b/selfdrive/ui/translations/main_th.ts @@ -68,23 +68,23 @@ Hidden Network - + เครือข่ายที่ซ่อนอยู่ CONNECT - เชื่อมต่อ + เชื่อมต่อ Enter SSID - ป้อนค่า SSID + ป้อนค่า SSID Enter password - ใส่รหัสผ่าน + ใส่รหัสผ่าน for "%1" - สำหรับ "%1" + สำหรับ "%1" Retain hotspot/tethering state @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Review ทบทวน + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + จับคู่อุปกรณ์ของคุณกับ comma connect (connect.comma.ai) และรับข้อเสนอ comma prime ของคุณ + + + Pair Device + จับคู่อุปกรณ์ + + + PAIR + จับคู่ + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -723,6 +743,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password รหัสผ่านผิด + + Scan + + + + Scanning... + + OffroadAlert @@ -744,10 +772,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.ไม่สามารถดาวน์โหลดอัพเดทได้ %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - วันที่และเวลาไม่ถูกต้อง ระบบจะไม่เริ่มทำงาน เชื่อต่ออินเตอร์เน็ตเพื่อตั้งเวลา - Taking camera snapshots. System won't start until finished. กล้องกำลังถ่ายภาพ ระบบจะไม่เริ่มทำงานจนกว่าจะเสร็จ @@ -802,6 +826,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. การแจ้งเตือน + + OnroadAlerts + + openpilot Unavailable + openpilot ไม่สามารถใช้งานได้ + + + Waiting for controls to start + กำลังรอให้ controls เริ่มทำงาน + + + TAKE CONTROL IMMEDIATELY + เข้าควบคุมรถเดี๋ยวนี้ + + + Controls Unresponsive + Controls ไม่ตอบสนอง + + + Reboot Device + รีบูตอุปกรณ์ + + OnroadScreenOff @@ -1117,6 +1164,10 @@ Warning: You are on a metered connection! ft ฟุต + + now + ตอนนี้ + sunnypilot @@ -1160,7 +1211,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + ระบบถูกรีเซ็ต กดยืนยันเพื่อลบข้อมูลและการตั้งค่าทั้งหมด กดยกเลิกเพื่อบูตต่อ @@ -1169,6 +1220,14 @@ This may take up to a minute. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1185,6 +1244,14 @@ This may take up to a minute. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1197,34 +1264,6 @@ This may take up to a minute. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1241,6 +1280,18 @@ This may take up to a minute. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1379,6 +1430,18 @@ This may take up to a minute. Select a language เลือกภาษา + + Choose Software to Install + เลือกซอฟต์แวร์ที่จะติดตั้ง + + + openpilot + openpilot + + + Custom Software + ซอฟต์แวร์ที่กำหนดเอง + SetupWidget @@ -1512,6 +1575,10 @@ This may take up to a minute. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1524,10 +1591,6 @@ This may take up to a minute. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1618,22 +1681,14 @@ This may take up to a minute. SELECT เลือก - - Select a Driving Model - - - - Reset Calibration - รีเซ็ตการคาลิเบรท - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1642,10 +1697,6 @@ This may take up to a minute. downloaded - - (CACHED) - - Downloading Navigation model @@ -1674,10 +1725,26 @@ This may take up to a minute. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + รีเซ็ตการคาลิเบรท + + + Warning: You are on a metered connection! + + Continue ดำเนินการต่อ @@ -1686,10 +1753,6 @@ This may take up to a minute. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1697,6 +1760,26 @@ This may take up to a minute. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1725,26 +1808,6 @@ This may take up to a minute. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1818,6 +1881,10 @@ This may take up to a minute. SpeedLimitWarningValueOffset + + N/A + ไม่มี + km/h กม./ชม. @@ -1826,10 +1893,6 @@ This may take up to a minute. mph ไมล์/ชม. - - N/A - ไม่มี - SshControl @@ -1880,13 +1943,53 @@ This may take up to a minute. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A ไม่มี + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1896,7 +1999,19 @@ This may take up to a minute. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + จับคู่ + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1912,11 +2027,7 @@ This may take up to a minute. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1931,16 +2042,28 @@ This may take up to a minute. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1951,15 +2074,23 @@ This may take up to a minute. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1974,6 +2105,14 @@ This may take up to a minute. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2145,34 +2284,22 @@ This may take up to a minute. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2181,6 +2308,10 @@ This may take up to a minute. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2213,12 +2344,20 @@ This may take up to a minute. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2351,10 +2490,6 @@ This may take up to a minute. Driving Personality บุคลิกการขับขี่ - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - แนะนำให้ใช้แบบมาตรฐาน ในโหมดดุดัน openpilot จะตามรถคันหน้าใกล้ขึ้นและเร่งและเบรคแบบดุดันมากขึ้น ในโหมดผ่อนคลาย openpilot จะอยู่ห่างจากรถคันหน้ามากขึ้น - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. ระบบควบคุมการเร่ง/เบรคโดย openpilot เวอร์ชัน alpha สามารถทดสอบได้พร้อมกับโหมดการทดลอง บน branch ที่กำลังพัฒนา @@ -2363,22 +2498,26 @@ This may take up to a minute. End-to-End Longitudinal Control ควบคุมเร่ง/เบรคแบบ End-to-End - - Navigate on openpilot - การนำทางบน openpilot - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - เมื่อการนำทางมีจุดหมายปลายทาง openpilot จะป้อนข้อมูลแผนที่เข้าไปยังโมเดล ซึ่งจะเป็นบริบทที่มีประโยชน์สำหรับโมเดลและจะทำให้ openpilot สามารถรักษาเลนซ้ายหรือขวาได้อย่างเหมาะสมบริเวณทางแยกหรือทางออก พฤติกรรมการเปลี่ยนเลนยังคงเหมือนเดิมและยังคงต้องถูกเริ่มโดยคนขับ ความสามารถนี้ยังอยู่ในระดับ alpha ซึ่งอาจะเกิดความผิดพลาดได้โดยเฉพาะบริเวณทางแยกหรือทางออก ความผิดพลาดที่อาจเกิดขึ้นได้อาจรวมถึงการข้ามเส้นแบ่งเลนโดยไม่ตั้งใจ, การเข้าช่องทางออกช้ากว่าปกติ, การขับเข้าหาแบริเออร์ในเขตปลอดภัย, ฯลฯ - - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - การแสดงภาพการขับขี่จะเปลี่ยนไปใช้กล้องมุมกว้างที่หันหน้าไปทางถนนเมื่ออยู่ในความเร็วต่ำ เพื่อแสดงภาพการเลี้ยวที่ดีขึ้น โลโก้โหมดการทดลองจะแสดงที่มุมบนขวาด้วย เมื่อเป้าหมายการนำทางถูกเลือกและโมเดลการขับขี่กำลังใช้เป็นอินพุต เส้นทางการขับขี่บนแผนที่จะเปลี่ยนเป็นสีเขียว - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. เปิดระบบควบคุมการเร่ง/เบรคโดย openpilot (alpha) เพื่อเปิดใช้งานโหมดทดลอง + + Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. + แนะนำให้ใช้แบบมาตรฐาน ในโหมดดุดัน openpilot จะตามรถคันหน้าใกล้ขึ้นและเร่งและเบรคแบบดุดันมากขึ้น ในโหมดผ่อนคลาย openpilot จะอยู่ห่างจากรถคันหน้ามากขึ้น ในรถรุ่นที่รองรับคุณสามารถเปลี่ยนบุคลิกไปแบบต่าง ๆ โดยใช้ปุ่มปรับระยะห่างบนพวงมาลัย + + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + การแสดงภาพการขับขี่จะเปลี่ยนไปใช้กล้องมุมกว้างที่หันหน้าไปทางถนนเมื่ออยู่ในความเร็วต่ำ เพื่อแสดงภาพการเลี้ยวที่ดีขึ้น โลโก้โหมดการทดลองจะแสดงที่มุมบนขวาด้วย + + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Enable sunnypilot @@ -2421,7 +2560,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2607,6 +2746,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2620,6 +2767,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2636,22 +2791,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/translations/main_tr.ts b/selfdrive/ui/translations/main_tr.ts index d69c1413a0..62218b01e7 100644 --- a/selfdrive/ui/translations/main_tr.ts +++ b/selfdrive/ui/translations/main_tr.ts @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Review + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + Cihazınızı comma connect (connect.comma.ai) ile eşleştirin ve comma prime aboneliğine göz atın. + + + Pair Device + + + + PAIR + + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -723,6 +743,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password Yalnış parola + + Scan + + + + Scanning... + + OffroadAlert @@ -743,10 +771,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. - - Invalid date and time settings, system won't start. Connect to internet to set time. - - Taking camera snapshots. System won't start until finished. @@ -801,6 +825,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. UYARI + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + OnroadScreenOff @@ -1116,6 +1163,10 @@ Warning: You are on a metered connection! ft ft + + now + + sunnypilot @@ -1167,6 +1218,14 @@ This may take up to a minute. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1183,6 +1242,14 @@ This may take up to a minute. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1195,34 +1262,6 @@ This may take up to a minute. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1239,6 +1278,18 @@ This may take up to a minute. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1377,6 +1428,18 @@ This may take up to a minute. Select a language Dil seçin + + Choose Software to Install + + + + openpilot + openpilot + + + Custom Software + + SetupWidget @@ -1510,6 +1573,10 @@ This may take up to a minute. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1522,10 +1589,6 @@ This may take up to a minute. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1616,22 +1679,14 @@ This may take up to a minute. SELECT - - Select a Driving Model - - - - Reset Calibration - Kalibrasyonu sıfırla - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1640,10 +1695,6 @@ This may take up to a minute. downloaded - - (CACHED) - - Downloading Navigation model @@ -1672,10 +1723,26 @@ This may take up to a minute. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + Kalibrasyonu sıfırla + + + Warning: You are on a metered connection! + + Continue Devam et @@ -1684,10 +1751,6 @@ This may take up to a minute. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1695,6 +1758,26 @@ This may take up to a minute. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1723,26 +1806,6 @@ This may take up to a minute. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1816,6 +1879,10 @@ This may take up to a minute. SpeedLimitWarningValueOffset + + N/A + N/A + km/h km/h @@ -1824,10 +1891,6 @@ This may take up to a minute. mph mph - - N/A - N/A - SshControl @@ -1878,13 +1941,53 @@ This may take up to a minute. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A N/A + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1894,7 +1997,19 @@ This may take up to a minute. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1910,11 +2025,7 @@ This may take up to a minute. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1929,16 +2040,28 @@ This may take up to a minute. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1949,15 +2072,23 @@ This may take up to a minute. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1972,6 +2103,14 @@ This may take up to a minute. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2143,34 +2282,22 @@ This may take up to a minute. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2179,6 +2306,10 @@ This may take up to a minute. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2211,12 +2342,20 @@ This may take up to a minute. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2337,22 +2476,10 @@ This may take up to a minute. Let the driving model control the gas and brakes. openpilot will drive as it thinks a human would, including stopping for red lights and stop signs. Since the driving model decides the speed to drive, the set speed will only act as an upper bound. This is an alpha quality feature; mistakes should be expected. - - Navigate on openpilot - - - - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - - New Driving Visualization - - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - - Experimental mode is currently unavailable on this car since the car's stock ACC is used for longitudinal control. @@ -2369,6 +2496,18 @@ This may take up to a minute. Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. + + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + + + + Always-On Driver Monitoring + + + + Enable driver monitoring even when openpilot is not engaged. + + Enable sunnypilot @@ -2411,7 +2550,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2597,6 +2736,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2610,6 +2757,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2626,22 +2781,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/translations/main_zh-CHS.ts b/selfdrive/ui/translations/main_zh-CHS.ts index 8f27321681..7773aff28a 100644 --- a/selfdrive/ui/translations/main_zh-CHS.ts +++ b/selfdrive/ui/translations/main_zh-CHS.ts @@ -68,23 +68,23 @@ Hidden Network - + 隐藏的网络 CONNECT - CONNECT + 连线 Enter SSID - 输入SSID + 输入 SSID Enter password - 输入密码 + 输入密码 for "%1" - 网络名称:"%1" + 网络名称:"%1" Retain hotspot/tethering state @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Review 预览 + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + 将您的设备与comma connect (connect.comma.ai)配对并领取您的comma prime优惠。 + + + Pair Device + + + + PAIR + + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -723,6 +743,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password 密码错误 + + Scan + + + + Scanning... + + OffroadAlert @@ -740,10 +768,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.无法下载更新 %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - 日期和时间设置无效,系统无法启动。请连接至互联网以设置时间。 - Taking camera snapshots. System won't start until finished. 正在使用相机拍摄中。在完成之前,系统将无法启动。 @@ -802,6 +826,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. 警报 + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + OnroadScreenOff @@ -1117,6 +1164,10 @@ Warning: You are on a metered connection! ft ft + + now + + sunnypilot @@ -1160,7 +1211,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + 系统重置已触发。按下“确认”以清除所有内容和设置,按下“取消”以继续启动。 @@ -1169,6 +1220,14 @@ This may take up to a minute. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1185,6 +1244,14 @@ This may take up to a minute. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1197,34 +1264,6 @@ This may take up to a minute. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1241,6 +1280,18 @@ This may take up to a minute. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1379,6 +1430,18 @@ This may take up to a minute. Select a language 选择语言 + + Choose Software to Install + 选择要安装的软件 + + + openpilot + openpilot + + + Custom Software + 定制软件 + SetupWidget @@ -1512,6 +1575,10 @@ This may take up to a minute. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1524,10 +1591,6 @@ This may take up to a minute. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1618,22 +1681,14 @@ This may take up to a minute. SELECT 选择 - - Select a Driving Model - - - - Reset Calibration - 重置设备校准 - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1642,10 +1697,6 @@ This may take up to a minute. downloaded - - (CACHED) - - Downloading Navigation model @@ -1674,10 +1725,26 @@ This may take up to a minute. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + 重置设备校准 + + + Warning: You are on a metered connection! + + Continue 继续 @@ -1686,10 +1753,6 @@ This may take up to a minute. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1697,6 +1760,26 @@ This may take up to a minute. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1725,26 +1808,6 @@ This may take up to a minute. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1818,6 +1881,10 @@ This may take up to a minute. SpeedLimitWarningValueOffset + + N/A + N/A + km/h km/h @@ -1826,10 +1893,6 @@ This may take up to a minute. mph mph - - N/A - N/A - SshControl @@ -1880,13 +1943,53 @@ This may take up to a minute. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A N/A + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1896,7 +1999,19 @@ This may take up to a minute. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1912,11 +2027,7 @@ This may take up to a minute. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1931,16 +2042,28 @@ This may take up to a minute. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1951,15 +2074,23 @@ This may take up to a minute. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1974,6 +2105,14 @@ This may take up to a minute. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2145,34 +2284,22 @@ This may take up to a minute. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2181,6 +2308,10 @@ This may take up to a minute. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2213,12 +2344,20 @@ This may take up to a minute. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2351,18 +2490,10 @@ This may take up to a minute. Driving Personality 驾驶风格 - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - 推荐使用标准模式。在积极模式中,openpilot 会更靠近前车并在加速和刹车方面更积极。在舒适模式中,openpilot 会与前车保持较远的距离。 - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. 在正式(release)版本以外的分支上,可以测试 openpilot 纵向控制的 Alpha 版本以及实验模式。 - - Navigate on openpilot - Navigate on openpilot - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. 启用 openpilot 纵向控制(alpha)开关以允许实验模式。 @@ -2372,12 +2503,16 @@ This may take up to a minute. 端到端纵向控制 - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - 当导航有目的地时,openpilot 将输入地图信息到模型中。这为模型提供了有用的背景信息,使 openpilot 能够在叉路/出口时适当地保持左侧或右侧行驶。车道变换行为保持不变,仍由驾驶员激活。这是一个 Alpha 版的功能;可能会出现错误,特别是在出口和分叉处。这些错误可能包括意外的车道越界、晚出口、朝着分隔栏驶向安全地带等。 + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - 行驶画面将在低速时切换到道路朝向的广角摄像头,以更好地显示一些转弯。实验模式标志也将显示在右上角。当设置了导航目的地并且驾驶模型正在使用它作为输入时,地图上的驾驶路径将变为绿色。 + Always-On Driver Monitoring + 驾驶员监控常开 + + + Enable driver monitoring even when openpilot is not engaged. + 即使在openpilot未激活时也启用驾驶员监控。 Enable sunnypilot @@ -2421,7 +2556,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2607,6 +2742,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2620,6 +2763,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2636,22 +2787,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/translations/main_zh-CHT.ts b/selfdrive/ui/translations/main_zh-CHT.ts index 742eff88b0..08a7759d65 100644 --- a/selfdrive/ui/translations/main_zh-CHT.ts +++ b/selfdrive/ui/translations/main_zh-CHT.ts @@ -68,23 +68,23 @@ Hidden Network - + 隱藏的網路 CONNECT - 雲端服務 + 連線 Enter SSID - 輸入 SSID + 輸入 SSID Enter password - 輸入密碼 + 輸入密碼 for "%1" - 給 "%1" + 給 "%1" Retain hotspot/tethering state @@ -94,6 +94,10 @@ Enabling this toggle will retain the hotspot/tethering toggle state across reboots. + + Ngrok Service + + AnnotatedCameraWidget @@ -144,6 +148,10 @@ Please use caution when using this feature. Only use the blinker when traffic an BackupSettings + + Settings backed up for sunnylink Device ID: + + Settings updated successfully, but no additional data was returned by the server. @@ -164,10 +172,6 @@ Please use caution when using this feature. Only use the blinker when traffic an No settings found to restore. - - Settings backed up for sunnylink Device ID: - - BrightnessControl @@ -389,6 +393,18 @@ Please use caution when using this feature. Only use the blinker when traffic an Review 回顧 + + Pair your device with comma connect (connect.comma.ai) and claim your comma prime offer. + 將您的設備與 comma connect (connect.comma.ai) 配對並領取您的 comma 高級會員優惠。 + + + Pair Device + + + + PAIR + + TOGGLE @@ -414,11 +430,15 @@ Please use caution when using this feature. Only use the blinker when traffic an - Reset Mapbox Access Token + Reset Access Tokens for Map Services - Are you sure you want to reset the Mapbox access token? + Reset self-service access tokens for Mapbox, Amap, and Google Maps. + + + + Are you sure you want to reset access tokens for all map services? @@ -434,11 +454,11 @@ Please use caution when using this feature. Only use the blinker when traffic an - sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. + OFF - OFF + sunnypilot requires the device to be mounted within 4° left or right and within 5° up or 9° down. sunnypilot is continuously calibrating, resetting is rarely required. @@ -723,6 +743,14 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.Wrong password 密碼錯誤 + + Scan + + + + Scanning... + + OffroadAlert @@ -740,10 +768,6 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed.無法下載更新 %1 - - Invalid date and time settings, system won't start. Connect to internet to set time. - 日期和時間設定無效,系統無法啟動。請連接至網際網路以設定時間。 - Taking camera snapshots. System won't start until finished. 正在使用相機拍攝中。在完成之前,系統將無法啟動。 @@ -802,6 +826,29 @@ Pause Steering: ALC will be paused after the brake pedal is manually pressed. 提醒 + + OnroadAlerts + + openpilot Unavailable + + + + Waiting for controls to start + + + + TAKE CONTROL IMMEDIATELY + + + + Controls Unresponsive + + + + Reboot Device + + + OnroadScreenOff @@ -1117,6 +1164,10 @@ Warning: You are on a metered connection! ft ft + + now + + sunnypilot @@ -1160,7 +1211,7 @@ This may take up to a minute. System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot. - + 系統重設已啟動。按下「確認」以清除所有內容和設定,或按下「取消」以繼續開機。 @@ -1169,6 +1220,14 @@ This may take up to a minute. Hyundai/Kia/Genesis + + HKG CAN: Smoother Stopping Performance (Beta) + + + + Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. + + Subaru @@ -1185,6 +1244,14 @@ This may take up to a minute. Toyota/Lexus + + Enable Stock Toyota Longitudinal Control + + + + sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. + + Allow M.A.D.S. toggling w/ LKAS Button (Beta) @@ -1197,34 +1264,6 @@ This may take up to a minute. Note: Enabling this toggle may have unexpected behavior with steering control. It is the driver's responsibility to observe their environment and make decisions accordingly. - - Volkswagen - - - - Enable CC Only support - - - - sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. - - - - HKG CAN: Smoother Stopping Performance (Beta) - - - - Smoother stopping behind a stopped car or desired stopping event. This is only applicable to HKG CAN platforms using openpilot longitudinal control. - - - - Enable Stock Toyota Longitudinal Control - - - - sunnypilot will <b>not</b> take over control of gas and brakes. Stock Toyota longitudinal control will be used. - - Toyota TSS2 Longitudinal: Custom Tuning @@ -1241,6 +1280,18 @@ This may take up to a minute. sunnypilot will allow some Toyota/Lexus cars to auto resume during stop and go traffic. This feature is only applicable to certain models. Use at your own risk. + + Volkswagen + + + + Enable CC Only support + + + + sunnypilot supports Volkswagen MQB CC only platforms with this toggle enabled. Only enable this toggle if your car does not have ACC from the factory. + + SettingsWindow @@ -1379,6 +1430,18 @@ This may take up to a minute. Select a language 選擇語言 + + Choose Software to Install + 選擇要安裝的軟體 + + + openpilot + openpilot + + + Custom Software + 自訂軟體 + SetupWidget @@ -1512,6 +1575,10 @@ This may take up to a minute. Set speed limit slightly higher than actual speed limit for a more natural drive. + + This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. + + Select the desired mode to set the cruising speed to the speed limit: @@ -1524,10 +1591,6 @@ This may take up to a minute. User Confirm: Inform the driver to change set speed of Adaptive Cruise Control to help the driver stay within the speed limit. - - This platform defaults to <b>Auto</b> mode. <b>User Confirm</b> mode is not supported on this platform. - - SoftwarePanel @@ -1618,22 +1681,14 @@ This may take up to a minute. SELECT 選取 - - Select a Driving Model - - - - Reset Calibration - 重設校準 - - - Warning: You are on a metered connection! - - Downloading Driving model + + (CACHED) + + Driving model @@ -1642,10 +1697,6 @@ This may take up to a minute. downloaded - - (CACHED) - - Downloading Navigation model @@ -1674,10 +1725,26 @@ This may take up to a minute. Fetching models... + + Select a Driving Model + + + + Download has started in the background. + + We STRONGLY suggest you to reset calibration. Would you like to do that now? + + Reset Calibration + 重設校準 + + + Warning: You are on a metered connection! + + Continue 繼續 @@ -1686,10 +1753,6 @@ This may take up to a minute. on Metered - - Download has started in the background. - - SpeedLimitPolicySettings @@ -1697,6 +1760,26 @@ This may take up to a minute. Speed Limit Source Policy + + Nav + + + + Only + + + + Map + + + + Car + + + + First + + Select the precedence order of sources. Utilized by Speed Limit Control and Speed Limit Warning @@ -1725,26 +1808,6 @@ This may take up to a minute. Car First: Car -> Nav -> Map - - Nav - - - - Only - - - - Map - - - - Car - - - - First - - SpeedLimitValueOffset @@ -1818,6 +1881,10 @@ This may take up to a minute. SpeedLimitWarningValueOffset + + N/A + 無法使用 + km/h km/h @@ -1826,10 +1893,6 @@ This may take up to a minute. mph mph - - N/A - 無法使用 - SshControl @@ -1880,13 +1943,53 @@ This may take up to a minute. SunnylinkPanel - sunnylink Dongle ID + Enable sunnylink + + + + Device ID N/A 無法使用 + + This is the master switch, it will allow you to cutoff any sunnylink requests should you want to do that. + + + + 🎉Welcome back! We're excited to see you've enabled sunnylink again! 🚀 + + + + 👋Not going to lie, it's sad to see you disabled sunnylink 😢, but we'll be here when you're ready to come back 🎉. + + + + A reboot is required to + + + + start + + + + stop + + + + all connections and processes from sunnylink. + + + + If that's not a problem for you, you can ignore this. + + + + Reboot Now! + + Sponsor Status @@ -1896,7 +1999,19 @@ This may take up to a minute. - Become a sponsor of sunnypilot to get early access to sunnylink features. + Become a sponsor of sunnypilot to get early access to sunnylink features when they become available. + + + + Pair GitHub Account + + + + PAIR + + + + Pair your GitHub account to grant your device sponsor benefits, including API access on sunnylink. @@ -1912,11 +2027,7 @@ This may take up to a minute. - Early alpha access only. Become a sponsor to get early access to sunnylink features. - - - - Become a Sponsor + Back Up @@ -1931,16 +2042,28 @@ This may take up to a minute. Restore + + Early alpha access only. Become a sponsor to get early access to sunnylink features. + + + + Become a Sponsor + + THANKS - Sponsor + Not Sponsor - Not Sponsor + Paired + + + + Not Paired @@ -1951,15 +2074,23 @@ This may take up to a minute. Restoring... - - Back Up - - SunnylinkSponsorPopup - Early Access: Become a sunnypilot Sponsor + Scan the QR code to login to your GitHub account + + + + Follow the prompts to complete the pairing process + + + + Re-enter the "sunnylink" panel to verify sponsorship status + + + + If sponsorship status was not updated, please contact a moderator on Discord at https://discord.gg/sunnypilot @@ -1974,6 +2105,14 @@ This may take up to a minute. Join our community on Discord at https://discord.gg/sunnypilot and reach out to a moderator to confirm your sponsor status + + Pair your GitHub account + + + + Early Access: Become a sunnypilot Sponsor + + SunnypilotPanel @@ -2145,34 +2284,22 @@ This may take up to a minute. Auto - - Speed Limit Assist - - - - NNLC is currently not available on this platform. - - - - Add custom offsets to Camera and Path in sunnypilot. - - - - Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. - - Dynamic Lane Profile - Offline Only + Speed Limit Assist Real-time and Offline + + Offline Only + + Dynamic Lane Profile is not available with the current Driving Model @@ -2181,6 +2308,10 @@ This may take up to a minute. Custom Offsets is not available with the current Driving Model + + NNLC is currently not available on this platform. + + Match: "Exact" is ideal, but "Fuzzy" is fine too. Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server if there are any issues: @@ -2213,12 +2344,20 @@ This may take up to a minute. Match + + Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + + Reach out to the sunnypilot team in the following channel at the sunnypilot Discord server with feedback, or to provide log data for your car if your car is currently unsupported: - Formerly known as <b>"NNFF"</b>, this replaces the lateral <b>"torque"</b> controller with one using a neural network trained on each car's (actually, each separate EPS firmware) driving data for increased controls accuracy. + Add custom offsets to Camera and Path in sunnypilot. + + + + Default is Laneless. In Auto mode, sunnnypilot dynamically chooses between Laneline or Laneless model based on lane recognition confidence level on road and certain conditions. @@ -2351,18 +2490,10 @@ This may take up to a minute. Driving Personality 駕駛風格 - - Standard is recommended. In aggressive mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. - 推薦使用標準模式。在積極模式中,openpilot 會更靠近前車並在加速和剎車方面更積極。在舒適模式中,openpilot 會與前車保持較遠的距離。 - An alpha version of openpilot longitudinal control can be tested, along with Experimental mode, on non-release branches. 在正式 (release) 版以外的分支上可以測試 openpilot 縱向控制的 Alpha 版本以及實驗模式。 - - Navigate on openpilot - Navigate on openpilot - Enable the openpilot longitudinal control (alpha) toggle to allow Experimental mode. 啟用 openpilot 縱向控制(alpha)切換以允許實驗模式。 @@ -2372,12 +2503,16 @@ This may take up to a minute. 端到端縱向控制 - When navigation has a destination, openpilot will input the map information into the model. This provides useful context for the model and allows openpilot to keep left or right appropriately at forks/exits. Lane change behavior is unchanged and still activated by the driver. This is an alpha quality feature; mistakes should be expected, particularly around exits and forks. These mistakes can include unintended laneline crossings, late exit taking, driving towards dividing barriers in the gore areas, etc. - 當導航有目的地時,openpilot 將把地圖資訊輸入模型中。這為模型提供了有用的背景資訊,使 openpilot 能夠在叉路/出口時適當地保持左側或右側行駛。車道變換行為保持不變,仍由駕駛員啟用。這是一個 Alpha 版的功能;可能會出現錯誤,特別是在出口和分叉處。這些錯誤可能包括意外的車道越界、晚出口、朝著分隔欄駛向分隔帶區域等。 + The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. + - The driving visualization will transition to the road-facing wide-angle camera at low speeds to better show some turns. The Experimental mode logo will also be shown in the top right corner. When a navigation destination is set and the driving model is using it as input, the driving path on the map will turn green. - 行駛畫面將在低速時切換至道路朝向的廣角鏡頭,以更好地顯示一些轉彎。實驗模式圖示也將顯示在右上角。當設定了導航目的地並且行駛模型正在將其作為輸入時,地圖上的行駛路徑將變為綠色。 + Always-On Driver Monitoring + 駕駛監控常開 + + + Enable driver monitoring even when openpilot is not engaged. + 即使在openpilot未激活時也啟用駕駛監控。 Enable sunnypilot @@ -2421,7 +2556,7 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. - Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. + Stock is recommended. In aggressive/maniac mode, openpilot will follow lead cars closer and be more aggressive with the gas and brake. In relaxed mode openpilot will stay further away from lead cars. On supported cars, you can cycle through these personalities with your steering wheel distance button. @@ -2607,6 +2742,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. 10 Metrics + + Developer UI + + + + Display real-time parameters and metrics from various sources. + + Distance @@ -2620,6 +2763,14 @@ This feature must be used along with SLC, and/or V-TSC, and/or M-TSC. Speed + + Display Metrics Below Chevron + + + + Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). + + RAM @@ -2636,22 +2787,6 @@ Speed Max - - Developer UI - - - - Display real-time parameters and metrics from various sources. - - - - Display Metrics Below Chevron - - - - Display useful metrics below the chevron that tracks the lead car (only applicable to cars with openpilot longitudinal control). - - Display Temperature on Sidebar diff --git a/selfdrive/ui/ui.cc b/selfdrive/ui/ui.cc index 9a6f355cc7..11ac3ee650 100644 --- a/selfdrive/ui/ui.cc +++ b/selfdrive/ui/ui.cc @@ -263,6 +263,7 @@ void ui_update_params(UIState *s) { s->scene.speed_limit_warning_flash = params.getBool("SpeedLimitWarningFlash"); s->scene.speed_limit_warning_type = std::atoi(params.get("SpeedLimitWarningType").c_str()); s->scene.speed_limit_warning_value_offset = std::atoi(params.get("SpeedLimitWarningValueOffset").c_str()); + s->scene.custom_driving_model = params.getBool("CustomDrivingModel"); s->scene.driving_model_gen = std::atoi(params.get("DrivingModelGeneration").c_str()); s->scene.speed_limit_control_enabled = params.getBool("EnableSlc"); s->scene.feature_status_toggle = params.getBool("FeatureStatus"); diff --git a/selfdrive/ui/ui.h b/selfdrive/ui/ui.h index 37554b4d84..c1caa91021 100644 --- a/selfdrive/ui/ui.h +++ b/selfdrive/ui/ui.h @@ -1,6 +1,5 @@ #pragma once -#include #include #include #include @@ -43,7 +42,6 @@ const float DRIVING_PATH_NARROW = 0.25; const int UI_FREQ = 20; // Hz const int BACKLIGHT_OFFROAD = 50; -typedef cereal::CarControl::HUDControl::AudibleAlert AudibleAlert; const float MIN_DRAW_DISTANCE = 10.0; const float MAX_DRAW_DISTANCE = 100.0; @@ -68,59 +66,6 @@ constexpr vec3 default_face_kpts_3d[] = { {18.02, -49.14, 8.00}, {6.36, -51.20, 8.00}, {-5.98, -51.20, 8.00}, }; -struct Alert { - QString text1; - QString text2; - QString type; - cereal::ControlsState::AlertSize size; - cereal::ControlsState::AlertStatus status; - AudibleAlert sound; - - bool equal(const Alert &a2) { - return text1 == a2.text1 && text2 == a2.text2 && type == a2.type && sound == a2.sound; - } - - static Alert get(const SubMaster &sm, uint64_t started_frame) { - const cereal::ControlsState::Reader &cs = sm["controlsState"].getControlsState(); - const uint64_t controls_frame = sm.rcv_frame("controlsState"); - - Alert alert = {}; - if (controls_frame >= started_frame) { // Don't get old alert. - alert = {cs.getAlertText1().cStr(), cs.getAlertText2().cStr(), - cs.getAlertType().cStr(), cs.getAlertSize(), - cs.getAlertStatus(), - cs.getAlertSound()}; - } - - if (!sm.updated("controlsState") && (sm.frame - started_frame) > 5 * UI_FREQ) { - const int CONTROLS_TIMEOUT = 5; - const int controls_missing = (nanos_since_boot() - sm.rcv_time("controlsState")) / 1e9; - - // Handle controls timeout - if (controls_frame < started_frame) { - // car is started, but controlsState hasn't been seen at all - alert = {"openpilot Unavailable", "Waiting for controls to start", - "controlsWaiting", cereal::ControlsState::AlertSize::MID, - cereal::ControlsState::AlertStatus::NORMAL, - AudibleAlert::NONE}; - } else if (controls_missing > CONTROLS_TIMEOUT && !Hardware::PC()) { - // car is started, but controls is lagging or died - if (cs.getEnabled() && (controls_missing - CONTROLS_TIMEOUT) < 10) { - alert = {"TAKE CONTROL IMMEDIATELY", "Controls Unresponsive", - "controlsUnresponsive", cereal::ControlsState::AlertSize::FULL, - cereal::ControlsState::AlertStatus::CRITICAL, - AudibleAlert::WARNING_IMMEDIATE}; - } else { - alert = {"Controls Unresponsive", "Reboot Device", - "controlsUnresponsivePermanent", cereal::ControlsState::AlertSize::MID, - cereal::ControlsState::AlertStatus::NORMAL, - AudibleAlert::NONE}; - } - } - } - return alert; - } -}; typedef enum UIStatus { STATUS_DISENGAGED, @@ -130,7 +75,8 @@ typedef enum UIStatus { } UIStatus; enum PrimeType { - UNKNOWN = -1, + UNKNOWN = -2, + UNPAIRED = -1, NONE = 0, MAGENTA = 1, LITE = 2, @@ -146,11 +92,6 @@ const QColor bg_colors [] = { [STATUS_MADS] = QColor(0x00, 0xc8, 0xc8, 0xf1), }; -static std::map alert_colors = { - {cereal::ControlsState::AlertStatus::NORMAL, QColor(0x15, 0x15, 0x15, 0xf1)}, - {cereal::ControlsState::AlertStatus::USER_PROMPT, QColor(0xDA, 0x6F, 0x25, 0xf1)}, - {cereal::ControlsState::AlertStatus::CRITICAL, QColor(0xC9, 0x22, 0x31, 0xf1)}, -}; const QColor tcs_colors [] = { [int(cereal::LongitudinalPlanSP::VisionTurnControllerState::DISABLED)] = QColor(0x0, 0x0, 0x0, 0xff), @@ -195,7 +136,8 @@ typedef struct UIScene { float driver_pose_coss[3]; vec3 face_kpts_draw[std::size(default_face_kpts_3d)]; - bool navigate_on_openpilot = false; + bool navigate_on_openpilot_deprecated = false; + cereal::LongitudinalPersonality personality; float light_sensor; bool started, ignition, is_metric, map_on_left, longitudinal_control; @@ -257,6 +199,7 @@ typedef struct UIScene { int speed_limit_warning_type; int speed_limit_warning_value_offset; + bool custom_driving_model; int driving_model_gen; bool feature_status_toggle; @@ -275,7 +218,7 @@ public: void setPrimeType(PrimeType type); inline PrimeType primeType() const { return prime_type; } - inline bool hasPrime() const { return prime_type != PrimeType::UNKNOWN && prime_type != PrimeType::NONE; } + inline bool hasPrime() const { return prime_type > PrimeType::NONE; } void setSunnylinkRoles(const std::vector &roles); void setSunnylinkDeviceUsers(const std::vector &users); diff --git a/selfdrive/ui/ui.py b/selfdrive/ui/ui.py new file mode 100755 index 0000000000..660495b1de --- /dev/null +++ b/selfdrive/ui/ui.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 +import os +import signal + +signal.signal(signal.SIGINT, signal.SIG_DFL) + +import cereal.messaging as messaging +from openpilot.system.hardware import HARDWARE + +from PyQt5.QtCore import Qt, QTimer +from PyQt5.QtWidgets import QLabel, QWidget, QVBoxLayout, QStackedLayout, QApplication +from openpilot.selfdrive.ui.qt.python_helpers import set_main_window + + +if __name__ == "__main__": + app = QApplication([]) + win = QWidget() + set_main_window(win) + + bg = QLabel("", alignment=Qt.AlignCenter) + + alert1 = QLabel() + alert2 = QLabel() + vlayout = QVBoxLayout() + vlayout.addWidget(alert1, alignment=Qt.AlignCenter) + vlayout.addWidget(alert2, alignment=Qt.AlignCenter) + + tmp = QWidget() + tmp.setLayout(vlayout) + + stack = QStackedLayout(win) + stack.addWidget(tmp) + stack.addWidget(bg) + stack.setStackingMode(QStackedLayout.StackAll) + + win.setObjectName("win") + win.setStyleSheet(""" + #win { + background-color: black; + } + QLabel { + color: white; + font-size: 40px; + } + """) + + sm = messaging.SubMaster(['deviceState', 'controlsState']) + + def update(): + sm.update(0) + + onroad = sm.all_checks(['deviceState']) and sm['deviceState'].started + if onroad: + cs = sm['controlsState'] + color = ("grey" if str(cs.state) in ("overriding", "preEnabled") else "green") if cs.enabled else "blue" + bg.setText("\U0001F44D" if cs.engageable else "\U0001F6D1") + bg.setStyleSheet(f"font-size: 100px; background-color: {color};") + bg.show() + + alert1.setText(cs.alertText1) + alert2.setText(cs.alertText2) + + if not sm.alive['controlsState']: + alert1.setText("waiting for controls...") + else: + bg.hide() + alert1.setText("") + alert2.setText("offroad") + + HARDWARE.set_screen_brightness(100 if onroad else 40) + os.system("echo 0 > /sys/class/backlight/panel0-backlight/bl_power") + + timer = QTimer() + timer.timeout.connect(update) + timer.start(50) + + app.exec_() diff --git a/selfdrive/updated/tests/test_base.py b/selfdrive/updated/tests/test_base.py new file mode 100644 index 0000000000..b59f03fe77 --- /dev/null +++ b/selfdrive/updated/tests/test_base.py @@ -0,0 +1,262 @@ +import os +import pathlib +import shutil +import signal +import stat +import subprocess +import tempfile +import time +import unittest +from unittest import mock + +import pytest + +from openpilot.common.params import Params +from openpilot.selfdrive.manager.process import ManagerProcess +from openpilot.selfdrive.test.helpers import processes_context + + +def get_consistent_flag(path: str) -> bool: + consistent_file = pathlib.Path(os.path.join(path, ".overlay_consistent")) + return consistent_file.is_file() + + +def run(args, **kwargs): + return subprocess.check_output(args, **kwargs) + + +def update_release(directory, name, version, agnos_version, release_notes): + with open(directory / "RELEASES.md", "w") as f: + f.write(release_notes) + + (directory / "common").mkdir(exist_ok=True) + + with open(directory / "common" / "version.h", "w") as f: + f.write(f'#define COMMA_VERSION "{version}"') + + launch_env = directory / "launch_env.sh" + with open(launch_env, "w") as f: + f.write(f'export AGNOS_VERSION="{agnos_version}"') + + st = os.stat(launch_env) + os.chmod(launch_env, st.st_mode | stat.S_IEXEC) + + test_symlink = directory / "test_symlink" + if not os.path.exists(str(test_symlink)): + os.symlink("common/version.h", test_symlink) + + +def get_version(path: str) -> str: + with open(os.path.join(path, "common", "version.h")) as f: + return f.read().split('"')[1] + + +@pytest.mark.slow # TODO: can we test overlayfs in GHA? +class BaseUpdateTest(unittest.TestCase): + @classmethod + def setUpClass(cls): + if "Base" in cls.__name__: + raise unittest.SkipTest + + def setUp(self): + self.tmpdir = tempfile.mkdtemp() + + run(["sudo", "mount", "-t", "tmpfs", "tmpfs", self.tmpdir]) # overlayfs doesn't work inside of docker unless this is a tmpfs + + self.mock_update_path = pathlib.Path(self.tmpdir) + + self.params = Params() + + self.basedir = self.mock_update_path / "openpilot" + self.basedir.mkdir() + + self.staging_root = self.mock_update_path / "safe_staging" + self.staging_root.mkdir() + + self.remote_dir = self.mock_update_path / "remote" + self.remote_dir.mkdir() + + mock.patch("openpilot.common.basedir.BASEDIR", self.basedir).start() + + os.environ["UPDATER_STAGING_ROOT"] = str(self.staging_root) + os.environ["UPDATER_LOCK_FILE"] = str(self.mock_update_path / "safe_staging_overlay.lock") + + self.MOCK_RELEASES = { + "release3": ("0.1.2", "1.2", "0.1.2 release notes"), + "master": ("0.1.3", "1.2", "0.1.3 release notes"), + } + + def set_target_branch(self, branch): + self.params.put("UpdaterTargetBranch", branch) + + def setup_basedir_release(self, release): + self.params = Params() + self.set_target_branch(release) + + def update_remote_release(self, release): + raise NotImplementedError("") + + def setup_remote_release(self, release): + raise NotImplementedError("") + + def additional_context(self): + raise NotImplementedError("") + + def tearDown(self): + mock.patch.stopall() + try: + run(["sudo", "umount", "-l", str(self.staging_root / "merged")]) + run(["sudo", "umount", "-l", self.tmpdir]) + shutil.rmtree(self.tmpdir) + except Exception: + print("cleanup failed...") + + def wait_for_condition(self, condition, timeout=12): + start = time.monotonic() + while True: + waited = time.monotonic() - start + if condition(): + print(f"waited {waited}s for condition ") + return waited + + if waited > timeout: + raise TimeoutError("timed out waiting for condition") + + time.sleep(1) + + def _test_finalized_update(self, branch, version, agnos_version, release_notes): + self.assertEqual(get_version(str(self.staging_root / "finalized")), version) + self.assertEqual(get_consistent_flag(str(self.staging_root / "finalized")), True) + self.assertTrue(os.access(str(self.staging_root / "finalized" / "launch_env.sh"), os.X_OK)) + + with open(self.staging_root / "finalized" / "test_symlink") as f: + self.assertIn(version, f.read()) + +class ParamsBaseUpdateTest(BaseUpdateTest): + def _test_finalized_update(self, branch, version, agnos_version, release_notes): + self.assertTrue(self.params.get("UpdaterNewDescription", encoding="utf-8").startswith(f"{version} / {branch}")) + self.assertEqual(self.params.get("UpdaterNewReleaseNotes", encoding="utf-8"), f"

{release_notes}

\n") + super()._test_finalized_update(branch, version, agnos_version, release_notes) + + def send_check_for_updates_signal(self, updated: ManagerProcess): + updated.signal(signal.SIGUSR1.value) + + def send_download_signal(self, updated: ManagerProcess): + updated.signal(signal.SIGHUP.value) + + def _test_params(self, branch, fetch_available, update_available): + self.assertEqual(self.params.get("UpdaterTargetBranch", encoding="utf-8"), branch) + self.assertEqual(self.params.get_bool("UpdaterFetchAvailable"), fetch_available) + self.assertEqual(self.params.get_bool("UpdateAvailable"), update_available) + + def wait_for_idle(self): + self.wait_for_condition(lambda: self.params.get("UpdaterState", encoding="utf-8") == "idle") + + def wait_for_failed(self): + self.wait_for_condition(lambda: self.params.get("UpdateFailedCount", encoding="utf-8") is not None and \ + int(self.params.get("UpdateFailedCount", encoding="utf-8")) > 0) + + def wait_for_fetch_available(self): + self.wait_for_condition(lambda: self.params.get_bool("UpdaterFetchAvailable")) + + def wait_for_update_available(self): + self.wait_for_condition(lambda: self.params.get_bool("UpdateAvailable")) + + def test_no_update(self): + # Start on release3, ensure we don't fetch any updates + self.setup_remote_release("release3") + self.setup_basedir_release("release3") + + with self.additional_context(), processes_context(["updated"]) as [updated]: + self._test_params("release3", False, False) + self.wait_for_idle() + self._test_params("release3", False, False) + + self.send_check_for_updates_signal(updated) + + self.wait_for_idle() + + self._test_params("release3", False, False) + + def test_new_release(self): + # Start on release3, simulate a release3 commit, ensure we fetch that update properly + self.setup_remote_release("release3") + self.setup_basedir_release("release3") + + with self.additional_context(), processes_context(["updated"]) as [updated]: + self._test_params("release3", False, False) + self.wait_for_idle() + self._test_params("release3", False, False) + + self.MOCK_RELEASES["release3"] = ("0.1.3", "1.2", "0.1.3 release notes") + self.update_remote_release("release3") + + self.send_check_for_updates_signal(updated) + + self.wait_for_fetch_available() + + self._test_params("release3", True, False) + + self.send_download_signal(updated) + + self.wait_for_update_available() + + self._test_params("release3", False, True) + self._test_finalized_update("release3", *self.MOCK_RELEASES["release3"]) + + def test_switch_branches(self): + # Start on release3, request to switch to master manually, ensure we switched + self.setup_remote_release("release3") + self.setup_remote_release("master") + self.setup_basedir_release("release3") + + with self.additional_context(), processes_context(["updated"]) as [updated]: + self._test_params("release3", False, False) + self.wait_for_idle() + self._test_params("release3", False, False) + + self.set_target_branch("master") + self.send_check_for_updates_signal(updated) + + self.wait_for_fetch_available() + + self._test_params("master", True, False) + + self.send_download_signal(updated) + + self.wait_for_update_available() + + self._test_params("master", False, True) + self._test_finalized_update("master", *self.MOCK_RELEASES["master"]) + + def test_agnos_update(self): + # Start on release3, push an update with an agnos change + self.setup_remote_release("release3") + self.setup_basedir_release("release3") + + with self.additional_context(), \ + mock.patch("openpilot.system.hardware.AGNOS", "True"), \ + mock.patch("openpilot.system.hardware.tici.hardware.Tici.get_os_version", "1.2"), \ + mock.patch("openpilot.system.hardware.tici.agnos.get_target_slot_number"), \ + mock.patch("openpilot.system.hardware.tici.agnos.flash_agnos_update"), \ + processes_context(["updated"]) as [updated]: + + self._test_params("release3", False, False) + self.wait_for_idle() + self._test_params("release3", False, False) + + self.MOCK_RELEASES["release3"] = ("0.1.3", "1.3", "0.1.3 release notes") + self.update_remote_release("release3") + + self.send_check_for_updates_signal(updated) + + self.wait_for_fetch_available() + + self._test_params("release3", True, False) + + self.send_download_signal(updated) + + self.wait_for_update_available() + + self._test_params("release3", False, True) + self._test_finalized_update("release3", *self.MOCK_RELEASES["release3"]) diff --git a/selfdrive/updated/tests/test_git.py b/selfdrive/updated/tests/test_git.py new file mode 100644 index 0000000000..51ea77fb81 --- /dev/null +++ b/selfdrive/updated/tests/test_git.py @@ -0,0 +1,22 @@ +import contextlib +from openpilot.selfdrive.updated.tests.test_base import ParamsBaseUpdateTest, run, update_release + + +class TestUpdateDGitStrategy(ParamsBaseUpdateTest): + def update_remote_release(self, release): + update_release(self.remote_dir, release, *self.MOCK_RELEASES[release]) + run(["git", "add", "."], cwd=self.remote_dir) + run(["git", "commit", "-m", f"openpilot release {release}"], cwd=self.remote_dir) + + def setup_remote_release(self, release): + run(["git", "init"], cwd=self.remote_dir) + run(["git", "checkout", "-b", release], cwd=self.remote_dir) + self.update_remote_release(release) + + def setup_basedir_release(self, release): + super().setup_basedir_release(release) + run(["git", "clone", "-b", release, self.remote_dir, self.basedir]) + + @contextlib.contextmanager + def additional_context(self): + yield diff --git a/selfdrive/updated.py b/selfdrive/updated/updated.py similarity index 99% rename from selfdrive/updated.py rename to selfdrive/updated/updated.py index 2947aa96bf..2fe7f3fd92 100755 --- a/selfdrive/updated.py +++ b/selfdrive/updated/updated.py @@ -16,10 +16,10 @@ from markdown_it import MarkdownIt from openpilot.common.basedir import BASEDIR from openpilot.common.params import Params from openpilot.common.time import system_time_valid -from openpilot.system.hardware import AGNOS, HARDWARE from openpilot.common.swaglog import cloudlog from openpilot.selfdrive.controls.lib.alertmanager import set_offroad_alert -from openpilot.system.version import is_tested_branch +from openpilot.system.hardware import AGNOS, HARDWARE +from openpilot.system.version import get_build_metadata LOCK_FILE = os.getenv("UPDATER_LOCK_FILE", "/tmp/safe_staging_overlay.lock") STAGING_ROOT = os.getenv("UPDATER_STAGING_ROOT", "/data/safe_staging") @@ -325,8 +325,9 @@ class Updater: now = datetime.datetime.utcnow() dt = now - last_update + build_metadata = get_build_metadata() if failed_count > 15 and exception is not None and self.has_internet: - if is_tested_branch(): + if build_metadata.tested_channel: extra_text = "Ensure the software is correctly installed. Uninstall and re-install if this error persists." else: extra_text = exception diff --git a/system/camerad/cameras/camera_common.cc b/system/camerad/cameras/camera_common.cc index 91c6d44f84..9d82284d9f 100644 --- a/system/camerad/cameras/camera_common.cc +++ b/system/camerad/cameras/camera_common.cc @@ -8,7 +8,6 @@ #include "common/clutil.h" #include "common/swaglog.h" -#include "common/util.h" #include "third_party/linux/include/msm_media_info.h" #include "system/camerad/cameras/camera_qcom2.h" @@ -18,36 +17,38 @@ ExitHandler do_exit; -class Debayer { +class ImgProc { public: - Debayer(cl_device_id device_id, cl_context context, const CameraBuf *b, const CameraState *s, int buf_width, int uv_offset) { + ImgProc(cl_device_id device_id, cl_context context, const CameraBuf *b, const CameraState *s, int buf_width, int uv_offset) { char args[4096]; const SensorInfo *ci = s->ci.get(); snprintf(args, sizeof(args), - "-cl-fast-relaxed-math -cl-denorms-are-zero " + "-cl-fast-relaxed-math -cl-denorms-are-zero -Isensors " "-DFRAME_WIDTH=%d -DFRAME_HEIGHT=%d -DFRAME_STRIDE=%d -DFRAME_OFFSET=%d " "-DRGB_WIDTH=%d -DRGB_HEIGHT=%d -DYUV_STRIDE=%d -DUV_OFFSET=%d " - "-DIS_OX=%d -DCAM_NUM=%d%s", - ci->frame_width, ci->frame_height, ci->frame_stride, ci->frame_offset, + "-DSENSOR_ID=%hu -DHDR_OFFSET=%d -DVIGNETTING=%d ", + ci->frame_width, ci->frame_height, ci->hdr_offset > 0 ? ci->frame_stride * 2 : ci->frame_stride, ci->frame_offset, b->rgb_width, b->rgb_height, buf_width, uv_offset, - ci->image_sensor == cereal::FrameData::ImageSensor::OX03C10, s->camera_num, s->camera_num==1 ? " -DVIGNETTING" : ""); - const char *cl_file = "cameras/real_debayer.cl"; - cl_program prg_debayer = cl_program_from_file(context, device_id, cl_file, args); - krnl_ = CL_CHECK_ERR(clCreateKernel(prg_debayer, "debayer10", &err)); - CL_CHECK(clReleaseProgram(prg_debayer)); + static_cast(ci->image_sensor), ci->hdr_offset, s->camera_num == 1); + const char *cl_file = "cameras/process_raw.cl"; + cl_program prg_imgproc = cl_program_from_file(context, device_id, cl_file, args); + krnl_ = CL_CHECK_ERR(clCreateKernel(prg_imgproc, "process_raw", &err)); + CL_CHECK(clReleaseProgram(prg_imgproc)); + } - void queue(cl_command_queue q, cl_mem cam_buf_cl, cl_mem buf_cl, int width, int height, cl_event *debayer_event) { + void queue(cl_command_queue q, cl_mem cam_buf_cl, cl_mem buf_cl, int width, int height, cl_event *imgproc_event, int expo_time) { CL_CHECK(clSetKernelArg(krnl_, 0, sizeof(cl_mem), &cam_buf_cl)); CL_CHECK(clSetKernelArg(krnl_, 1, sizeof(cl_mem), &buf_cl)); + CL_CHECK(clSetKernelArg(krnl_, 2, sizeof(cl_int), &expo_time)); const size_t globalWorkSize[] = {size_t(width / 2), size_t(height / 2)}; - const int debayer_local_worksize = 16; - const size_t localWorkSize[] = {debayer_local_worksize, debayer_local_worksize}; - CL_CHECK(clEnqueueNDRangeKernel(q, krnl_, 2, NULL, globalWorkSize, localWorkSize, 0, 0, debayer_event)); + const int imgproc_local_worksize = 16; + const size_t localWorkSize[] = {imgproc_local_worksize, imgproc_local_worksize}; + CL_CHECK(clEnqueueNDRangeKernel(q, krnl_, 2, NULL, globalWorkSize, localWorkSize, 0, 0, imgproc_event)); } - ~Debayer() { + ~ImgProc() { CL_CHECK(clReleaseKernel(krnl_)); } @@ -73,18 +74,22 @@ void CameraBuf::init(cl_device_id device_id, cl_context context, CameraState *s, LOGD("allocated %d CL buffers", frame_buf_count); rgb_width = ci->frame_width; - rgb_height = ci->frame_height; + rgb_height = ci->hdr_offset > 0 ? (ci->frame_height - ci->hdr_offset) / 2 : ci->frame_height; int nv12_width = VENUS_Y_STRIDE(COLOR_FMT_NV12, rgb_width); int nv12_height = VENUS_Y_SCANLINES(COLOR_FMT_NV12, rgb_height); assert(nv12_width == VENUS_UV_STRIDE(COLOR_FMT_NV12, rgb_width)); assert(nv12_height/2 == VENUS_UV_SCANLINES(COLOR_FMT_NV12, rgb_height)); - size_t nv12_size = 2346 * nv12_width; // comes from v4l2_format.fmt.pix_mp.plane_fmt[0].sizeimage size_t nv12_uv_offset = nv12_width * nv12_height; + + // the encoder HW tells us the size it wants after setting it up. + // TODO: VENUS_BUFFER_SIZE should give the size, but it's too small. dependent on encoder settings? + size_t nv12_size = (rgb_width >= 2688 ? 2900 : 2346)*nv12_width; + vipc_server->create_buffers_with_sizes(stream_type, YUV_BUFFER_COUNT, false, rgb_width, rgb_height, nv12_size, nv12_width, nv12_uv_offset); LOGD("created %d YUV vipc buffers with size %dx%d", YUV_BUFFER_COUNT, nv12_width, nv12_height); - debayer = new Debayer(device_id, context, this, s, nv12_width, nv12_uv_offset); + imgproc = new ImgProc(device_id, context, this, s, nv12_width, nv12_uv_offset); const cl_queue_properties props[] = {0}; //CL_QUEUE_PRIORITY_KHR, CL_QUEUE_PRIORITY_HIGH_KHR, 0}; q = CL_CHECK_ERR(clCreateCommandQueueWithProperties(context, device_id, props, &err)); @@ -94,7 +99,7 @@ CameraBuf::~CameraBuf() { for (int i = 0; i < frame_buf_count; i++) { camera_bufs[i].free(); } - if (debayer) delete debayer; + if (imgproc) delete imgproc; if (q) CL_CHECK(clReleaseCommandQueue(q)); } @@ -112,7 +117,7 @@ bool CameraBuf::acquire() { double start_time = millis_since_boot(); cl_event event; - debayer->queue(q, camera_bufs[cur_buf_idx].buf_cl, cur_yuv_buf->buf_cl, rgb_width, rgb_height, &event); + imgproc->queue(q, camera_bufs[cur_buf_idx].buf_cl, cur_yuv_buf->buf_cl, rgb_width, rgb_height, &event, cur_frame_data.integ_lines); clWaitForEvents(1, &event); CL_CHECK(clReleaseEvent(event)); cur_frame_data.processing_time = (millis_since_boot() - start_time) / 1000.0; @@ -252,14 +257,14 @@ static void publish_thumbnail(PubMaster *pm, const CameraBuf *b) { pm->send("thumbnail", msg); } -float set_exposure_target(const CameraBuf *b, int x_start, int x_end, int x_skip, int y_start, int y_end, int y_skip) { +float set_exposure_target(const CameraBuf *b, Rect ae_xywh, int x_skip, int y_skip) { int lum_med; uint32_t lum_binning[256] = {0}; const uint8_t *pix_ptr = b->cur_yuv_buf->y; unsigned int lum_total = 0; - for (int y = y_start; y < y_end; y += y_skip) { - for (int x = x_start; x < x_end; x += x_skip) { + for (int y = ae_xywh.y; y < ae_xywh.y + ae_xywh.h; y += y_skip) { + for (int x = ae_xywh.x; x < ae_xywh.x + ae_xywh.w; x += x_skip) { uint8_t lum = pix_ptr[(y * b->rgb_width) + x]; lum_binning[lum]++; lum_total += 1; diff --git a/system/camerad/cameras/camera_common.h b/system/camerad/cameras/camera_common.h index f98691ef00..587968fccb 100644 --- a/system/camerad/cameras/camera_common.h +++ b/system/camerad/cameras/camera_common.h @@ -7,6 +7,7 @@ #include "cereal/messaging/messaging.h" #include "cereal/visionipc/visionipc_server.h" #include "common/queue.h" +#include "common/util.h" const int YUV_BUFFER_COUNT = 20; @@ -44,12 +45,12 @@ typedef struct FrameMetadata { struct MultiCameraState; class CameraState; -class Debayer; +class ImgProc; class CameraBuf { private: VisionIpcServer *vipc_server; - Debayer *debayer = nullptr; + ImgProc *imgproc = nullptr; VisionStreamType stream_type; int cur_buf_idx; SafeQueue safe_queue; @@ -75,7 +76,7 @@ typedef void (*process_thread_cb)(MultiCameraState *s, CameraState *c, int cnt); void fill_frame_data(cereal::FrameData::Builder &framed, const FrameMetadata &frame_data, CameraState *c); kj::Array get_raw_frame_image(const CameraBuf *b); -float set_exposure_target(const CameraBuf *b, int x_start, int x_end, int x_skip, int y_start, int y_end, int y_skip); +float set_exposure_target(const CameraBuf *b, Rect ae_xywh, int x_skip, int y_skip); std::thread start_process_thread(MultiCameraState *cameras, CameraState *cs, process_thread_cb callback); void cameras_init(VisionIpcServer *v, MultiCameraState *s, cl_device_id device_id, cl_context ctx); diff --git a/system/camerad/cameras/camera_qcom2.cc b/system/camerad/cameras/camera_qcom2.cc index 3191b821ac..096e288cc2 100644 --- a/system/camerad/cameras/camera_qcom2.cc +++ b/system/camerad/cameras/camera_qcom2.cc @@ -31,8 +31,7 @@ int CameraState::clear_req_queue() { req_mgr_flush_request.session_hdl = session_handle; req_mgr_flush_request.link_hdl = link_handle; req_mgr_flush_request.flush_type = CAM_REQ_MGR_FLUSH_TYPE_ALL; - int ret; - ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_FLUSH_REQ, &req_mgr_flush_request, sizeof(req_mgr_flush_request)); + int ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_FLUSH_REQ, &req_mgr_flush_request, sizeof(req_mgr_flush_request)); // LOGD("flushed all req: %d", ret); return ret; } @@ -396,6 +395,35 @@ void CameraState::enqueue_req_multi(int start, int n, bool dp) { // ******************* camera ******************* +void CameraState::set_exposure_rect() { + // set areas for each camera, shouldn't be changed + std::vector> ae_targets = { + // (Rect, F) + std::make_pair((Rect){96, 250, 1734, 524}, 567.0), // wide + std::make_pair((Rect){96, 160, 1734, 986}, 2648.0), // road + std::make_pair((Rect){96, 242, 1736, 906}, 567.0) // driver + }; + int h_ref = 1208; + /* + exposure target intrinics is + [ + [F, 0, 0.5*ae_xywh[2]] + [0, F, 0.5*H-ae_xywh[1]] + [0, 0, 1] + ] + */ + auto ae_target = ae_targets[camera_num]; + Rect xywh_ref = ae_target.first; + float fl_ref = ae_target.second; + + ae_xywh = (Rect){ + std::max(0, buf.rgb_width / 2 - (int)(fl_pix / fl_ref * xywh_ref.w / 2)), + std::max(0, buf.rgb_height / 2 - (int)(fl_pix / fl_ref * (h_ref / 2 - xywh_ref.y))), + std::min((int)(fl_pix / fl_ref * xywh_ref.w), buf.rgb_width / 2 + (int)(fl_pix / fl_ref * xywh_ref.w / 2)), + std::min((int)(fl_pix / fl_ref * xywh_ref.h), buf.rgb_height / 2 + (int)(fl_pix / fl_ref * (h_ref / 2 - xywh_ref.y))) + }; +} + void CameraState::sensor_set_parameters() { target_grey_fraction = 0.3; @@ -421,7 +449,7 @@ void CameraState::camera_map_bufs(MultiCameraState *s) { enqueue_req_multi(1, FRAME_BUF_COUNT, 0); } -void CameraState::camera_init(MultiCameraState *s, VisionIpcServer * v, cl_device_id device_id, cl_context ctx, VisionStreamType yuv_type) { +void CameraState::camera_init(MultiCameraState *s, VisionIpcServer * v, cl_device_id device_id, cl_context ctx, VisionStreamType yuv_type, float focal_len) { if (!enabled) return; LOGD("camera init %d", camera_num); @@ -430,6 +458,9 @@ void CameraState::camera_init(MultiCameraState *s, VisionIpcServer * v, cl_devic buf.init(device_id, ctx, this, v, FRAME_BUF_COUNT, yuv_type); camera_map_bufs(s); + + fl_pix = focal_len / ci->pixel_size_mm; + set_exposure_rect(); } void CameraState::camera_open(MultiCameraState *multi_cam_state_, int camera_num_, bool enabled_) { @@ -438,7 +469,6 @@ void CameraState::camera_open(MultiCameraState *multi_cam_state_, int camera_num enabled = enabled_; if (!enabled) return; - int ret; sensor_fd = open_v4l_by_name_and_index("cam-sensor-driver", camera_num); assert(sensor_fd >= 0); LOGD("opened sensor for %d", camera_num); @@ -469,7 +499,7 @@ void CameraState::camera_open(MultiCameraState *multi_cam_state_, int camera_num // create session struct cam_req_mgr_session_info session_info = {}; - ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_CREATE_SESSION, &session_info, sizeof(session_info)); + int ret = do_cam_control(multi_cam_state->video0_fd, CAM_REQ_MGR_CREATE_SESSION, &session_info, sizeof(session_info)); LOGD("get session: %d 0x%X", ret, session_info.session_hdl); session_handle = session_info.session_hdl; @@ -614,16 +644,14 @@ void CameraState::camera_open(MultiCameraState *multi_cam_state_, int camera_num } void cameras_init(VisionIpcServer *v, MultiCameraState *s, cl_device_id device_id, cl_context ctx) { - s->driver_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_DRIVER); - s->road_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_ROAD); - s->wide_road_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_WIDE_ROAD); + s->driver_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_DRIVER, DRIVER_FL_MM); + s->road_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_ROAD, ROAD_FL_MM); + s->wide_road_cam.camera_init(s, v, device_id, ctx, VISION_STREAM_WIDE_ROAD, WIDE_FL_MM); s->pm = new PubMaster({"roadCameraState", "driverCameraState", "wideRoadCameraState", "thumbnail"}); } void cameras_open(MultiCameraState *s) { - int ret; - LOG("-- Opening devices"); // video0 is req_mgr, the target of many ioctls s->video0_fd = HANDLE_EINTR(open("/dev/v4l/by-path/platform-soc:qcom_cam-req-mgr-video-index0", O_RDWR | O_NONBLOCK)); @@ -647,7 +675,7 @@ void cameras_open(MultiCameraState *s) { query_cap_cmd.handle_type = 1; query_cap_cmd.caps_handle = (uint64_t)&isp_query_cap_cmd; query_cap_cmd.size = sizeof(isp_query_cap_cmd); - ret = do_cam_control(s->isp_fd, CAM_QUERY_CAP, &query_cap_cmd, sizeof(query_cap_cmd)); + int ret = do_cam_control(s->isp_fd, CAM_QUERY_CAP, &query_cap_cmd, sizeof(query_cap_cmd)); assert(ret == 0); LOGD("using MMU handle: %x", isp_query_cap_cmd.device_iommu.non_secure); LOGD("using MMU handle: %x", isp_query_cap_cmd.cdm_iommu.non_secure); @@ -671,15 +699,13 @@ void cameras_open(MultiCameraState *s) { } void CameraState::camera_close() { - int ret; - // stop devices LOG("-- Stop devices %d", camera_num); if (enabled) { // ret = device_control(sensor_fd, CAM_STOP_DEV, session_handle, sensor_dev_handle); // LOGD("stop sensor: %d", ret); - ret = device_control(multi_cam_state->isp_fd, CAM_STOP_DEV, session_handle, isp_dev_handle); + int ret = device_control(multi_cam_state->isp_fd, CAM_STOP_DEV, session_handle, isp_dev_handle); LOGD("stop isp: %d", ret); ret = device_control(csiphy_fd, CAM_STOP_DEV, session_handle, csiphy_dev_handle); LOGD("stop csiphy: %d", ret); @@ -714,7 +740,7 @@ void CameraState::camera_close() { LOGD("released buffers"); } - ret = device_control(sensor_fd, CAM_RELEASE_DEV, session_handle, sensor_dev_handle); + int ret = device_control(sensor_fd, CAM_RELEASE_DEV, session_handle, sensor_dev_handle); LOGD("release sensor: %d", ret); // destroyed session @@ -902,7 +928,7 @@ void CameraState::set_camera_exposure(float grey_frac) { } static void process_driver_camera(MultiCameraState *s, CameraState *c, int cnt) { - c->set_camera_exposure(set_exposure_target(&c->buf, 96, 1832, 2, 242, 1148, 4)); + c->set_camera_exposure(set_exposure_target(&c->buf, c->ae_xywh, 2, 4)); MessageBuilder msg; auto framed = msg.initEvent().initDriverCameraState(); @@ -927,9 +953,8 @@ void process_road_camera(MultiCameraState *s, CameraState *c, int cnt) { c->ci->processRegisters(c, framed); s->pm->send(c == &s->road_cam ? "roadCameraState" : "wideRoadCameraState", msg); - const auto [x, y, w, h] = (c == &s->wide_road_cam) ? std::tuple(96, 250, 1734, 524) : std::tuple(96, 160, 1734, 986); const int skip = 2; - c->set_camera_exposure(set_exposure_target(b, x, x + w, skip, y, y + h, skip)); + c->set_camera_exposure(set_exposure_target(b, c->ae_xywh, skip, skip)); } void cameras_run(MultiCameraState *s) { diff --git a/system/camerad/cameras/camera_qcom2.h b/system/camerad/cameras/camera_qcom2.h index 47ca578b99..0b15c9c3f0 100644 --- a/system/camerad/cameras/camera_qcom2.h +++ b/system/camerad/cameras/camera_qcom2.h @@ -11,6 +11,10 @@ #define FRAME_BUF_COUNT 4 +#define ROAD_FL_MM 8.0f +#define WIDE_FL_MM 1.71f +#define DRIVER_FL_MM 1.71f + class CameraState { public: MultiCameraState *multi_cam_state; @@ -30,6 +34,7 @@ public: int new_exp_g; int new_exp_t; + Rect ae_xywh; float measured_grey_fraction; float target_grey_fraction; @@ -37,6 +42,7 @@ public: unique_fd csiphy_fd; int camera_num; + float fl_pix; void handle_camera_event(void *evdat); void update_exposure_score(float desired_ev, int exp_t, int exp_g_idx, float exp_gain); @@ -45,9 +51,10 @@ public: void sensors_start(); void camera_open(MultiCameraState *multi_cam_state, int camera_num, bool enabled); + void set_exposure_rect(); void sensor_set_parameters(); void camera_map_bufs(MultiCameraState *s); - void camera_init(MultiCameraState *s, VisionIpcServer *v, cl_device_id device_id, cl_context ctx, VisionStreamType yuv_type); + void camera_init(MultiCameraState *s, VisionIpcServer *v, cl_device_id device_id, cl_context ctx, VisionStreamType yuv_type, float focal_len); void camera_close(); int32_t session_handle; diff --git a/system/camerad/cameras/camera_util.cc b/system/camerad/cameras/camera_util.cc index 4fe38997ce..7bd23fd9fe 100644 --- a/system/camerad/cameras/camera_util.cc +++ b/system/camerad/cameras/camera_util.cc @@ -86,11 +86,10 @@ void *alloc_w_mmu_hdl(int video0_fd, int len, uint32_t *handle, int align, int f } void release(int video0_fd, uint32_t handle) { - int ret; struct cam_mem_mgr_release_cmd mem_mgr_release_cmd = {0}; mem_mgr_release_cmd.buf_handle = handle; - ret = do_cam_control(video0_fd, CAM_REQ_MGR_RELEASE_BUF, &mem_mgr_release_cmd, sizeof(mem_mgr_release_cmd)); + int ret = do_cam_control(video0_fd, CAM_REQ_MGR_RELEASE_BUF, &mem_mgr_release_cmd, sizeof(mem_mgr_release_cmd)); assert(ret == 0); } diff --git a/system/camerad/cameras/process_raw.cl b/system/camerad/cameras/process_raw.cl new file mode 100644 index 0000000000..6f6612fab0 --- /dev/null +++ b/system/camerad/cameras/process_raw.cl @@ -0,0 +1,238 @@ +#include "ar0231_cl.h" +#include "ox03c10_cl.h" +#include "os04c10_cl.h" + +#define UV_WIDTH RGB_WIDTH / 2 +#define UV_HEIGHT RGB_HEIGHT / 2 + +#define RGB_TO_Y(r, g, b) ((((mul24(b, 13) + mul24(g, 65) + mul24(r, 33)) + 64) >> 7) + 16) +#define RGB_TO_U(r, g, b) ((mul24(b, 56) - mul24(g, 37) - mul24(r, 19) + 0x8080) >> 8) +#define RGB_TO_V(r, g, b) ((mul24(r, 56) - mul24(g, 47) - mul24(b, 9) + 0x8080) >> 8) +#define AVERAGE(x, y, z, w) ((convert_ushort(x) + convert_ushort(y) + convert_ushort(z) + convert_ushort(w) + 1) >> 1) + +#if defined(BGGR) + #define ROW_READ_ORDER (int[]){3, 2, 1, 0} + #define RGB_WRITE_ORDER (int[]){2, 3, 0, 1} +#else + #define ROW_READ_ORDER (int[]){0, 1, 2, 3} + #define RGB_WRITE_ORDER (int[]){0, 1, 2, 3} +#endif + +float get_vignetting_s(float r) { + if (r < 62500) { + return (1.0f + 0.0000008f*r); + } else if (r < 490000) { + return (0.9625f + 0.0000014f*r); + } else if (r < 1102500) { + return (1.26434f + 0.0000000000016f*r*r); + } else { + return (0.53503625f + 0.0000000000022f*r*r); + } +} + +int4 parse_12bit(uchar8 pvs) { + // lower bits scambled? + return (int4)(((int)pvs.s0<<4) + (pvs.s1>>4), + ((int)pvs.s2<<4) + (pvs.s4&0xF), + ((int)pvs.s3<<4) + (pvs.s4>>4), + ((int)pvs.s5<<4) + (pvs.s7&0xF)); +} + +int4 parse_10bit(uchar8 pvs, uchar ext, bool aligned) { + if (aligned) { + return (int4)(((int)pvs.s0 << 2) + (pvs.s1 & 0b00000011), + ((int)pvs.s2 << 2) + ((pvs.s6 & 0b11000000) / 64), + ((int)pvs.s3 << 2) + ((pvs.s6 & 0b00110000) / 16), + ((int)pvs.s4 << 2) + ((pvs.s6 & 0b00001100) / 4)); + } else { + return (int4)(((int)pvs.s0 << 2) + ((pvs.s3 & 0b00110000) / 16), + ((int)pvs.s1 << 2) + ((pvs.s3 & 0b00001100) / 4), + ((int)pvs.s2 << 2) + ((pvs.s3 & 0b00000011)), + ((int)pvs.s4 << 2) + ((ext & 0b11000000) / 64)); + } +} + +float get_k(float a, float b, float c, float d) { + return 2.0 - (fabs(a - b) + fabs(c - d)); +} + +__kernel void process_raw(const __global uchar * in, __global uchar * out, int expo_time) +{ + const int gid_x = get_global_id(0); + const int gid_y = get_global_id(1); + + // estimate vignetting + #if VIGNETTING + int gx = (gid_x*2 - RGB_WIDTH/2); + int gy = (gid_y*2 - RGB_HEIGHT/2); + const float vignette_factor = get_vignetting_s((gx*gx + gy*gy) / VIGNETTE_RSZ); + #else + const float vignette_factor = 1.0; + #endif + + const int row_before_offset = (gid_y == 0) ? 2 : 0; + const int row_after_offset = (gid_y == (RGB_HEIGHT/2 - 1)) ? 1 : 3; + + float3 rgb_tmp; + uchar3 rgb_out[4]; // output is 2x2 window + + // read offset + int start_idx; + #if BIT_DEPTH == 10 + bool aligned10; + if (gid_x % 2 == 0) { + aligned10 = true; + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (5 * gid_x / 2 - 2) + (FRAME_STRIDE * FRAME_OFFSET); + } else { + aligned10 = false; + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (5 * (gid_x - 1) / 2 + 1) + (FRAME_STRIDE * FRAME_OFFSET); + } + #else + start_idx = (2 * gid_y - 1) * FRAME_STRIDE + (3 * gid_x - 2) + (FRAME_STRIDE * FRAME_OFFSET); + #endif + + // read in 4 rows, 8 uchars each + uchar8 dat[4]; + // row_before + dat[0] = vload8(0, in + start_idx + FRAME_STRIDE*row_before_offset); + // row_0 + if (gid_x == 0 && gid_y == 0) { + // this wasn't a problem due to extra rows + dat[1] = vload8(0, in + start_idx + FRAME_STRIDE*1 + 2); + dat[1] = (uchar8)(0, 0, dat[1].s0, dat[1].s1, dat[1].s2, dat[1].s3, dat[1].s4, dat[1].s5); + } else { + dat[1] = vload8(0, in + start_idx + FRAME_STRIDE*1); + } + // row_1 + dat[2] = vload8(0, in + start_idx + FRAME_STRIDE*2); + // row_after + dat[3] = vload8(0, in + start_idx + FRAME_STRIDE*row_after_offset); + // need extra bit for 10-bit, 4 rows, 1 uchar each + #if BIT_DEPTH == 10 + uchar extra_dat[4]; + if (!aligned10) { + extra_dat[0] = in[start_idx + FRAME_STRIDE*row_before_offset + 8]; + extra_dat[1] = in[start_idx + FRAME_STRIDE*1 + 8]; + extra_dat[2] = in[start_idx + FRAME_STRIDE*2 + 8]; + extra_dat[3] = in[start_idx + FRAME_STRIDE*row_after_offset + 8]; + } + #endif + + // read odd rows for staggered second exposure + #if HDR_OFFSET > 0 + uchar8 short_dat[4]; + short_dat[0] = vload8(0, in + start_idx + FRAME_STRIDE*(row_before_offset+HDR_OFFSET/2) + FRAME_STRIDE/2); + short_dat[1] = vload8(0, in + start_idx + FRAME_STRIDE*(1+HDR_OFFSET/2) + FRAME_STRIDE/2); + short_dat[2] = vload8(0, in + start_idx + FRAME_STRIDE*(2+HDR_OFFSET/2) + FRAME_STRIDE/2); + short_dat[3] = vload8(0, in + start_idx + FRAME_STRIDE*(row_after_offset+HDR_OFFSET/2) + FRAME_STRIDE/2); + #if BIT_DEPTH == 10 + uchar short_extra_dat[4]; + if (!aligned10) { + short_extra_dat[0] = in[start_idx + FRAME_STRIDE*(row_before_offset+HDR_OFFSET/2) + FRAME_STRIDE/2 + 8]; + short_extra_dat[1] = in[start_idx + FRAME_STRIDE*(1+HDR_OFFSET/2) + FRAME_STRIDE/2 + 8]; + short_extra_dat[2] = in[start_idx + FRAME_STRIDE*(2+HDR_OFFSET/2) + FRAME_STRIDE/2 + 8]; + short_extra_dat[3] = in[start_idx + FRAME_STRIDE*(row_after_offset+HDR_OFFSET/2) + FRAME_STRIDE/2 + 8]; + } + #endif + #endif + + // parse into floats 0.0-1.0 + float4 v_rows[4]; + #if BIT_DEPTH == 10 + // for now it's always HDR + int4 parsed = parse_10bit(dat[0], extra_dat[0], aligned10); + int4 short_parsed = parse_10bit(short_dat[0], short_extra_dat[0], aligned10); + v_rows[ROW_READ_ORDER[0]] = normalize_pv_hdr(parsed, short_parsed, vignette_factor, expo_time); + parsed = parse_10bit(dat[1], extra_dat[1], aligned10); + short_parsed = parse_10bit(short_dat[1], short_extra_dat[1], aligned10); + v_rows[ROW_READ_ORDER[1]] = normalize_pv_hdr(parsed, short_parsed, vignette_factor, expo_time); + parsed = parse_10bit(dat[2], extra_dat[2], aligned10); + short_parsed = parse_10bit(short_dat[2], short_extra_dat[2], aligned10); + v_rows[ROW_READ_ORDER[2]] = normalize_pv_hdr(parsed, short_parsed, vignette_factor, expo_time); + parsed = parse_10bit(dat[3], extra_dat[3], aligned10); + short_parsed = parse_10bit(short_dat[3], short_extra_dat[3], aligned10); + v_rows[ROW_READ_ORDER[3]] = normalize_pv_hdr(parsed, short_parsed, vignette_factor, expo_time); + #else + // no HDR here + int4 parsed = parse_12bit(dat[0]); + v_rows[ROW_READ_ORDER[0]] = normalize_pv(parsed, vignette_factor); + parsed = parse_12bit(dat[1]); + v_rows[ROW_READ_ORDER[1]] = normalize_pv(parsed, vignette_factor); + parsed = parse_12bit(dat[2]); + v_rows[ROW_READ_ORDER[2]] = normalize_pv(parsed, vignette_factor); + parsed = parse_12bit(dat[3]); + v_rows[ROW_READ_ORDER[3]] = normalize_pv(parsed, vignette_factor); + #endif + + // mirror padding + if (gid_x == 0) { + v_rows[0].s0 = v_rows[0].s2; + v_rows[1].s0 = v_rows[1].s2; + v_rows[2].s0 = v_rows[2].s2; + v_rows[3].s0 = v_rows[3].s2; + } else if (gid_x == RGB_WIDTH/2 - 1) { + v_rows[0].s3 = v_rows[0].s1; + v_rows[1].s3 = v_rows[1].s1; + v_rows[2].s3 = v_rows[2].s1; + v_rows[3].s3 = v_rows[3].s1; + } + + // debayering + // a simplified version of https://opensignalprocessingjournal.com/contents/volumes/V6/TOSIGPJ-6-1/TOSIGPJ-6-1.pdf + const float k01 = get_k(v_rows[0].s0, v_rows[1].s1, v_rows[0].s2, v_rows[1].s1); + const float k02 = get_k(v_rows[0].s2, v_rows[1].s1, v_rows[2].s2, v_rows[1].s1); + const float k03 = get_k(v_rows[2].s0, v_rows[1].s1, v_rows[2].s2, v_rows[1].s1); + const float k04 = get_k(v_rows[0].s0, v_rows[1].s1, v_rows[2].s0, v_rows[1].s1); + rgb_tmp.x = (k02*v_rows[1].s2+k04*v_rows[1].s0)/(k02+k04); // R_G1 + rgb_tmp.y = v_rows[1].s1; // G1(R) + rgb_tmp.z = (k01*v_rows[0].s1+k03*v_rows[2].s1)/(k01+k03); // B_G1 + rgb_out[RGB_WRITE_ORDER[0]] = convert_uchar3_sat(apply_gamma(color_correct(clamp(rgb_tmp, 0.0, 1.0)), expo_time) * 255.0); + + const float k11 = get_k(v_rows[0].s1, v_rows[2].s1, v_rows[0].s3, v_rows[2].s3); + const float k12 = get_k(v_rows[0].s2, v_rows[1].s1, v_rows[1].s3, v_rows[2].s2); + const float k13 = get_k(v_rows[0].s1, v_rows[0].s3, v_rows[2].s1, v_rows[2].s3); + const float k14 = get_k(v_rows[0].s2, v_rows[1].s3, v_rows[2].s2, v_rows[1].s1); + rgb_tmp.x = v_rows[1].s2; // R + rgb_tmp.y = (k11*(v_rows[0].s2+v_rows[2].s2)*0.5+k13*(v_rows[1].s3+v_rows[1].s1)*0.5)/(k11+k13); // G_R + rgb_tmp.z = (k12*(v_rows[0].s3+v_rows[2].s1)*0.5+k14*(v_rows[0].s1+v_rows[2].s3)*0.5)/(k12+k14); // B_R + rgb_out[RGB_WRITE_ORDER[1]] = convert_uchar3_sat(apply_gamma(color_correct(clamp(rgb_tmp, 0.0, 1.0)), expo_time) * 255.0); + + const float k21 = get_k(v_rows[1].s0, v_rows[3].s0, v_rows[1].s2, v_rows[3].s2); + const float k22 = get_k(v_rows[1].s1, v_rows[2].s0, v_rows[2].s2, v_rows[3].s1); + const float k23 = get_k(v_rows[1].s0, v_rows[1].s2, v_rows[3].s0, v_rows[3].s2); + const float k24 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[3].s1, v_rows[2].s0); + rgb_tmp.x = (k22*(v_rows[1].s2+v_rows[3].s0)*0.5+k24*(v_rows[1].s0+v_rows[3].s2)*0.5)/(k22+k24); // R_B + rgb_tmp.y = (k21*(v_rows[1].s1+v_rows[3].s1)*0.5+k23*(v_rows[2].s2+v_rows[2].s0)*0.5)/(k21+k23); // G_B + rgb_tmp.z = v_rows[2].s1; // B + rgb_out[RGB_WRITE_ORDER[2]] = convert_uchar3_sat(apply_gamma(color_correct(clamp(rgb_tmp, 0.0, 1.0)), expo_time) * 255.0); + + const float k31 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[1].s3, v_rows[2].s2); + const float k32 = get_k(v_rows[1].s3, v_rows[2].s2, v_rows[3].s3, v_rows[2].s2); + const float k33 = get_k(v_rows[3].s1, v_rows[2].s2, v_rows[3].s3, v_rows[2].s2); + const float k34 = get_k(v_rows[1].s1, v_rows[2].s2, v_rows[3].s1, v_rows[2].s2); + rgb_tmp.x = (k31*v_rows[1].s2+k33*v_rows[3].s2)/(k31+k33); // R_G2 + rgb_tmp.y = v_rows[2].s2; // G2(B) + rgb_tmp.z = (k32*v_rows[2].s3+k34*v_rows[2].s1)/(k32+k34); // B_G2 + rgb_out[RGB_WRITE_ORDER[3]] = convert_uchar3_sat(apply_gamma(color_correct(clamp(rgb_tmp, 0.0, 1.0)), expo_time) * 255.0); + + // rgb2yuv(nv12) + uchar2 yy = (uchar2)( + RGB_TO_Y(rgb_out[0].s0, rgb_out[0].s1, rgb_out[0].s2), + RGB_TO_Y(rgb_out[1].s0, rgb_out[1].s1, rgb_out[1].s2) + ); + vstore2(yy, 0, out + mad24(gid_y * 2, YUV_STRIDE, gid_x * 2)); + yy = (uchar2)( + RGB_TO_Y(rgb_out[2].s0, rgb_out[2].s1, rgb_out[2].s2), + RGB_TO_Y(rgb_out[3].s0, rgb_out[3].s1, rgb_out[3].s2) + ); + vstore2(yy, 0, out + mad24(gid_y * 2 + 1, YUV_STRIDE, gid_x * 2)); + + const short ar = AVERAGE(rgb_out[0].s0, rgb_out[1].s0, rgb_out[2].s0, rgb_out[3].s0); + const short ag = AVERAGE(rgb_out[0].s1, rgb_out[1].s1, rgb_out[2].s1, rgb_out[3].s1); + const short ab = AVERAGE(rgb_out[0].s2, rgb_out[1].s2, rgb_out[2].s2, rgb_out[3].s2); + uchar2 uv = (uchar2)( + RGB_TO_U(ar, ag, ab), + RGB_TO_V(ar, ag, ab) + ); + vstore2(uv, 0, out + UV_OFFSET + mad24(gid_y, YUV_STRIDE, gid_x * 2)); +} diff --git a/system/camerad/main.cc b/system/camerad/main.cc index 19de21c9bb..b86b4f57ff 100644 --- a/system/camerad/main.cc +++ b/system/camerad/main.cc @@ -12,8 +12,7 @@ int main(int argc, char *argv[]) { return 0; } - int ret; - ret = util::set_realtime_priority(53); + int ret = util::set_realtime_priority(53); assert(ret == 0); ret = util::set_core_affinity({6}); assert(ret == 0 || Params().getBool("IsOffroad")); // failure ok while offroad due to offlining cores diff --git a/system/camerad/sensors/ar0231.cc b/system/camerad/sensors/ar0231.cc index 1ca4b3f1ad..9b688389c4 100644 --- a/system/camerad/sensors/ar0231.cc +++ b/system/camerad/sensors/ar0231.cc @@ -79,15 +79,16 @@ float ar0231_parse_temp_sensor(uint16_t calib1, uint16_t calib2, uint16_t data_r AR0231::AR0231() { image_sensor = cereal::FrameData::ImageSensor::AR0231; + pixel_size_mm = 0.003; data_word = true; - frame_width = FRAME_WIDTH; - frame_height = FRAME_HEIGHT; - frame_stride = FRAME_STRIDE; + frame_width = 1928; + frame_height = 1208; + frame_stride = (frame_width * 12 / 8) + 4; extra_height = AR0231_REGISTERS_HEIGHT + AR0231_STATS_HEIGHT; registers_offset = 0; frame_offset = AR0231_REGISTERS_HEIGHT; - stats_offset = AR0231_REGISTERS_HEIGHT + FRAME_HEIGHT; + stats_offset = AR0231_REGISTERS_HEIGHT + frame_height; start_reg_array.assign(std::begin(start_reg_array_ar0231), std::end(start_reg_array_ar0231)); init_reg_array.assign(std::begin(init_array_ar0231), std::end(init_array_ar0231)); diff --git a/system/camerad/sensors/ar0231_cl.h b/system/camerad/sensors/ar0231_cl.h new file mode 100644 index 0000000000..8e96bbce5b --- /dev/null +++ b/system/camerad/sensors/ar0231_cl.h @@ -0,0 +1,33 @@ +#if SENSOR_ID == 1 + +#define BIT_DEPTH 12 +#define PV_MAX 4096 +#define BLACK_LVL 168 +#define VIGNETTE_RSZ 1.0f + +float4 normalize_pv(int4 parsed, float vignette_factor) { + float4 pv = (convert_float4(parsed) - BLACK_LVL) / (PV_MAX - BLACK_LVL); + return clamp(pv*vignette_factor, 0.0, 1.0); +} + +float3 color_correct(float3 rgb) { + float3 corrected = rgb.x * (float3)(1.82717181, -0.31231438, 0.07307673); + corrected += rgb.y * (float3)(-0.5743977, 1.36858544, -0.53183455); + corrected += rgb.z * (float3)(-0.25277411, -0.05627105, 1.45875782); + return corrected; +} + +float3 apply_gamma(float3 rgb, int expo_time) { + // tone mapping params + const float gamma_k = 0.75; + const float gamma_b = 0.125; + const float mp = 0.01; // ideally midpoint should be adaptive + const float rk = 9 - 100*mp; + + // poly approximation for s curve + return (rgb > mp) ? + ((rk * (rgb-mp) * (1-(gamma_k*mp+gamma_b)) * (1+1/(rk*(1-mp))) / (1+rk*(rgb-mp))) + gamma_k*mp + gamma_b) : + ((rk * (rgb-mp) * (gamma_k*mp+gamma_b) * (1+1/(rk*mp)) / (1-rk*(rgb-mp))) + gamma_k*mp + gamma_b); +} + +#endif \ No newline at end of file diff --git a/system/camerad/sensors/os04c10.cc b/system/camerad/sensors/os04c10.cc index 449e06be83..97a317407a 100644 --- a/system/camerad/sensors/os04c10.cc +++ b/system/camerad/sensors/os04c10.cc @@ -10,30 +10,23 @@ const float sensor_analog_gains_OS04C10[] = { 10.5, 11.0, 11.5, 12.0, 12.5, 13.0, 13.5, 14.0, 14.5, 15.0, 15.5}; const uint32_t os04c10_analog_gains_reg[] = { - 0x100, 0x110, 0x120, 0x130, 0x140, 0x150, 0x160, 0x170, 0x180, 0x190, 0x1B0, - 0x1D0, 0x1F0, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, 0x2E0, 0x300, - 0x320, 0x360, 0x3A0, 0x3E0, 0x400, 0x440, 0x480, 0x4C0, 0x500, 0x540, 0x580, - 0x5C0, 0x600, 0x640, 0x680, 0x700, 0x780, 0x800, 0x880, 0x900, 0x980, 0xA00, - 0xA80, 0xB00, 0xB80, 0xC00, 0xC80, 0xD00, 0xD80, 0xE00, 0xE80, 0xF00, 0xF80}; - -const uint32_t VS_TIME_MIN_OS04C10 = 1; -//const uint32_t VS_TIME_MAX_OS04C10 = 34; // vs < 35 + 0x080, 0x088, 0x090, 0x098, 0x0A0, 0x0A8, 0x0B0, 0x0B8, 0x0C0, 0x0C8, 0x0D8, + 0x0E8, 0x0F8, 0x100, 0x110, 0x120, 0x130, 0x140, 0x150, 0x160, 0x170, 0x180, + 0x190, 0x1B0, 0x1D0, 0x1F0, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2A0, 0x2C0, + 0x2E0, 0x300, 0x320, 0x340, 0x380, 0x3C0, 0x400, 0x440, 0x480, 0x4C0, 0x500, + 0x540, 0x580, 0x5C0, 0x600, 0x640, 0x680, 0x6C0, 0x700, 0x740, 0x780, 0x7C0}; } // namespace OS04C10::OS04C10() { image_sensor = cereal::FrameData::ImageSensor::OS04C10; + pixel_size_mm = 0.002; data_word = false; - frame_width = 1920; - frame_height = 1080; - frame_stride = (1920*10/8); - - /* - frame_width = 0xa80; - frame_height = 0x5f0; - frame_stride = 0xd20; - */ + hdr_offset = 64 * 2 + 8; // stagger + frame_width = 2688; + frame_height = 1520 * 2 + hdr_offset; + frame_stride = (frame_width * 10 / 8); // no alignment extra_height = 0; frame_offset = 0; @@ -46,13 +39,13 @@ OS04C10::OS04C10() { frame_data_type = 0x2b; mclk_frequency = 24000000; // Hz - dc_gain_factor = 7.32; + dc_gain_factor = 1; dc_gain_min_weight = 1; // always on is fine dc_gain_max_weight = 1; dc_gain_on_grey = 0.9; dc_gain_off_grey = 1.0; - exposure_time_min = 2; // 1x - exposure_time_max = 2016; + exposure_time_min = 2; + exposure_time_max = 2400; analog_gain_min_idx = 0x0; analog_gain_rec_idx = 0x0; // 1x analog_gain_max_idx = 0x36; @@ -62,30 +55,19 @@ OS04C10::OS04C10() { for (int i = 0; i <= analog_gain_max_idx; i++) { sensor_analog_gains[i] = sensor_analog_gains_OS04C10[i]; } - min_ev = (exposure_time_min + VS_TIME_MIN_OS04C10) * sensor_analog_gains[analog_gain_min_idx]; + min_ev = (exposure_time_min) * sensor_analog_gains[analog_gain_min_idx]; max_ev = exposure_time_max * dc_gain_factor * sensor_analog_gains[analog_gain_max_idx]; target_grey_factor = 0.01; } std::vector OS04C10::getExposureRegisters(int exposure_time, int new_exp_g, bool dc_gain_enabled) const { - // t_HCG&t_LCG + t_VS on LPD, t_SPD on SPD - uint32_t hcg_time = exposure_time; - //uint32_t lcg_time = hcg_time; - //uint32_t spd_time = std::min(std::max((uint32_t)exposure_time, (exposure_time_max + VS_TIME_MAX_OS04C10) / 3), exposure_time_max + VS_TIME_MAX_OS04C10); - //uint32_t vs_time = std::min(std::max((uint32_t)exposure_time / 40, VS_TIME_MIN_OS04C10), VS_TIME_MAX_OS04C10); - + uint32_t long_time = exposure_time; uint32_t real_gain = os04c10_analog_gains_reg[new_exp_g]; - hcg_time = 100; - real_gain = 0x320; - return { - {0x3501, hcg_time>>8}, {0x3502, hcg_time&0xFF}, - //{0x3581, lcg_time>>8}, {0x3582, lcg_time&0xFF}, - //{0x3541, spd_time>>8}, {0x3542, spd_time&0xFF}, - //{0x35c2, vs_time&0xFF}, - + {0x3501, long_time>>8}, {0x3502, long_time&0xFF}, {0x3508, real_gain>>8}, {0x3509, real_gain&0xFF}, + {0x350c, real_gain>>8}, {0x350d, real_gain&0xFF}, }; } @@ -100,6 +82,6 @@ float OS04C10::getExposureScore(float desired_ev, int exp_t, int exp_g_idx, floa score += std::abs(exp_g_idx - (int)analog_gain_rec_idx) * m; score += ((1 - analog_gain_cost_delta) + analog_gain_cost_delta * (exp_g_idx - analog_gain_min_idx) / (analog_gain_max_idx - analog_gain_min_idx)) * - std::abs(exp_g_idx - gain_idx) * 5.0; + std::abs(exp_g_idx - gain_idx) * 3.0; return score; } diff --git a/system/camerad/sensors/os04c10_cl.h b/system/camerad/sensors/os04c10_cl.h new file mode 100644 index 0000000000..61775dcdc8 --- /dev/null +++ b/system/camerad/sensors/os04c10_cl.h @@ -0,0 +1,55 @@ +#if SENSOR_ID == 3 + +#define BGGR + +#define BIT_DEPTH 10 +#define PV_MAX10 1023 +#define PV_MAX16 65536 // gamma curve is calibrated to 16bit +#define BLACK_LVL 64 +#define VIGNETTE_RSZ 2.2545f + +float combine_dual_pvs(float lv, float sv, int expo_time) { + float svc = fmax(sv * expo_time, (float)(64 * (PV_MAX10 - BLACK_LVL))); + float svd = sv * fmin(expo_time, 8.0) / 8; + + if (expo_time > 64) { + if (lv < PV_MAX10 - BLACK_LVL) { + return lv / (PV_MAX16 - BLACK_LVL); + } else { + return (svc / 64) / (PV_MAX16 - BLACK_LVL); + } + } else { + if (lv > 32) { + return (lv * 64 / fmax(expo_time, 8.0)) / (PV_MAX16 - BLACK_LVL); + } else { + return svd / (PV_MAX16 - BLACK_LVL); + } + } +} + +float4 normalize_pv_hdr(int4 parsed, int4 short_parsed, float vignette_factor, int expo_time) { + float4 pl = convert_float4(parsed - BLACK_LVL); + float4 ps = convert_float4(short_parsed - BLACK_LVL); + float4 pv; + pv.s0 = combine_dual_pvs(pl.s0, ps.s0, expo_time); + pv.s1 = combine_dual_pvs(pl.s1, ps.s1, expo_time); + pv.s2 = combine_dual_pvs(pl.s2, ps.s2, expo_time); + pv.s3 = combine_dual_pvs(pl.s3, ps.s3, expo_time); + return clamp(pv*vignette_factor, 0.0, 1.0); +} + +float3 color_correct(float3 rgb) { + float3 corrected = rgb.x * (float3)(1.55361989, -0.268894615, -0.000593219); + corrected += rgb.y * (float3)(-0.421217301, 1.51883144, -0.69760146); + corrected += rgb.z * (float3)(-0.132402589, -0.249936825, 1.69819468); + return corrected; +} + +float3 apply_gamma(float3 rgb, int expo_time) { + float s = log2((float)expo_time); + if (s < 6) {s = fmin(12.0 - s, 9.0);} + // log function adaptive to number of bits + return clamp(log(1 + rgb*(PV_MAX16 - BLACK_LVL)) * (0.48*s*s - 12.92*s + 115.0) - (1.08*s*s - 29.2*s + 260.0), 0.0, 255.0) / 255.0; +} + +#endif diff --git a/system/camerad/sensors/os04c10_registers.h b/system/camerad/sensors/os04c10_registers.h index ad91a02950..91eb48b24f 100644 --- a/system/camerad/sensors/os04c10_registers.h +++ b/system/camerad/sensors/os04c10_registers.h @@ -4,69 +4,59 @@ const struct i2c_random_wr_payload start_reg_array_os04c10[] = {{0x100, 1}}; const struct i2c_random_wr_payload stop_reg_array_os04c10[] = {{0x100, 0}}; const struct i2c_random_wr_payload init_array_os04c10[] = { - // OS04C10_AA_00_02_17_wAO_1920x1080_MIPI728Mbps_Linear12bit_20FPS_4Lane_MCLK24MHz + // DP_2688X1520_NEWSTG_MIPI0776Mbps_30FPS_10BIT_FOURLANE {0x0103, 0x01}, + + // PLL {0x0301, 0x84}, {0x0303, 0x01}, - {0x0305, 0x5b}, + {0x0305, 0x61}, {0x0306, 0x01}, {0x0307, 0x17}, {0x0323, 0x04}, {0x0324, 0x01}, - {0x0325, 0x62}, + {0x0325, 0x7a}, + {0x3012, 0x06}, {0x3013, 0x02}, {0x3016, 0x72}, {0x3021, 0x03}, {0x3106, 0x21}, {0x3107, 0xa1}, - {0x3500, 0x00}, - {0x3501, 0x00}, - {0x3502, 0x40}, - {0x3503, 0x88}, - {0x3508, 0x07}, - {0x3509, 0xc0}, - {0x350a, 0x04}, - {0x350b, 0x00}, - {0x350c, 0x07}, - {0x350d, 0xc0}, - {0x350e, 0x04}, - {0x350f, 0x00}, - {0x3510, 0x00}, - {0x3511, 0x00}, - {0x3512, 0x20}, + + // ? {0x3624, 0x00}, {0x3625, 0x4c}, - {0x3660, 0x00}, + {0x3660, 0x04}, {0x3666, 0xa5}, {0x3667, 0xa5}, - {0x366a, 0x64}, + {0x366a, 0x54}, {0x3673, 0x0d}, {0x3672, 0x0d}, {0x3671, 0x0d}, {0x3670, 0x0d}, - {0x3685, 0x00}, + {0x3685, 0x0a}, {0x3694, 0x0d}, {0x3693, 0x0d}, {0x3692, 0x0d}, {0x3691, 0x0d}, {0x3696, 0x4c}, {0x3697, 0x4c}, - {0x3698, 0x40}, + {0x3698, 0x00}, {0x3699, 0x80}, - {0x369a, 0x18}, + {0x369a, 0x80}, {0x369b, 0x1f}, - {0x369c, 0x14}, + {0x369c, 0x1f}, {0x369d, 0x80}, {0x369e, 0x40}, {0x369f, 0x21}, {0x36a0, 0x12}, - {0x36a1, 0x5d}, + {0x36a1, 0xdd}, {0x36a2, 0x66}, {0x370a, 0x00}, - {0x370e, 0x0c}, + {0x370e, 0x00}, {0x3710, 0x00}, - {0x3713, 0x00}, + {0x3713, 0x04}, {0x3725, 0x02}, {0x372a, 0x03}, {0x3738, 0xce}, @@ -75,10 +65,10 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x374c, 0x00}, {0x374e, 0x00}, {0x3756, 0x00}, - {0x3757, 0x0e}, + {0x3757, 0x00}, {0x3767, 0x00}, {0x3771, 0x00}, - {0x377b, 0x20}, + {0x377b, 0x28}, {0x377c, 0x00}, {0x377d, 0x0c}, {0x3781, 0x03}, @@ -91,26 +81,29 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x37ba, 0x03}, {0x37bb, 0x00}, {0x37bc, 0x04}, - {0x37be, 0x08}, + {0x37be, 0x26}, {0x37c4, 0x11}, {0x37c5, 0x80}, {0x37c6, 0x14}, - {0x37c7, 0x08}, + {0x37c7, 0xa8}, {0x37da, 0x11}, {0x381f, 0x08}, - {0x3829, 0x03}, + // {0x3829, 0x03}, + // {0x3832, 0x00}, {0x3881, 0x00}, {0x3888, 0x04}, {0x388b, 0x00}, {0x3c80, 0x10}, {0x3c86, 0x00}, - {0x3c8c, 0x20}, + // {0x3c8c, 0x20}, {0x3c9f, 0x01}, {0x3d85, 0x1b}, {0x3d8c, 0x71}, {0x3d8d, 0xe2}, {0x3f00, 0x0b}, {0x3f06, 0x04}, + + // BLC {0x400a, 0x01}, {0x400b, 0x50}, {0x400e, 0x08}, @@ -128,18 +121,19 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x40b7, 0x00}, {0x40b8, 0x00}, {0x40b9, 0x00}, - {0x40ba, 0x00}, + {0x40ba, 0x01}, + {0x4301, 0x00}, {0x4303, 0x00}, {0x4502, 0x04}, {0x4503, 0x00}, {0x4504, 0x06}, {0x4506, 0x00}, - {0x4507, 0x64}, + {0x4507, 0x57}, {0x4803, 0x00}, {0x480c, 0x32}, - {0x480e, 0x00}, - {0x4813, 0x00}, + {0x480e, 0x04}, + {0x4813, 0xe4}, {0x4819, 0x70}, {0x481f, 0x30}, {0x4823, 0x3f}, @@ -156,27 +150,33 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x4d0b, 0x01}, {0x4e00, 0x2a}, {0x4e0d, 0x00}, - {0x5001, 0x09}, + + // ISP + {0x5001, 0x00}, {0x5004, 0x00}, {0x5080, 0x04}, - {0x5036, 0x00}, + {0x5036, 0x80}, {0x5180, 0x70}, {0x5181, 0x10}, + + // DPC {0x520a, 0x03}, {0x520b, 0x06}, {0x520c, 0x0c}, + {0x580b, 0x0f}, {0x580d, 0x00}, {0x580f, 0x00}, {0x5820, 0x00}, {0x5821, 0x00}, + {0x301c, 0xf8}, {0x301e, 0xb4}, - {0x301f, 0xd0}, + {0x301f, 0xf0}, {0x3022, 0x01}, {0x3109, 0xe7}, {0x3600, 0x00}, - {0x3610, 0x65}, + {0x3610, 0x75}, {0x3611, 0x85}, {0x3613, 0x3a}, {0x3615, 0x60}, @@ -186,10 +186,10 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x3661, 0x04}, {0x3664, 0x70}, {0x3665, 0x00}, - {0x3681, 0xa6}, - {0x3682, 0x53}, - {0x3683, 0x2a}, - {0x3684, 0x15}, + {0x3681, 0x80}, + {0x3682, 0x40}, + {0x3683, 0x21}, + {0x3684, 0x12}, {0x3700, 0x2a}, {0x3701, 0x12}, {0x3703, 0x28}, @@ -198,7 +198,7 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x3709, 0x4a}, {0x370b, 0xa2}, {0x370c, 0x01}, - {0x370f, 0x04}, + {0x370f, 0x00}, {0x3714, 0x24}, {0x3716, 0x04}, {0x3719, 0x11}, @@ -233,66 +233,103 @@ const struct i2c_random_wr_payload init_array_os04c10[] = { {0x37c0, 0x11}, {0x37c2, 0x04}, {0x37cd, 0x19}, - {0x37e0, 0x08}, - {0x37e6, 0x04}, + // {0x37e0, 0x08}, + // {0x37e6, 0x04}, {0x37e5, 0x02}, - {0x37e1, 0x0c}, - {0x3737, 0x04}, + // {0x37e1, 0x0c}, + // {0x3737, 0x04}, {0x37d8, 0x02}, - {0x37e2, 0x10}, + // {0x37e2, 0x10}, {0x3739, 0x10}, {0x3662, 0x10}, - {0x37e4, 0x20}, - {0x37e3, 0x08}, + // {0x37e4, 0x20}, + // {0x37e3, 0x08}, {0x37d9, 0x08}, {0x4040, 0x00}, {0x4041, 0x07}, {0x4008, 0x02}, {0x4009, 0x0d}, - {0x3800, 0x01}, - {0x3801, 0x80}, - {0x3802, 0x00}, - {0x3803, 0xdc}, - {0x3804, 0x09}, - {0x3805, 0x0f}, - {0x3806, 0x05}, - {0x3807, 0x23}, - {0x3808, 0x07}, - {0x3809, 0x80}, - {0x380a, 0x04}, - {0x380b, 0x38}, - {0x380c, 0x04}, - {0x380d, 0x2e}, - {0x380e, 0x12}, - {0x380f, 0x70}, + + // FSIN + {0x3002, 0x22}, + {0x3663, 0x22}, + {0x368a, 0x04}, + {0x3822, 0x44}, + {0x3823, 0x00}, + {0x3829, 0x03}, + {0x3832, 0xf8}, + {0x382c, 0x00}, + {0x3844, 0x06}, + {0x3843, 0x00}, + {0x382a, 0x00}, + {0x382b, 0x0c}, + + // 2704x1536 -> 2688x1520 out + {0x3800, 0x00}, {0x3801, 0x00}, + {0x3802, 0x00}, {0x3803, 0x00}, + {0x3804, 0x0a}, {0x3805, 0x8f}, + {0x3806, 0x05}, {0x3807, 0xff}, + {0x3808, 0x0a}, {0x3809, 0x80}, + {0x380a, 0x05}, {0x380b, 0xf0}, {0x3811, 0x08}, {0x3813, 0x08}, {0x3814, 0x01}, {0x3815, 0x01}, {0x3816, 0x01}, {0x3817, 0x01}, - {0x3820, 0xB0}, - {0x3821, 0x00}, - {0x3880, 0x25}, + + {0x380c, 0x04}, {0x380d, 0x2e}, // HTS + {0x380e, 0x09}, {0x380f, 0xdb}, // VTS + + {0x3820, 0xb0}, + {0x3821, 0x04}, + {0x3880, 0x00}, {0x3882, 0x20}, {0x3c91, 0x0b}, {0x3c94, 0x45}, - {0x3cad, 0x00}, - {0x3cae, 0x00}, + // {0x3cad, 0x00}, + // {0x3cae, 0x00}, {0x4000, 0xf3}, {0x4001, 0x60}, {0x4003, 0x40}, {0x4300, 0xff}, {0x4302, 0x0f}, - {0x4305, 0x83}, + {0x4305, 0x93}, {0x4505, 0x84}, - {0x4809, 0x1e}, + {0x4809, 0x0e}, {0x480a, 0x04}, - {0x4837, 0x15}, + {0x4837, 0x14}, {0x4c00, 0x08}, {0x4c01, 0x08}, {0x4c04, 0x00}, {0x4c05, 0x00}, {0x5000, 0xf9}, - {0x3c8c, 0x10}, + // {0x0100, 0x01}, + // {0x320d, 0x00}, + // {0x3208, 0xa0}, + // {0x3822, 0x14}, + + // initialize exposure + {0x3503, 0x88}, + + // long + {0x3500, 0x00}, {0x3501, 0x00}, {0x3502, 0x10}, + {0x3508, 0x00}, {0x3509, 0x80}, + {0x350a, 0x04}, {0x350b, 0x00}, + + // short + {0x3510, 0x00}, {0x3511, 0x00}, {0x3512, 0x40}, + {0x350c, 0x00}, {0x350d, 0x80}, + {0x350e, 0x04}, {0x350f, 0x00}, + + // wb + // b + {0x5100, 0x06}, {0x5101, 0x7e}, + {0x5140, 0x06}, {0x5141, 0x7e}, + // g + {0x5102, 0x04}, {0x5103, 0x00}, + {0x5142, 0x04}, {0x5143, 0x00}, + // r + {0x5104, 0x08}, {0x5105, 0xd6}, + {0x5144, 0x08}, {0x5145, 0xd6}, }; diff --git a/system/camerad/sensors/ox03c10.cc b/system/camerad/sensors/ox03c10.cc index 1f0609820b..94efa0ea24 100644 --- a/system/camerad/sensors/ox03c10.cc +++ b/system/camerad/sensors/ox03c10.cc @@ -23,10 +23,11 @@ const uint32_t VS_TIME_MAX_OX03C10 = 34; // vs < 35 OX03C10::OX03C10() { image_sensor = cereal::FrameData::ImageSensor::OX03C10; + pixel_size_mm = 0.003; data_word = false; - frame_width = FRAME_WIDTH; - frame_height = FRAME_HEIGHT; - frame_stride = FRAME_STRIDE; // (0xa80*12//8) + frame_width = 1928; + frame_height = 1208; + frame_stride = (frame_width * 12 / 8) + 4; extra_height = 16; // top 2 + bot 14 frame_offset = 2; diff --git a/system/camerad/cameras/real_debayer.cl b/system/camerad/sensors/ox03c10_cl.h similarity index 88% rename from system/camerad/cameras/real_debayer.cl rename to system/camerad/sensors/ox03c10_cl.h index e15a873d6d..21441902fc 100644 --- a/system/camerad/cameras/real_debayer.cl +++ b/system/camerad/sensors/ox03c10_cl.h @@ -1,197 +1,43 @@ -#define UV_WIDTH RGB_WIDTH / 2 -#define UV_HEIGHT RGB_HEIGHT / 2 +#if SENSOR_ID == 2 -#define RGB_TO_Y(r, g, b) ((((mul24(b, 13) + mul24(g, 65) + mul24(r, 33)) + 64) >> 7) + 16) -#define RGB_TO_U(r, g, b) ((mul24(b, 56) - mul24(g, 37) - mul24(r, 19) + 0x8080) >> 8) -#define RGB_TO_V(r, g, b) ((mul24(r, 56) - mul24(g, 47) - mul24(b, 9) + 0x8080) >> 8) -#define AVERAGE(x, y, z, w) ((convert_ushort(x) + convert_ushort(y) + convert_ushort(z) + convert_ushort(w) + 1) >> 1) - -float3 color_correct(float3 rgb) { - // color correction - #if IS_OX - float3 x = rgb.x * (float3)(1.5664815 , -0.29808738, -0.03973474); - x += rgb.y * (float3)(-0.48672447, 1.41914433, -0.40295248); - x += rgb.z * (float3)(-0.07975703, -0.12105695, 1.44268722); - #else - float3 x = rgb.x * (float3)(1.82717181, -0.31231438, 0.07307673); - x += rgb.y * (float3)(-0.5743977, 1.36858544, -0.53183455); - x += rgb.z * (float3)(-0.25277411, -0.05627105, 1.45875782); - #endif - - #if IS_OX - return -0.507089*exp(-12.54124638*x)+0.9655*powr(x,0.5)-0.472597*x+0.507089; - #else - // tone mapping params - const float gamma_k = 0.75; - const float gamma_b = 0.125; - const float mp = 0.01; // ideally midpoint should be adaptive - const float rk = 9 - 100*mp; - - // poly approximation for s curve - return (x > mp) ? - ((rk * (x-mp) * (1-(gamma_k*mp+gamma_b)) * (1+1/(rk*(1-mp))) / (1+rk*(x-mp))) + gamma_k*mp + gamma_b) : - ((rk * (x-mp) * (gamma_k*mp+gamma_b) * (1+1/(rk*mp)) / (1-rk*(x-mp))) + gamma_k*mp + gamma_b); - #endif -} - -float get_vignetting_s(float r) { - if (r < 62500) { - return (1.0f + 0.0000008f*r); - } else if (r < 490000) { - return (0.9625f + 0.0000014f*r); - } else if (r < 1102500) { - return (1.26434f + 0.0000000000016f*r*r); - } else { - return (0.53503625f + 0.0000000000022f*r*r); - } -} +#define BIT_DEPTH 12 +#define BLACK_LVL 64 +#define VIGNETTE_RSZ 1.0f constant float ox03c10_lut[] = { - 0.0000e+00, 5.9488e-08, 1.1898e-07, 1.7846e-07, 2.3795e-07, 2.9744e-07, 3.5693e-07, 4.1642e-07, 4.7591e-07, 5.3539e-07, 5.9488e-07, 6.5437e-07, 7.1386e-07, 7.7335e-07, 8.3284e-07, 8.9232e-07, 9.5181e-07, 1.0113e-06, 1.0708e-06, 1.1303e-06, 1.1898e-06, 1.2493e-06, 1.3087e-06, 1.3682e-06, 1.4277e-06, 1.4872e-06, 1.5467e-06, 1.6062e-06, 1.6657e-06, 1.7252e-06, 1.7846e-06, 1.8441e-06, 1.9036e-06, 1.9631e-06, 2.0226e-06, 2.0821e-06, 2.1416e-06, 2.2011e-06, 2.2606e-06, 2.3200e-06, 2.3795e-06, 2.4390e-06, 2.4985e-06, 2.5580e-06, 2.6175e-06, 2.6770e-06, 2.7365e-06, 2.7959e-06, 2.8554e-06, 2.9149e-06, 2.9744e-06, 3.0339e-06, 3.0934e-06, 3.1529e-06, 3.2124e-06, 3.2719e-06, 3.3313e-06, 3.3908e-06, 3.4503e-06, 3.5098e-06, 3.5693e-06, 3.6288e-06, 3.6883e-06, 3.7478e-06, 3.8072e-06, 3.8667e-06, 3.9262e-06, 3.9857e-06, 4.0452e-06, 4.1047e-06, 4.1642e-06, 4.2237e-06, 4.2832e-06, 4.3426e-06, 4.4021e-06, 4.4616e-06, 4.5211e-06, 4.5806e-06, 4.6401e-06, 4.6996e-06, 4.7591e-06, 4.8185e-06, 4.8780e-06, 4.9375e-06, 4.9970e-06, 5.0565e-06, 5.1160e-06, 5.1755e-06, 5.2350e-06, 5.2945e-06, 5.3539e-06, 5.4134e-06, 5.4729e-06, 5.5324e-06, 5.5919e-06, 5.6514e-06, 5.7109e-06, 5.7704e-06, 5.8298e-06, 5.8893e-06, 5.9488e-06, 6.0083e-06, 6.0678e-06, 6.1273e-06, 6.1868e-06, 6.2463e-06, 6.3058e-06, 6.3652e-06, 6.4247e-06, 6.4842e-06, 6.5437e-06, 6.6032e-06, 6.6627e-06, 6.7222e-06, 6.7817e-06, 6.8411e-06, 6.9006e-06, 6.9601e-06, 7.0196e-06, 7.0791e-06, 7.1386e-06, 7.1981e-06, 7.2576e-06, 7.3171e-06, 7.3765e-06, 7.4360e-06, 7.4955e-06, 7.5550e-06, 7.6145e-06, 7.6740e-06, 7.7335e-06, 7.7930e-06, 7.8524e-06, 7.9119e-06, 7.9714e-06, 8.0309e-06, 8.0904e-06, 8.1499e-06, 8.2094e-06, 8.2689e-06, 8.3284e-06, 8.3878e-06, 8.4473e-06, 8.5068e-06, 8.5663e-06, 8.6258e-06, 8.6853e-06, 8.7448e-06, 8.8043e-06, 8.8637e-06, 8.9232e-06, 8.9827e-06, 9.0422e-06, 9.1017e-06, 9.1612e-06, 9.2207e-06, 9.2802e-06, 9.3397e-06, 9.3991e-06, 9.4586e-06, 9.5181e-06, 9.5776e-06, 9.6371e-06, 9.6966e-06, 9.7561e-06, 9.8156e-06, 9.8750e-06, 9.9345e-06, 9.9940e-06, 1.0054e-05, 1.0113e-05, 1.0172e-05, 1.0232e-05, 1.0291e-05, 1.0351e-05, 1.0410e-05, 1.0470e-05, 1.0529e-05, 1.0589e-05, 1.0648e-05, 1.0708e-05, 1.0767e-05, 1.0827e-05, 1.0886e-05, 1.0946e-05, 1.1005e-05, 1.1065e-05, 1.1124e-05, 1.1184e-05, 1.1243e-05, 1.1303e-05, 1.1362e-05, 1.1422e-05, 1.1481e-05, 1.1541e-05, 1.1600e-05, 1.1660e-05, 1.1719e-05, 1.1779e-05, 1.1838e-05, 1.1898e-05, 1.1957e-05, 1.2017e-05, 1.2076e-05, 1.2136e-05, 1.2195e-05, 1.2255e-05, 1.2314e-05, 1.2374e-05, 1.2433e-05, 1.2493e-05, 1.2552e-05, 1.2612e-05, 1.2671e-05, 1.2730e-05, 1.2790e-05, 1.2849e-05, 1.2909e-05, 1.2968e-05, 1.3028e-05, 1.3087e-05, 1.3147e-05, 1.3206e-05, 1.3266e-05, 1.3325e-05, 1.3385e-05, 1.3444e-05, 1.3504e-05, 1.3563e-05, 1.3623e-05, 1.3682e-05, 1.3742e-05, 1.3801e-05, 1.3861e-05, 1.3920e-05, 1.3980e-05, 1.4039e-05, 1.4099e-05, 1.4158e-05, 1.4218e-05, 1.4277e-05, 1.4337e-05, 1.4396e-05, 1.4456e-05, 1.4515e-05, 1.4575e-05, 1.4634e-05, 1.4694e-05, 1.4753e-05, 1.4813e-05, 1.4872e-05, 1.4932e-05, 1.4991e-05, 1.5051e-05, 1.5110e-05, 1.5169e-05, - 1.5229e-05, 1.5288e-05, 1.5348e-05, 1.5407e-05, 1.5467e-05, 1.5526e-05, 1.5586e-05, 1.5645e-05, 1.5705e-05, 1.5764e-05, 1.5824e-05, 1.5883e-05, 1.5943e-05, 1.6002e-05, 1.6062e-05, 1.6121e-05, 1.6181e-05, 1.6240e-05, 1.6300e-05, 1.6359e-05, 1.6419e-05, 1.6478e-05, 1.6538e-05, 1.6597e-05, 1.6657e-05, 1.6716e-05, 1.6776e-05, 1.6835e-05, 1.6895e-05, 1.6954e-05, 1.7014e-05, 1.7073e-05, 1.7133e-05, 1.7192e-05, 1.7252e-05, 1.7311e-05, 1.7371e-05, 1.7430e-05, 1.7490e-05, 1.7549e-05, 1.7609e-05, 1.7668e-05, 1.7727e-05, 1.7787e-05, 1.7846e-05, 1.7906e-05, 1.7965e-05, 1.8025e-05, 1.8084e-05, 1.8144e-05, 1.8203e-05, 1.8263e-05, 1.8322e-05, 1.8382e-05, 1.8441e-05, 1.8501e-05, 1.8560e-05, 1.8620e-05, 1.8679e-05, 1.8739e-05, 1.8798e-05, 1.8858e-05, 1.8917e-05, 1.8977e-05, 1.9036e-05, 1.9096e-05, 1.9155e-05, 1.9215e-05, 1.9274e-05, 1.9334e-05, 1.9393e-05, 1.9453e-05, 1.9512e-05, 1.9572e-05, 1.9631e-05, 1.9691e-05, 1.9750e-05, 1.9810e-05, 1.9869e-05, 1.9929e-05, 1.9988e-05, 2.0048e-05, 2.0107e-05, 2.0167e-05, 2.0226e-05, 2.0285e-05, 2.0345e-05, 2.0404e-05, 2.0464e-05, 2.0523e-05, 2.0583e-05, 2.0642e-05, 2.0702e-05, 2.0761e-05, 2.0821e-05, 2.0880e-05, 2.0940e-05, 2.0999e-05, 2.1059e-05, 2.1118e-05, 2.1178e-05, 2.1237e-05, 2.1297e-05, 2.1356e-05, 2.1416e-05, 2.1475e-05, 2.1535e-05, 2.1594e-05, 2.1654e-05, 2.1713e-05, 2.1773e-05, 2.1832e-05, 2.1892e-05, 2.1951e-05, 2.2011e-05, 2.2070e-05, 2.2130e-05, 2.2189e-05, 2.2249e-05, 2.2308e-05, 2.2368e-05, 2.2427e-05, 2.2487e-05, 2.2546e-05, 2.2606e-05, 2.2665e-05, 2.2725e-05, 2.2784e-05, 2.2843e-05, 2.2903e-05, 2.2962e-05, 2.3022e-05, 2.3081e-05, 2.3141e-05, 2.3200e-05, 2.3260e-05, 2.3319e-05, 2.3379e-05, 2.3438e-05, 2.3498e-05, 2.3557e-05, 2.3617e-05, 2.3676e-05, 2.3736e-05, 2.3795e-05, 2.3855e-05, 2.3914e-05, 2.3974e-05, 2.4033e-05, 2.4093e-05, 2.4152e-05, 2.4212e-05, 2.4271e-05, 2.4331e-05, 2.4390e-05, 2.4450e-05, 2.4509e-05, 2.4569e-05, 2.4628e-05, 2.4688e-05, 2.4747e-05, 2.4807e-05, 2.4866e-05, 2.4926e-05, 2.4985e-05, 2.5045e-05, 2.5104e-05, 2.5164e-05, 2.5223e-05, 2.5282e-05, 2.5342e-05, 2.5401e-05, 2.5461e-05, 2.5520e-05, 2.5580e-05, 2.5639e-05, 2.5699e-05, 2.5758e-05, 2.5818e-05, 2.5877e-05, 2.5937e-05, 2.5996e-05, 2.6056e-05, 2.6115e-05, 2.6175e-05, 2.6234e-05, 2.6294e-05, 2.6353e-05, 2.6413e-05, 2.6472e-05, 2.6532e-05, 2.6591e-05, 2.6651e-05, 2.6710e-05, 2.6770e-05, 2.6829e-05, 2.6889e-05, 2.6948e-05, 2.7008e-05, 2.7067e-05, 2.7127e-05, 2.7186e-05, 2.7246e-05, 2.7305e-05, 2.7365e-05, 2.7424e-05, 2.7484e-05, 2.7543e-05, 2.7603e-05, 2.7662e-05, 2.7722e-05, 2.7781e-05, 2.7840e-05, 2.7900e-05, 2.7959e-05, 2.8019e-05, 2.8078e-05, 2.8138e-05, 2.8197e-05, 2.8257e-05, 2.8316e-05, 2.8376e-05, 2.8435e-05, 2.8495e-05, 2.8554e-05, 2.8614e-05, 2.8673e-05, 2.8733e-05, 2.8792e-05, 2.8852e-05, 2.8911e-05, 2.8971e-05, 2.9030e-05, 2.9090e-05, 2.9149e-05, 2.9209e-05, 2.9268e-05, 2.9328e-05, 2.9387e-05, 2.9447e-05, 2.9506e-05, 2.9566e-05, 2.9625e-05, 2.9685e-05, 2.9744e-05, 2.9804e-05, 2.9863e-05, 2.9923e-05, 2.9982e-05, 3.0042e-05, 3.0101e-05, 3.0161e-05, 3.0220e-05, 3.0280e-05, 3.0339e-05, 3.0398e-05, - 3.0458e-05, 3.0577e-05, 3.0697e-05, 3.0816e-05, 3.0936e-05, 3.1055e-05, 3.1175e-05, 3.1294e-05, 3.1414e-05, 3.1533e-05, 3.1652e-05, 3.1772e-05, 3.1891e-05, 3.2011e-05, 3.2130e-05, 3.2250e-05, 3.2369e-05, 3.2489e-05, 3.2608e-05, 3.2727e-05, 3.2847e-05, 3.2966e-05, 3.3086e-05, 3.3205e-05, 3.3325e-05, 3.3444e-05, 3.3563e-05, 3.3683e-05, 3.3802e-05, 3.3922e-05, 3.4041e-05, 3.4161e-05, 3.4280e-05, 3.4400e-05, 3.4519e-05, 3.4638e-05, 3.4758e-05, 3.4877e-05, 3.4997e-05, 3.5116e-05, 3.5236e-05, 3.5355e-05, 3.5475e-05, 3.5594e-05, 3.5713e-05, 3.5833e-05, 3.5952e-05, 3.6072e-05, 3.6191e-05, 3.6311e-05, 3.6430e-05, 3.6550e-05, 3.6669e-05, 3.6788e-05, 3.6908e-05, 3.7027e-05, 3.7147e-05, 3.7266e-05, 3.7386e-05, 3.7505e-05, 3.7625e-05, 3.7744e-05, 3.7863e-05, 3.7983e-05, 3.8102e-05, 3.8222e-05, 3.8341e-05, 3.8461e-05, 3.8580e-05, 3.8700e-05, 3.8819e-05, 3.8938e-05, 3.9058e-05, 3.9177e-05, 3.9297e-05, 3.9416e-05, 3.9536e-05, 3.9655e-05, 3.9775e-05, 3.9894e-05, 4.0013e-05, 4.0133e-05, 4.0252e-05, 4.0372e-05, 4.0491e-05, 4.0611e-05, 4.0730e-05, 4.0850e-05, 4.0969e-05, 4.1088e-05, 4.1208e-05, 4.1327e-05, 4.1447e-05, 4.1566e-05, 4.1686e-05, 4.1805e-05, 4.1925e-05, 4.2044e-05, 4.2163e-05, 4.2283e-05, 4.2402e-05, 4.2522e-05, 4.2641e-05, 4.2761e-05, 4.2880e-05, 4.2999e-05, 4.3119e-05, 4.3238e-05, 4.3358e-05, 4.3477e-05, 4.3597e-05, 4.3716e-05, 4.3836e-05, 4.3955e-05, 4.4074e-05, 4.4194e-05, 4.4313e-05, 4.4433e-05, 4.4552e-05, 4.4672e-05, 4.4791e-05, 4.4911e-05, 4.5030e-05, 4.5149e-05, 4.5269e-05, 4.5388e-05, 4.5508e-05, 4.5627e-05, 4.5747e-05, 4.5866e-05, 4.5986e-05, 4.6105e-05, 4.6224e-05, 4.6344e-05, 4.6463e-05, 4.6583e-05, 4.6702e-05, 4.6822e-05, 4.6941e-05, 4.7061e-05, 4.7180e-05, 4.7299e-05, 4.7419e-05, 4.7538e-05, 4.7658e-05, 4.7777e-05, 4.7897e-05, 4.8016e-05, 4.8136e-05, 4.8255e-05, 4.8374e-05, 4.8494e-05, 4.8613e-05, 4.8733e-05, 4.8852e-05, 4.8972e-05, 4.9091e-05, 4.9211e-05, 4.9330e-05, 4.9449e-05, 4.9569e-05, 4.9688e-05, 4.9808e-05, 4.9927e-05, 5.0047e-05, 5.0166e-05, 5.0286e-05, 5.0405e-05, 5.0524e-05, 5.0644e-05, 5.0763e-05, 5.0883e-05, 5.1002e-05, 5.1122e-05, 5.1241e-05, 5.1361e-05, 5.1480e-05, 5.1599e-05, 5.1719e-05, 5.1838e-05, 5.1958e-05, 5.2077e-05, 5.2197e-05, 5.2316e-05, 5.2435e-05, 5.2555e-05, 5.2674e-05, 5.2794e-05, 5.2913e-05, 5.3033e-05, 5.3152e-05, 5.3272e-05, 5.3391e-05, 5.3510e-05, 5.3630e-05, 5.3749e-05, 5.3869e-05, 5.3988e-05, 5.4108e-05, 5.4227e-05, 5.4347e-05, 5.4466e-05, 5.4585e-05, 5.4705e-05, 5.4824e-05, 5.4944e-05, 5.5063e-05, 5.5183e-05, 5.5302e-05, 5.5422e-05, 5.5541e-05, 5.5660e-05, 5.5780e-05, 5.5899e-05, 5.6019e-05, 5.6138e-05, 5.6258e-05, 5.6377e-05, 5.6497e-05, 5.6616e-05, 5.6735e-05, 5.6855e-05, 5.6974e-05, 5.7094e-05, 5.7213e-05, 5.7333e-05, 5.7452e-05, 5.7572e-05, 5.7691e-05, 5.7810e-05, 5.7930e-05, 5.8049e-05, 5.8169e-05, 5.8288e-05, 5.8408e-05, 5.8527e-05, 5.8647e-05, 5.8766e-05, 5.8885e-05, 5.9005e-05, 5.9124e-05, 5.9244e-05, 5.9363e-05, 5.9483e-05, 5.9602e-05, 5.9722e-05, 5.9841e-05, 5.9960e-05, 6.0080e-05, 6.0199e-05, 6.0319e-05, 6.0438e-05, 6.0558e-05, 6.0677e-05, 6.0797e-05, 6.0916e-05, - 6.1154e-05, 6.1392e-05, 6.1631e-05, 6.1869e-05, 6.2107e-05, 6.2345e-05, 6.2583e-05, 6.2821e-05, 6.3060e-05, 6.3298e-05, 6.3536e-05, 6.3774e-05, 6.4012e-05, 6.4251e-05, 6.4489e-05, 6.4727e-05, 6.4965e-05, 6.5203e-05, 6.5441e-05, 6.5680e-05, 6.5918e-05, 6.6156e-05, 6.6394e-05, 6.6632e-05, 6.6871e-05, 6.7109e-05, 6.7347e-05, 6.7585e-05, 6.7823e-05, 6.8062e-05, 6.8300e-05, 6.8538e-05, 6.8776e-05, 6.9014e-05, 6.9252e-05, 6.9491e-05, 6.9729e-05, 6.9967e-05, 7.0205e-05, 7.0443e-05, 7.0682e-05, 7.0920e-05, 7.1158e-05, 7.1396e-05, 7.1634e-05, 7.1872e-05, 7.2111e-05, 7.2349e-05, 7.2587e-05, 7.2825e-05, 7.3063e-05, 7.3302e-05, 7.3540e-05, 7.3778e-05, 7.4016e-05, 7.4254e-05, 7.4493e-05, 7.4731e-05, 7.4969e-05, 7.5207e-05, 7.5445e-05, 7.5683e-05, 7.5922e-05, 7.6160e-05, 7.6398e-05, 7.6636e-05, 7.6874e-05, 7.7113e-05, 7.7351e-05, 7.7589e-05, 7.7827e-05, 7.8065e-05, 7.8304e-05, 7.8542e-05, 7.8780e-05, 7.9018e-05, 7.9256e-05, 7.9494e-05, 7.9733e-05, 7.9971e-05, 8.0209e-05, 8.0447e-05, 8.0685e-05, 8.0924e-05, 8.1162e-05, 8.1400e-05, 8.1638e-05, 8.1876e-05, 8.2114e-05, 8.2353e-05, 8.2591e-05, 8.2829e-05, 8.3067e-05, 8.3305e-05, 8.3544e-05, 8.3782e-05, 8.4020e-05, 8.4258e-05, 8.4496e-05, 8.4735e-05, 8.4973e-05, 8.5211e-05, 8.5449e-05, 8.5687e-05, 8.5925e-05, 8.6164e-05, 8.6402e-05, 8.6640e-05, 8.6878e-05, 8.7116e-05, 8.7355e-05, 8.7593e-05, 8.7831e-05, 8.8069e-05, 8.8307e-05, 8.8545e-05, 8.8784e-05, 8.9022e-05, 8.9260e-05, 8.9498e-05, 8.9736e-05, 8.9975e-05, 9.0213e-05, 9.0451e-05, 9.0689e-05, 9.0927e-05, 9.1166e-05, 9.1404e-05, 9.1642e-05, 9.1880e-05, 9.2118e-05, 9.2356e-05, 9.2595e-05, 9.2833e-05, 9.3071e-05, 9.3309e-05, 9.3547e-05, 9.3786e-05, 9.4024e-05, 9.4262e-05, 9.4500e-05, 9.4738e-05, 9.4977e-05, 9.5215e-05, 9.5453e-05, 9.5691e-05, 9.5929e-05, 9.6167e-05, 9.6406e-05, 9.6644e-05, 9.6882e-05, 9.7120e-05, 9.7358e-05, 9.7597e-05, 9.7835e-05, 9.8073e-05, 9.8311e-05, 9.8549e-05, 9.8787e-05, 9.9026e-05, 9.9264e-05, 9.9502e-05, 9.9740e-05, 9.9978e-05, 1.0022e-04, 1.0045e-04, 1.0069e-04, 1.0093e-04, 1.0117e-04, 1.0141e-04, 1.0165e-04, 1.0188e-04, 1.0212e-04, 1.0236e-04, 1.0260e-04, 1.0284e-04, 1.0307e-04, 1.0331e-04, 1.0355e-04, 1.0379e-04, 1.0403e-04, 1.0427e-04, 1.0450e-04, 1.0474e-04, 1.0498e-04, 1.0522e-04, 1.0546e-04, 1.0569e-04, 1.0593e-04, 1.0617e-04, 1.0641e-04, 1.0665e-04, 1.0689e-04, 1.0712e-04, 1.0736e-04, 1.0760e-04, 1.0784e-04, 1.0808e-04, 1.0831e-04, 1.0855e-04, 1.0879e-04, 1.0903e-04, 1.0927e-04, 1.0951e-04, 1.0974e-04, 1.0998e-04, 1.1022e-04, 1.1046e-04, 1.1070e-04, 1.1093e-04, 1.1117e-04, 1.1141e-04, 1.1165e-04, 1.1189e-04, 1.1213e-04, 1.1236e-04, 1.1260e-04, 1.1284e-04, 1.1308e-04, 1.1332e-04, 1.1355e-04, 1.1379e-04, 1.1403e-04, 1.1427e-04, 1.1451e-04, 1.1475e-04, 1.1498e-04, 1.1522e-04, 1.1546e-04, 1.1570e-04, 1.1594e-04, 1.1618e-04, 1.1641e-04, 1.1665e-04, 1.1689e-04, 1.1713e-04, 1.1737e-04, 1.1760e-04, 1.1784e-04, 1.1808e-04, 1.1832e-04, 1.1856e-04, 1.1880e-04, 1.1903e-04, 1.1927e-04, 1.1951e-04, 1.1975e-04, 1.1999e-04, 1.2022e-04, 1.2046e-04, 1.2070e-04, 1.2094e-04, 1.2118e-04, 1.2142e-04, 1.2165e-04, 1.2189e-04, - 1.2213e-04, 1.2237e-04, 1.2261e-04, 1.2284e-04, 1.2308e-04, 1.2332e-04, 1.2356e-04, 1.2380e-04, 1.2404e-04, 1.2427e-04, 1.2451e-04, 1.2475e-04, 1.2499e-04, 1.2523e-04, 1.2546e-04, 1.2570e-04, 1.2594e-04, 1.2618e-04, 1.2642e-04, 1.2666e-04, 1.2689e-04, 1.2713e-04, 1.2737e-04, 1.2761e-04, 1.2785e-04, 1.2808e-04, 1.2832e-04, 1.2856e-04, 1.2880e-04, 1.2904e-04, 1.2928e-04, 1.2951e-04, 1.2975e-04, 1.2999e-04, 1.3023e-04, 1.3047e-04, 1.3070e-04, 1.3094e-04, 1.3118e-04, 1.3142e-04, 1.3166e-04, 1.3190e-04, 1.3213e-04, 1.3237e-04, 1.3261e-04, 1.3285e-04, 1.3309e-04, 1.3332e-04, 1.3356e-04, 1.3380e-04, 1.3404e-04, 1.3428e-04, 1.3452e-04, 1.3475e-04, 1.3499e-04, 1.3523e-04, 1.3547e-04, 1.3571e-04, 1.3594e-04, 1.3618e-04, 1.3642e-04, 1.3666e-04, 1.3690e-04, 1.3714e-04, 1.3737e-04, 1.3761e-04, 1.3785e-04, 1.3809e-04, 1.3833e-04, 1.3856e-04, 1.3880e-04, 1.3904e-04, 1.3928e-04, 1.3952e-04, 1.3976e-04, 1.3999e-04, 1.4023e-04, 1.4047e-04, 1.4071e-04, 1.4095e-04, 1.4118e-04, 1.4142e-04, 1.4166e-04, 1.4190e-04, 1.4214e-04, 1.4238e-04, 1.4261e-04, 1.4285e-04, 1.4309e-04, 1.4333e-04, 1.4357e-04, 1.4380e-04, 1.4404e-04, 1.4428e-04, 1.4452e-04, 1.4476e-04, 1.4500e-04, 1.4523e-04, 1.4547e-04, 1.4571e-04, 1.4595e-04, 1.4619e-04, 1.4642e-04, 1.4666e-04, 1.4690e-04, 1.4714e-04, 1.4738e-04, 1.4762e-04, 1.4785e-04, 1.4809e-04, 1.4833e-04, 1.4857e-04, 1.4881e-04, 1.4904e-04, 1.4928e-04, 1.4952e-04, 1.4976e-04, 1.5000e-04, 1.5024e-04, 1.5047e-04, 1.5071e-04, 1.5095e-04, 1.5119e-04, 1.5143e-04, 1.5166e-04, 1.5190e-04, 1.5214e-04, 1.5238e-04, 1.5262e-04, 1.5286e-04, 1.5309e-04, 1.5333e-04, 1.5357e-04, 1.5381e-04, 1.5405e-04, 1.5428e-04, 1.5452e-04, 1.5476e-04, 1.5500e-04, 1.5524e-04, 1.5548e-04, 1.5571e-04, 1.5595e-04, 1.5619e-04, 1.5643e-04, 1.5667e-04, 1.5690e-04, 1.5714e-04, 1.5738e-04, 1.5762e-04, 1.5786e-04, 1.5810e-04, 1.5833e-04, 1.5857e-04, 1.5881e-04, 1.5905e-04, 1.5929e-04, 1.5952e-04, 1.5976e-04, 1.6000e-04, 1.6024e-04, 1.6048e-04, 1.6072e-04, 1.6095e-04, 1.6119e-04, 1.6143e-04, 1.6167e-04, 1.6191e-04, 1.6214e-04, 1.6238e-04, 1.6262e-04, 1.6286e-04, 1.6310e-04, 1.6334e-04, 1.6357e-04, 1.6381e-04, 1.6405e-04, 1.6429e-04, 1.6453e-04, 1.6476e-04, 1.6500e-04, 1.6524e-04, 1.6548e-04, 1.6572e-04, 1.6596e-04, 1.6619e-04, 1.6643e-04, 1.6667e-04, 1.6691e-04, 1.6715e-04, 1.6738e-04, 1.6762e-04, 1.6786e-04, 1.6810e-04, 1.6834e-04, 1.6858e-04, 1.6881e-04, 1.6905e-04, 1.6929e-04, 1.6953e-04, 1.6977e-04, 1.7001e-04, 1.7024e-04, 1.7048e-04, 1.7072e-04, 1.7096e-04, 1.7120e-04, 1.7143e-04, 1.7167e-04, 1.7191e-04, 1.7215e-04, 1.7239e-04, 1.7263e-04, 1.7286e-04, 1.7310e-04, 1.7334e-04, 1.7358e-04, 1.7382e-04, 1.7405e-04, 1.7429e-04, 1.7453e-04, 1.7477e-04, 1.7501e-04, 1.7525e-04, 1.7548e-04, 1.7572e-04, 1.7596e-04, 1.7620e-04, 1.7644e-04, 1.7667e-04, 1.7691e-04, 1.7715e-04, 1.7739e-04, 1.7763e-04, 1.7787e-04, 1.7810e-04, 1.7834e-04, 1.7858e-04, 1.7882e-04, 1.7906e-04, 1.7929e-04, 1.7953e-04, 1.7977e-04, 1.8001e-04, 1.8025e-04, 1.8049e-04, 1.8072e-04, 1.8096e-04, 1.8120e-04, 1.8144e-04, 1.8168e-04, 1.8191e-04, 1.8215e-04, 1.8239e-04, 1.8263e-04, 1.8287e-04, - 1.8311e-04, 1.8334e-04, 1.8358e-04, 1.8382e-04, 1.8406e-04, 1.8430e-04, 1.8453e-04, 1.8477e-04, 1.8501e-04, 1.8525e-04, 1.8549e-04, 1.8573e-04, 1.8596e-04, 1.8620e-04, 1.8644e-04, 1.8668e-04, 1.8692e-04, 1.8715e-04, 1.8739e-04, 1.8763e-04, 1.8787e-04, 1.8811e-04, 1.8835e-04, 1.8858e-04, 1.8882e-04, 1.8906e-04, 1.8930e-04, 1.8954e-04, 1.8977e-04, 1.9001e-04, 1.9025e-04, 1.9049e-04, 1.9073e-04, 1.9097e-04, 1.9120e-04, 1.9144e-04, 1.9168e-04, 1.9192e-04, 1.9216e-04, 1.9239e-04, 1.9263e-04, 1.9287e-04, 1.9311e-04, 1.9335e-04, 1.9359e-04, 1.9382e-04, 1.9406e-04, 1.9430e-04, 1.9454e-04, 1.9478e-04, 1.9501e-04, 1.9525e-04, 1.9549e-04, 1.9573e-04, 1.9597e-04, 1.9621e-04, 1.9644e-04, 1.9668e-04, 1.9692e-04, 1.9716e-04, 1.9740e-04, 1.9763e-04, 1.9787e-04, 1.9811e-04, 1.9835e-04, 1.9859e-04, 1.9883e-04, 1.9906e-04, 1.9930e-04, 1.9954e-04, 1.9978e-04, 2.0002e-04, 2.0025e-04, 2.0049e-04, 2.0073e-04, 2.0097e-04, 2.0121e-04, 2.0145e-04, 2.0168e-04, 2.0192e-04, 2.0216e-04, 2.0240e-04, 2.0264e-04, 2.0287e-04, 2.0311e-04, 2.0335e-04, 2.0359e-04, 2.0383e-04, 2.0407e-04, 2.0430e-04, 2.0454e-04, 2.0478e-04, 2.0502e-04, 2.0526e-04, 2.0549e-04, 2.0573e-04, 2.0597e-04, 2.0621e-04, 2.0645e-04, 2.0669e-04, 2.0692e-04, 2.0716e-04, 2.0740e-04, 2.0764e-04, 2.0788e-04, 2.0811e-04, 2.0835e-04, 2.0859e-04, 2.0883e-04, 2.0907e-04, 2.0931e-04, 2.0954e-04, 2.0978e-04, 2.1002e-04, 2.1026e-04, 2.1050e-04, 2.1073e-04, 2.1097e-04, 2.1121e-04, 2.1145e-04, 2.1169e-04, 2.1193e-04, 2.1216e-04, 2.1240e-04, 2.1264e-04, 2.1288e-04, 2.1312e-04, 2.1335e-04, 2.1359e-04, 2.1383e-04, 2.1407e-04, 2.1431e-04, 2.1455e-04, 2.1478e-04, 2.1502e-04, 2.1526e-04, 2.1550e-04, 2.1574e-04, 2.1597e-04, 2.1621e-04, 2.1645e-04, 2.1669e-04, 2.1693e-04, 2.1717e-04, 2.1740e-04, 2.1764e-04, 2.1788e-04, 2.1812e-04, 2.1836e-04, 2.1859e-04, 2.1883e-04, 2.1907e-04, 2.1931e-04, 2.1955e-04, 2.1979e-04, 2.2002e-04, 2.2026e-04, 2.2050e-04, 2.2074e-04, 2.2098e-04, 2.2121e-04, 2.2145e-04, 2.2169e-04, 2.2193e-04, 2.2217e-04, 2.2241e-04, 2.2264e-04, 2.2288e-04, 2.2312e-04, 2.2336e-04, 2.2360e-04, 2.2383e-04, 2.2407e-04, 2.2431e-04, 2.2455e-04, 2.2479e-04, 2.2503e-04, 2.2526e-04, 2.2550e-04, 2.2574e-04, 2.2598e-04, 2.2622e-04, 2.2646e-04, 2.2669e-04, 2.2693e-04, 2.2717e-04, 2.2741e-04, 2.2765e-04, 2.2788e-04, 2.2812e-04, 2.2836e-04, 2.2860e-04, 2.2884e-04, 2.2908e-04, 2.2931e-04, 2.2955e-04, 2.2979e-04, 2.3003e-04, 2.3027e-04, 2.3050e-04, 2.3074e-04, 2.3098e-04, 2.3122e-04, 2.3146e-04, 2.3170e-04, 2.3193e-04, 2.3217e-04, 2.3241e-04, 2.3265e-04, 2.3289e-04, 2.3312e-04, 2.3336e-04, 2.3360e-04, 2.3384e-04, 2.3408e-04, 2.3432e-04, 2.3455e-04, 2.3479e-04, 2.3503e-04, 2.3527e-04, 2.3551e-04, 2.3574e-04, 2.3598e-04, 2.3622e-04, 2.3646e-04, 2.3670e-04, 2.3694e-04, 2.3717e-04, 2.3741e-04, 2.3765e-04, 2.3789e-04, 2.3813e-04, 2.3836e-04, 2.3860e-04, 2.3884e-04, 2.3908e-04, 2.3932e-04, 2.3956e-04, 2.3979e-04, 2.4003e-04, 2.4027e-04, 2.4051e-04, 2.4075e-04, 2.4098e-04, 2.4122e-04, 2.4146e-04, 2.4170e-04, 2.4194e-04, 2.4218e-04, 2.4241e-04, 2.4265e-04, 2.4289e-04, 2.4313e-04, 2.4337e-04, 2.4360e-04, 2.4384e-04, - 2.4480e-04, 2.4575e-04, 2.4670e-04, 2.4766e-04, 2.4861e-04, 2.4956e-04, 2.5052e-04, 2.5147e-04, 2.5242e-04, 2.5337e-04, 2.5433e-04, 2.5528e-04, 2.5623e-04, 2.5719e-04, 2.5814e-04, 2.5909e-04, 2.6005e-04, 2.6100e-04, 2.6195e-04, 2.6291e-04, 2.6386e-04, 2.6481e-04, 2.6577e-04, 2.6672e-04, 2.6767e-04, 2.6863e-04, 2.6958e-04, 2.7053e-04, 2.7149e-04, 2.7244e-04, 2.7339e-04, 2.7435e-04, 2.7530e-04, 2.7625e-04, 2.7720e-04, 2.7816e-04, 2.7911e-04, 2.8006e-04, 2.8102e-04, 2.8197e-04, 2.8292e-04, 2.8388e-04, 2.8483e-04, 2.8578e-04, 2.8674e-04, 2.8769e-04, 2.8864e-04, 2.8960e-04, 2.9055e-04, 2.9150e-04, 2.9246e-04, 2.9341e-04, 2.9436e-04, 2.9532e-04, 2.9627e-04, 2.9722e-04, 2.9818e-04, 2.9913e-04, 3.0008e-04, 3.0104e-04, 3.0199e-04, 3.0294e-04, 3.0389e-04, 3.0485e-04, 3.0580e-04, 3.0675e-04, 3.0771e-04, 3.0866e-04, 3.0961e-04, 3.1057e-04, 3.1152e-04, 3.1247e-04, 3.1343e-04, 3.1438e-04, 3.1533e-04, 3.1629e-04, 3.1724e-04, 3.1819e-04, 3.1915e-04, 3.2010e-04, 3.2105e-04, 3.2201e-04, 3.2296e-04, 3.2391e-04, 3.2487e-04, 3.2582e-04, 3.2677e-04, 3.2772e-04, 3.2868e-04, 3.2963e-04, 3.3058e-04, 3.3154e-04, 3.3249e-04, 3.3344e-04, 3.3440e-04, 3.3535e-04, 3.3630e-04, 3.3726e-04, 3.3821e-04, 3.3916e-04, 3.4012e-04, 3.4107e-04, 3.4202e-04, 3.4298e-04, 3.4393e-04, 3.4488e-04, 3.4584e-04, 3.4679e-04, 3.4774e-04, 3.4870e-04, 3.4965e-04, 3.5060e-04, 3.5156e-04, 3.5251e-04, 3.5346e-04, 3.5441e-04, 3.5537e-04, 3.5632e-04, 3.5727e-04, 3.5823e-04, 3.5918e-04, 3.6013e-04, 3.6109e-04, 3.6204e-04, 3.6299e-04, 3.6395e-04, 3.6490e-04, 3.6585e-04, 3.6681e-04, 3.6776e-04, 3.6871e-04, 3.6967e-04, 3.7062e-04, 3.7157e-04, 3.7253e-04, 3.7348e-04, 3.7443e-04, 3.7539e-04, 3.7634e-04, 3.7729e-04, 3.7825e-04, 3.7920e-04, 3.8015e-04, 3.8110e-04, 3.8206e-04, 3.8301e-04, 3.8396e-04, 3.8492e-04, 3.8587e-04, 3.8682e-04, 3.8778e-04, 3.8873e-04, 3.8968e-04, 3.9064e-04, 3.9159e-04, 3.9254e-04, 3.9350e-04, 3.9445e-04, 3.9540e-04, 3.9636e-04, 3.9731e-04, 3.9826e-04, 3.9922e-04, 4.0017e-04, 4.0112e-04, 4.0208e-04, 4.0303e-04, 4.0398e-04, 4.0493e-04, 4.0589e-04, 4.0684e-04, 4.0779e-04, 4.0875e-04, 4.0970e-04, 4.1065e-04, 4.1161e-04, 4.1256e-04, 4.1351e-04, 4.1447e-04, 4.1542e-04, 4.1637e-04, 4.1733e-04, 4.1828e-04, 4.1923e-04, 4.2019e-04, 4.2114e-04, 4.2209e-04, 4.2305e-04, 4.2400e-04, 4.2495e-04, 4.2591e-04, 4.2686e-04, 4.2781e-04, 4.2877e-04, 4.2972e-04, 4.3067e-04, 4.3162e-04, 4.3258e-04, 4.3353e-04, 4.3448e-04, 4.3544e-04, 4.3639e-04, 4.3734e-04, 4.3830e-04, 4.3925e-04, 4.4020e-04, 4.4116e-04, 4.4211e-04, 4.4306e-04, 4.4402e-04, 4.4497e-04, 4.4592e-04, 4.4688e-04, 4.4783e-04, 4.4878e-04, 4.4974e-04, 4.5069e-04, 4.5164e-04, 4.5260e-04, 4.5355e-04, 4.5450e-04, 4.5545e-04, 4.5641e-04, 4.5736e-04, 4.5831e-04, 4.5927e-04, 4.6022e-04, 4.6117e-04, 4.6213e-04, 4.6308e-04, 4.6403e-04, 4.6499e-04, 4.6594e-04, 4.6689e-04, 4.6785e-04, 4.6880e-04, 4.6975e-04, 4.7071e-04, 4.7166e-04, 4.7261e-04, 4.7357e-04, 4.7452e-04, 4.7547e-04, 4.7643e-04, 4.7738e-04, 4.7833e-04, 4.7929e-04, 4.8024e-04, 4.8119e-04, 4.8214e-04, 4.8310e-04, 4.8405e-04, 4.8500e-04, 4.8596e-04, 4.8691e-04, 4.8786e-04, - 4.8977e-04, 4.9168e-04, 4.9358e-04, 4.9549e-04, 4.9740e-04, 4.9931e-04, 5.0121e-04, 5.0312e-04, 5.0503e-04, 5.0693e-04, 5.0884e-04, 5.1075e-04, 5.1265e-04, 5.1456e-04, 5.1647e-04, 5.1837e-04, 5.2028e-04, 5.2219e-04, 5.2409e-04, 5.2600e-04, 5.2791e-04, 5.2982e-04, 5.3172e-04, 5.3363e-04, 5.3554e-04, 5.3744e-04, 5.3935e-04, 5.4126e-04, 5.4316e-04, 5.4507e-04, 5.4698e-04, 5.4888e-04, 5.5079e-04, 5.5270e-04, 5.5460e-04, 5.5651e-04, 5.5842e-04, 5.6033e-04, 5.6223e-04, 5.6414e-04, 5.6605e-04, 5.6795e-04, 5.6986e-04, 5.7177e-04, 5.7367e-04, 5.7558e-04, 5.7749e-04, 5.7939e-04, 5.8130e-04, 5.8321e-04, 5.8512e-04, 5.8702e-04, 5.8893e-04, 5.9084e-04, 5.9274e-04, 5.9465e-04, 5.9656e-04, 5.9846e-04, 6.0037e-04, 6.0228e-04, 6.0418e-04, 6.0609e-04, 6.0800e-04, 6.0990e-04, 6.1181e-04, 6.1372e-04, 6.1563e-04, 6.1753e-04, 6.1944e-04, 6.2135e-04, 6.2325e-04, 6.2516e-04, 6.2707e-04, 6.2897e-04, 6.3088e-04, 6.3279e-04, 6.3469e-04, 6.3660e-04, 6.3851e-04, 6.4041e-04, 6.4232e-04, 6.4423e-04, 6.4614e-04, 6.4804e-04, 6.4995e-04, 6.5186e-04, 6.5376e-04, 6.5567e-04, 6.5758e-04, 6.5948e-04, 6.6139e-04, 6.6330e-04, 6.6520e-04, 6.6711e-04, 6.6902e-04, 6.7092e-04, 6.7283e-04, 6.7474e-04, 6.7665e-04, 6.7855e-04, 6.8046e-04, 6.8237e-04, 6.8427e-04, 6.8618e-04, 6.8809e-04, 6.8999e-04, 6.9190e-04, 6.9381e-04, 6.9571e-04, 6.9762e-04, 6.9953e-04, 7.0143e-04, 7.0334e-04, 7.0525e-04, 7.0716e-04, 7.0906e-04, 7.1097e-04, 7.1288e-04, 7.1478e-04, 7.1669e-04, 7.1860e-04, 7.2050e-04, 7.2241e-04, 7.2432e-04, 7.2622e-04, 7.2813e-04, 7.3004e-04, 7.3195e-04, 7.3385e-04, 7.3576e-04, 7.3767e-04, 7.3957e-04, 7.4148e-04, 7.4339e-04, 7.4529e-04, 7.4720e-04, 7.4911e-04, 7.5101e-04, 7.5292e-04, 7.5483e-04, 7.5673e-04, 7.5864e-04, 7.6055e-04, 7.6246e-04, 7.6436e-04, 7.6627e-04, 7.6818e-04, 7.7008e-04, 7.7199e-04, 7.7390e-04, 7.7580e-04, 7.7771e-04, 7.7962e-04, 7.8152e-04, 7.8343e-04, 7.8534e-04, 7.8724e-04, 7.8915e-04, 7.9106e-04, 7.9297e-04, 7.9487e-04, 7.9678e-04, 7.9869e-04, 8.0059e-04, 8.0250e-04, 8.0441e-04, 8.0631e-04, 8.0822e-04, 8.1013e-04, 8.1203e-04, 8.1394e-04, 8.1585e-04, 8.1775e-04, 8.1966e-04, 8.2157e-04, 8.2348e-04, 8.2538e-04, 8.2729e-04, 8.2920e-04, 8.3110e-04, 8.3301e-04, 8.3492e-04, 8.3682e-04, 8.3873e-04, 8.4064e-04, 8.4254e-04, 8.4445e-04, 8.4636e-04, 8.4826e-04, 8.5017e-04, 8.5208e-04, 8.5399e-04, 8.5589e-04, 8.5780e-04, 8.5971e-04, 8.6161e-04, 8.6352e-04, 8.6543e-04, 8.6733e-04, 8.6924e-04, 8.7115e-04, 8.7305e-04, 8.7496e-04, 8.7687e-04, 8.7878e-04, 8.8068e-04, 8.8259e-04, 8.8450e-04, 8.8640e-04, 8.8831e-04, 8.9022e-04, 8.9212e-04, 8.9403e-04, 8.9594e-04, 8.9784e-04, 8.9975e-04, 9.0166e-04, 9.0356e-04, 9.0547e-04, 9.0738e-04, 9.0929e-04, 9.1119e-04, 9.1310e-04, 9.1501e-04, 9.1691e-04, 9.1882e-04, 9.2073e-04, 9.2263e-04, 9.2454e-04, 9.2645e-04, 9.2835e-04, 9.3026e-04, 9.3217e-04, 9.3407e-04, 9.3598e-04, 9.3789e-04, 9.3980e-04, 9.4170e-04, 9.4361e-04, 9.4552e-04, 9.4742e-04, 9.4933e-04, 9.5124e-04, 9.5314e-04, 9.5505e-04, 9.5696e-04, 9.5886e-04, 9.6077e-04, 9.6268e-04, 9.6458e-04, 9.6649e-04, 9.6840e-04, 9.7031e-04, 9.7221e-04, 9.7412e-04, 9.7603e-04, - 9.7984e-04, 9.8365e-04, 9.8747e-04, 9.9128e-04, 9.9510e-04, 9.9891e-04, 1.0027e-03, 1.0065e-03, 1.0104e-03, 1.0142e-03, 1.0180e-03, 1.0218e-03, 1.0256e-03, 1.0294e-03, 1.0332e-03, 1.0371e-03, 1.0409e-03, 1.0447e-03, 1.0485e-03, 1.0523e-03, 1.0561e-03, 1.0599e-03, 1.0638e-03, 1.0676e-03, 1.0714e-03, 1.0752e-03, 1.0790e-03, 1.0828e-03, 1.0866e-03, 1.0905e-03, 1.0943e-03, 1.0981e-03, 1.1019e-03, 1.1057e-03, 1.1095e-03, 1.1133e-03, 1.1172e-03, 1.1210e-03, 1.1248e-03, 1.1286e-03, 1.1324e-03, 1.1362e-03, 1.1400e-03, 1.1439e-03, 1.1477e-03, 1.1515e-03, 1.1553e-03, 1.1591e-03, 1.1629e-03, 1.1667e-03, 1.1706e-03, 1.1744e-03, 1.1782e-03, 1.1820e-03, 1.1858e-03, 1.1896e-03, 1.1934e-03, 1.1973e-03, 1.2011e-03, 1.2049e-03, 1.2087e-03, 1.2125e-03, 1.2163e-03, 1.2201e-03, 1.2240e-03, 1.2278e-03, 1.2316e-03, 1.2354e-03, 1.2392e-03, 1.2430e-03, 1.2468e-03, 1.2507e-03, 1.2545e-03, 1.2583e-03, 1.2621e-03, 1.2659e-03, 1.2697e-03, 1.2735e-03, 1.2774e-03, 1.2812e-03, 1.2850e-03, 1.2888e-03, 1.2926e-03, 1.2964e-03, 1.3002e-03, 1.3040e-03, 1.3079e-03, 1.3117e-03, 1.3155e-03, 1.3193e-03, 1.3231e-03, 1.3269e-03, 1.3307e-03, 1.3346e-03, 1.3384e-03, 1.3422e-03, 1.3460e-03, 1.3498e-03, 1.3536e-03, 1.3574e-03, 1.3613e-03, 1.3651e-03, 1.3689e-03, 1.3727e-03, 1.3765e-03, 1.3803e-03, 1.3841e-03, 1.3880e-03, 1.3918e-03, 1.3956e-03, 1.3994e-03, 1.4032e-03, 1.4070e-03, 1.4108e-03, 1.4147e-03, 1.4185e-03, 1.4223e-03, 1.4261e-03, 1.4299e-03, 1.4337e-03, 1.4375e-03, 1.4414e-03, 1.4452e-03, 1.4490e-03, 1.4528e-03, 1.4566e-03, 1.4604e-03, 1.4642e-03, 1.4681e-03, 1.4719e-03, 1.4757e-03, 1.4795e-03, 1.4833e-03, 1.4871e-03, 1.4909e-03, 1.4948e-03, 1.4986e-03, 1.5024e-03, 1.5062e-03, 1.5100e-03, 1.5138e-03, 1.5176e-03, 1.5215e-03, 1.5253e-03, 1.5291e-03, 1.5329e-03, 1.5367e-03, 1.5405e-03, 1.5443e-03, 1.5482e-03, 1.5520e-03, 1.5558e-03, 1.5596e-03, 1.5634e-03, 1.5672e-03, 1.5710e-03, 1.5749e-03, 1.5787e-03, 1.5825e-03, 1.5863e-03, 1.5901e-03, 1.5939e-03, 1.5977e-03, 1.6016e-03, 1.6054e-03, 1.6092e-03, 1.6130e-03, 1.6168e-03, 1.6206e-03, 1.6244e-03, 1.6283e-03, 1.6321e-03, 1.6359e-03, 1.6397e-03, 1.6435e-03, 1.6473e-03, 1.6511e-03, 1.6550e-03, 1.6588e-03, 1.6626e-03, 1.6664e-03, 1.6702e-03, 1.6740e-03, 1.6778e-03, 1.6817e-03, 1.6855e-03, 1.6893e-03, 1.6931e-03, 1.6969e-03, 1.7007e-03, 1.7045e-03, 1.7084e-03, 1.7122e-03, 1.7160e-03, 1.7198e-03, 1.7236e-03, 1.7274e-03, 1.7312e-03, 1.7351e-03, 1.7389e-03, 1.7427e-03, 1.7465e-03, 1.7503e-03, 1.7541e-03, 1.7579e-03, 1.7618e-03, 1.7656e-03, 1.7694e-03, 1.7732e-03, 1.7770e-03, 1.7808e-03, 1.7846e-03, 1.7885e-03, 1.7923e-03, 1.7961e-03, 1.7999e-03, 1.8037e-03, 1.8075e-03, 1.8113e-03, 1.8152e-03, 1.8190e-03, 1.8228e-03, 1.8266e-03, 1.8304e-03, 1.8342e-03, 1.8380e-03, 1.8419e-03, 1.8457e-03, 1.8495e-03, 1.8533e-03, 1.8571e-03, 1.8609e-03, 1.8647e-03, 1.8686e-03, 1.8724e-03, 1.8762e-03, 1.8800e-03, 1.8838e-03, 1.8876e-03, 1.8914e-03, 1.8953e-03, 1.8991e-03, 1.9029e-03, 1.9067e-03, 1.9105e-03, 1.9143e-03, 1.9181e-03, 1.9220e-03, 1.9258e-03, 1.9296e-03, 1.9334e-03, 1.9372e-03, 1.9410e-03, 1.9448e-03, 1.9487e-03, 1.9525e-03, - 1.9601e-03, 1.9677e-03, 1.9754e-03, 1.9830e-03, 1.9906e-03, 1.9982e-03, 2.0059e-03, 2.0135e-03, 2.0211e-03, 2.0288e-03, 2.0364e-03, 2.0440e-03, 2.0516e-03, 2.0593e-03, 2.0669e-03, 2.0745e-03, 2.0822e-03, 2.0898e-03, 2.0974e-03, 2.1050e-03, 2.1127e-03, 2.1203e-03, 2.1279e-03, 2.1356e-03, 2.1432e-03, 2.1508e-03, 2.1585e-03, 2.1661e-03, 2.1737e-03, 2.1813e-03, 2.1890e-03, 2.1966e-03, 2.2042e-03, 2.2119e-03, 2.2195e-03, 2.2271e-03, 2.2347e-03, 2.2424e-03, 2.2500e-03, 2.2576e-03, 2.2653e-03, 2.2729e-03, 2.2805e-03, 2.2881e-03, 2.2958e-03, 2.3034e-03, 2.3110e-03, 2.3187e-03, 2.3263e-03, 2.3339e-03, 2.3415e-03, 2.3492e-03, 2.3568e-03, 2.3644e-03, 2.3721e-03, 2.3797e-03, 2.3873e-03, 2.3949e-03, 2.4026e-03, 2.4102e-03, 2.4178e-03, 2.4255e-03, 2.4331e-03, 2.4407e-03, 2.4483e-03, 2.4560e-03, 2.4636e-03, 2.4712e-03, 2.4789e-03, 2.4865e-03, 2.4941e-03, 2.5018e-03, 2.5094e-03, 2.5170e-03, 2.5246e-03, 2.5323e-03, 2.5399e-03, 2.5475e-03, 2.5552e-03, 2.5628e-03, 2.5704e-03, 2.5780e-03, 2.5857e-03, 2.5933e-03, 2.6009e-03, 2.6086e-03, 2.6162e-03, 2.6238e-03, 2.6314e-03, 2.6391e-03, 2.6467e-03, 2.6543e-03, 2.6620e-03, 2.6696e-03, 2.6772e-03, 2.6848e-03, 2.6925e-03, 2.7001e-03, 2.7077e-03, 2.7154e-03, 2.7230e-03, 2.7306e-03, 2.7382e-03, 2.7459e-03, 2.7535e-03, 2.7611e-03, 2.7688e-03, 2.7764e-03, 2.7840e-03, 2.7917e-03, 2.7993e-03, 2.8069e-03, 2.8145e-03, 2.8222e-03, 2.8298e-03, 2.8374e-03, 2.8451e-03, 2.8527e-03, 2.8603e-03, 2.8679e-03, 2.8756e-03, 2.8832e-03, 2.8908e-03, 2.8985e-03, 2.9061e-03, 2.9137e-03, 2.9213e-03, 2.9290e-03, 2.9366e-03, 2.9442e-03, 2.9519e-03, 2.9595e-03, 2.9671e-03, 2.9747e-03, 2.9824e-03, 2.9900e-03, 2.9976e-03, 3.0053e-03, 3.0129e-03, 3.0205e-03, 3.0281e-03, 3.0358e-03, 3.0434e-03, 3.0510e-03, 3.0587e-03, 3.0663e-03, 3.0739e-03, 3.0816e-03, 3.0892e-03, 3.0968e-03, 3.1044e-03, 3.1121e-03, 3.1197e-03, 3.1273e-03, 3.1350e-03, 3.1426e-03, 3.1502e-03, 3.1578e-03, 3.1655e-03, 3.1731e-03, 3.1807e-03, 3.1884e-03, 3.1960e-03, 3.2036e-03, 3.2112e-03, 3.2189e-03, 3.2265e-03, 3.2341e-03, 3.2418e-03, 3.2494e-03, 3.2570e-03, 3.2646e-03, 3.2723e-03, 3.2799e-03, 3.2875e-03, 3.2952e-03, 3.3028e-03, 3.3104e-03, 3.3180e-03, 3.3257e-03, 3.3333e-03, 3.3409e-03, 3.3486e-03, 3.3562e-03, 3.3638e-03, 3.3715e-03, 3.3791e-03, 3.3867e-03, 3.3943e-03, 3.4020e-03, 3.4096e-03, 3.4172e-03, 3.4249e-03, 3.4325e-03, 3.4401e-03, 3.4477e-03, 3.4554e-03, 3.4630e-03, 3.4706e-03, 3.4783e-03, 3.4859e-03, 3.4935e-03, 3.5011e-03, 3.5088e-03, 3.5164e-03, 3.5240e-03, 3.5317e-03, 3.5393e-03, 3.5469e-03, 3.5545e-03, 3.5622e-03, 3.5698e-03, 3.5774e-03, 3.5851e-03, 3.5927e-03, 3.6003e-03, 3.6079e-03, 3.6156e-03, 3.6232e-03, 3.6308e-03, 3.6385e-03, 3.6461e-03, 3.6537e-03, 3.6613e-03, 3.6690e-03, 3.6766e-03, 3.6842e-03, 3.6919e-03, 3.6995e-03, 3.7071e-03, 3.7148e-03, 3.7224e-03, 3.7300e-03, 3.7376e-03, 3.7453e-03, 3.7529e-03, 3.7605e-03, 3.7682e-03, 3.7758e-03, 3.7834e-03, 3.7910e-03, 3.7987e-03, 3.8063e-03, 3.8139e-03, 3.8216e-03, 3.8292e-03, 3.8368e-03, 3.8444e-03, 3.8521e-03, 3.8597e-03, 3.8673e-03, 3.8750e-03, 3.8826e-03, 3.8902e-03, 3.8978e-03, 3.9055e-03, - 3.9207e-03, 3.9360e-03, 3.9513e-03, 3.9665e-03, 3.9818e-03, 3.9970e-03, 4.0123e-03, 4.0275e-03, 4.0428e-03, 4.0581e-03, 4.0733e-03, 4.0886e-03, 4.1038e-03, 4.1191e-03, 4.1343e-03, 4.1496e-03, 4.1649e-03, 4.1801e-03, 4.1954e-03, 4.2106e-03, 4.2259e-03, 4.2412e-03, 4.2564e-03, 4.2717e-03, 4.2869e-03, 4.3022e-03, 4.3174e-03, 4.3327e-03, 4.3480e-03, 4.3632e-03, 4.3785e-03, 4.3937e-03, 4.4090e-03, 4.4243e-03, 4.4395e-03, 4.4548e-03, 4.4700e-03, 4.4853e-03, 4.5005e-03, 4.5158e-03, 4.5311e-03, 4.5463e-03, 4.5616e-03, 4.5768e-03, 4.5921e-03, 4.6074e-03, 4.6226e-03, 4.6379e-03, 4.6531e-03, 4.6684e-03, 4.6836e-03, 4.6989e-03, 4.7142e-03, 4.7294e-03, 4.7447e-03, 4.7599e-03, 4.7752e-03, 4.7905e-03, 4.8057e-03, 4.8210e-03, 4.8362e-03, 4.8515e-03, 4.8667e-03, 4.8820e-03, 4.8973e-03, 4.9125e-03, 4.9278e-03, 4.9430e-03, 4.9583e-03, 4.9736e-03, 4.9888e-03, 5.0041e-03, 5.0193e-03, 5.0346e-03, 5.0498e-03, 5.0651e-03, 5.0804e-03, 5.0956e-03, 5.1109e-03, 5.1261e-03, 5.1414e-03, 5.1567e-03, 5.1719e-03, 5.1872e-03, 5.2024e-03, 5.2177e-03, 5.2329e-03, 5.2482e-03, 5.2635e-03, 5.2787e-03, 5.2940e-03, 5.3092e-03, 5.3245e-03, 5.3398e-03, 5.3550e-03, 5.3703e-03, 5.3855e-03, 5.4008e-03, 5.4160e-03, 5.4313e-03, 5.4466e-03, 5.4618e-03, 5.4771e-03, 5.4923e-03, 5.5076e-03, 5.5229e-03, 5.5381e-03, 5.5534e-03, 5.5686e-03, 5.5839e-03, 5.5991e-03, 5.6144e-03, 5.6297e-03, 5.6449e-03, 5.6602e-03, 5.6754e-03, 5.6907e-03, 5.7060e-03, 5.7212e-03, 5.7365e-03, 5.7517e-03, 5.7670e-03, 5.7822e-03, 5.7975e-03, 5.8128e-03, 5.8280e-03, 5.8433e-03, 5.8585e-03, 5.8738e-03, 5.8891e-03, 5.9043e-03, 5.9196e-03, 5.9348e-03, 5.9501e-03, 5.9653e-03, 5.9806e-03, 5.9959e-03, 6.0111e-03, 6.0264e-03, 6.0416e-03, 6.0569e-03, 6.0722e-03, 6.0874e-03, 6.1027e-03, 6.1179e-03, 6.1332e-03, 6.1484e-03, 6.1637e-03, 6.1790e-03, 6.1942e-03, 6.2095e-03, 6.2247e-03, 6.2400e-03, 6.2553e-03, 6.2705e-03, 6.2858e-03, 6.3010e-03, 6.3163e-03, 6.3315e-03, 6.3468e-03, 6.3621e-03, 6.3773e-03, 6.3926e-03, 6.4078e-03, 6.4231e-03, 6.4384e-03, 6.4536e-03, 6.4689e-03, 6.4841e-03, 6.4994e-03, 6.5146e-03, 6.5299e-03, 6.5452e-03, 6.5604e-03, 6.5757e-03, 6.5909e-03, 6.6062e-03, 6.6215e-03, 6.6367e-03, 6.6520e-03, 6.6672e-03, 6.6825e-03, 6.6977e-03, 6.7130e-03, 6.7283e-03, 6.7435e-03, 6.7588e-03, 6.7740e-03, 6.7893e-03, 6.8046e-03, 6.8198e-03, 6.8351e-03, 6.8503e-03, 6.8656e-03, 6.8808e-03, 6.8961e-03, 6.9114e-03, 6.9266e-03, 6.9419e-03, 6.9571e-03, 6.9724e-03, 6.9877e-03, 7.0029e-03, 7.0182e-03, 7.0334e-03, 7.0487e-03, 7.0639e-03, 7.0792e-03, 7.0945e-03, 7.1097e-03, 7.1250e-03, 7.1402e-03, 7.1555e-03, 7.1708e-03, 7.1860e-03, 7.2013e-03, 7.2165e-03, 7.2318e-03, 7.2470e-03, 7.2623e-03, 7.2776e-03, 7.2928e-03, 7.3081e-03, 7.3233e-03, 7.3386e-03, 7.3539e-03, 7.3691e-03, 7.3844e-03, 7.3996e-03, 7.4149e-03, 7.4301e-03, 7.4454e-03, 7.4607e-03, 7.4759e-03, 7.4912e-03, 7.5064e-03, 7.5217e-03, 7.5370e-03, 7.5522e-03, 7.5675e-03, 7.5827e-03, 7.5980e-03, 7.6132e-03, 7.6285e-03, 7.6438e-03, 7.6590e-03, 7.6743e-03, 7.6895e-03, 7.7048e-03, 7.7201e-03, 7.7353e-03, 7.7506e-03, 7.7658e-03, 7.7811e-03, 7.7963e-03, 7.8116e-03, - 7.8421e-03, 7.8726e-03, 7.9032e-03, 7.9337e-03, 7.9642e-03, 7.9947e-03, 8.0252e-03, 8.0557e-03, 8.0863e-03, 8.1168e-03, 8.1473e-03, 8.1778e-03, 8.2083e-03, 8.2388e-03, 8.2694e-03, 8.2999e-03, 8.3304e-03, 8.3609e-03, 8.3914e-03, 8.4219e-03, 8.4525e-03, 8.4830e-03, 8.5135e-03, 8.5440e-03, 8.5745e-03, 8.6051e-03, 8.6356e-03, 8.6661e-03, 8.6966e-03, 8.7271e-03, 8.7576e-03, 8.7882e-03, 8.8187e-03, 8.8492e-03, 8.8797e-03, 8.9102e-03, 8.9407e-03, 8.9713e-03, 9.0018e-03, 9.0323e-03, 9.0628e-03, 9.0933e-03, 9.1238e-03, 9.1544e-03, 9.1849e-03, 9.2154e-03, 9.2459e-03, 9.2764e-03, 9.3069e-03, 9.3375e-03, 9.3680e-03, 9.3985e-03, 9.4290e-03, 9.4595e-03, 9.4900e-03, 9.5206e-03, 9.5511e-03, 9.5816e-03, 9.6121e-03, 9.6426e-03, 9.6731e-03, 9.7037e-03, 9.7342e-03, 9.7647e-03, 9.7952e-03, 9.8257e-03, 9.8563e-03, 9.8868e-03, 9.9173e-03, 9.9478e-03, 9.9783e-03, 1.0009e-02, 1.0039e-02, 1.0070e-02, 1.0100e-02, 1.0131e-02, 1.0161e-02, 1.0192e-02, 1.0222e-02, 1.0253e-02, 1.0283e-02, 1.0314e-02, 1.0345e-02, 1.0375e-02, 1.0406e-02, 1.0436e-02, 1.0467e-02, 1.0497e-02, 1.0528e-02, 1.0558e-02, 1.0589e-02, 1.0619e-02, 1.0650e-02, 1.0680e-02, 1.0711e-02, 1.0741e-02, 1.0772e-02, 1.0802e-02, 1.0833e-02, 1.0863e-02, 1.0894e-02, 1.0924e-02, 1.0955e-02, 1.0985e-02, 1.1016e-02, 1.1046e-02, 1.1077e-02, 1.1107e-02, 1.1138e-02, 1.1168e-02, 1.1199e-02, 1.1230e-02, 1.1260e-02, 1.1291e-02, 1.1321e-02, 1.1352e-02, 1.1382e-02, 1.1413e-02, 1.1443e-02, 1.1474e-02, 1.1504e-02, 1.1535e-02, 1.1565e-02, 1.1596e-02, 1.1626e-02, 1.1657e-02, 1.1687e-02, 1.1718e-02, 1.1748e-02, 1.1779e-02, 1.1809e-02, 1.1840e-02, 1.1870e-02, 1.1901e-02, 1.1931e-02, 1.1962e-02, 1.1992e-02, 1.2023e-02, 1.2053e-02, 1.2084e-02, 1.2115e-02, 1.2145e-02, 1.2176e-02, 1.2206e-02, 1.2237e-02, 1.2267e-02, 1.2298e-02, 1.2328e-02, 1.2359e-02, 1.2389e-02, 1.2420e-02, 1.2450e-02, 1.2481e-02, 1.2511e-02, 1.2542e-02, 1.2572e-02, 1.2603e-02, 1.2633e-02, 1.2664e-02, 1.2694e-02, 1.2725e-02, 1.2755e-02, 1.2786e-02, 1.2816e-02, 1.2847e-02, 1.2877e-02, 1.2908e-02, 1.2938e-02, 1.2969e-02, 1.3000e-02, 1.3030e-02, 1.3061e-02, 1.3091e-02, 1.3122e-02, 1.3152e-02, 1.3183e-02, 1.3213e-02, 1.3244e-02, 1.3274e-02, 1.3305e-02, 1.3335e-02, 1.3366e-02, 1.3396e-02, 1.3427e-02, 1.3457e-02, 1.3488e-02, 1.3518e-02, 1.3549e-02, 1.3579e-02, 1.3610e-02, 1.3640e-02, 1.3671e-02, 1.3701e-02, 1.3732e-02, 1.3762e-02, 1.3793e-02, 1.3823e-02, 1.3854e-02, 1.3885e-02, 1.3915e-02, 1.3946e-02, 1.3976e-02, 1.4007e-02, 1.4037e-02, 1.4068e-02, 1.4098e-02, 1.4129e-02, 1.4159e-02, 1.4190e-02, 1.4220e-02, 1.4251e-02, 1.4281e-02, 1.4312e-02, 1.4342e-02, 1.4373e-02, 1.4403e-02, 1.4434e-02, 1.4464e-02, 1.4495e-02, 1.4525e-02, 1.4556e-02, 1.4586e-02, 1.4617e-02, 1.4647e-02, 1.4678e-02, 1.4708e-02, 1.4739e-02, 1.4770e-02, 1.4800e-02, 1.4831e-02, 1.4861e-02, 1.4892e-02, 1.4922e-02, 1.4953e-02, 1.4983e-02, 1.5014e-02, 1.5044e-02, 1.5075e-02, 1.5105e-02, 1.5136e-02, 1.5166e-02, 1.5197e-02, 1.5227e-02, 1.5258e-02, 1.5288e-02, 1.5319e-02, 1.5349e-02, 1.5380e-02, 1.5410e-02, 1.5441e-02, 1.5471e-02, 1.5502e-02, 1.5532e-02, 1.5563e-02, 1.5593e-02, 1.5624e-02, - 1.5746e-02, 1.5868e-02, 1.5990e-02, 1.6112e-02, 1.6234e-02, 1.6356e-02, 1.6478e-02, 1.6601e-02, 1.6723e-02, 1.6845e-02, 1.6967e-02, 1.7089e-02, 1.7211e-02, 1.7333e-02, 1.7455e-02, 1.7577e-02, 1.7699e-02, 1.7821e-02, 1.7943e-02, 1.8065e-02, 1.8187e-02, 1.8310e-02, 1.8432e-02, 1.8554e-02, 1.8676e-02, 1.8798e-02, 1.8920e-02, 1.9042e-02, 1.9164e-02, 1.9286e-02, 1.9408e-02, 1.9530e-02, 1.9652e-02, 1.9774e-02, 1.9896e-02, 2.0018e-02, 2.0141e-02, 2.0263e-02, 2.0385e-02, 2.0507e-02, 2.0629e-02, 2.0751e-02, 2.0873e-02, 2.0995e-02, 2.1117e-02, 2.1239e-02, 2.1361e-02, 2.1483e-02, 2.1605e-02, 2.1727e-02, 2.1850e-02, 2.1972e-02, 2.2094e-02, 2.2216e-02, 2.2338e-02, 2.2460e-02, 2.2582e-02, 2.2704e-02, 2.2826e-02, 2.2948e-02, 2.3070e-02, 2.3192e-02, 2.3314e-02, 2.3436e-02, 2.3558e-02, 2.3681e-02, 2.3803e-02, 2.3925e-02, 2.4047e-02, 2.4169e-02, 2.4291e-02, 2.4413e-02, 2.4535e-02, 2.4657e-02, 2.4779e-02, 2.4901e-02, 2.5023e-02, 2.5145e-02, 2.5267e-02, 2.5390e-02, 2.5512e-02, 2.5634e-02, 2.5756e-02, 2.5878e-02, 2.6000e-02, 2.6122e-02, 2.6244e-02, 2.6366e-02, 2.6488e-02, 2.6610e-02, 2.6732e-02, 2.6854e-02, 2.6976e-02, 2.7099e-02, 2.7221e-02, 2.7343e-02, 2.7465e-02, 2.7587e-02, 2.7709e-02, 2.7831e-02, 2.7953e-02, 2.8075e-02, 2.8197e-02, 2.8319e-02, 2.8441e-02, 2.8563e-02, 2.8685e-02, 2.8807e-02, 2.8930e-02, 2.9052e-02, 2.9174e-02, 2.9296e-02, 2.9418e-02, 2.9540e-02, 2.9662e-02, 2.9784e-02, 2.9906e-02, 3.0028e-02, 3.0150e-02, 3.0272e-02, 3.0394e-02, 3.0516e-02, 3.0639e-02, 3.0761e-02, 3.0883e-02, 3.1005e-02, 3.1127e-02, 3.1249e-02, 3.1493e-02, 3.1737e-02, 3.1981e-02, 3.2225e-02, 3.2470e-02, 3.2714e-02, 3.2958e-02, 3.3202e-02, 3.3446e-02, 3.3690e-02, 3.3934e-02, 3.4179e-02, 3.4423e-02, 3.4667e-02, 3.4911e-02, 3.5155e-02, 3.5399e-02, 3.5643e-02, 3.5888e-02, 3.6132e-02, 3.6376e-02, 3.6620e-02, 3.6864e-02, 3.7108e-02, 3.7352e-02, 3.7596e-02, 3.7841e-02, 3.8085e-02, 3.8329e-02, 3.8573e-02, 3.8817e-02, 3.9061e-02, 3.9305e-02, 3.9550e-02, 3.9794e-02, 4.0038e-02, 4.0282e-02, 4.0526e-02, 4.0770e-02, 4.1014e-02, 4.1259e-02, 4.1503e-02, 4.1747e-02, 4.1991e-02, 4.2235e-02, 4.2479e-02, 4.2723e-02, 4.2968e-02, 4.3212e-02, 4.3456e-02, 4.3700e-02, 4.3944e-02, 4.4188e-02, 4.4432e-02, 4.4677e-02, 4.4921e-02, 4.5165e-02, 4.5409e-02, 4.5653e-02, 4.5897e-02, 4.6141e-02, 4.6386e-02, 4.6630e-02, 4.6874e-02, 4.7118e-02, 4.7362e-02, 4.7606e-02, 4.7850e-02, 4.8095e-02, 4.8339e-02, 4.8583e-02, 4.8827e-02, 4.9071e-02, 4.9315e-02, 4.9559e-02, 4.9803e-02, 5.0048e-02, 5.0292e-02, 5.0536e-02, 5.0780e-02, 5.1024e-02, 5.1268e-02, 5.1512e-02, 5.1757e-02, 5.2001e-02, 5.2245e-02, 5.2489e-02, 5.2733e-02, 5.2977e-02, 5.3221e-02, 5.3466e-02, 5.3710e-02, 5.3954e-02, 5.4198e-02, 5.4442e-02, 5.4686e-02, 5.4930e-02, 5.5175e-02, 5.5419e-02, 5.5663e-02, 5.5907e-02, 5.6151e-02, 5.6395e-02, 5.6639e-02, 5.6884e-02, 5.7128e-02, 5.7372e-02, 5.7616e-02, 5.7860e-02, 5.8104e-02, 5.8348e-02, 5.8593e-02, 5.8837e-02, 5.9081e-02, 5.9325e-02, 5.9569e-02, 5.9813e-02, 6.0057e-02, 6.0301e-02, 6.0546e-02, 6.0790e-02, 6.1034e-02, 6.1278e-02, 6.1522e-02, 6.1766e-02, 6.2010e-02, 6.2255e-02, 6.2499e-02, - 6.2743e-02, 6.2987e-02, 6.3231e-02, 6.3475e-02, 6.3719e-02, 6.3964e-02, 6.4208e-02, 6.4452e-02, 6.4696e-02, 6.4940e-02, 6.5184e-02, 6.5428e-02, 6.5673e-02, 6.5917e-02, 6.6161e-02, 6.6405e-02, 6.6649e-02, 6.6893e-02, 6.7137e-02, 6.7382e-02, 6.7626e-02, 6.7870e-02, 6.8114e-02, 6.8358e-02, 6.8602e-02, 6.8846e-02, 6.9091e-02, 6.9335e-02, 6.9579e-02, 6.9823e-02, 7.0067e-02, 7.0311e-02, 7.0555e-02, 7.0799e-02, 7.1044e-02, 7.1288e-02, 7.1532e-02, 7.1776e-02, 7.2020e-02, 7.2264e-02, 7.2508e-02, 7.2753e-02, 7.2997e-02, 7.3241e-02, 7.3485e-02, 7.3729e-02, 7.3973e-02, 7.4217e-02, 7.4462e-02, 7.4706e-02, 7.4950e-02, 7.5194e-02, 7.5438e-02, 7.5682e-02, 7.5926e-02, 7.6171e-02, 7.6415e-02, 7.6659e-02, 7.6903e-02, 7.7147e-02, 7.7391e-02, 7.7635e-02, 7.7880e-02, 7.8124e-02, 7.8368e-02, 7.8612e-02, 7.8856e-02, 7.9100e-02, 7.9344e-02, 7.9589e-02, 7.9833e-02, 8.0077e-02, 8.0321e-02, 8.0565e-02, 8.0809e-02, 8.1053e-02, 8.1298e-02, 8.1542e-02, 8.1786e-02, 8.2030e-02, 8.2274e-02, 8.2518e-02, 8.2762e-02, 8.3006e-02, 8.3251e-02, 8.3495e-02, 8.3739e-02, 8.3983e-02, 8.4227e-02, 8.4471e-02, 8.4715e-02, 8.4960e-02, 8.5204e-02, 8.5448e-02, 8.5692e-02, 8.5936e-02, 8.6180e-02, 8.6424e-02, 8.6669e-02, 8.6913e-02, 8.7157e-02, 8.7401e-02, 8.7645e-02, 8.7889e-02, 8.8133e-02, 8.8378e-02, 8.8622e-02, 8.8866e-02, 8.9110e-02, 8.9354e-02, 8.9598e-02, 8.9842e-02, 9.0087e-02, 9.0331e-02, 9.0575e-02, 9.0819e-02, 9.1063e-02, 9.1307e-02, 9.1551e-02, 9.1796e-02, 9.2040e-02, 9.2284e-02, 9.2528e-02, 9.2772e-02, 9.3016e-02, 9.3260e-02, 9.3504e-02, 9.3749e-02, 9.4237e-02, 9.4725e-02, 9.5213e-02, 9.5702e-02, 9.6190e-02, 9.6678e-02, 9.7167e-02, 9.7655e-02, 9.8143e-02, 9.8631e-02, 9.9120e-02, 9.9608e-02, 1.0010e-01, 1.0058e-01, 1.0107e-01, 1.0156e-01, 1.0205e-01, 1.0254e-01, 1.0303e-01, 1.0351e-01, 1.0400e-01, 1.0449e-01, 1.0498e-01, 1.0547e-01, 1.0596e-01, 1.0644e-01, 1.0693e-01, 1.0742e-01, 1.0791e-01, 1.0840e-01, 1.0889e-01, 1.0937e-01, 1.0986e-01, 1.1035e-01, 1.1084e-01, 1.1133e-01, 1.1182e-01, 1.1230e-01, 1.1279e-01, 1.1328e-01, 1.1377e-01, 1.1426e-01, 1.1474e-01, 1.1523e-01, 1.1572e-01, 1.1621e-01, 1.1670e-01, 1.1719e-01, 1.1767e-01, 1.1816e-01, 1.1865e-01, 1.1914e-01, 1.1963e-01, 1.2012e-01, 1.2060e-01, 1.2109e-01, 1.2158e-01, 1.2207e-01, 1.2256e-01, 1.2305e-01, 1.2353e-01, 1.2402e-01, 1.2451e-01, 1.2500e-01, 1.2549e-01, 1.2598e-01, 1.2646e-01, 1.2695e-01, 1.2744e-01, 1.2793e-01, 1.2842e-01, 1.2890e-01, 1.2939e-01, 1.2988e-01, 1.3037e-01, 1.3086e-01, 1.3135e-01, 1.3183e-01, 1.3232e-01, 1.3281e-01, 1.3330e-01, 1.3379e-01, 1.3428e-01, 1.3476e-01, 1.3525e-01, 1.3574e-01, 1.3623e-01, 1.3672e-01, 1.3721e-01, 1.3769e-01, 1.3818e-01, 1.3867e-01, 1.3916e-01, 1.3965e-01, 1.4014e-01, 1.4062e-01, 1.4111e-01, 1.4160e-01, 1.4209e-01, 1.4258e-01, 1.4306e-01, 1.4355e-01, 1.4404e-01, 1.4453e-01, 1.4502e-01, 1.4551e-01, 1.4599e-01, 1.4648e-01, 1.4697e-01, 1.4746e-01, 1.4795e-01, 1.4844e-01, 1.4892e-01, 1.4941e-01, 1.4990e-01, 1.5039e-01, 1.5088e-01, 1.5137e-01, 1.5185e-01, 1.5234e-01, 1.5283e-01, 1.5332e-01, 1.5381e-01, 1.5430e-01, 1.5478e-01, 1.5527e-01, 1.5576e-01, 1.5625e-01, - 1.5674e-01, 1.5723e-01, 1.5771e-01, 1.5820e-01, 1.5869e-01, 1.5918e-01, 1.5967e-01, 1.6015e-01, 1.6064e-01, 1.6113e-01, 1.6162e-01, 1.6211e-01, 1.6260e-01, 1.6308e-01, 1.6357e-01, 1.6406e-01, 1.6455e-01, 1.6504e-01, 1.6553e-01, 1.6601e-01, 1.6650e-01, 1.6699e-01, 1.6748e-01, 1.6797e-01, 1.6846e-01, 1.6894e-01, 1.6943e-01, 1.6992e-01, 1.7041e-01, 1.7090e-01, 1.7139e-01, 1.7187e-01, 1.7236e-01, 1.7285e-01, 1.7334e-01, 1.7383e-01, 1.7431e-01, 1.7480e-01, 1.7529e-01, 1.7578e-01, 1.7627e-01, 1.7676e-01, 1.7724e-01, 1.7773e-01, 1.7822e-01, 1.7871e-01, 1.7920e-01, 1.7969e-01, 1.8017e-01, 1.8066e-01, 1.8115e-01, 1.8164e-01, 1.8213e-01, 1.8262e-01, 1.8310e-01, 1.8359e-01, 1.8408e-01, 1.8457e-01, 1.8506e-01, 1.8555e-01, 1.8603e-01, 1.8652e-01, 1.8701e-01, 1.8750e-01, 1.8848e-01, 1.8945e-01, 1.9043e-01, 1.9140e-01, 1.9238e-01, 1.9336e-01, 1.9433e-01, 1.9531e-01, 1.9629e-01, 1.9726e-01, 1.9824e-01, 1.9922e-01, 2.0019e-01, 2.0117e-01, 2.0215e-01, 2.0312e-01, 2.0410e-01, 2.0508e-01, 2.0605e-01, 2.0703e-01, 2.0801e-01, 2.0898e-01, 2.0996e-01, 2.1094e-01, 2.1191e-01, 2.1289e-01, 2.1387e-01, 2.1484e-01, 2.1582e-01, 2.1680e-01, 2.1777e-01, 2.1875e-01, 2.1972e-01, 2.2070e-01, 2.2168e-01, 2.2265e-01, 2.2363e-01, 2.2461e-01, 2.2558e-01, 2.2656e-01, 2.2754e-01, 2.2851e-01, 2.2949e-01, 2.3047e-01, 2.3144e-01, 2.3242e-01, 2.3340e-01, 2.3437e-01, 2.3535e-01, 2.3633e-01, 2.3730e-01, 2.3828e-01, 2.3926e-01, 2.4023e-01, 2.4121e-01, 2.4219e-01, 2.4316e-01, 2.4414e-01, 2.4512e-01, 2.4609e-01, 2.4707e-01, 2.4805e-01, 2.4902e-01, 2.5000e-01, 2.5097e-01, 2.5195e-01, 2.5293e-01, 2.5390e-01, 2.5488e-01, 2.5586e-01, 2.5683e-01, 2.5781e-01, 2.5879e-01, 2.5976e-01, 2.6074e-01, 2.6172e-01, 2.6269e-01, 2.6367e-01, 2.6465e-01, 2.6562e-01, 2.6660e-01, 2.6758e-01, 2.6855e-01, 2.6953e-01, 2.7051e-01, 2.7148e-01, 2.7246e-01, 2.7344e-01, 2.7441e-01, 2.7539e-01, 2.7637e-01, 2.7734e-01, 2.7832e-01, 2.7930e-01, 2.8027e-01, 2.8125e-01, 2.8222e-01, 2.8320e-01, 2.8418e-01, 2.8515e-01, 2.8613e-01, 2.8711e-01, 2.8808e-01, 2.8906e-01, 2.9004e-01, 2.9101e-01, 2.9199e-01, 2.9297e-01, 2.9394e-01, 2.9492e-01, 2.9590e-01, 2.9687e-01, 2.9785e-01, 2.9883e-01, 2.9980e-01, 3.0078e-01, 3.0176e-01, 3.0273e-01, 3.0371e-01, 3.0469e-01, 3.0566e-01, 3.0664e-01, 3.0762e-01, 3.0859e-01, 3.0957e-01, 3.1055e-01, 3.1152e-01, 3.1250e-01, 3.1347e-01, 3.1445e-01, 3.1543e-01, 3.1640e-01, 3.1738e-01, 3.1836e-01, 3.1933e-01, 3.2031e-01, 3.2129e-01, 3.2226e-01, 3.2324e-01, 3.2422e-01, 3.2519e-01, 3.2617e-01, 3.2715e-01, 3.2812e-01, 3.2910e-01, 3.3008e-01, 3.3105e-01, 3.3203e-01, 3.3301e-01, 3.3398e-01, 3.3496e-01, 3.3594e-01, 3.3691e-01, 3.3789e-01, 3.3887e-01, 3.3984e-01, 3.4082e-01, 3.4180e-01, 3.4277e-01, 3.4375e-01, 3.4472e-01, 3.4570e-01, 3.4668e-01, 3.4765e-01, 3.4863e-01, 3.4961e-01, 3.5058e-01, 3.5156e-01, 3.5254e-01, 3.5351e-01, 3.5449e-01, 3.5547e-01, 3.5644e-01, 3.5742e-01, 3.5840e-01, 3.5937e-01, 3.6035e-01, 3.6133e-01, 3.6230e-01, 3.6328e-01, 3.6426e-01, 3.6523e-01, 3.6621e-01, 3.6719e-01, 3.6816e-01, 3.6914e-01, 3.7012e-01, 3.7109e-01, 3.7207e-01, 3.7305e-01, 3.7402e-01, 3.7500e-01, - 3.7695e-01, 3.7890e-01, 3.8086e-01, 3.8281e-01, 3.8476e-01, 3.8672e-01, 3.8867e-01, 3.9062e-01, 3.9258e-01, 3.9453e-01, 3.9648e-01, 3.9844e-01, 4.0039e-01, 4.0234e-01, 4.0430e-01, 4.0625e-01, 4.0820e-01, 4.1015e-01, 4.1211e-01, 4.1406e-01, 4.1601e-01, 4.1797e-01, 4.1992e-01, 4.2187e-01, 4.2383e-01, 4.2578e-01, 4.2773e-01, 4.2969e-01, 4.3164e-01, 4.3359e-01, 4.3555e-01, 4.3750e-01, 4.3945e-01, 4.4140e-01, 4.4336e-01, 4.4531e-01, 4.4726e-01, 4.4922e-01, 4.5117e-01, 4.5312e-01, 4.5508e-01, 4.5703e-01, 4.5898e-01, 4.6094e-01, 4.6289e-01, 4.6484e-01, 4.6680e-01, 4.6875e-01, 4.7070e-01, 4.7265e-01, 4.7461e-01, 4.7656e-01, 4.7851e-01, 4.8047e-01, 4.8242e-01, 4.8437e-01, 4.8633e-01, 4.8828e-01, 4.9023e-01, 4.9219e-01, 4.9414e-01, 4.9609e-01, 4.9805e-01, 5.0000e-01, 5.0195e-01, 5.0390e-01, 5.0586e-01, 5.0781e-01, 5.0976e-01, 5.1172e-01, 5.1367e-01, 5.1562e-01, 5.1758e-01, 5.1953e-01, 5.2148e-01, 5.2344e-01, 5.2539e-01, 5.2734e-01, 5.2930e-01, 5.3125e-01, 5.3320e-01, 5.3515e-01, 5.3711e-01, 5.3906e-01, 5.4101e-01, 5.4297e-01, 5.4492e-01, 5.4687e-01, 5.4883e-01, 5.5078e-01, 5.5273e-01, 5.5469e-01, 5.5664e-01, 5.5859e-01, 5.6055e-01, 5.6250e-01, 5.6445e-01, 5.6640e-01, 5.6836e-01, 5.7031e-01, 5.7226e-01, 5.7422e-01, 5.7617e-01, 5.7812e-01, 5.8008e-01, 5.8203e-01, 5.8398e-01, 5.8594e-01, 5.8789e-01, 5.8984e-01, 5.9180e-01, 5.9375e-01, 5.9570e-01, 5.9765e-01, 5.9961e-01, 6.0156e-01, 6.0351e-01, 6.0547e-01, 6.0742e-01, 6.0937e-01, 6.1133e-01, 6.1328e-01, 6.1523e-01, 6.1719e-01, 6.1914e-01, 6.2109e-01, 6.2305e-01, 6.2500e-01, 6.2695e-01, 6.2890e-01, 6.3086e-01, 6.3281e-01, 6.3476e-01, 6.3672e-01, 6.3867e-01, 6.4062e-01, 6.4258e-01, 6.4453e-01, 6.4648e-01, 6.4844e-01, 6.5039e-01, 6.5234e-01, 6.5430e-01, 6.5625e-01, 6.5820e-01, 6.6015e-01, 6.6211e-01, 6.6406e-01, 6.6601e-01, 6.6797e-01, 6.6992e-01, 6.7187e-01, 6.7383e-01, 6.7578e-01, 6.7773e-01, 6.7969e-01, 6.8164e-01, 6.8359e-01, 6.8554e-01, 6.8750e-01, 6.8945e-01, 6.9140e-01, 6.9336e-01, 6.9531e-01, 6.9726e-01, 6.9922e-01, 7.0117e-01, 7.0312e-01, 7.0508e-01, 7.0703e-01, 7.0898e-01, 7.1094e-01, 7.1289e-01, 7.1484e-01, 7.1679e-01, 7.1875e-01, 7.2070e-01, 7.2265e-01, 7.2461e-01, 7.2656e-01, 7.2851e-01, 7.3047e-01, 7.3242e-01, 7.3437e-01, 7.3633e-01, 7.3828e-01, 7.4023e-01, 7.4219e-01, 7.4414e-01, 7.4609e-01, 7.4804e-01, 7.5000e-01, 7.5390e-01, 7.5781e-01, 7.6172e-01, 7.6562e-01, 7.6953e-01, 7.7344e-01, 7.7734e-01, 7.8125e-01, 7.8515e-01, 7.8906e-01, 7.9297e-01, 7.9687e-01, 8.0078e-01, 8.0469e-01, 8.0859e-01, 8.1250e-01, 8.1640e-01, 8.2031e-01, 8.2422e-01, 8.2812e-01, 8.3203e-01, 8.3594e-01, 8.3984e-01, 8.4375e-01, 8.4765e-01, 8.5156e-01, 8.5547e-01, 8.5937e-01, 8.6328e-01, 8.6719e-01, 8.7109e-01, 8.7500e-01, 8.7890e-01, 8.8281e-01, 8.8672e-01, 8.9062e-01, 8.9453e-01, 8.9844e-01, 9.0234e-01, 9.0625e-01, 9.1015e-01, 9.1406e-01, 9.1797e-01, 9.2187e-01, 9.2578e-01, 9.2969e-01, 9.3359e-01, 9.3750e-01, 9.4140e-01, 9.4531e-01, 9.4922e-01, 9.5312e-01, 9.5703e-01, 9.6094e-01, 9.6484e-01, 9.6875e-01, 9.7265e-01, 9.7656e-01, 9.8047e-01, 9.8437e-01, 9.8828e-01, 9.9219e-01, 9.9609e-01, 1.0000e+00 + 0.0000e+00, 5.9488e-08, 1.1898e-07, 1.7846e-07, 2.3795e-07, 2.9744e-07, 3.5693e-07, 4.1642e-07, 4.7591e-07, 5.3539e-07, 5.9488e-07, 6.5437e-07, 7.1386e-07, 7.7335e-07, 8.3284e-07, 8.9232e-07, 9.5181e-07, 1.0113e-06, 1.0708e-06, 1.1303e-06, 1.1898e-06, 1.2493e-06, 1.3087e-06, 1.3682e-06, 1.4277e-06, 1.4872e-06, 1.5467e-06, 1.6062e-06, 1.6657e-06, 1.7252e-06, 1.7846e-06, 1.8441e-06, 1.9036e-06, 1.9631e-06, 2.0226e-06, 2.0821e-06, 2.1416e-06, 2.2011e-06, 2.2606e-06, 2.3200e-06, 2.3795e-06, 2.4390e-06, 2.4985e-06, 2.5580e-06, 2.6175e-06, 2.6770e-06, 2.7365e-06, 2.7959e-06, 2.8554e-06, 2.9149e-06, 2.9744e-06, 3.0339e-06, 3.0934e-06, 3.1529e-06, 3.2124e-06, 3.2719e-06, 3.3313e-06, 3.3908e-06, 3.4503e-06, 3.5098e-06, 3.5693e-06, 3.6288e-06, 3.6883e-06, 3.7478e-06, 3.8072e-06, 3.8667e-06, 3.9262e-06, 3.9857e-06, 4.0452e-06, 4.1047e-06, 4.1642e-06, 4.2237e-06, 4.2832e-06, 4.3426e-06, 4.4021e-06, 4.4616e-06, 4.5211e-06, 4.5806e-06, 4.6401e-06, 4.6996e-06, 4.7591e-06, 4.8185e-06, 4.8780e-06, 4.9375e-06, 4.9970e-06, 5.0565e-06, 5.1160e-06, 5.1755e-06, 5.2350e-06, 5.2945e-06, 5.3539e-06, 5.4134e-06, 5.4729e-06, 5.5324e-06, 5.5919e-06, 5.6514e-06, 5.7109e-06, 5.7704e-06, 5.8298e-06, 5.8893e-06, 5.9488e-06, 6.0083e-06, 6.0678e-06, 6.1273e-06, 6.1868e-06, 6.2463e-06, 6.3058e-06, 6.3652e-06, 6.4247e-06, 6.4842e-06, 6.5437e-06, 6.6032e-06, 6.6627e-06, 6.7222e-06, 6.7817e-06, 6.8411e-06, 6.9006e-06, 6.9601e-06, 7.0196e-06, 7.0791e-06, 7.1386e-06, 7.1981e-06, 7.2576e-06, 7.3171e-06, 7.3765e-06, 7.4360e-06, 7.4955e-06, 7.5550e-06, 7.6145e-06, 7.6740e-06, 7.7335e-06, 7.7930e-06, 7.8524e-06, 7.9119e-06, 7.9714e-06, 8.0309e-06, 8.0904e-06, 8.1499e-06, 8.2094e-06, 8.2689e-06, 8.3284e-06, 8.3878e-06, 8.4473e-06, 8.5068e-06, 8.5663e-06, 8.6258e-06, 8.6853e-06, 8.7448e-06, 8.8043e-06, 8.8637e-06, 8.9232e-06, 8.9827e-06, 9.0422e-06, 9.1017e-06, 9.1612e-06, 9.2207e-06, 9.2802e-06, 9.3397e-06, 9.3991e-06, 9.4586e-06, 9.5181e-06, 9.5776e-06, 9.6371e-06, 9.6966e-06, 9.7561e-06, 9.8156e-06, 9.8750e-06, 9.9345e-06, 9.9940e-06, 1.0054e-05, 1.0113e-05, 1.0172e-05, 1.0232e-05, 1.0291e-05, 1.0351e-05, 1.0410e-05, 1.0470e-05, 1.0529e-05, 1.0589e-05, 1.0648e-05, 1.0708e-05, 1.0767e-05, 1.0827e-05, 1.0886e-05, 1.0946e-05, 1.1005e-05, 1.1065e-05, 1.1124e-05, 1.1184e-05, 1.1243e-05, 1.1303e-05, 1.1362e-05, 1.1422e-05, 1.1481e-05, 1.1541e-05, 1.1600e-05, 1.1660e-05, 1.1719e-05, 1.1779e-05, 1.1838e-05, 1.1898e-05, 1.1957e-05, 1.2017e-05, 1.2076e-05, 1.2136e-05, 1.2195e-05, 1.2255e-05, 1.2314e-05, 1.2374e-05, 1.2433e-05, 1.2493e-05, 1.2552e-05, 1.2612e-05, 1.2671e-05, 1.2730e-05, 1.2790e-05, 1.2849e-05, 1.2909e-05, 1.2968e-05, 1.3028e-05, 1.3087e-05, 1.3147e-05, 1.3206e-05, 1.3266e-05, 1.3325e-05, 1.3385e-05, 1.3444e-05, 1.3504e-05, 1.3563e-05, 1.3623e-05, 1.3682e-05, 1.3742e-05, 1.3801e-05, 1.3861e-05, 1.3920e-05, 1.3980e-05, 1.4039e-05, 1.4099e-05, 1.4158e-05, 1.4218e-05, 1.4277e-05, 1.4337e-05, 1.4396e-05, 1.4456e-05, 1.4515e-05, 1.4575e-05, 1.4634e-05, 1.4694e-05, 1.4753e-05, 1.4813e-05, 1.4872e-05, 1.4932e-05, 1.4991e-05, 1.5051e-05, 1.5110e-05, 1.5169e-05, // NOLINT + 1.5229e-05, 1.5288e-05, 1.5348e-05, 1.5407e-05, 1.5467e-05, 1.5526e-05, 1.5586e-05, 1.5645e-05, 1.5705e-05, 1.5764e-05, 1.5824e-05, 1.5883e-05, 1.5943e-05, 1.6002e-05, 1.6062e-05, 1.6121e-05, 1.6181e-05, 1.6240e-05, 1.6300e-05, 1.6359e-05, 1.6419e-05, 1.6478e-05, 1.6538e-05, 1.6597e-05, 1.6657e-05, 1.6716e-05, 1.6776e-05, 1.6835e-05, 1.6895e-05, 1.6954e-05, 1.7014e-05, 1.7073e-05, 1.7133e-05, 1.7192e-05, 1.7252e-05, 1.7311e-05, 1.7371e-05, 1.7430e-05, 1.7490e-05, 1.7549e-05, 1.7609e-05, 1.7668e-05, 1.7727e-05, 1.7787e-05, 1.7846e-05, 1.7906e-05, 1.7965e-05, 1.8025e-05, 1.8084e-05, 1.8144e-05, 1.8203e-05, 1.8263e-05, 1.8322e-05, 1.8382e-05, 1.8441e-05, 1.8501e-05, 1.8560e-05, 1.8620e-05, 1.8679e-05, 1.8739e-05, 1.8798e-05, 1.8858e-05, 1.8917e-05, 1.8977e-05, 1.9036e-05, 1.9096e-05, 1.9155e-05, 1.9215e-05, 1.9274e-05, 1.9334e-05, 1.9393e-05, 1.9453e-05, 1.9512e-05, 1.9572e-05, 1.9631e-05, 1.9691e-05, 1.9750e-05, 1.9810e-05, 1.9869e-05, 1.9929e-05, 1.9988e-05, 2.0048e-05, 2.0107e-05, 2.0167e-05, 2.0226e-05, 2.0285e-05, 2.0345e-05, 2.0404e-05, 2.0464e-05, 2.0523e-05, 2.0583e-05, 2.0642e-05, 2.0702e-05, 2.0761e-05, 2.0821e-05, 2.0880e-05, 2.0940e-05, 2.0999e-05, 2.1059e-05, 2.1118e-05, 2.1178e-05, 2.1237e-05, 2.1297e-05, 2.1356e-05, 2.1416e-05, 2.1475e-05, 2.1535e-05, 2.1594e-05, 2.1654e-05, 2.1713e-05, 2.1773e-05, 2.1832e-05, 2.1892e-05, 2.1951e-05, 2.2011e-05, 2.2070e-05, 2.2130e-05, 2.2189e-05, 2.2249e-05, 2.2308e-05, 2.2368e-05, 2.2427e-05, 2.2487e-05, 2.2546e-05, 2.2606e-05, 2.2665e-05, 2.2725e-05, 2.2784e-05, 2.2843e-05, 2.2903e-05, 2.2962e-05, 2.3022e-05, 2.3081e-05, 2.3141e-05, 2.3200e-05, 2.3260e-05, 2.3319e-05, 2.3379e-05, 2.3438e-05, 2.3498e-05, 2.3557e-05, 2.3617e-05, 2.3676e-05, 2.3736e-05, 2.3795e-05, 2.3855e-05, 2.3914e-05, 2.3974e-05, 2.4033e-05, 2.4093e-05, 2.4152e-05, 2.4212e-05, 2.4271e-05, 2.4331e-05, 2.4390e-05, 2.4450e-05, 2.4509e-05, 2.4569e-05, 2.4628e-05, 2.4688e-05, 2.4747e-05, 2.4807e-05, 2.4866e-05, 2.4926e-05, 2.4985e-05, 2.5045e-05, 2.5104e-05, 2.5164e-05, 2.5223e-05, 2.5282e-05, 2.5342e-05, 2.5401e-05, 2.5461e-05, 2.5520e-05, 2.5580e-05, 2.5639e-05, 2.5699e-05, 2.5758e-05, 2.5818e-05, 2.5877e-05, 2.5937e-05, 2.5996e-05, 2.6056e-05, 2.6115e-05, 2.6175e-05, 2.6234e-05, 2.6294e-05, 2.6353e-05, 2.6413e-05, 2.6472e-05, 2.6532e-05, 2.6591e-05, 2.6651e-05, 2.6710e-05, 2.6770e-05, 2.6829e-05, 2.6889e-05, 2.6948e-05, 2.7008e-05, 2.7067e-05, 2.7127e-05, 2.7186e-05, 2.7246e-05, 2.7305e-05, 2.7365e-05, 2.7424e-05, 2.7484e-05, 2.7543e-05, 2.7603e-05, 2.7662e-05, 2.7722e-05, 2.7781e-05, 2.7840e-05, 2.7900e-05, 2.7959e-05, 2.8019e-05, 2.8078e-05, 2.8138e-05, 2.8197e-05, 2.8257e-05, 2.8316e-05, 2.8376e-05, 2.8435e-05, 2.8495e-05, 2.8554e-05, 2.8614e-05, 2.8673e-05, 2.8733e-05, 2.8792e-05, 2.8852e-05, 2.8911e-05, 2.8971e-05, 2.9030e-05, 2.9090e-05, 2.9149e-05, 2.9209e-05, 2.9268e-05, 2.9328e-05, 2.9387e-05, 2.9447e-05, 2.9506e-05, 2.9566e-05, 2.9625e-05, 2.9685e-05, 2.9744e-05, 2.9804e-05, 2.9863e-05, 2.9923e-05, 2.9982e-05, 3.0042e-05, 3.0101e-05, 3.0161e-05, 3.0220e-05, 3.0280e-05, 3.0339e-05, 3.0398e-05, // NOLINT + 3.0458e-05, 3.0577e-05, 3.0697e-05, 3.0816e-05, 3.0936e-05, 3.1055e-05, 3.1175e-05, 3.1294e-05, 3.1414e-05, 3.1533e-05, 3.1652e-05, 3.1772e-05, 3.1891e-05, 3.2011e-05, 3.2130e-05, 3.2250e-05, 3.2369e-05, 3.2489e-05, 3.2608e-05, 3.2727e-05, 3.2847e-05, 3.2966e-05, 3.3086e-05, 3.3205e-05, 3.3325e-05, 3.3444e-05, 3.3563e-05, 3.3683e-05, 3.3802e-05, 3.3922e-05, 3.4041e-05, 3.4161e-05, 3.4280e-05, 3.4400e-05, 3.4519e-05, 3.4638e-05, 3.4758e-05, 3.4877e-05, 3.4997e-05, 3.5116e-05, 3.5236e-05, 3.5355e-05, 3.5475e-05, 3.5594e-05, 3.5713e-05, 3.5833e-05, 3.5952e-05, 3.6072e-05, 3.6191e-05, 3.6311e-05, 3.6430e-05, 3.6550e-05, 3.6669e-05, 3.6788e-05, 3.6908e-05, 3.7027e-05, 3.7147e-05, 3.7266e-05, 3.7386e-05, 3.7505e-05, 3.7625e-05, 3.7744e-05, 3.7863e-05, 3.7983e-05, 3.8102e-05, 3.8222e-05, 3.8341e-05, 3.8461e-05, 3.8580e-05, 3.8700e-05, 3.8819e-05, 3.8938e-05, 3.9058e-05, 3.9177e-05, 3.9297e-05, 3.9416e-05, 3.9536e-05, 3.9655e-05, 3.9775e-05, 3.9894e-05, 4.0013e-05, 4.0133e-05, 4.0252e-05, 4.0372e-05, 4.0491e-05, 4.0611e-05, 4.0730e-05, 4.0850e-05, 4.0969e-05, 4.1088e-05, 4.1208e-05, 4.1327e-05, 4.1447e-05, 4.1566e-05, 4.1686e-05, 4.1805e-05, 4.1925e-05, 4.2044e-05, 4.2163e-05, 4.2283e-05, 4.2402e-05, 4.2522e-05, 4.2641e-05, 4.2761e-05, 4.2880e-05, 4.2999e-05, 4.3119e-05, 4.3238e-05, 4.3358e-05, 4.3477e-05, 4.3597e-05, 4.3716e-05, 4.3836e-05, 4.3955e-05, 4.4074e-05, 4.4194e-05, 4.4313e-05, 4.4433e-05, 4.4552e-05, 4.4672e-05, 4.4791e-05, 4.4911e-05, 4.5030e-05, 4.5149e-05, 4.5269e-05, 4.5388e-05, 4.5508e-05, 4.5627e-05, 4.5747e-05, 4.5866e-05, 4.5986e-05, 4.6105e-05, 4.6224e-05, 4.6344e-05, 4.6463e-05, 4.6583e-05, 4.6702e-05, 4.6822e-05, 4.6941e-05, 4.7061e-05, 4.7180e-05, 4.7299e-05, 4.7419e-05, 4.7538e-05, 4.7658e-05, 4.7777e-05, 4.7897e-05, 4.8016e-05, 4.8136e-05, 4.8255e-05, 4.8374e-05, 4.8494e-05, 4.8613e-05, 4.8733e-05, 4.8852e-05, 4.8972e-05, 4.9091e-05, 4.9211e-05, 4.9330e-05, 4.9449e-05, 4.9569e-05, 4.9688e-05, 4.9808e-05, 4.9927e-05, 5.0047e-05, 5.0166e-05, 5.0286e-05, 5.0405e-05, 5.0524e-05, 5.0644e-05, 5.0763e-05, 5.0883e-05, 5.1002e-05, 5.1122e-05, 5.1241e-05, 5.1361e-05, 5.1480e-05, 5.1599e-05, 5.1719e-05, 5.1838e-05, 5.1958e-05, 5.2077e-05, 5.2197e-05, 5.2316e-05, 5.2435e-05, 5.2555e-05, 5.2674e-05, 5.2794e-05, 5.2913e-05, 5.3033e-05, 5.3152e-05, 5.3272e-05, 5.3391e-05, 5.3510e-05, 5.3630e-05, 5.3749e-05, 5.3869e-05, 5.3988e-05, 5.4108e-05, 5.4227e-05, 5.4347e-05, 5.4466e-05, 5.4585e-05, 5.4705e-05, 5.4824e-05, 5.4944e-05, 5.5063e-05, 5.5183e-05, 5.5302e-05, 5.5422e-05, 5.5541e-05, 5.5660e-05, 5.5780e-05, 5.5899e-05, 5.6019e-05, 5.6138e-05, 5.6258e-05, 5.6377e-05, 5.6497e-05, 5.6616e-05, 5.6735e-05, 5.6855e-05, 5.6974e-05, 5.7094e-05, 5.7213e-05, 5.7333e-05, 5.7452e-05, 5.7572e-05, 5.7691e-05, 5.7810e-05, 5.7930e-05, 5.8049e-05, 5.8169e-05, 5.8288e-05, 5.8408e-05, 5.8527e-05, 5.8647e-05, 5.8766e-05, 5.8885e-05, 5.9005e-05, 5.9124e-05, 5.9244e-05, 5.9363e-05, 5.9483e-05, 5.9602e-05, 5.9722e-05, 5.9841e-05, 5.9960e-05, 6.0080e-05, 6.0199e-05, 6.0319e-05, 6.0438e-05, 6.0558e-05, 6.0677e-05, 6.0797e-05, 6.0916e-05, // NOLINT + 6.1154e-05, 6.1392e-05, 6.1631e-05, 6.1869e-05, 6.2107e-05, 6.2345e-05, 6.2583e-05, 6.2821e-05, 6.3060e-05, 6.3298e-05, 6.3536e-05, 6.3774e-05, 6.4012e-05, 6.4251e-05, 6.4489e-05, 6.4727e-05, 6.4965e-05, 6.5203e-05, 6.5441e-05, 6.5680e-05, 6.5918e-05, 6.6156e-05, 6.6394e-05, 6.6632e-05, 6.6871e-05, 6.7109e-05, 6.7347e-05, 6.7585e-05, 6.7823e-05, 6.8062e-05, 6.8300e-05, 6.8538e-05, 6.8776e-05, 6.9014e-05, 6.9252e-05, 6.9491e-05, 6.9729e-05, 6.9967e-05, 7.0205e-05, 7.0443e-05, 7.0682e-05, 7.0920e-05, 7.1158e-05, 7.1396e-05, 7.1634e-05, 7.1872e-05, 7.2111e-05, 7.2349e-05, 7.2587e-05, 7.2825e-05, 7.3063e-05, 7.3302e-05, 7.3540e-05, 7.3778e-05, 7.4016e-05, 7.4254e-05, 7.4493e-05, 7.4731e-05, 7.4969e-05, 7.5207e-05, 7.5445e-05, 7.5683e-05, 7.5922e-05, 7.6160e-05, 7.6398e-05, 7.6636e-05, 7.6874e-05, 7.7113e-05, 7.7351e-05, 7.7589e-05, 7.7827e-05, 7.8065e-05, 7.8304e-05, 7.8542e-05, 7.8780e-05, 7.9018e-05, 7.9256e-05, 7.9494e-05, 7.9733e-05, 7.9971e-05, 8.0209e-05, 8.0447e-05, 8.0685e-05, 8.0924e-05, 8.1162e-05, 8.1400e-05, 8.1638e-05, 8.1876e-05, 8.2114e-05, 8.2353e-05, 8.2591e-05, 8.2829e-05, 8.3067e-05, 8.3305e-05, 8.3544e-05, 8.3782e-05, 8.4020e-05, 8.4258e-05, 8.4496e-05, 8.4735e-05, 8.4973e-05, 8.5211e-05, 8.5449e-05, 8.5687e-05, 8.5925e-05, 8.6164e-05, 8.6402e-05, 8.6640e-05, 8.6878e-05, 8.7116e-05, 8.7355e-05, 8.7593e-05, 8.7831e-05, 8.8069e-05, 8.8307e-05, 8.8545e-05, 8.8784e-05, 8.9022e-05, 8.9260e-05, 8.9498e-05, 8.9736e-05, 8.9975e-05, 9.0213e-05, 9.0451e-05, 9.0689e-05, 9.0927e-05, 9.1166e-05, 9.1404e-05, 9.1642e-05, 9.1880e-05, 9.2118e-05, 9.2356e-05, 9.2595e-05, 9.2833e-05, 9.3071e-05, 9.3309e-05, 9.3547e-05, 9.3786e-05, 9.4024e-05, 9.4262e-05, 9.4500e-05, 9.4738e-05, 9.4977e-05, 9.5215e-05, 9.5453e-05, 9.5691e-05, 9.5929e-05, 9.6167e-05, 9.6406e-05, 9.6644e-05, 9.6882e-05, 9.7120e-05, 9.7358e-05, 9.7597e-05, 9.7835e-05, 9.8073e-05, 9.8311e-05, 9.8549e-05, 9.8787e-05, 9.9026e-05, 9.9264e-05, 9.9502e-05, 9.9740e-05, 9.9978e-05, 1.0022e-04, 1.0045e-04, 1.0069e-04, 1.0093e-04, 1.0117e-04, 1.0141e-04, 1.0165e-04, 1.0188e-04, 1.0212e-04, 1.0236e-04, 1.0260e-04, 1.0284e-04, 1.0307e-04, 1.0331e-04, 1.0355e-04, 1.0379e-04, 1.0403e-04, 1.0427e-04, 1.0450e-04, 1.0474e-04, 1.0498e-04, 1.0522e-04, 1.0546e-04, 1.0569e-04, 1.0593e-04, 1.0617e-04, 1.0641e-04, 1.0665e-04, 1.0689e-04, 1.0712e-04, 1.0736e-04, 1.0760e-04, 1.0784e-04, 1.0808e-04, 1.0831e-04, 1.0855e-04, 1.0879e-04, 1.0903e-04, 1.0927e-04, 1.0951e-04, 1.0974e-04, 1.0998e-04, 1.1022e-04, 1.1046e-04, 1.1070e-04, 1.1093e-04, 1.1117e-04, 1.1141e-04, 1.1165e-04, 1.1189e-04, 1.1213e-04, 1.1236e-04, 1.1260e-04, 1.1284e-04, 1.1308e-04, 1.1332e-04, 1.1355e-04, 1.1379e-04, 1.1403e-04, 1.1427e-04, 1.1451e-04, 1.1475e-04, 1.1498e-04, 1.1522e-04, 1.1546e-04, 1.1570e-04, 1.1594e-04, 1.1618e-04, 1.1641e-04, 1.1665e-04, 1.1689e-04, 1.1713e-04, 1.1737e-04, 1.1760e-04, 1.1784e-04, 1.1808e-04, 1.1832e-04, 1.1856e-04, 1.1880e-04, 1.1903e-04, 1.1927e-04, 1.1951e-04, 1.1975e-04, 1.1999e-04, 1.2022e-04, 1.2046e-04, 1.2070e-04, 1.2094e-04, 1.2118e-04, 1.2142e-04, 1.2165e-04, 1.2189e-04, // NOLINT + 1.2213e-04, 1.2237e-04, 1.2261e-04, 1.2284e-04, 1.2308e-04, 1.2332e-04, 1.2356e-04, 1.2380e-04, 1.2404e-04, 1.2427e-04, 1.2451e-04, 1.2475e-04, 1.2499e-04, 1.2523e-04, 1.2546e-04, 1.2570e-04, 1.2594e-04, 1.2618e-04, 1.2642e-04, 1.2666e-04, 1.2689e-04, 1.2713e-04, 1.2737e-04, 1.2761e-04, 1.2785e-04, 1.2808e-04, 1.2832e-04, 1.2856e-04, 1.2880e-04, 1.2904e-04, 1.2928e-04, 1.2951e-04, 1.2975e-04, 1.2999e-04, 1.3023e-04, 1.3047e-04, 1.3070e-04, 1.3094e-04, 1.3118e-04, 1.3142e-04, 1.3166e-04, 1.3190e-04, 1.3213e-04, 1.3237e-04, 1.3261e-04, 1.3285e-04, 1.3309e-04, 1.3332e-04, 1.3356e-04, 1.3380e-04, 1.3404e-04, 1.3428e-04, 1.3452e-04, 1.3475e-04, 1.3499e-04, 1.3523e-04, 1.3547e-04, 1.3571e-04, 1.3594e-04, 1.3618e-04, 1.3642e-04, 1.3666e-04, 1.3690e-04, 1.3714e-04, 1.3737e-04, 1.3761e-04, 1.3785e-04, 1.3809e-04, 1.3833e-04, 1.3856e-04, 1.3880e-04, 1.3904e-04, 1.3928e-04, 1.3952e-04, 1.3976e-04, 1.3999e-04, 1.4023e-04, 1.4047e-04, 1.4071e-04, 1.4095e-04, 1.4118e-04, 1.4142e-04, 1.4166e-04, 1.4190e-04, 1.4214e-04, 1.4238e-04, 1.4261e-04, 1.4285e-04, 1.4309e-04, 1.4333e-04, 1.4357e-04, 1.4380e-04, 1.4404e-04, 1.4428e-04, 1.4452e-04, 1.4476e-04, 1.4500e-04, 1.4523e-04, 1.4547e-04, 1.4571e-04, 1.4595e-04, 1.4619e-04, 1.4642e-04, 1.4666e-04, 1.4690e-04, 1.4714e-04, 1.4738e-04, 1.4762e-04, 1.4785e-04, 1.4809e-04, 1.4833e-04, 1.4857e-04, 1.4881e-04, 1.4904e-04, 1.4928e-04, 1.4952e-04, 1.4976e-04, 1.5000e-04, 1.5024e-04, 1.5047e-04, 1.5071e-04, 1.5095e-04, 1.5119e-04, 1.5143e-04, 1.5166e-04, 1.5190e-04, 1.5214e-04, 1.5238e-04, 1.5262e-04, 1.5286e-04, 1.5309e-04, 1.5333e-04, 1.5357e-04, 1.5381e-04, 1.5405e-04, 1.5428e-04, 1.5452e-04, 1.5476e-04, 1.5500e-04, 1.5524e-04, 1.5548e-04, 1.5571e-04, 1.5595e-04, 1.5619e-04, 1.5643e-04, 1.5667e-04, 1.5690e-04, 1.5714e-04, 1.5738e-04, 1.5762e-04, 1.5786e-04, 1.5810e-04, 1.5833e-04, 1.5857e-04, 1.5881e-04, 1.5905e-04, 1.5929e-04, 1.5952e-04, 1.5976e-04, 1.6000e-04, 1.6024e-04, 1.6048e-04, 1.6072e-04, 1.6095e-04, 1.6119e-04, 1.6143e-04, 1.6167e-04, 1.6191e-04, 1.6214e-04, 1.6238e-04, 1.6262e-04, 1.6286e-04, 1.6310e-04, 1.6334e-04, 1.6357e-04, 1.6381e-04, 1.6405e-04, 1.6429e-04, 1.6453e-04, 1.6476e-04, 1.6500e-04, 1.6524e-04, 1.6548e-04, 1.6572e-04, 1.6596e-04, 1.6619e-04, 1.6643e-04, 1.6667e-04, 1.6691e-04, 1.6715e-04, 1.6738e-04, 1.6762e-04, 1.6786e-04, 1.6810e-04, 1.6834e-04, 1.6858e-04, 1.6881e-04, 1.6905e-04, 1.6929e-04, 1.6953e-04, 1.6977e-04, 1.7001e-04, 1.7024e-04, 1.7048e-04, 1.7072e-04, 1.7096e-04, 1.7120e-04, 1.7143e-04, 1.7167e-04, 1.7191e-04, 1.7215e-04, 1.7239e-04, 1.7263e-04, 1.7286e-04, 1.7310e-04, 1.7334e-04, 1.7358e-04, 1.7382e-04, 1.7405e-04, 1.7429e-04, 1.7453e-04, 1.7477e-04, 1.7501e-04, 1.7525e-04, 1.7548e-04, 1.7572e-04, 1.7596e-04, 1.7620e-04, 1.7644e-04, 1.7667e-04, 1.7691e-04, 1.7715e-04, 1.7739e-04, 1.7763e-04, 1.7787e-04, 1.7810e-04, 1.7834e-04, 1.7858e-04, 1.7882e-04, 1.7906e-04, 1.7929e-04, 1.7953e-04, 1.7977e-04, 1.8001e-04, 1.8025e-04, 1.8049e-04, 1.8072e-04, 1.8096e-04, 1.8120e-04, 1.8144e-04, 1.8168e-04, 1.8191e-04, 1.8215e-04, 1.8239e-04, 1.8263e-04, 1.8287e-04, // NOLINT + 1.8311e-04, 1.8334e-04, 1.8358e-04, 1.8382e-04, 1.8406e-04, 1.8430e-04, 1.8453e-04, 1.8477e-04, 1.8501e-04, 1.8525e-04, 1.8549e-04, 1.8573e-04, 1.8596e-04, 1.8620e-04, 1.8644e-04, 1.8668e-04, 1.8692e-04, 1.8715e-04, 1.8739e-04, 1.8763e-04, 1.8787e-04, 1.8811e-04, 1.8835e-04, 1.8858e-04, 1.8882e-04, 1.8906e-04, 1.8930e-04, 1.8954e-04, 1.8977e-04, 1.9001e-04, 1.9025e-04, 1.9049e-04, 1.9073e-04, 1.9097e-04, 1.9120e-04, 1.9144e-04, 1.9168e-04, 1.9192e-04, 1.9216e-04, 1.9239e-04, 1.9263e-04, 1.9287e-04, 1.9311e-04, 1.9335e-04, 1.9359e-04, 1.9382e-04, 1.9406e-04, 1.9430e-04, 1.9454e-04, 1.9478e-04, 1.9501e-04, 1.9525e-04, 1.9549e-04, 1.9573e-04, 1.9597e-04, 1.9621e-04, 1.9644e-04, 1.9668e-04, 1.9692e-04, 1.9716e-04, 1.9740e-04, 1.9763e-04, 1.9787e-04, 1.9811e-04, 1.9835e-04, 1.9859e-04, 1.9883e-04, 1.9906e-04, 1.9930e-04, 1.9954e-04, 1.9978e-04, 2.0002e-04, 2.0025e-04, 2.0049e-04, 2.0073e-04, 2.0097e-04, 2.0121e-04, 2.0145e-04, 2.0168e-04, 2.0192e-04, 2.0216e-04, 2.0240e-04, 2.0264e-04, 2.0287e-04, 2.0311e-04, 2.0335e-04, 2.0359e-04, 2.0383e-04, 2.0407e-04, 2.0430e-04, 2.0454e-04, 2.0478e-04, 2.0502e-04, 2.0526e-04, 2.0549e-04, 2.0573e-04, 2.0597e-04, 2.0621e-04, 2.0645e-04, 2.0669e-04, 2.0692e-04, 2.0716e-04, 2.0740e-04, 2.0764e-04, 2.0788e-04, 2.0811e-04, 2.0835e-04, 2.0859e-04, 2.0883e-04, 2.0907e-04, 2.0931e-04, 2.0954e-04, 2.0978e-04, 2.1002e-04, 2.1026e-04, 2.1050e-04, 2.1073e-04, 2.1097e-04, 2.1121e-04, 2.1145e-04, 2.1169e-04, 2.1193e-04, 2.1216e-04, 2.1240e-04, 2.1264e-04, 2.1288e-04, 2.1312e-04, 2.1335e-04, 2.1359e-04, 2.1383e-04, 2.1407e-04, 2.1431e-04, 2.1455e-04, 2.1478e-04, 2.1502e-04, 2.1526e-04, 2.1550e-04, 2.1574e-04, 2.1597e-04, 2.1621e-04, 2.1645e-04, 2.1669e-04, 2.1693e-04, 2.1717e-04, 2.1740e-04, 2.1764e-04, 2.1788e-04, 2.1812e-04, 2.1836e-04, 2.1859e-04, 2.1883e-04, 2.1907e-04, 2.1931e-04, 2.1955e-04, 2.1979e-04, 2.2002e-04, 2.2026e-04, 2.2050e-04, 2.2074e-04, 2.2098e-04, 2.2121e-04, 2.2145e-04, 2.2169e-04, 2.2193e-04, 2.2217e-04, 2.2241e-04, 2.2264e-04, 2.2288e-04, 2.2312e-04, 2.2336e-04, 2.2360e-04, 2.2383e-04, 2.2407e-04, 2.2431e-04, 2.2455e-04, 2.2479e-04, 2.2503e-04, 2.2526e-04, 2.2550e-04, 2.2574e-04, 2.2598e-04, 2.2622e-04, 2.2646e-04, 2.2669e-04, 2.2693e-04, 2.2717e-04, 2.2741e-04, 2.2765e-04, 2.2788e-04, 2.2812e-04, 2.2836e-04, 2.2860e-04, 2.2884e-04, 2.2908e-04, 2.2931e-04, 2.2955e-04, 2.2979e-04, 2.3003e-04, 2.3027e-04, 2.3050e-04, 2.3074e-04, 2.3098e-04, 2.3122e-04, 2.3146e-04, 2.3170e-04, 2.3193e-04, 2.3217e-04, 2.3241e-04, 2.3265e-04, 2.3289e-04, 2.3312e-04, 2.3336e-04, 2.3360e-04, 2.3384e-04, 2.3408e-04, 2.3432e-04, 2.3455e-04, 2.3479e-04, 2.3503e-04, 2.3527e-04, 2.3551e-04, 2.3574e-04, 2.3598e-04, 2.3622e-04, 2.3646e-04, 2.3670e-04, 2.3694e-04, 2.3717e-04, 2.3741e-04, 2.3765e-04, 2.3789e-04, 2.3813e-04, 2.3836e-04, 2.3860e-04, 2.3884e-04, 2.3908e-04, 2.3932e-04, 2.3956e-04, 2.3979e-04, 2.4003e-04, 2.4027e-04, 2.4051e-04, 2.4075e-04, 2.4098e-04, 2.4122e-04, 2.4146e-04, 2.4170e-04, 2.4194e-04, 2.4218e-04, 2.4241e-04, 2.4265e-04, 2.4289e-04, 2.4313e-04, 2.4337e-04, 2.4360e-04, 2.4384e-04, // NOLINT + 2.4480e-04, 2.4575e-04, 2.4670e-04, 2.4766e-04, 2.4861e-04, 2.4956e-04, 2.5052e-04, 2.5147e-04, 2.5242e-04, 2.5337e-04, 2.5433e-04, 2.5528e-04, 2.5623e-04, 2.5719e-04, 2.5814e-04, 2.5909e-04, 2.6005e-04, 2.6100e-04, 2.6195e-04, 2.6291e-04, 2.6386e-04, 2.6481e-04, 2.6577e-04, 2.6672e-04, 2.6767e-04, 2.6863e-04, 2.6958e-04, 2.7053e-04, 2.7149e-04, 2.7244e-04, 2.7339e-04, 2.7435e-04, 2.7530e-04, 2.7625e-04, 2.7720e-04, 2.7816e-04, 2.7911e-04, 2.8006e-04, 2.8102e-04, 2.8197e-04, 2.8292e-04, 2.8388e-04, 2.8483e-04, 2.8578e-04, 2.8674e-04, 2.8769e-04, 2.8864e-04, 2.8960e-04, 2.9055e-04, 2.9150e-04, 2.9246e-04, 2.9341e-04, 2.9436e-04, 2.9532e-04, 2.9627e-04, 2.9722e-04, 2.9818e-04, 2.9913e-04, 3.0008e-04, 3.0104e-04, 3.0199e-04, 3.0294e-04, 3.0389e-04, 3.0485e-04, 3.0580e-04, 3.0675e-04, 3.0771e-04, 3.0866e-04, 3.0961e-04, 3.1057e-04, 3.1152e-04, 3.1247e-04, 3.1343e-04, 3.1438e-04, 3.1533e-04, 3.1629e-04, 3.1724e-04, 3.1819e-04, 3.1915e-04, 3.2010e-04, 3.2105e-04, 3.2201e-04, 3.2296e-04, 3.2391e-04, 3.2487e-04, 3.2582e-04, 3.2677e-04, 3.2772e-04, 3.2868e-04, 3.2963e-04, 3.3058e-04, 3.3154e-04, 3.3249e-04, 3.3344e-04, 3.3440e-04, 3.3535e-04, 3.3630e-04, 3.3726e-04, 3.3821e-04, 3.3916e-04, 3.4012e-04, 3.4107e-04, 3.4202e-04, 3.4298e-04, 3.4393e-04, 3.4488e-04, 3.4584e-04, 3.4679e-04, 3.4774e-04, 3.4870e-04, 3.4965e-04, 3.5060e-04, 3.5156e-04, 3.5251e-04, 3.5346e-04, 3.5441e-04, 3.5537e-04, 3.5632e-04, 3.5727e-04, 3.5823e-04, 3.5918e-04, 3.6013e-04, 3.6109e-04, 3.6204e-04, 3.6299e-04, 3.6395e-04, 3.6490e-04, 3.6585e-04, 3.6681e-04, 3.6776e-04, 3.6871e-04, 3.6967e-04, 3.7062e-04, 3.7157e-04, 3.7253e-04, 3.7348e-04, 3.7443e-04, 3.7539e-04, 3.7634e-04, 3.7729e-04, 3.7825e-04, 3.7920e-04, 3.8015e-04, 3.8110e-04, 3.8206e-04, 3.8301e-04, 3.8396e-04, 3.8492e-04, 3.8587e-04, 3.8682e-04, 3.8778e-04, 3.8873e-04, 3.8968e-04, 3.9064e-04, 3.9159e-04, 3.9254e-04, 3.9350e-04, 3.9445e-04, 3.9540e-04, 3.9636e-04, 3.9731e-04, 3.9826e-04, 3.9922e-04, 4.0017e-04, 4.0112e-04, 4.0208e-04, 4.0303e-04, 4.0398e-04, 4.0493e-04, 4.0589e-04, 4.0684e-04, 4.0779e-04, 4.0875e-04, 4.0970e-04, 4.1065e-04, 4.1161e-04, 4.1256e-04, 4.1351e-04, 4.1447e-04, 4.1542e-04, 4.1637e-04, 4.1733e-04, 4.1828e-04, 4.1923e-04, 4.2019e-04, 4.2114e-04, 4.2209e-04, 4.2305e-04, 4.2400e-04, 4.2495e-04, 4.2591e-04, 4.2686e-04, 4.2781e-04, 4.2877e-04, 4.2972e-04, 4.3067e-04, 4.3162e-04, 4.3258e-04, 4.3353e-04, 4.3448e-04, 4.3544e-04, 4.3639e-04, 4.3734e-04, 4.3830e-04, 4.3925e-04, 4.4020e-04, 4.4116e-04, 4.4211e-04, 4.4306e-04, 4.4402e-04, 4.4497e-04, 4.4592e-04, 4.4688e-04, 4.4783e-04, 4.4878e-04, 4.4974e-04, 4.5069e-04, 4.5164e-04, 4.5260e-04, 4.5355e-04, 4.5450e-04, 4.5545e-04, 4.5641e-04, 4.5736e-04, 4.5831e-04, 4.5927e-04, 4.6022e-04, 4.6117e-04, 4.6213e-04, 4.6308e-04, 4.6403e-04, 4.6499e-04, 4.6594e-04, 4.6689e-04, 4.6785e-04, 4.6880e-04, 4.6975e-04, 4.7071e-04, 4.7166e-04, 4.7261e-04, 4.7357e-04, 4.7452e-04, 4.7547e-04, 4.7643e-04, 4.7738e-04, 4.7833e-04, 4.7929e-04, 4.8024e-04, 4.8119e-04, 4.8214e-04, 4.8310e-04, 4.8405e-04, 4.8500e-04, 4.8596e-04, 4.8691e-04, 4.8786e-04, // NOLINT + 4.8977e-04, 4.9168e-04, 4.9358e-04, 4.9549e-04, 4.9740e-04, 4.9931e-04, 5.0121e-04, 5.0312e-04, 5.0503e-04, 5.0693e-04, 5.0884e-04, 5.1075e-04, 5.1265e-04, 5.1456e-04, 5.1647e-04, 5.1837e-04, 5.2028e-04, 5.2219e-04, 5.2409e-04, 5.2600e-04, 5.2791e-04, 5.2982e-04, 5.3172e-04, 5.3363e-04, 5.3554e-04, 5.3744e-04, 5.3935e-04, 5.4126e-04, 5.4316e-04, 5.4507e-04, 5.4698e-04, 5.4888e-04, 5.5079e-04, 5.5270e-04, 5.5460e-04, 5.5651e-04, 5.5842e-04, 5.6033e-04, 5.6223e-04, 5.6414e-04, 5.6605e-04, 5.6795e-04, 5.6986e-04, 5.7177e-04, 5.7367e-04, 5.7558e-04, 5.7749e-04, 5.7939e-04, 5.8130e-04, 5.8321e-04, 5.8512e-04, 5.8702e-04, 5.8893e-04, 5.9084e-04, 5.9274e-04, 5.9465e-04, 5.9656e-04, 5.9846e-04, 6.0037e-04, 6.0228e-04, 6.0418e-04, 6.0609e-04, 6.0800e-04, 6.0990e-04, 6.1181e-04, 6.1372e-04, 6.1563e-04, 6.1753e-04, 6.1944e-04, 6.2135e-04, 6.2325e-04, 6.2516e-04, 6.2707e-04, 6.2897e-04, 6.3088e-04, 6.3279e-04, 6.3469e-04, 6.3660e-04, 6.3851e-04, 6.4041e-04, 6.4232e-04, 6.4423e-04, 6.4614e-04, 6.4804e-04, 6.4995e-04, 6.5186e-04, 6.5376e-04, 6.5567e-04, 6.5758e-04, 6.5948e-04, 6.6139e-04, 6.6330e-04, 6.6520e-04, 6.6711e-04, 6.6902e-04, 6.7092e-04, 6.7283e-04, 6.7474e-04, 6.7665e-04, 6.7855e-04, 6.8046e-04, 6.8237e-04, 6.8427e-04, 6.8618e-04, 6.8809e-04, 6.8999e-04, 6.9190e-04, 6.9381e-04, 6.9571e-04, 6.9762e-04, 6.9953e-04, 7.0143e-04, 7.0334e-04, 7.0525e-04, 7.0716e-04, 7.0906e-04, 7.1097e-04, 7.1288e-04, 7.1478e-04, 7.1669e-04, 7.1860e-04, 7.2050e-04, 7.2241e-04, 7.2432e-04, 7.2622e-04, 7.2813e-04, 7.3004e-04, 7.3195e-04, 7.3385e-04, 7.3576e-04, 7.3767e-04, 7.3957e-04, 7.4148e-04, 7.4339e-04, 7.4529e-04, 7.4720e-04, 7.4911e-04, 7.5101e-04, 7.5292e-04, 7.5483e-04, 7.5673e-04, 7.5864e-04, 7.6055e-04, 7.6246e-04, 7.6436e-04, 7.6627e-04, 7.6818e-04, 7.7008e-04, 7.7199e-04, 7.7390e-04, 7.7580e-04, 7.7771e-04, 7.7962e-04, 7.8152e-04, 7.8343e-04, 7.8534e-04, 7.8724e-04, 7.8915e-04, 7.9106e-04, 7.9297e-04, 7.9487e-04, 7.9678e-04, 7.9869e-04, 8.0059e-04, 8.0250e-04, 8.0441e-04, 8.0631e-04, 8.0822e-04, 8.1013e-04, 8.1203e-04, 8.1394e-04, 8.1585e-04, 8.1775e-04, 8.1966e-04, 8.2157e-04, 8.2348e-04, 8.2538e-04, 8.2729e-04, 8.2920e-04, 8.3110e-04, 8.3301e-04, 8.3492e-04, 8.3682e-04, 8.3873e-04, 8.4064e-04, 8.4254e-04, 8.4445e-04, 8.4636e-04, 8.4826e-04, 8.5017e-04, 8.5208e-04, 8.5399e-04, 8.5589e-04, 8.5780e-04, 8.5971e-04, 8.6161e-04, 8.6352e-04, 8.6543e-04, 8.6733e-04, 8.6924e-04, 8.7115e-04, 8.7305e-04, 8.7496e-04, 8.7687e-04, 8.7878e-04, 8.8068e-04, 8.8259e-04, 8.8450e-04, 8.8640e-04, 8.8831e-04, 8.9022e-04, 8.9212e-04, 8.9403e-04, 8.9594e-04, 8.9784e-04, 8.9975e-04, 9.0166e-04, 9.0356e-04, 9.0547e-04, 9.0738e-04, 9.0929e-04, 9.1119e-04, 9.1310e-04, 9.1501e-04, 9.1691e-04, 9.1882e-04, 9.2073e-04, 9.2263e-04, 9.2454e-04, 9.2645e-04, 9.2835e-04, 9.3026e-04, 9.3217e-04, 9.3407e-04, 9.3598e-04, 9.3789e-04, 9.3980e-04, 9.4170e-04, 9.4361e-04, 9.4552e-04, 9.4742e-04, 9.4933e-04, 9.5124e-04, 9.5314e-04, 9.5505e-04, 9.5696e-04, 9.5886e-04, 9.6077e-04, 9.6268e-04, 9.6458e-04, 9.6649e-04, 9.6840e-04, 9.7031e-04, 9.7221e-04, 9.7412e-04, 9.7603e-04, // NOLINT + 9.7984e-04, 9.8365e-04, 9.8747e-04, 9.9128e-04, 9.9510e-04, 9.9891e-04, 1.0027e-03, 1.0065e-03, 1.0104e-03, 1.0142e-03, 1.0180e-03, 1.0218e-03, 1.0256e-03, 1.0294e-03, 1.0332e-03, 1.0371e-03, 1.0409e-03, 1.0447e-03, 1.0485e-03, 1.0523e-03, 1.0561e-03, 1.0599e-03, 1.0638e-03, 1.0676e-03, 1.0714e-03, 1.0752e-03, 1.0790e-03, 1.0828e-03, 1.0866e-03, 1.0905e-03, 1.0943e-03, 1.0981e-03, 1.1019e-03, 1.1057e-03, 1.1095e-03, 1.1133e-03, 1.1172e-03, 1.1210e-03, 1.1248e-03, 1.1286e-03, 1.1324e-03, 1.1362e-03, 1.1400e-03, 1.1439e-03, 1.1477e-03, 1.1515e-03, 1.1553e-03, 1.1591e-03, 1.1629e-03, 1.1667e-03, 1.1706e-03, 1.1744e-03, 1.1782e-03, 1.1820e-03, 1.1858e-03, 1.1896e-03, 1.1934e-03, 1.1973e-03, 1.2011e-03, 1.2049e-03, 1.2087e-03, 1.2125e-03, 1.2163e-03, 1.2201e-03, 1.2240e-03, 1.2278e-03, 1.2316e-03, 1.2354e-03, 1.2392e-03, 1.2430e-03, 1.2468e-03, 1.2507e-03, 1.2545e-03, 1.2583e-03, 1.2621e-03, 1.2659e-03, 1.2697e-03, 1.2735e-03, 1.2774e-03, 1.2812e-03, 1.2850e-03, 1.2888e-03, 1.2926e-03, 1.2964e-03, 1.3002e-03, 1.3040e-03, 1.3079e-03, 1.3117e-03, 1.3155e-03, 1.3193e-03, 1.3231e-03, 1.3269e-03, 1.3307e-03, 1.3346e-03, 1.3384e-03, 1.3422e-03, 1.3460e-03, 1.3498e-03, 1.3536e-03, 1.3574e-03, 1.3613e-03, 1.3651e-03, 1.3689e-03, 1.3727e-03, 1.3765e-03, 1.3803e-03, 1.3841e-03, 1.3880e-03, 1.3918e-03, 1.3956e-03, 1.3994e-03, 1.4032e-03, 1.4070e-03, 1.4108e-03, 1.4147e-03, 1.4185e-03, 1.4223e-03, 1.4261e-03, 1.4299e-03, 1.4337e-03, 1.4375e-03, 1.4414e-03, 1.4452e-03, 1.4490e-03, 1.4528e-03, 1.4566e-03, 1.4604e-03, 1.4642e-03, 1.4681e-03, 1.4719e-03, 1.4757e-03, 1.4795e-03, 1.4833e-03, 1.4871e-03, 1.4909e-03, 1.4948e-03, 1.4986e-03, 1.5024e-03, 1.5062e-03, 1.5100e-03, 1.5138e-03, 1.5176e-03, 1.5215e-03, 1.5253e-03, 1.5291e-03, 1.5329e-03, 1.5367e-03, 1.5405e-03, 1.5443e-03, 1.5482e-03, 1.5520e-03, 1.5558e-03, 1.5596e-03, 1.5634e-03, 1.5672e-03, 1.5710e-03, 1.5749e-03, 1.5787e-03, 1.5825e-03, 1.5863e-03, 1.5901e-03, 1.5939e-03, 1.5977e-03, 1.6016e-03, 1.6054e-03, 1.6092e-03, 1.6130e-03, 1.6168e-03, 1.6206e-03, 1.6244e-03, 1.6283e-03, 1.6321e-03, 1.6359e-03, 1.6397e-03, 1.6435e-03, 1.6473e-03, 1.6511e-03, 1.6550e-03, 1.6588e-03, 1.6626e-03, 1.6664e-03, 1.6702e-03, 1.6740e-03, 1.6778e-03, 1.6817e-03, 1.6855e-03, 1.6893e-03, 1.6931e-03, 1.6969e-03, 1.7007e-03, 1.7045e-03, 1.7084e-03, 1.7122e-03, 1.7160e-03, 1.7198e-03, 1.7236e-03, 1.7274e-03, 1.7312e-03, 1.7351e-03, 1.7389e-03, 1.7427e-03, 1.7465e-03, 1.7503e-03, 1.7541e-03, 1.7579e-03, 1.7618e-03, 1.7656e-03, 1.7694e-03, 1.7732e-03, 1.7770e-03, 1.7808e-03, 1.7846e-03, 1.7885e-03, 1.7923e-03, 1.7961e-03, 1.7999e-03, 1.8037e-03, 1.8075e-03, 1.8113e-03, 1.8152e-03, 1.8190e-03, 1.8228e-03, 1.8266e-03, 1.8304e-03, 1.8342e-03, 1.8380e-03, 1.8419e-03, 1.8457e-03, 1.8495e-03, 1.8533e-03, 1.8571e-03, 1.8609e-03, 1.8647e-03, 1.8686e-03, 1.8724e-03, 1.8762e-03, 1.8800e-03, 1.8838e-03, 1.8876e-03, 1.8914e-03, 1.8953e-03, 1.8991e-03, 1.9029e-03, 1.9067e-03, 1.9105e-03, 1.9143e-03, 1.9181e-03, 1.9220e-03, 1.9258e-03, 1.9296e-03, 1.9334e-03, 1.9372e-03, 1.9410e-03, 1.9448e-03, 1.9487e-03, 1.9525e-03, // NOLINT + 1.9601e-03, 1.9677e-03, 1.9754e-03, 1.9830e-03, 1.9906e-03, 1.9982e-03, 2.0059e-03, 2.0135e-03, 2.0211e-03, 2.0288e-03, 2.0364e-03, 2.0440e-03, 2.0516e-03, 2.0593e-03, 2.0669e-03, 2.0745e-03, 2.0822e-03, 2.0898e-03, 2.0974e-03, 2.1050e-03, 2.1127e-03, 2.1203e-03, 2.1279e-03, 2.1356e-03, 2.1432e-03, 2.1508e-03, 2.1585e-03, 2.1661e-03, 2.1737e-03, 2.1813e-03, 2.1890e-03, 2.1966e-03, 2.2042e-03, 2.2119e-03, 2.2195e-03, 2.2271e-03, 2.2347e-03, 2.2424e-03, 2.2500e-03, 2.2576e-03, 2.2653e-03, 2.2729e-03, 2.2805e-03, 2.2881e-03, 2.2958e-03, 2.3034e-03, 2.3110e-03, 2.3187e-03, 2.3263e-03, 2.3339e-03, 2.3415e-03, 2.3492e-03, 2.3568e-03, 2.3644e-03, 2.3721e-03, 2.3797e-03, 2.3873e-03, 2.3949e-03, 2.4026e-03, 2.4102e-03, 2.4178e-03, 2.4255e-03, 2.4331e-03, 2.4407e-03, 2.4483e-03, 2.4560e-03, 2.4636e-03, 2.4712e-03, 2.4789e-03, 2.4865e-03, 2.4941e-03, 2.5018e-03, 2.5094e-03, 2.5170e-03, 2.5246e-03, 2.5323e-03, 2.5399e-03, 2.5475e-03, 2.5552e-03, 2.5628e-03, 2.5704e-03, 2.5780e-03, 2.5857e-03, 2.5933e-03, 2.6009e-03, 2.6086e-03, 2.6162e-03, 2.6238e-03, 2.6314e-03, 2.6391e-03, 2.6467e-03, 2.6543e-03, 2.6620e-03, 2.6696e-03, 2.6772e-03, 2.6848e-03, 2.6925e-03, 2.7001e-03, 2.7077e-03, 2.7154e-03, 2.7230e-03, 2.7306e-03, 2.7382e-03, 2.7459e-03, 2.7535e-03, 2.7611e-03, 2.7688e-03, 2.7764e-03, 2.7840e-03, 2.7917e-03, 2.7993e-03, 2.8069e-03, 2.8145e-03, 2.8222e-03, 2.8298e-03, 2.8374e-03, 2.8451e-03, 2.8527e-03, 2.8603e-03, 2.8679e-03, 2.8756e-03, 2.8832e-03, 2.8908e-03, 2.8985e-03, 2.9061e-03, 2.9137e-03, 2.9213e-03, 2.9290e-03, 2.9366e-03, 2.9442e-03, 2.9519e-03, 2.9595e-03, 2.9671e-03, 2.9747e-03, 2.9824e-03, 2.9900e-03, 2.9976e-03, 3.0053e-03, 3.0129e-03, 3.0205e-03, 3.0281e-03, 3.0358e-03, 3.0434e-03, 3.0510e-03, 3.0587e-03, 3.0663e-03, 3.0739e-03, 3.0816e-03, 3.0892e-03, 3.0968e-03, 3.1044e-03, 3.1121e-03, 3.1197e-03, 3.1273e-03, 3.1350e-03, 3.1426e-03, 3.1502e-03, 3.1578e-03, 3.1655e-03, 3.1731e-03, 3.1807e-03, 3.1884e-03, 3.1960e-03, 3.2036e-03, 3.2112e-03, 3.2189e-03, 3.2265e-03, 3.2341e-03, 3.2418e-03, 3.2494e-03, 3.2570e-03, 3.2646e-03, 3.2723e-03, 3.2799e-03, 3.2875e-03, 3.2952e-03, 3.3028e-03, 3.3104e-03, 3.3180e-03, 3.3257e-03, 3.3333e-03, 3.3409e-03, 3.3486e-03, 3.3562e-03, 3.3638e-03, 3.3715e-03, 3.3791e-03, 3.3867e-03, 3.3943e-03, 3.4020e-03, 3.4096e-03, 3.4172e-03, 3.4249e-03, 3.4325e-03, 3.4401e-03, 3.4477e-03, 3.4554e-03, 3.4630e-03, 3.4706e-03, 3.4783e-03, 3.4859e-03, 3.4935e-03, 3.5011e-03, 3.5088e-03, 3.5164e-03, 3.5240e-03, 3.5317e-03, 3.5393e-03, 3.5469e-03, 3.5545e-03, 3.5622e-03, 3.5698e-03, 3.5774e-03, 3.5851e-03, 3.5927e-03, 3.6003e-03, 3.6079e-03, 3.6156e-03, 3.6232e-03, 3.6308e-03, 3.6385e-03, 3.6461e-03, 3.6537e-03, 3.6613e-03, 3.6690e-03, 3.6766e-03, 3.6842e-03, 3.6919e-03, 3.6995e-03, 3.7071e-03, 3.7148e-03, 3.7224e-03, 3.7300e-03, 3.7376e-03, 3.7453e-03, 3.7529e-03, 3.7605e-03, 3.7682e-03, 3.7758e-03, 3.7834e-03, 3.7910e-03, 3.7987e-03, 3.8063e-03, 3.8139e-03, 3.8216e-03, 3.8292e-03, 3.8368e-03, 3.8444e-03, 3.8521e-03, 3.8597e-03, 3.8673e-03, 3.8750e-03, 3.8826e-03, 3.8902e-03, 3.8978e-03, 3.9055e-03, // NOLINT + 3.9207e-03, 3.9360e-03, 3.9513e-03, 3.9665e-03, 3.9818e-03, 3.9970e-03, 4.0123e-03, 4.0275e-03, 4.0428e-03, 4.0581e-03, 4.0733e-03, 4.0886e-03, 4.1038e-03, 4.1191e-03, 4.1343e-03, 4.1496e-03, 4.1649e-03, 4.1801e-03, 4.1954e-03, 4.2106e-03, 4.2259e-03, 4.2412e-03, 4.2564e-03, 4.2717e-03, 4.2869e-03, 4.3022e-03, 4.3174e-03, 4.3327e-03, 4.3480e-03, 4.3632e-03, 4.3785e-03, 4.3937e-03, 4.4090e-03, 4.4243e-03, 4.4395e-03, 4.4548e-03, 4.4700e-03, 4.4853e-03, 4.5005e-03, 4.5158e-03, 4.5311e-03, 4.5463e-03, 4.5616e-03, 4.5768e-03, 4.5921e-03, 4.6074e-03, 4.6226e-03, 4.6379e-03, 4.6531e-03, 4.6684e-03, 4.6836e-03, 4.6989e-03, 4.7142e-03, 4.7294e-03, 4.7447e-03, 4.7599e-03, 4.7752e-03, 4.7905e-03, 4.8057e-03, 4.8210e-03, 4.8362e-03, 4.8515e-03, 4.8667e-03, 4.8820e-03, 4.8973e-03, 4.9125e-03, 4.9278e-03, 4.9430e-03, 4.9583e-03, 4.9736e-03, 4.9888e-03, 5.0041e-03, 5.0193e-03, 5.0346e-03, 5.0498e-03, 5.0651e-03, 5.0804e-03, 5.0956e-03, 5.1109e-03, 5.1261e-03, 5.1414e-03, 5.1567e-03, 5.1719e-03, 5.1872e-03, 5.2024e-03, 5.2177e-03, 5.2329e-03, 5.2482e-03, 5.2635e-03, 5.2787e-03, 5.2940e-03, 5.3092e-03, 5.3245e-03, 5.3398e-03, 5.3550e-03, 5.3703e-03, 5.3855e-03, 5.4008e-03, 5.4160e-03, 5.4313e-03, 5.4466e-03, 5.4618e-03, 5.4771e-03, 5.4923e-03, 5.5076e-03, 5.5229e-03, 5.5381e-03, 5.5534e-03, 5.5686e-03, 5.5839e-03, 5.5991e-03, 5.6144e-03, 5.6297e-03, 5.6449e-03, 5.6602e-03, 5.6754e-03, 5.6907e-03, 5.7060e-03, 5.7212e-03, 5.7365e-03, 5.7517e-03, 5.7670e-03, 5.7822e-03, 5.7975e-03, 5.8128e-03, 5.8280e-03, 5.8433e-03, 5.8585e-03, 5.8738e-03, 5.8891e-03, 5.9043e-03, 5.9196e-03, 5.9348e-03, 5.9501e-03, 5.9653e-03, 5.9806e-03, 5.9959e-03, 6.0111e-03, 6.0264e-03, 6.0416e-03, 6.0569e-03, 6.0722e-03, 6.0874e-03, 6.1027e-03, 6.1179e-03, 6.1332e-03, 6.1484e-03, 6.1637e-03, 6.1790e-03, 6.1942e-03, 6.2095e-03, 6.2247e-03, 6.2400e-03, 6.2553e-03, 6.2705e-03, 6.2858e-03, 6.3010e-03, 6.3163e-03, 6.3315e-03, 6.3468e-03, 6.3621e-03, 6.3773e-03, 6.3926e-03, 6.4078e-03, 6.4231e-03, 6.4384e-03, 6.4536e-03, 6.4689e-03, 6.4841e-03, 6.4994e-03, 6.5146e-03, 6.5299e-03, 6.5452e-03, 6.5604e-03, 6.5757e-03, 6.5909e-03, 6.6062e-03, 6.6215e-03, 6.6367e-03, 6.6520e-03, 6.6672e-03, 6.6825e-03, 6.6977e-03, 6.7130e-03, 6.7283e-03, 6.7435e-03, 6.7588e-03, 6.7740e-03, 6.7893e-03, 6.8046e-03, 6.8198e-03, 6.8351e-03, 6.8503e-03, 6.8656e-03, 6.8808e-03, 6.8961e-03, 6.9114e-03, 6.9266e-03, 6.9419e-03, 6.9571e-03, 6.9724e-03, 6.9877e-03, 7.0029e-03, 7.0182e-03, 7.0334e-03, 7.0487e-03, 7.0639e-03, 7.0792e-03, 7.0945e-03, 7.1097e-03, 7.1250e-03, 7.1402e-03, 7.1555e-03, 7.1708e-03, 7.1860e-03, 7.2013e-03, 7.2165e-03, 7.2318e-03, 7.2470e-03, 7.2623e-03, 7.2776e-03, 7.2928e-03, 7.3081e-03, 7.3233e-03, 7.3386e-03, 7.3539e-03, 7.3691e-03, 7.3844e-03, 7.3996e-03, 7.4149e-03, 7.4301e-03, 7.4454e-03, 7.4607e-03, 7.4759e-03, 7.4912e-03, 7.5064e-03, 7.5217e-03, 7.5370e-03, 7.5522e-03, 7.5675e-03, 7.5827e-03, 7.5980e-03, 7.6132e-03, 7.6285e-03, 7.6438e-03, 7.6590e-03, 7.6743e-03, 7.6895e-03, 7.7048e-03, 7.7201e-03, 7.7353e-03, 7.7506e-03, 7.7658e-03, 7.7811e-03, 7.7963e-03, 7.8116e-03, // NOLINT + 7.8421e-03, 7.8726e-03, 7.9032e-03, 7.9337e-03, 7.9642e-03, 7.9947e-03, 8.0252e-03, 8.0557e-03, 8.0863e-03, 8.1168e-03, 8.1473e-03, 8.1778e-03, 8.2083e-03, 8.2388e-03, 8.2694e-03, 8.2999e-03, 8.3304e-03, 8.3609e-03, 8.3914e-03, 8.4219e-03, 8.4525e-03, 8.4830e-03, 8.5135e-03, 8.5440e-03, 8.5745e-03, 8.6051e-03, 8.6356e-03, 8.6661e-03, 8.6966e-03, 8.7271e-03, 8.7576e-03, 8.7882e-03, 8.8187e-03, 8.8492e-03, 8.8797e-03, 8.9102e-03, 8.9407e-03, 8.9713e-03, 9.0018e-03, 9.0323e-03, 9.0628e-03, 9.0933e-03, 9.1238e-03, 9.1544e-03, 9.1849e-03, 9.2154e-03, 9.2459e-03, 9.2764e-03, 9.3069e-03, 9.3375e-03, 9.3680e-03, 9.3985e-03, 9.4290e-03, 9.4595e-03, 9.4900e-03, 9.5206e-03, 9.5511e-03, 9.5816e-03, 9.6121e-03, 9.6426e-03, 9.6731e-03, 9.7037e-03, 9.7342e-03, 9.7647e-03, 9.7952e-03, 9.8257e-03, 9.8563e-03, 9.8868e-03, 9.9173e-03, 9.9478e-03, 9.9783e-03, 1.0009e-02, 1.0039e-02, 1.0070e-02, 1.0100e-02, 1.0131e-02, 1.0161e-02, 1.0192e-02, 1.0222e-02, 1.0253e-02, 1.0283e-02, 1.0314e-02, 1.0345e-02, 1.0375e-02, 1.0406e-02, 1.0436e-02, 1.0467e-02, 1.0497e-02, 1.0528e-02, 1.0558e-02, 1.0589e-02, 1.0619e-02, 1.0650e-02, 1.0680e-02, 1.0711e-02, 1.0741e-02, 1.0772e-02, 1.0802e-02, 1.0833e-02, 1.0863e-02, 1.0894e-02, 1.0924e-02, 1.0955e-02, 1.0985e-02, 1.1016e-02, 1.1046e-02, 1.1077e-02, 1.1107e-02, 1.1138e-02, 1.1168e-02, 1.1199e-02, 1.1230e-02, 1.1260e-02, 1.1291e-02, 1.1321e-02, 1.1352e-02, 1.1382e-02, 1.1413e-02, 1.1443e-02, 1.1474e-02, 1.1504e-02, 1.1535e-02, 1.1565e-02, 1.1596e-02, 1.1626e-02, 1.1657e-02, 1.1687e-02, 1.1718e-02, 1.1748e-02, 1.1779e-02, 1.1809e-02, 1.1840e-02, 1.1870e-02, 1.1901e-02, 1.1931e-02, 1.1962e-02, 1.1992e-02, 1.2023e-02, 1.2053e-02, 1.2084e-02, 1.2115e-02, 1.2145e-02, 1.2176e-02, 1.2206e-02, 1.2237e-02, 1.2267e-02, 1.2298e-02, 1.2328e-02, 1.2359e-02, 1.2389e-02, 1.2420e-02, 1.2450e-02, 1.2481e-02, 1.2511e-02, 1.2542e-02, 1.2572e-02, 1.2603e-02, 1.2633e-02, 1.2664e-02, 1.2694e-02, 1.2725e-02, 1.2755e-02, 1.2786e-02, 1.2816e-02, 1.2847e-02, 1.2877e-02, 1.2908e-02, 1.2938e-02, 1.2969e-02, 1.3000e-02, 1.3030e-02, 1.3061e-02, 1.3091e-02, 1.3122e-02, 1.3152e-02, 1.3183e-02, 1.3213e-02, 1.3244e-02, 1.3274e-02, 1.3305e-02, 1.3335e-02, 1.3366e-02, 1.3396e-02, 1.3427e-02, 1.3457e-02, 1.3488e-02, 1.3518e-02, 1.3549e-02, 1.3579e-02, 1.3610e-02, 1.3640e-02, 1.3671e-02, 1.3701e-02, 1.3732e-02, 1.3762e-02, 1.3793e-02, 1.3823e-02, 1.3854e-02, 1.3885e-02, 1.3915e-02, 1.3946e-02, 1.3976e-02, 1.4007e-02, 1.4037e-02, 1.4068e-02, 1.4098e-02, 1.4129e-02, 1.4159e-02, 1.4190e-02, 1.4220e-02, 1.4251e-02, 1.4281e-02, 1.4312e-02, 1.4342e-02, 1.4373e-02, 1.4403e-02, 1.4434e-02, 1.4464e-02, 1.4495e-02, 1.4525e-02, 1.4556e-02, 1.4586e-02, 1.4617e-02, 1.4647e-02, 1.4678e-02, 1.4708e-02, 1.4739e-02, 1.4770e-02, 1.4800e-02, 1.4831e-02, 1.4861e-02, 1.4892e-02, 1.4922e-02, 1.4953e-02, 1.4983e-02, 1.5014e-02, 1.5044e-02, 1.5075e-02, 1.5105e-02, 1.5136e-02, 1.5166e-02, 1.5197e-02, 1.5227e-02, 1.5258e-02, 1.5288e-02, 1.5319e-02, 1.5349e-02, 1.5380e-02, 1.5410e-02, 1.5441e-02, 1.5471e-02, 1.5502e-02, 1.5532e-02, 1.5563e-02, 1.5593e-02, 1.5624e-02, // NOLINT + 1.5746e-02, 1.5868e-02, 1.5990e-02, 1.6112e-02, 1.6234e-02, 1.6356e-02, 1.6478e-02, 1.6601e-02, 1.6723e-02, 1.6845e-02, 1.6967e-02, 1.7089e-02, 1.7211e-02, 1.7333e-02, 1.7455e-02, 1.7577e-02, 1.7699e-02, 1.7821e-02, 1.7943e-02, 1.8065e-02, 1.8187e-02, 1.8310e-02, 1.8432e-02, 1.8554e-02, 1.8676e-02, 1.8798e-02, 1.8920e-02, 1.9042e-02, 1.9164e-02, 1.9286e-02, 1.9408e-02, 1.9530e-02, 1.9652e-02, 1.9774e-02, 1.9896e-02, 2.0018e-02, 2.0141e-02, 2.0263e-02, 2.0385e-02, 2.0507e-02, 2.0629e-02, 2.0751e-02, 2.0873e-02, 2.0995e-02, 2.1117e-02, 2.1239e-02, 2.1361e-02, 2.1483e-02, 2.1605e-02, 2.1727e-02, 2.1850e-02, 2.1972e-02, 2.2094e-02, 2.2216e-02, 2.2338e-02, 2.2460e-02, 2.2582e-02, 2.2704e-02, 2.2826e-02, 2.2948e-02, 2.3070e-02, 2.3192e-02, 2.3314e-02, 2.3436e-02, 2.3558e-02, 2.3681e-02, 2.3803e-02, 2.3925e-02, 2.4047e-02, 2.4169e-02, 2.4291e-02, 2.4413e-02, 2.4535e-02, 2.4657e-02, 2.4779e-02, 2.4901e-02, 2.5023e-02, 2.5145e-02, 2.5267e-02, 2.5390e-02, 2.5512e-02, 2.5634e-02, 2.5756e-02, 2.5878e-02, 2.6000e-02, 2.6122e-02, 2.6244e-02, 2.6366e-02, 2.6488e-02, 2.6610e-02, 2.6732e-02, 2.6854e-02, 2.6976e-02, 2.7099e-02, 2.7221e-02, 2.7343e-02, 2.7465e-02, 2.7587e-02, 2.7709e-02, 2.7831e-02, 2.7953e-02, 2.8075e-02, 2.8197e-02, 2.8319e-02, 2.8441e-02, 2.8563e-02, 2.8685e-02, 2.8807e-02, 2.8930e-02, 2.9052e-02, 2.9174e-02, 2.9296e-02, 2.9418e-02, 2.9540e-02, 2.9662e-02, 2.9784e-02, 2.9906e-02, 3.0028e-02, 3.0150e-02, 3.0272e-02, 3.0394e-02, 3.0516e-02, 3.0639e-02, 3.0761e-02, 3.0883e-02, 3.1005e-02, 3.1127e-02, 3.1249e-02, 3.1493e-02, 3.1737e-02, 3.1981e-02, 3.2225e-02, 3.2470e-02, 3.2714e-02, 3.2958e-02, 3.3202e-02, 3.3446e-02, 3.3690e-02, 3.3934e-02, 3.4179e-02, 3.4423e-02, 3.4667e-02, 3.4911e-02, 3.5155e-02, 3.5399e-02, 3.5643e-02, 3.5888e-02, 3.6132e-02, 3.6376e-02, 3.6620e-02, 3.6864e-02, 3.7108e-02, 3.7352e-02, 3.7596e-02, 3.7841e-02, 3.8085e-02, 3.8329e-02, 3.8573e-02, 3.8817e-02, 3.9061e-02, 3.9305e-02, 3.9550e-02, 3.9794e-02, 4.0038e-02, 4.0282e-02, 4.0526e-02, 4.0770e-02, 4.1014e-02, 4.1259e-02, 4.1503e-02, 4.1747e-02, 4.1991e-02, 4.2235e-02, 4.2479e-02, 4.2723e-02, 4.2968e-02, 4.3212e-02, 4.3456e-02, 4.3700e-02, 4.3944e-02, 4.4188e-02, 4.4432e-02, 4.4677e-02, 4.4921e-02, 4.5165e-02, 4.5409e-02, 4.5653e-02, 4.5897e-02, 4.6141e-02, 4.6386e-02, 4.6630e-02, 4.6874e-02, 4.7118e-02, 4.7362e-02, 4.7606e-02, 4.7850e-02, 4.8095e-02, 4.8339e-02, 4.8583e-02, 4.8827e-02, 4.9071e-02, 4.9315e-02, 4.9559e-02, 4.9803e-02, 5.0048e-02, 5.0292e-02, 5.0536e-02, 5.0780e-02, 5.1024e-02, 5.1268e-02, 5.1512e-02, 5.1757e-02, 5.2001e-02, 5.2245e-02, 5.2489e-02, 5.2733e-02, 5.2977e-02, 5.3221e-02, 5.3466e-02, 5.3710e-02, 5.3954e-02, 5.4198e-02, 5.4442e-02, 5.4686e-02, 5.4930e-02, 5.5175e-02, 5.5419e-02, 5.5663e-02, 5.5907e-02, 5.6151e-02, 5.6395e-02, 5.6639e-02, 5.6884e-02, 5.7128e-02, 5.7372e-02, 5.7616e-02, 5.7860e-02, 5.8104e-02, 5.8348e-02, 5.8593e-02, 5.8837e-02, 5.9081e-02, 5.9325e-02, 5.9569e-02, 5.9813e-02, 6.0057e-02, 6.0301e-02, 6.0546e-02, 6.0790e-02, 6.1034e-02, 6.1278e-02, 6.1522e-02, 6.1766e-02, 6.2010e-02, 6.2255e-02, 6.2499e-02, // NOLINT + 6.2743e-02, 6.2987e-02, 6.3231e-02, 6.3475e-02, 6.3719e-02, 6.3964e-02, 6.4208e-02, 6.4452e-02, 6.4696e-02, 6.4940e-02, 6.5184e-02, 6.5428e-02, 6.5673e-02, 6.5917e-02, 6.6161e-02, 6.6405e-02, 6.6649e-02, 6.6893e-02, 6.7137e-02, 6.7382e-02, 6.7626e-02, 6.7870e-02, 6.8114e-02, 6.8358e-02, 6.8602e-02, 6.8846e-02, 6.9091e-02, 6.9335e-02, 6.9579e-02, 6.9823e-02, 7.0067e-02, 7.0311e-02, 7.0555e-02, 7.0799e-02, 7.1044e-02, 7.1288e-02, 7.1532e-02, 7.1776e-02, 7.2020e-02, 7.2264e-02, 7.2508e-02, 7.2753e-02, 7.2997e-02, 7.3241e-02, 7.3485e-02, 7.3729e-02, 7.3973e-02, 7.4217e-02, 7.4462e-02, 7.4706e-02, 7.4950e-02, 7.5194e-02, 7.5438e-02, 7.5682e-02, 7.5926e-02, 7.6171e-02, 7.6415e-02, 7.6659e-02, 7.6903e-02, 7.7147e-02, 7.7391e-02, 7.7635e-02, 7.7880e-02, 7.8124e-02, 7.8368e-02, 7.8612e-02, 7.8856e-02, 7.9100e-02, 7.9344e-02, 7.9589e-02, 7.9833e-02, 8.0077e-02, 8.0321e-02, 8.0565e-02, 8.0809e-02, 8.1053e-02, 8.1298e-02, 8.1542e-02, 8.1786e-02, 8.2030e-02, 8.2274e-02, 8.2518e-02, 8.2762e-02, 8.3006e-02, 8.3251e-02, 8.3495e-02, 8.3739e-02, 8.3983e-02, 8.4227e-02, 8.4471e-02, 8.4715e-02, 8.4960e-02, 8.5204e-02, 8.5448e-02, 8.5692e-02, 8.5936e-02, 8.6180e-02, 8.6424e-02, 8.6669e-02, 8.6913e-02, 8.7157e-02, 8.7401e-02, 8.7645e-02, 8.7889e-02, 8.8133e-02, 8.8378e-02, 8.8622e-02, 8.8866e-02, 8.9110e-02, 8.9354e-02, 8.9598e-02, 8.9842e-02, 9.0087e-02, 9.0331e-02, 9.0575e-02, 9.0819e-02, 9.1063e-02, 9.1307e-02, 9.1551e-02, 9.1796e-02, 9.2040e-02, 9.2284e-02, 9.2528e-02, 9.2772e-02, 9.3016e-02, 9.3260e-02, 9.3504e-02, 9.3749e-02, 9.4237e-02, 9.4725e-02, 9.5213e-02, 9.5702e-02, 9.6190e-02, 9.6678e-02, 9.7167e-02, 9.7655e-02, 9.8143e-02, 9.8631e-02, 9.9120e-02, 9.9608e-02, 1.0010e-01, 1.0058e-01, 1.0107e-01, 1.0156e-01, 1.0205e-01, 1.0254e-01, 1.0303e-01, 1.0351e-01, 1.0400e-01, 1.0449e-01, 1.0498e-01, 1.0547e-01, 1.0596e-01, 1.0644e-01, 1.0693e-01, 1.0742e-01, 1.0791e-01, 1.0840e-01, 1.0889e-01, 1.0937e-01, 1.0986e-01, 1.1035e-01, 1.1084e-01, 1.1133e-01, 1.1182e-01, 1.1230e-01, 1.1279e-01, 1.1328e-01, 1.1377e-01, 1.1426e-01, 1.1474e-01, 1.1523e-01, 1.1572e-01, 1.1621e-01, 1.1670e-01, 1.1719e-01, 1.1767e-01, 1.1816e-01, 1.1865e-01, 1.1914e-01, 1.1963e-01, 1.2012e-01, 1.2060e-01, 1.2109e-01, 1.2158e-01, 1.2207e-01, 1.2256e-01, 1.2305e-01, 1.2353e-01, 1.2402e-01, 1.2451e-01, 1.2500e-01, 1.2549e-01, 1.2598e-01, 1.2646e-01, 1.2695e-01, 1.2744e-01, 1.2793e-01, 1.2842e-01, 1.2890e-01, 1.2939e-01, 1.2988e-01, 1.3037e-01, 1.3086e-01, 1.3135e-01, 1.3183e-01, 1.3232e-01, 1.3281e-01, 1.3330e-01, 1.3379e-01, 1.3428e-01, 1.3476e-01, 1.3525e-01, 1.3574e-01, 1.3623e-01, 1.3672e-01, 1.3721e-01, 1.3769e-01, 1.3818e-01, 1.3867e-01, 1.3916e-01, 1.3965e-01, 1.4014e-01, 1.4062e-01, 1.4111e-01, 1.4160e-01, 1.4209e-01, 1.4258e-01, 1.4306e-01, 1.4355e-01, 1.4404e-01, 1.4453e-01, 1.4502e-01, 1.4551e-01, 1.4599e-01, 1.4648e-01, 1.4697e-01, 1.4746e-01, 1.4795e-01, 1.4844e-01, 1.4892e-01, 1.4941e-01, 1.4990e-01, 1.5039e-01, 1.5088e-01, 1.5137e-01, 1.5185e-01, 1.5234e-01, 1.5283e-01, 1.5332e-01, 1.5381e-01, 1.5430e-01, 1.5478e-01, 1.5527e-01, 1.5576e-01, 1.5625e-01, // NOLINT + 1.5674e-01, 1.5723e-01, 1.5771e-01, 1.5820e-01, 1.5869e-01, 1.5918e-01, 1.5967e-01, 1.6015e-01, 1.6064e-01, 1.6113e-01, 1.6162e-01, 1.6211e-01, 1.6260e-01, 1.6308e-01, 1.6357e-01, 1.6406e-01, 1.6455e-01, 1.6504e-01, 1.6553e-01, 1.6601e-01, 1.6650e-01, 1.6699e-01, 1.6748e-01, 1.6797e-01, 1.6846e-01, 1.6894e-01, 1.6943e-01, 1.6992e-01, 1.7041e-01, 1.7090e-01, 1.7139e-01, 1.7187e-01, 1.7236e-01, 1.7285e-01, 1.7334e-01, 1.7383e-01, 1.7431e-01, 1.7480e-01, 1.7529e-01, 1.7578e-01, 1.7627e-01, 1.7676e-01, 1.7724e-01, 1.7773e-01, 1.7822e-01, 1.7871e-01, 1.7920e-01, 1.7969e-01, 1.8017e-01, 1.8066e-01, 1.8115e-01, 1.8164e-01, 1.8213e-01, 1.8262e-01, 1.8310e-01, 1.8359e-01, 1.8408e-01, 1.8457e-01, 1.8506e-01, 1.8555e-01, 1.8603e-01, 1.8652e-01, 1.8701e-01, 1.8750e-01, 1.8848e-01, 1.8945e-01, 1.9043e-01, 1.9140e-01, 1.9238e-01, 1.9336e-01, 1.9433e-01, 1.9531e-01, 1.9629e-01, 1.9726e-01, 1.9824e-01, 1.9922e-01, 2.0019e-01, 2.0117e-01, 2.0215e-01, 2.0312e-01, 2.0410e-01, 2.0508e-01, 2.0605e-01, 2.0703e-01, 2.0801e-01, 2.0898e-01, 2.0996e-01, 2.1094e-01, 2.1191e-01, 2.1289e-01, 2.1387e-01, 2.1484e-01, 2.1582e-01, 2.1680e-01, 2.1777e-01, 2.1875e-01, 2.1972e-01, 2.2070e-01, 2.2168e-01, 2.2265e-01, 2.2363e-01, 2.2461e-01, 2.2558e-01, 2.2656e-01, 2.2754e-01, 2.2851e-01, 2.2949e-01, 2.3047e-01, 2.3144e-01, 2.3242e-01, 2.3340e-01, 2.3437e-01, 2.3535e-01, 2.3633e-01, 2.3730e-01, 2.3828e-01, 2.3926e-01, 2.4023e-01, 2.4121e-01, 2.4219e-01, 2.4316e-01, 2.4414e-01, 2.4512e-01, 2.4609e-01, 2.4707e-01, 2.4805e-01, 2.4902e-01, 2.5000e-01, 2.5097e-01, 2.5195e-01, 2.5293e-01, 2.5390e-01, 2.5488e-01, 2.5586e-01, 2.5683e-01, 2.5781e-01, 2.5879e-01, 2.5976e-01, 2.6074e-01, 2.6172e-01, 2.6269e-01, 2.6367e-01, 2.6465e-01, 2.6562e-01, 2.6660e-01, 2.6758e-01, 2.6855e-01, 2.6953e-01, 2.7051e-01, 2.7148e-01, 2.7246e-01, 2.7344e-01, 2.7441e-01, 2.7539e-01, 2.7637e-01, 2.7734e-01, 2.7832e-01, 2.7930e-01, 2.8027e-01, 2.8125e-01, 2.8222e-01, 2.8320e-01, 2.8418e-01, 2.8515e-01, 2.8613e-01, 2.8711e-01, 2.8808e-01, 2.8906e-01, 2.9004e-01, 2.9101e-01, 2.9199e-01, 2.9297e-01, 2.9394e-01, 2.9492e-01, 2.9590e-01, 2.9687e-01, 2.9785e-01, 2.9883e-01, 2.9980e-01, 3.0078e-01, 3.0176e-01, 3.0273e-01, 3.0371e-01, 3.0469e-01, 3.0566e-01, 3.0664e-01, 3.0762e-01, 3.0859e-01, 3.0957e-01, 3.1055e-01, 3.1152e-01, 3.1250e-01, 3.1347e-01, 3.1445e-01, 3.1543e-01, 3.1640e-01, 3.1738e-01, 3.1836e-01, 3.1933e-01, 3.2031e-01, 3.2129e-01, 3.2226e-01, 3.2324e-01, 3.2422e-01, 3.2519e-01, 3.2617e-01, 3.2715e-01, 3.2812e-01, 3.2910e-01, 3.3008e-01, 3.3105e-01, 3.3203e-01, 3.3301e-01, 3.3398e-01, 3.3496e-01, 3.3594e-01, 3.3691e-01, 3.3789e-01, 3.3887e-01, 3.3984e-01, 3.4082e-01, 3.4180e-01, 3.4277e-01, 3.4375e-01, 3.4472e-01, 3.4570e-01, 3.4668e-01, 3.4765e-01, 3.4863e-01, 3.4961e-01, 3.5058e-01, 3.5156e-01, 3.5254e-01, 3.5351e-01, 3.5449e-01, 3.5547e-01, 3.5644e-01, 3.5742e-01, 3.5840e-01, 3.5937e-01, 3.6035e-01, 3.6133e-01, 3.6230e-01, 3.6328e-01, 3.6426e-01, 3.6523e-01, 3.6621e-01, 3.6719e-01, 3.6816e-01, 3.6914e-01, 3.7012e-01, 3.7109e-01, 3.7207e-01, 3.7305e-01, 3.7402e-01, 3.7500e-01, // NOLINT + 3.7695e-01, 3.7890e-01, 3.8086e-01, 3.8281e-01, 3.8476e-01, 3.8672e-01, 3.8867e-01, 3.9062e-01, 3.9258e-01, 3.9453e-01, 3.9648e-01, 3.9844e-01, 4.0039e-01, 4.0234e-01, 4.0430e-01, 4.0625e-01, 4.0820e-01, 4.1015e-01, 4.1211e-01, 4.1406e-01, 4.1601e-01, 4.1797e-01, 4.1992e-01, 4.2187e-01, 4.2383e-01, 4.2578e-01, 4.2773e-01, 4.2969e-01, 4.3164e-01, 4.3359e-01, 4.3555e-01, 4.3750e-01, 4.3945e-01, 4.4140e-01, 4.4336e-01, 4.4531e-01, 4.4726e-01, 4.4922e-01, 4.5117e-01, 4.5312e-01, 4.5508e-01, 4.5703e-01, 4.5898e-01, 4.6094e-01, 4.6289e-01, 4.6484e-01, 4.6680e-01, 4.6875e-01, 4.7070e-01, 4.7265e-01, 4.7461e-01, 4.7656e-01, 4.7851e-01, 4.8047e-01, 4.8242e-01, 4.8437e-01, 4.8633e-01, 4.8828e-01, 4.9023e-01, 4.9219e-01, 4.9414e-01, 4.9609e-01, 4.9805e-01, 5.0000e-01, 5.0195e-01, 5.0390e-01, 5.0586e-01, 5.0781e-01, 5.0976e-01, 5.1172e-01, 5.1367e-01, 5.1562e-01, 5.1758e-01, 5.1953e-01, 5.2148e-01, 5.2344e-01, 5.2539e-01, 5.2734e-01, 5.2930e-01, 5.3125e-01, 5.3320e-01, 5.3515e-01, 5.3711e-01, 5.3906e-01, 5.4101e-01, 5.4297e-01, 5.4492e-01, 5.4687e-01, 5.4883e-01, 5.5078e-01, 5.5273e-01, 5.5469e-01, 5.5664e-01, 5.5859e-01, 5.6055e-01, 5.6250e-01, 5.6445e-01, 5.6640e-01, 5.6836e-01, 5.7031e-01, 5.7226e-01, 5.7422e-01, 5.7617e-01, 5.7812e-01, 5.8008e-01, 5.8203e-01, 5.8398e-01, 5.8594e-01, 5.8789e-01, 5.8984e-01, 5.9180e-01, 5.9375e-01, 5.9570e-01, 5.9765e-01, 5.9961e-01, 6.0156e-01, 6.0351e-01, 6.0547e-01, 6.0742e-01, 6.0937e-01, 6.1133e-01, 6.1328e-01, 6.1523e-01, 6.1719e-01, 6.1914e-01, 6.2109e-01, 6.2305e-01, 6.2500e-01, 6.2695e-01, 6.2890e-01, 6.3086e-01, 6.3281e-01, 6.3476e-01, 6.3672e-01, 6.3867e-01, 6.4062e-01, 6.4258e-01, 6.4453e-01, 6.4648e-01, 6.4844e-01, 6.5039e-01, 6.5234e-01, 6.5430e-01, 6.5625e-01, 6.5820e-01, 6.6015e-01, 6.6211e-01, 6.6406e-01, 6.6601e-01, 6.6797e-01, 6.6992e-01, 6.7187e-01, 6.7383e-01, 6.7578e-01, 6.7773e-01, 6.7969e-01, 6.8164e-01, 6.8359e-01, 6.8554e-01, 6.8750e-01, 6.8945e-01, 6.9140e-01, 6.9336e-01, 6.9531e-01, 6.9726e-01, 6.9922e-01, 7.0117e-01, 7.0312e-01, 7.0508e-01, 7.0703e-01, 7.0898e-01, 7.1094e-01, 7.1289e-01, 7.1484e-01, 7.1679e-01, 7.1875e-01, 7.2070e-01, 7.2265e-01, 7.2461e-01, 7.2656e-01, 7.2851e-01, 7.3047e-01, 7.3242e-01, 7.3437e-01, 7.3633e-01, 7.3828e-01, 7.4023e-01, 7.4219e-01, 7.4414e-01, 7.4609e-01, 7.4804e-01, 7.5000e-01, 7.5390e-01, 7.5781e-01, 7.6172e-01, 7.6562e-01, 7.6953e-01, 7.7344e-01, 7.7734e-01, 7.8125e-01, 7.8515e-01, 7.8906e-01, 7.9297e-01, 7.9687e-01, 8.0078e-01, 8.0469e-01, 8.0859e-01, 8.1250e-01, 8.1640e-01, 8.2031e-01, 8.2422e-01, 8.2812e-01, 8.3203e-01, 8.3594e-01, 8.3984e-01, 8.4375e-01, 8.4765e-01, 8.5156e-01, 8.5547e-01, 8.5937e-01, 8.6328e-01, 8.6719e-01, 8.7109e-01, 8.7500e-01, 8.7890e-01, 8.8281e-01, 8.8672e-01, 8.9062e-01, 8.9453e-01, 8.9844e-01, 9.0234e-01, 9.0625e-01, 9.1015e-01, 9.1406e-01, 9.1797e-01, 9.2187e-01, 9.2578e-01, 9.2969e-01, 9.3359e-01, 9.3750e-01, 9.4140e-01, 9.4531e-01, 9.4922e-01, 9.5312e-01, 9.5703e-01, 9.6094e-01, 9.6484e-01, 9.6875e-01, 9.7265e-01, 9.7656e-01, 9.8047e-01, 9.8437e-01, 9.8828e-01, 9.9219e-01, 9.9609e-01, 1.0000e+00 // NOLINT }; -float4 val4_from_12(uchar8 pvs, float gain) { - uint4 parsed = (uint4)(((uint)pvs.s0<<4) + (pvs.s1>>4), // is from the previous 10 bit - ((uint)pvs.s2<<4) + (pvs.s4&0xF), - ((uint)pvs.s3<<4) + (pvs.s4>>4), - ((uint)pvs.s5<<4) + (pvs.s7&0xF)); - #if IS_OX +float4 normalize_pv(int4 parsed, float vignette_factor) { // PWL - //float4 pv = (convert_float4(parsed) - 64.0) / (4096.0 - 64.0); float4 pv = {ox03c10_lut[parsed.s0], ox03c10_lut[parsed.s1], ox03c10_lut[parsed.s2], ox03c10_lut[parsed.s3]}; - - // it's a 24 bit signal, center in the middle 8 bits - return clamp(pv*gain*256.0, 0.0, 1.0); - #else // AR - // normalize and scale - float4 pv = (convert_float4(parsed) - 168.0) / (4096.0 - 168.0); - return clamp(pv*gain, 0.0, 1.0); - #endif - + return clamp(pv*vignette_factor*256.0, 0.0, 1.0); } -float get_k(float a, float b, float c, float d) { - return 2.0 - (fabs(a - b) + fabs(c - d)); +float3 color_correct(float3 rgb) { + float3 corrected = rgb.x * (float3)(1.5664815, -0.29808738, -0.03973474); + corrected += rgb.y * (float3)(-0.48672447, 1.41914433, -0.40295248); + corrected += rgb.z * (float3)(-0.07975703, -0.12105695, 1.44268722); + return corrected; } -__kernel void debayer10(const __global uchar * in, __global uchar * out) -{ - const int gid_x = get_global_id(0); - const int gid_y = get_global_id(1); - - const int y_top_mod = (gid_y == 0) ? 2: 0; - const int y_bot_mod = (gid_y == (RGB_HEIGHT/2 - 1)) ? 1: 3; - - float3 rgb; - uchar3 rgb_out[4]; - - int start = (2 * gid_y - 1) * FRAME_STRIDE + (3 * gid_x - 2) + (FRAME_STRIDE * FRAME_OFFSET); - - // read in 8x4 chars - uchar8 dat[4]; - dat[0] = vload8(0, in + start + FRAME_STRIDE*y_top_mod); - dat[1] = vload8(0, in + start + FRAME_STRIDE*1); - dat[2] = vload8(0, in + start + FRAME_STRIDE*2); - dat[3] = vload8(0, in + start + FRAME_STRIDE*y_bot_mod); - - // correct vignetting - #if VIGNETTING - int gx = (gid_x*2 - RGB_WIDTH/2); - int gy = (gid_y*2 - RGB_HEIGHT/2); - const float gain = get_vignetting_s(gx*gx + gy*gy); - #else - const float gain = 1.0; - #endif - - // process them to floats - float4 va = val4_from_12(dat[0], gain); - float4 vb = val4_from_12(dat[1], gain); - float4 vc = val4_from_12(dat[2], gain); - float4 vd = val4_from_12(dat[3], gain); - - if (gid_x == 0) { - va.s0 = va.s2; - vb.s0 = vb.s2; - vc.s0 = vc.s2; - vd.s0 = vd.s2; - } else if (gid_x == RGB_WIDTH/2 - 1) { - va.s3 = va.s1; - vb.s3 = vb.s1; - vc.s3 = vc.s1; - vd.s3 = vd.s1; - } - - // a simplified version of https://opensignalprocessingjournal.com/contents/volumes/V6/TOSIGPJ-6-1/TOSIGPJ-6-1.pdf - const float k01 = get_k(va.s0, vb.s1, va.s2, vb.s1); - const float k02 = get_k(va.s2, vb.s1, vc.s2, vb.s1); - const float k03 = get_k(vc.s0, vb.s1, vc.s2, vb.s1); - const float k04 = get_k(va.s0, vb.s1, vc.s0, vb.s1); - rgb.x = (k02*vb.s2+k04*vb.s0)/(k02+k04); // R_G1 - rgb.y = vb.s1; // G1(R) - rgb.z = (k01*va.s1+k03*vc.s1)/(k01+k03); // B_G1 - rgb_out[0] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - - const float k11 = get_k(va.s1, vc.s1, va.s3, vc.s3); - const float k12 = get_k(va.s2, vb.s1, vb.s3, vc.s2); - const float k13 = get_k(va.s1, va.s3, vc.s1, vc.s3); - const float k14 = get_k(va.s2, vb.s3, vc.s2, vb.s1); - rgb.x = vb.s2; // R - rgb.y = (k11*(va.s2+vc.s2)*0.5+k13*(vb.s3+vb.s1)*0.5)/(k11+k13); // G_R - rgb.z = (k12*(va.s3+vc.s1)*0.5+k14*(va.s1+vc.s3)*0.5)/(k12+k14); // B_R - rgb_out[1] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - - const float k21 = get_k(vb.s0, vd.s0, vb.s2, vd.s2); - const float k22 = get_k(vb.s1, vc.s0, vc.s2, vd.s1); - const float k23 = get_k(vb.s0, vb.s2, vd.s0, vd.s2); - const float k24 = get_k(vb.s1, vc.s2, vd.s1, vc.s0); - rgb.x = (k22*(vb.s2+vd.s0)*0.5+k24*(vb.s0+vd.s2)*0.5)/(k22+k24); // R_B - rgb.y = (k21*(vb.s1+vd.s1)*0.5+k23*(vc.s2+vc.s0)*0.5)/(k21+k23); // G_B - rgb.z = vc.s1; // B - rgb_out[2] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - - const float k31 = get_k(vb.s1, vc.s2, vb.s3, vc.s2); - const float k32 = get_k(vb.s3, vc.s2, vd.s3, vc.s2); - const float k33 = get_k(vd.s1, vc.s2, vd.s3, vc.s2); - const float k34 = get_k(vb.s1, vc.s2, vd.s1, vc.s2); - rgb.x = (k31*vb.s2+k33*vd.s2)/(k31+k33); // R_G2 - rgb.y = vc.s2; // G2(B) - rgb.z = (k32*vc.s3+k34*vc.s1)/(k32+k34); // B_G2 - rgb_out[3] = convert_uchar3_sat(color_correct(clamp(rgb, 0.0, 1.0)) * 255.0); - - // write ys - uchar2 yy = (uchar2)( - RGB_TO_Y(rgb_out[0].s0, rgb_out[0].s1, rgb_out[0].s2), - RGB_TO_Y(rgb_out[1].s0, rgb_out[1].s1, rgb_out[1].s2) - ); - vstore2(yy, 0, out + mad24(gid_y * 2, YUV_STRIDE, gid_x * 2)); - yy = (uchar2)( - RGB_TO_Y(rgb_out[2].s0, rgb_out[2].s1, rgb_out[2].s2), - RGB_TO_Y(rgb_out[3].s0, rgb_out[3].s1, rgb_out[3].s2) - ); - vstore2(yy, 0, out + mad24(gid_y * 2 + 1, YUV_STRIDE, gid_x * 2)); - - // write uvs - const short ar = AVERAGE(rgb_out[0].s0, rgb_out[1].s0, rgb_out[2].s0, rgb_out[3].s0); - const short ag = AVERAGE(rgb_out[0].s1, rgb_out[1].s1, rgb_out[2].s1, rgb_out[3].s1); - const short ab = AVERAGE(rgb_out[0].s2, rgb_out[1].s2, rgb_out[2].s2, rgb_out[3].s2); - uchar2 uv = (uchar2)( - RGB_TO_U(ar, ag, ab), - RGB_TO_V(ar, ag, ab) - ); - vstore2(uv, 0, out + UV_OFFSET + mad24(gid_y, YUV_STRIDE, gid_x * 2)); +float3 apply_gamma(float3 rgb, int expo_time) { + return -0.507089*exp(-12.54124638*rgb) + 0.9655*powr(rgb, 0.5) - 0.472597*rgb + 0.507089; } + +#endif \ No newline at end of file diff --git a/system/camerad/sensors/sensor.h b/system/camerad/sensors/sensor.h index 4e2194d914..add514b117 100644 --- a/system/camerad/sensors/sensor.h +++ b/system/camerad/sensors/sensor.h @@ -12,10 +12,6 @@ #include "system/camerad/sensors/os04c10_registers.h" #define ANALOG_GAIN_MAX_CNT 55 -const size_t FRAME_WIDTH = 1928; -const size_t FRAME_HEIGHT = 1208; -const size_t FRAME_STRIDE = 2896; // for 12 bit output. 1928 * 12 / 8 + 4 (alignment) - class SensorInfo { public: @@ -26,12 +22,14 @@ public: virtual void processRegisters(CameraState *c, cereal::FrameData::Builder &framed) const {} cereal::FrameData::ImageSensor image_sensor = cereal::FrameData::ImageSensor::UNKNOWN; + float pixel_size_mm; uint32_t frame_width, frame_height; uint32_t frame_stride; uint32_t frame_offset = 0; uint32_t extra_height = 0; int registers_offset = -1; int stats_offset = -1; + int hdr_offset = -1; int exposure_time_min; int exposure_time_max; diff --git a/system/camerad/test/test_ae_gray.cc b/system/camerad/test/test_ae_gray.cc index 06d784927a..be9a0cc59f 100644 --- a/system/camerad/test/test_ae_gray.cc +++ b/system/camerad/test/test_ae_gray.cc @@ -36,6 +36,7 @@ TEST_CASE("camera.test_set_exposure_target") { cb.cur_yuv_buf = &vb; cb.rgb_width = W; cb.rgb_height = H; + Rect rect = {0, 0, W-1, H-1}; printf("AE test patterns %dx%d\n", cb.rgb_width, cb.rgb_height); @@ -60,7 +61,7 @@ TEST_CASE("camera.test_set_exposure_target") { memset(&fb_y[h_0*W+h_1*W], l[2], h_2*W); memset(&fb_y[h_0*W+h_1*W+h_2*W], l[3], h_3*W); memset(&fb_y[h_0*W+h_1*W+h_2*W+h_3*W], l[4], h_4*W); - float ev = set_exposure_target((const CameraBuf*) &cb, 0, W-1, 1, 0, H-1, 1); + float ev = set_exposure_target((const CameraBuf*) &cb, rect, 1, 1); // printf("%d/%d/%d/%d/%d ev is %f\n", h_0, h_1, h_2, h_3, h_4, ev); // printf("%f\n", ev); diff --git a/system/hardware/tici/agnos.json b/system/hardware/tici/agnos.json index e69842cfec..b1862bdef9 100644 --- a/system/hardware/tici/agnos.json +++ b/system/hardware/tici/agnos.json @@ -1,10 +1,10 @@ [ { "name": "boot", - "url": "https://commadist.azureedge.net/agnosupdate/boot-f0de74e139b8b99224738d4e72a5b1831758f20b09ff6bb28f3aaaae1c4c1ebe.img.xz", - "hash": "f0de74e139b8b99224738d4e72a5b1831758f20b09ff6bb28f3aaaae1c4c1ebe", - "hash_raw": "f0de74e139b8b99224738d4e72a5b1831758f20b09ff6bb28f3aaaae1c4c1ebe", - "size": 15636480, + "url": "https://commadist.azureedge.net/agnosupdate/boot-5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f.img.xz", + "hash": "5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f", + "hash_raw": "5674ea6767e7198cf1e7def3de66a57061f001ed76d43dc4b4f84de545c53c6f", + "size": 16029696, "sparse": false, "full_check": true, "has_ab": true @@ -61,17 +61,17 @@ }, { "name": "system", - "url": "https://commadist.azureedge.net/agnosupdate/system-0f69173d5f3058f7197c139442a6556be59e52f15402a263215a329ba5ec41e2.img.xz", - "hash": "4858385ba6284bcaa179ab77ac4263486e4d8670df921e4ac400464dc1dde59c", - "hash_raw": "0f69173d5f3058f7197c139442a6556be59e52f15402a263215a329ba5ec41e2", + "url": "https://commadist.azureedge.net/agnosupdate/system-1badfe72851628d6cf9200a53a6151bb4e797b49c717141409fc57138eae388a.img.xz", + "hash": "328e90c62068222dfd98f71dd3f6251fcb962f082b49c6be66ab2699f5db6f4f", + "hash_raw": "1badfe72851628d6cf9200a53a6151bb4e797b49c717141409fc57138eae388a", "size": 10737418240, "sparse": true, "full_check": false, "has_ab": true, "alt": { - "hash": "42658a6fff660d9b6abb9cb9fbb3481071259c9a9598718af6b1edff2b556009", - "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-0f69173d5f3058f7197c139442a6556be59e52f15402a263215a329ba5ec41e2.img.xz", - "size": 4548292756 + "hash": "bc11d2148f29862ee1326aca2af1cf6bbf5fed831e3f8f6b8f7a0f110dfe8d26", + "url": "https://commadist.azureedge.net/agnosupdate/system-skip-chunks-1badfe72851628d6cf9200a53a6151bb4e797b49c717141409fc57138eae388a.img.xz", + "size": 4548070000 } } ] \ No newline at end of file diff --git a/system/hardware/tici/agnos.py b/system/hardware/tici/agnos.py index 502295be07..7e3536f775 100755 --- a/system/hardware/tici/agnos.py +++ b/system/hardware/tici/agnos.py @@ -10,11 +10,13 @@ from collections.abc import Generator import requests -import openpilot.system.hardware.tici.casync as casync +import openpilot.system.updated.casync.casync as casync SPARSE_CHUNK_FMT = struct.Struct('H2xI4x') CAIBX_URL = "https://commadist.azureedge.net/agnosupdate/" +AGNOS_MANIFEST_FILE = "system/hardware/tici/agnos.json" + class StreamingDecompressor: def __init__(self, url: str) -> None: diff --git a/system/hardware/tici/amplifier.py b/system/hardware/tici/amplifier.py index 5725cb8170..af82067467 100755 --- a/system/hardware/tici/amplifier.py +++ b/system/hardware/tici/amplifier.py @@ -97,7 +97,6 @@ CONFIGS = { AmpConfig("Right DAC input mixer: DAI2 right", 0b1, 0x22, 0, 0b00000001), AmpConfig("Volume adjustment smoothing disabled", 0b1, 0x49, 6, 0b01000000), ], - "mici": [], } class Amplifier: diff --git a/system/hardware/tici/hardware.py b/system/hardware/tici/hardware.py index 5bb1032ba9..45d20d976b 100644 --- a/system/hardware/tici/hardware.py +++ b/system/hardware/tici/hardware.py @@ -94,11 +94,7 @@ def get_device_type(): # lru_cache and cache can cause memory leaks when used in classes with open("/sys/firmware/devicetree/base/model") as f: model = f.read().strip('\x00') - model = model.split('comma ')[-1] - # TODO: remove this with AGNOS 7+ - if model.startswith('Qualcomm'): - model = 'tici' - return model + return model.split('comma ')[-1] class Tici(HardwareBase): @cached_property @@ -116,6 +112,8 @@ class Tici(HardwareBase): @cached_property def amplifier(self): + if self.get_device_type() == "mici": + return None return Amplifier() def get_os_version(self): @@ -374,9 +372,10 @@ class Tici(HardwareBase): def set_power_save(self, powersave_enabled): # amplifier, 100mW at idle - self.amplifier.set_global_shutdown(amp_disabled=powersave_enabled) - if not powersave_enabled: - self.amplifier.initialize_configuration(self.get_device_type()) + if self.amplifier is not None: + self.amplifier.set_global_shutdown(amp_disabled=powersave_enabled) + if not powersave_enabled: + self.amplifier.initialize_configuration(self.get_device_type()) # *** CPU config *** @@ -414,7 +413,8 @@ class Tici(HardwareBase): return 0 def initialize_hardware(self): - self.amplifier.initialize_configuration(self.get_device_type()) + if self.amplifier is not None: + self.amplifier.initialize_configuration(self.get_device_type()) # Allow thermald to write engagement status to kmsg os.system("sudo chmod a+w /dev/kmsg") @@ -468,8 +468,9 @@ class Tici(HardwareBase): # use sim slot 'AT^SIMSWAP=1', - # configure ECM mode - 'AT$QCPCFG=usbNet,1' + # ethernet config + 'AT$QCPCFG=usbNet,0', + 'AT$QCNETDEVCTL=3,1', ] else: cmds += [ @@ -478,6 +479,12 @@ class Tici(HardwareBase): 'AT+QNVFW="/nv/item_files/ims/IMS_enable",00', 'AT+QNVFW="/nv/item_files/modem/mmode/ue_usage_setting",01', ] + if self.get_device_type() == "tizi": + cmds += [ + # SIM hot swap + 'AT+QSIMDET=1,0', + 'AT+QSIMSTAT=1', + ] # clear out old blue prime initial APN os.system('mmcli -m any --3gpp-set-initial-eps-bearer-settings="apn="') diff --git a/system/hardware/tici/tests/test_power_draw.py b/system/hardware/tici/tests/test_power_draw.py index 180ec155e4..ba7e0a6d9d 100755 --- a/system/hardware/tici/tests/test_power_draw.py +++ b/system/hardware/tici/tests/test_power_draw.py @@ -36,7 +36,6 @@ PROCS = [ Proc(['modeld'], 1.12, atol=0.2, msgs=['modelV2']), Proc(['dmonitoringmodeld'], 0.4, msgs=['driverStateV2']), Proc(['encoderd'], 0.23, msgs=[]), - Proc(['mapsd', 'navmodeld'], 0.05, msgs=['mapRenderState', 'navModel']), ] diff --git a/system/loggerd/encoder/v4l_encoder.cc b/system/loggerd/encoder/v4l_encoder.cc index 2bd2863126..853a17abbe 100644 --- a/system/loggerd/encoder/v4l_encoder.cc +++ b/system/loggerd/encoder/v4l_encoder.cc @@ -16,7 +16,12 @@ #define V4L2_QCOM_BUF_FLAG_CODECCONFIG 0x00020000 #define V4L2_QCOM_BUF_FLAG_EOS 0x02000000 -// echo 0x7fffffff > /sys/kernel/debug/msm_vidc/debug_level +/* + kernel debugging: + echo 0xff > /sys/module/videobuf2_core/parameters/debug + echo 0x7fffffff > /sys/kernel/debug/msm_vidc/debug_level + echo 0xff > /sys/devices/platform/soc/aa00000.qcom,vidc/video4linux/video33/dev_debug +*/ const int env_debug_encoder = (getenv("DEBUG_ENCODER") != NULL) ? atoi(getenv("DEBUG_ENCODER")) : 0; static void checked_ioctl(int fd, unsigned long request, void *argp) { diff --git a/system/loggerd/logger.cc b/system/loggerd/logger.cc index aea7d856dd..2e6270e55e 100644 --- a/system/loggerd/logger.cc +++ b/system/loggerd/logger.cc @@ -111,15 +111,6 @@ kj::Array logger_build_params_data_car_start() { return capnp::messageToFlatArray(msg); } -std::string logger_get_route_name() { - char route_name[64] = {'\0'}; - time_t rawtime = time(NULL); - struct tm timeinfo; - localtime_r(&rawtime, &timeinfo); - strftime(route_name, sizeof(route_name), "%Y-%m-%d--%H-%M-%S", &timeinfo); - return route_name; -} - std::string logger_get_identifier(std::string key) { // a log identifier is a 32 bit counter, plus a 10 character unique ID. // e.g. 000001a3--c20ba54385 @@ -127,7 +118,7 @@ std::string logger_get_identifier(std::string key) { Params params; uint32_t cnt; try { - cnt = std::stol(params.get(key)); + cnt = std::stoul(params.get(key)); } catch (std::exception &e) { cnt = 0; } @@ -144,16 +135,16 @@ std::string logger_get_identifier(std::string key) { return util::string_format("%08x--%s", cnt, ss.str().c_str()); } -static void log_sentinel(LoggerState *log, SentinelType type, int eixt_signal = 0) { +static void log_sentinel(LoggerState *log, SentinelType type, int exit_signal = 0) { MessageBuilder msg; auto sen = msg.initEvent().initSentinel(); sen.setType(type); - sen.setSignal(eixt_signal); + sen.setSignal(exit_signal); log->write(msg.toBytes(), true); } LoggerState::LoggerState(const std::string &log_root) { - route_name = logger_get_route_name(); + route_name = logger_get_identifier("RouteCount"); route_path = log_root + "/" + route_name; init_data = logger_build_init_data(); } diff --git a/system/loggerd/logger.h b/system/loggerd/logger.h index 3a7fd21bb6..954be515bf 100644 --- a/system/loggerd/logger.h +++ b/system/loggerd/logger.h @@ -53,5 +53,4 @@ protected: kj::Array logger_build_init_data(); kj::Array logger_build_params_data_car_start(); -std::string logger_get_route_name(); std::string logger_get_identifier(std::string key); diff --git a/system/loggerd/tests/loggerd_tests_common.py b/system/loggerd/tests/loggerd_tests_common.py index 42eec2a0f4..877c872b6b 100644 --- a/system/loggerd/tests/loggerd_tests_common.py +++ b/system/loggerd/tests/loggerd_tests_common.py @@ -72,8 +72,8 @@ class UploaderTestCase(unittest.TestCase): uploader.force_wifi = True uploader.allow_sleep = False self.seg_num = random.randint(1, 300) - self.seg_format = "2019-04-18--12-52-54--{}" - self.seg_format2 = "2019-05-18--11-22-33--{}" + self.seg_format = "00000004--0ac3964c96--{}" + self.seg_format2 = "00000005--4c4e99b08b--{}" self.seg_dir = self.seg_format.format(self.seg_num) self.params = Params() diff --git a/system/loggerd/tests/test_loggerd.py b/system/loggerd/tests/test_loggerd.py index c80dc19fce..fdea60a282 100755 --- a/system/loggerd/tests/test_loggerd.py +++ b/system/loggerd/tests/test_loggerd.py @@ -24,7 +24,7 @@ from openpilot.system.version import get_version from openpilot.tools.lib.helpers import RE from openpilot.tools.lib.logreader import LogReader from cereal.visionipc import VisionIpcServer, VisionStreamType -from openpilot.common.transformations.camera import tici_f_frame_size, tici_d_frame_size, tici_e_frame_size +from openpilot.common.transformations.camera import DEVICE_CAMERAS SentinelType = log.Sentinel.SentinelType @@ -142,10 +142,11 @@ class TestLoggerd: os.environ["LOGGERD_TEST"] = "1" Params().put("RecordFront", "1") + d = DEVICE_CAMERAS[("tici", "ar0231")] expected_files = {"rlog", "qlog", "qcamera.ts", "fcamera.hevc", "dcamera.hevc", "ecamera.hevc"} - streams = [(VisionStreamType.VISION_STREAM_ROAD, (*tici_f_frame_size, 2048*2346, 2048, 2048*1216), "roadCameraState"), - (VisionStreamType.VISION_STREAM_DRIVER, (*tici_d_frame_size, 2048*2346, 2048, 2048*1216), "driverCameraState"), - (VisionStreamType.VISION_STREAM_WIDE_ROAD, (*tici_e_frame_size, 2048*2346, 2048, 2048*1216), "wideRoadCameraState")] + streams = [(VisionStreamType.VISION_STREAM_ROAD, (d.fcam.width, d.fcam.height, 2048*2346, 2048, 2048*1216), "roadCameraState"), + (VisionStreamType.VISION_STREAM_DRIVER, (d.dcam.width, d.dcam.height, 2048*2346, 2048, 2048*1216), "driverCameraState"), + (VisionStreamType.VISION_STREAM_WIDE_ROAD, (d.ecam.width, d.ecam.height, 2048*2346, 2048, 2048*1216), "wideRoadCameraState")] pm = messaging.PubMaster(["roadCameraState", "driverCameraState", "wideRoadCameraState"]) vipc_server = VisionIpcServer("camerad") diff --git a/system/loggerd/uploader.py b/system/loggerd/uploader.py index 6e414d321e..ee736657b6 100755 --- a/system/loggerd/uploader.py +++ b/system/loggerd/uploader.py @@ -46,7 +46,9 @@ class FakeResponse: def get_directory_sort(d: str) -> list[str]: - return [s.rjust(10, '0') for s in d.rsplit('--', 1)] + # ensure old format is sorted sooner + o = ["0", ] if d.startswith("2024-") else ["1", ] + return o + [s.rjust(10, '0') for s in d.rsplit('--', 1)] def listdir_by_creation(d: str) -> list[str]: if not os.path.isdir(d): diff --git a/system/qcomgpsd/qcomgpsd.py b/system/qcomgpsd/qcomgpsd.py index e8c407a627..21c7995a77 100755 --- a/system/qcomgpsd/qcomgpsd.py +++ b/system/qcomgpsd/qcomgpsd.py @@ -17,6 +17,7 @@ from cereal import log import cereal.messaging as messaging from openpilot.common.gpio import gpio_init, gpio_set from openpilot.common.retry import retry +from openpilot.common.time import system_time_valid from openpilot.system.hardware.tici.pins import GPIO from openpilot.common.swaglog import cloudlog from openpilot.system.qcomgpsd.modemdiag import ModemDiag, DIAG_LOG_F, setup_logs, send_recv @@ -171,8 +172,9 @@ def setup_quectel(diag: ModemDiag) -> bool: inject_assistance() os.remove(ASSIST_DATA_FILE) #at_cmd("AT+QGPSXTRADATA?") - time_str = datetime.datetime.utcnow().strftime("%Y/%m/%d,%H:%M:%S") - at_cmd(f"AT+QGPSXTRATIME=0,\"{time_str}\",1,1,1000") + if system_time_valid(): + time_str = datetime.datetime.utcnow().strftime("%Y/%m/%d,%H:%M:%S") + at_cmd(f"AT+QGPSXTRATIME=0,\"{time_str}\",1,1,1000") at_cmd("AT+QGPSCFG=\"outport\",\"usbnmea\"") at_cmd("AT+QGPS=1") @@ -205,10 +207,10 @@ def teardown_quectel(diag): try_setup_logs(diag, []) -def wait_for_modem(): +def wait_for_modem(cmd="AT+QGPS?"): cloudlog.warning("waiting for modem to come up") while True: - ret = subprocess.call("mmcli -m any --timeout 10 --command=\"AT+QGPS?\"", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True) + ret = subprocess.call(f"mmcli -m any --timeout 10 --command=\"{cmd}\"", stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, shell=True) if ret == 0: return time.sleep(0.1) @@ -352,8 +354,8 @@ def main() -> NoReturn: gps.bearingAccuracyDeg = report["q_FltHeadingUncRad"] * 180/math.pi if (report["q_FltHeadingUncRad"] != 0) else 180 gps.speedAccuracy = math.sqrt(sum([x**2 for x in vNEDsigma])) # quectel gps verticalAccuracy is clipped to 500, set invalid if so - gps.flags = 1 if gps.verticalAccuracy != 500 else 0 - if gps.flags: + gps.hasFix = gps.verticalAccuracy != 500 + if gps.hasFix: want_assistance = False stop_download_event.set() pm.send('gpsLocation', msg) diff --git a/system/timed.py b/system/timed.py index 39acb2ba12..2b9a42c455 100755 --- a/system/timed.py +++ b/system/timed.py @@ -8,6 +8,7 @@ from typing import NoReturn from timezonefinder import TimezoneFinder import cereal.messaging as messaging +from openpilot.common.time import system_time_valid from openpilot.common.params import Params from openpilot.common.swaglog import cloudlog from openpilot.system.hardware import AGNOS @@ -56,7 +57,6 @@ def main() -> NoReturn: """ params = Params() - tf = TimezoneFinder() # Restore timezone from param tz = params.get("Timezone", encoding='utf8') @@ -70,7 +70,8 @@ def main() -> NoReturn: while True: sm.update(1000) - msg = messaging.new_message('clocks', valid=True) + msg = messaging.new_message('clocks') + msg.valid = system_time_valid() msg.clocks.wallTimeNanos = time.time_ns() pm.send('clocks', msg) diff --git a/system/sensord/pigeond.py b/system/ubloxd/pigeond.py similarity index 100% rename from system/sensord/pigeond.py rename to system/ubloxd/pigeond.py diff --git a/system/ubloxd/tests/print_gps_stats.py b/system/ubloxd/tests/print_gps_stats.py index cfddb7f8b8..edf94c060a 100755 --- a/system/ubloxd/tests/print_gps_stats.py +++ b/system/ubloxd/tests/print_gps_stats.py @@ -13,7 +13,7 @@ if __name__ == "__main__": cnos = [] for m in ug.measurementReport.measurements: cnos.append(m.cno) - print("Sats: %d Accuracy: %.2f m cnos" % (ug.measurementReport.numMeas, gle.accuracy), sorted(cnos)) + print("Sats: %d Accuracy: %.2f m cnos" % (ug.measurementReport.numMeas, gle.horizontalAccuracy), sorted(cnos)) except Exception: pass sm.update() diff --git a/system/sensord/tests/test_pigeond.py b/system/ubloxd/tests/test_pigeond.py similarity index 100% rename from system/sensord/tests/test_pigeond.py rename to system/ubloxd/tests/test_pigeond.py diff --git a/system/ubloxd/ublox_msg.cc b/system/ubloxd/ublox_msg.cc index 7b4505dc81..26b33a1e32 100644 --- a/system/ubloxd/ublox_msg.cc +++ b/system/ubloxd/ublox_msg.cc @@ -127,12 +127,13 @@ kj::Array UbloxMsgParser::gen_nav_pvt(ubx_t::nav_pvt_t *msg) { auto gpsLoc = msg_builder.initEvent().initGpsLocationExternal(); gpsLoc.setSource(cereal::GpsLocationData::SensorSource::UBLOX); gpsLoc.setFlags(msg->flags()); + gpsLoc.setHasFix((msg->flags() % 2) == 1); gpsLoc.setLatitude(msg->lat() * 1e-07); gpsLoc.setLongitude(msg->lon() * 1e-07); gpsLoc.setAltitude(msg->height() * 1e-03); gpsLoc.setSpeed(msg->g_speed() * 1e-03); gpsLoc.setBearingDeg(msg->head_mot() * 1e-5); - gpsLoc.setAccuracy(msg->h_acc() * 1e-03); + gpsLoc.setHorizontalAccuracy(msg->h_acc() * 1e-03); std::tm timeinfo = std::tm(); timeinfo.tm_year = msg->year() - 1900; timeinfo.tm_mon = msg->month() - 1; diff --git a/system/ugpsd.py b/system/ugpsd.py new file mode 100755 index 0000000000..34b20b01c8 --- /dev/null +++ b/system/ugpsd.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +import os +import time +import traceback +import serial +import datetime +import numpy as np +from collections import defaultdict + +from cereal import log +import cereal.messaging as messaging +from openpilot.common.retry import retry +from openpilot.common.swaglog import cloudlog +from openpilot.system.qcomgpsd.qcomgpsd import at_cmd, wait_for_modem + + +def sfloat(n: str): + return float(n) if len(n) > 0 else 0 + +def checksum(s: str): + ret = 0 + for c in s[1:-3]: + ret ^= ord(c) + return format(ret, '02X') + +class Unicore: + def __init__(self): + self.s = serial.Serial('/dev/ttyHS0', 115200) + self.s.timeout = 1 + self.s.writeTimeout = 1 + self.s.newline = b'\r\n' + + self.s.flush() + self.s.reset_input_buffer() + self.s.reset_output_buffer() + self.s.read(2048) + + def send(self, cmd): + self.s.write(cmd.encode('utf8') + b'\r') + resp = self.s.read(2048) + print(len(resp), cmd, "\n", resp) + assert b"OK" in resp + + def recv(self): + return self.s.readline() + +def build_msg(state): + """ + NMEA sentences: + https://campar.in.tum.de/twiki/pub/Chair/NaviGpsDemon/nmea.html#RMC + NAV messages: + https://www.unicorecomm.com/assets/upload/file/UFirebird_Standard_Positioning_Products_Protocol_Specification_CH.pdf + """ + + msg = messaging.new_message('gpsLocation', valid=True) + gps = msg.gpsLocation + + gnrmc = state['$GNRMC'] + gps.hasFix = gnrmc[1] == 'A' + gps.source = log.GpsLocationData.SensorSource.unicore + gps.latitude = (sfloat(gnrmc[3][:2]) + (sfloat(gnrmc[3][2:]) / 60)) * (1 if gnrmc[4] == "N" else -1) + gps.longitude = (sfloat(gnrmc[5][:3]) + (sfloat(gnrmc[5][3:]) / 60)) * (1 if gnrmc[6] == "E" else -1) + + try: + date = gnrmc[9][:6] + dt = datetime.datetime.strptime(f"{date} {gnrmc[1]}", '%d%m%y %H%M%S.%f') + gps.unixTimestampMillis = dt.timestamp()*1e3 + except Exception: + pass + + gps.bearingDeg = sfloat(gnrmc[8]) + + if len(state['$GNGGA']): + gngga = state['$GNGGA'] + if gngga[10] == 'M': + gps.altitude = sfloat(gngga[9]) + + if len(state['$GNGSA']): + gngsa = state['$GNGSA'] + gps.horizontalAccuracy = sfloat(gngsa[4]) + gps.verticalAccuracy = sfloat(gngsa[5]) + + #if len(state['$NAVACC']): + # # $NAVVEL,264415000,5,3,0.375,0.141,-0.735,-65.450*2A + # navacc = state['$NAVACC'] + # gps.horizontalAccuracy = sfloat(navacc[3]) + # gps.speedAccuracy = sfloat(navacc[4]) + # gps.bearingAccuracyDeg = sfloat(navacc[5]) + + if len(state['$NAVVEL']): + # $NAVVEL,264415000,5,3,0.375,0.141,-0.735,-65.450*2A + navvel = state['$NAVVEL'] + vECEF = [ + sfloat(navvel[4]), + sfloat(navvel[5]), + sfloat(navvel[6]), + ] + + lat = np.radians(gps.latitude) + lon = np.radians(gps.longitude) + R = np.array([ + [-np.sin(lat) * np.cos(lon), -np.sin(lon), -np.cos(lat) * np.cos(lon)], + [-np.sin(lat) * np.sin(lon), np.cos(lon), -np.cos(lat) * np.sin(lon)], + [np.cos(lat), 0, -np.sin(lat)] + ]) + + vNED = [float(x) for x in R.dot(vECEF)] + gps.vNED = vNED + gps.speed = np.linalg.norm(vNED) + + # TODO: set these from the module + gps.bearingAccuracyDeg = 5. + gps.speedAccuracy = 3. + + return msg + + +@retry(attempts=10, delay=0.1) +def setup(u): + at_cmd('AT+CGPS=0') + at_cmd('AT+CGPS=1') + time.sleep(1.0) + + # setup NAVXXX outputs + for i in range(4): + u.send(f"$CFGMSG,1,{i},1") + for i in (1, 3): + u.send(f"$CFGMSG,3,{i},1") + + # 10Hz NAV outputs + u.send("$CFGNAV,100,100,1000") + + +def main(): + wait_for_modem("AT+CGPS?") + + u = Unicore() + setup(u) + + state = defaultdict(list) + pm = messaging.PubMaster(['gpsLocation']) + while True: + try: + msg = u.recv().decode('utf8').strip() + if "DEBUG" in os.environ: + print(repr(msg)) + + if len(msg) > 0: + if checksum(msg) != msg.split('*')[1]: + cloudlog.error(f"invalid checksum: {repr(msg)}") + continue + + k = msg.split(',')[0] + state[k] = msg.split(',') + if '$GNRMC' not in msg: + continue + + pm.send('gpsLocation', build_msg(state)) + except Exception: + traceback.print_exc() + cloudlog.exception("gps.issue") + + +if __name__ == "__main__": + main() diff --git a/system/hardware/tici/casync.py b/system/updated/casync/casync.py similarity index 81% rename from system/hardware/tici/casync.py rename to system/updated/casync/casync.py index 986228c1cd..7a3303a9e9 100755 --- a/system/hardware/tici/casync.py +++ b/system/updated/casync/casync.py @@ -2,15 +2,19 @@ import io import lzma import os +import pathlib import struct import sys import time from abc import ABC, abstractmethod from collections import defaultdict, namedtuple from collections.abc import Callable +from typing import IO import requests from Crypto.Hash import SHA512 +from openpilot.system.updated.casync import tar +from openpilot.system.updated.casync.common import create_casync_tar_package CA_FORMAT_INDEX = 0x96824d9c7b129ff9 CA_FORMAT_TABLE = 0xe75b9e112f17417d @@ -37,20 +41,25 @@ class ChunkReader(ABC): ... -class FileChunkReader(ChunkReader): +class BinaryChunkReader(ChunkReader): """Reads chunks from a local file""" - def __init__(self, fn: str) -> None: + def __init__(self, file_like: IO[bytes]) -> None: super().__init__() - self.f = open(fn, 'rb') - - def __del__(self): - self.f.close() + self.f = file_like def read(self, chunk: Chunk) -> bytes: self.f.seek(chunk.offset) return self.f.read(chunk.length) +class FileChunkReader(BinaryChunkReader): + def __init__(self, path: str) -> None: + super().__init__(open(path, 'rb')) + + def __del__(self): + self.f.close() + + class RemoteChunkReader(ChunkReader): """Reads lzma compressed chunks from a remote store""" @@ -83,6 +92,20 @@ class RemoteChunkReader(ChunkReader): return decompressor.decompress(contents) +class DirectoryTarChunkReader(BinaryChunkReader): + """creates a tar archive of a directory and reads chunks from it""" + + def __init__(self, path: str, cache_file: str) -> None: + create_casync_tar_package(pathlib.Path(path), pathlib.Path(cache_file)) + + self.f = open(cache_file, "rb") + return super().__init__(self.f) + + def __del__(self): + self.f.close() + os.unlink(self.f.name) + + def parse_caibx(caibx_path: str) -> list[Chunk]: """Parses the chunks from a caibx file. Can handle both local and remote files. Returns a list of chunks with hash, offset and length""" @@ -181,6 +204,21 @@ def extract(target: list[Chunk], return stats +def extract_directory(target: list[Chunk], + sources: list[tuple[str, ChunkReader, ChunkDict]], + out_path: str, + tmp_file: str, + progress: Callable[[int], None] = None): + """extract a directory stored as a casync tar archive""" + + stats = extract(target, sources, tmp_file, progress) + + with open(tmp_file, "rb") as f: + tar.extract_tar_archive(f, pathlib.Path(out_path)) + + return stats + + def print_stats(stats: dict[str, int]): total_bytes = sum(stats.values()) print(f"Total size: {total_bytes / 1024 / 1024:.2f} MB") diff --git a/system/updated/casync/common.py b/system/updated/casync/common.py new file mode 100644 index 0000000000..6979f5cb06 --- /dev/null +++ b/system/updated/casync/common.py @@ -0,0 +1,61 @@ +import dataclasses +import json +import pathlib +import subprocess + +from openpilot.system.version import BUILD_METADATA_FILENAME, BuildMetadata +from openpilot.system.updated.casync import tar + + +CASYNC_ARGS = ["--with=symlinks", "--with=permissions", "--compression=xz", "--chunk-size=16M"] +CASYNC_FILES = [BUILD_METADATA_FILENAME] + + +def run(cmd): + return subprocess.check_output(cmd) + + +def get_exclude_set(path) -> set[str]: + exclude_set = set(CASYNC_FILES) + + for file in path.rglob("*"): + if file.is_file() or file.is_symlink(): + + while file.resolve() != path.resolve(): + exclude_set.add(str(file.relative_to(path))) + + file = file.parent + + return exclude_set + + +def create_build_metadata_file(path: pathlib.Path, build_metadata: BuildMetadata): + with open(path / BUILD_METADATA_FILENAME, "w") as f: + build_metadata_dict = dataclasses.asdict(build_metadata) + build_metadata_dict["openpilot"].pop("is_dirty") # this is determined at runtime + build_metadata_dict.pop("channel") # channel is unrelated to the build itself + f.write(json.dumps(build_metadata_dict)) + + +def is_not_git(path: pathlib.Path) -> bool: + return ".git" not in path.parts + + +def create_casync_tar_package(target_dir: pathlib.Path, output_path: pathlib.Path): + tar.create_tar_archive(output_path, target_dir, is_not_git) + + +def create_casync_from_file(file: pathlib.Path, output_dir: pathlib.Path, caibx_name: str): + caibx_file = output_dir / f"{caibx_name}.caibx" + run(["casync", "make", *CASYNC_ARGS, caibx_file, str(file)]) + + return caibx_file + + +def create_casync_release(target_dir: pathlib.Path, output_dir: pathlib.Path, caibx_name: str): + tar_file = output_dir / f"{caibx_name}.tar" + create_casync_tar_package(target_dir, tar_file) + caibx_file = create_casync_from_file(tar_file, output_dir, caibx_name) + tar_file.unlink() + digest = run(["casync", "digest", *CASYNC_ARGS, target_dir]).decode("utf-8").strip() + return digest, caibx_file diff --git a/system/updated/casync/tar.py b/system/updated/casync/tar.py new file mode 100644 index 0000000000..5c547e73a2 --- /dev/null +++ b/system/updated/casync/tar.py @@ -0,0 +1,38 @@ +import pathlib +import tarfile +from typing import IO, Callable + + +def include_default(_) -> bool: + return True + + +def create_tar_archive(filename: pathlib.Path, directory: pathlib.Path, include: Callable[[pathlib.Path], bool] = include_default): + """Creates a tar archive of a directory""" + + with tarfile.open(filename, 'w') as tar: + for file in sorted(directory.rglob("*"), key=lambda f: f.stat().st_size if f.is_file() else 0, reverse=True): + if not include(file): + continue + relative_path = str(file.relative_to(directory)) + if file.is_symlink(): + info = tarfile.TarInfo(relative_path) + info.type = tarfile.SYMTYPE + info.linkpath = str(file.readlink()) + tar.addfile(info) + + elif file.is_file(): + info = tarfile.TarInfo(relative_path) + info.size = file.stat().st_size + info.type = tarfile.REGTYPE + info.mode = file.stat().st_mode + with file.open('rb') as f: + tar.addfile(info, f) + + +def extract_tar_archive(fh: IO[bytes], directory: pathlib.Path): + """Extracts a tar archive to a directory""" + + tar = tarfile.open(fileobj=fh, mode='r') + tar.extractall(str(directory), filter=lambda info, path: info) + tar.close() diff --git a/system/hardware/tici/tests/test_casync.py b/system/updated/casync/tests/test_casync.py similarity index 56% rename from system/hardware/tici/tests/test_casync.py rename to system/updated/casync/tests/test_casync.py index 94b32a9f76..34427d5625 100755 --- a/system/hardware/tici/tests/test_casync.py +++ b/system/updated/casync/tests/test_casync.py @@ -1,10 +1,12 @@ #!/usr/bin/env python3 import os +import pathlib import unittest import tempfile import subprocess -import openpilot.system.hardware.tici.casync as casync +from openpilot.system.updated.casync import casync +from openpilot.system.updated.casync import tar # dd if=/dev/zero of=/tmp/img.raw bs=1M count=2 # sudo losetup -f /tmp/img.raw @@ -149,5 +151,117 @@ class TestCasync(unittest.TestCase): self.assertLess(stats['remote'], len(self.contents)) +class TestCasyncDirectory(unittest.TestCase): + """Tests extracting a directory stored as a casync tar archive""" + + NUM_FILES = 16 + + @classmethod + def setup_cache(cls, directory, files=None): + if files is None: + files = range(cls.NUM_FILES) + + chunk_a = [i % 256 for i in range(1024)] * 512 + chunk_b = [(256 - i) % 256 for i in range(1024)] * 512 + zeroes = [0] * (1024 * 128) + cls.contents = chunk_a + chunk_b + zeroes + chunk_a + cls.contents = bytes(cls.contents) + + for i in files: + with open(os.path.join(directory, f"file_{i}.txt"), "wb") as f: + f.write(cls.contents) + + os.symlink(f"file_{i}.txt", os.path.join(directory, f"link_{i}.txt")) + + @classmethod + def setUpClass(cls): + cls.tmpdir = tempfile.TemporaryDirectory() + + # Create casync files + cls.manifest_fn = os.path.join(cls.tmpdir.name, 'orig.caibx') + cls.store_fn = os.path.join(cls.tmpdir.name, 'store') + + cls.directory_to_extract = tempfile.TemporaryDirectory() + cls.setup_cache(cls.directory_to_extract.name) + + cls.orig_fn = os.path.join(cls.tmpdir.name, 'orig.tar') + tar.create_tar_archive(cls.orig_fn, pathlib.Path(cls.directory_to_extract.name)) + + subprocess.check_output(["casync", "make", "--compression=xz", "--store", cls.store_fn, cls.manifest_fn, cls.orig_fn]) + + @classmethod + def tearDownClass(cls): + cls.tmpdir.cleanup() + cls.directory_to_extract.cleanup() + + def setUp(self): + self.cache_dir = tempfile.TemporaryDirectory() + self.working_dir = tempfile.TemporaryDirectory() + self.out_dir = tempfile.TemporaryDirectory() + + def tearDown(self): + self.cache_dir.cleanup() + self.working_dir.cleanup() + self.out_dir.cleanup() + + def run_test(self): + target = casync.parse_caibx(self.manifest_fn) + + cache_filename = os.path.join(self.working_dir.name, "cache.tar") + tmp_filename = os.path.join(self.working_dir.name, "tmp.tar") + + sources = [('cache', casync.DirectoryTarChunkReader(self.cache_dir.name, cache_filename), casync.build_chunk_dict(target))] + sources += [('remote', casync.RemoteChunkReader(self.store_fn), casync.build_chunk_dict(target))] + + stats = casync.extract_directory(target, sources, pathlib.Path(self.out_dir.name), tmp_filename) + + with open(os.path.join(self.out_dir.name, "file_0.txt"), "rb") as f: + self.assertEqual(f.read(), self.contents) + + with open(os.path.join(self.out_dir.name, "link_0.txt"), "rb") as f: + self.assertEqual(f.read(), self.contents) + self.assertEqual(os.readlink(os.path.join(self.out_dir.name, "link_0.txt")), "file_0.txt") + + return stats + + def test_no_cache(self): + self.setup_cache(self.cache_dir.name, []) + stats = self.run_test() + self.assertGreater(stats['remote'], 0) + self.assertEqual(stats['cache'], 0) + + def test_full_cache(self): + self.setup_cache(self.cache_dir.name, range(self.NUM_FILES)) + stats = self.run_test() + self.assertEqual(stats['remote'], 0) + self.assertGreater(stats['cache'], 0) + + def test_one_file_cache(self): + self.setup_cache(self.cache_dir.name, range(1)) + stats = self.run_test() + self.assertGreater(stats['remote'], 0) + self.assertGreater(stats['cache'], 0) + self.assertLess(stats['cache'], stats['remote']) + + def test_one_file_incorrect_cache(self): + self.setup_cache(self.cache_dir.name, range(self.NUM_FILES)) + with open(os.path.join(self.cache_dir.name, "file_0.txt"), "wb") as f: + f.write(b"1234") + + stats = self.run_test() + self.assertGreater(stats['remote'], 0) + self.assertGreater(stats['cache'], 0) + self.assertGreater(stats['cache'], stats['remote']) + + def test_one_file_missing_cache(self): + self.setup_cache(self.cache_dir.name, range(self.NUM_FILES)) + os.unlink(os.path.join(self.cache_dir.name, "file_12.txt")) + + stats = self.run_test() + self.assertGreater(stats['remote'], 0) + self.assertGreater(stats['cache'], 0) + self.assertGreater(stats['cache'], stats['remote']) + + if __name__ == "__main__": unittest.main() diff --git a/system/updated/common.py b/system/updated/common.py new file mode 100644 index 0000000000..6bb745f6b0 --- /dev/null +++ b/system/updated/common.py @@ -0,0 +1,16 @@ +import os +import pathlib + + +def get_consistent_flag(path: str) -> bool: + consistent_file = pathlib.Path(os.path.join(path, ".overlay_consistent")) + return consistent_file.is_file() + +def set_consistent_flag(path: str, consistent: bool) -> None: + os.sync() + consistent_file = pathlib.Path(os.path.join(path, ".overlay_consistent")) + if consistent: + consistent_file.touch() + elif not consistent: + consistent_file.unlink(missing_ok=True) + os.sync() diff --git a/system/version.py b/system/version.py index 7051c09663..8b9b66465f 100755 --- a/system/version.py +++ b/system/version.py @@ -1,111 +1,44 @@ #!/usr/bin/env python3 +from dataclasses import dataclass +import json import os +import pathlib import subprocess -from typing import TypeVar -from collections.abc import Callable -from functools import lru_cache + from openpilot.common.basedir import BASEDIR from openpilot.common.swaglog import cloudlog +from openpilot.common.utils import cache +from openpilot.common.git import get_commit, get_origin, get_branch, get_short_branch, get_commit_date RELEASE_BRANCHES = ['release3-staging', 'release3', 'nightly'] RELEASE_SP_BRANCHES = ['release-c3'] TESTED_BRANCHES = RELEASE_BRANCHES + RELEASE_SP_BRANCHES + ['devel', 'devel-staging', 'staging-c3'] +BUILD_METADATA_FILENAME = "build.json" + training_version: bytes = b"0.2.0" terms_version: bytes = b"2" -_RT = TypeVar("_RT") -def cache(user_function: Callable[..., _RT], /) -> Callable[..., _RT]: - return lru_cache(maxsize=None)(user_function) - -def run_cmd(cmd: list[str]) -> str: - return subprocess.check_output(cmd, encoding='utf8').strip() - - -def run_cmd_default(cmd: list[str], default: str = "") -> str: - try: - return run_cmd(cmd) - except subprocess.CalledProcessError: - return default - - -@cache -def get_commit(branch: str = "HEAD") -> str: - return run_cmd_default(["git", "rev-parse", branch]) - - -@cache -def get_commit_date(commit: str = "HEAD") -> str: - return run_cmd_default(["git", "show", "--no-patch", "--format='%ct %ci'", commit]) - - -@cache -def get_short_branch() -> str: - return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "HEAD"]) - - -@cache -def get_branch() -> str: - return run_cmd_default(["git", "rev-parse", "--abbrev-ref", "--symbolic-full-name", "@{u}"]) - - -@cache -def get_origin() -> str: - try: - local_branch = run_cmd(["git", "name-rev", "--name-only", "HEAD"]) - tracking_remote = run_cmd(["git", "config", "branch." + local_branch + ".remote"]) - return run_cmd(["git", "config", "remote." + tracking_remote + ".url"]) - except subprocess.CalledProcessError: # Not on a branch, fallback - return run_cmd_default(["git", "config", "--get", "remote.origin.url"]) - - -@cache -def get_normalized_origin() -> str: - return get_origin() \ - .replace("git@", "", 1) \ - .replace(".git", "", 1) \ - .replace("https://", "", 1) \ - .replace(":", "/", 1) - - -@cache -def get_version() -> str: - with open(os.path.join(BASEDIR, "common", "version.h")) as _versionf: +def get_version(path: str = BASEDIR) -> str: + with open(os.path.join(path, "common", "version.h")) as _versionf: version = _versionf.read().split('"')[1] return version -@cache -def get_short_version() -> str: - return get_version().split('-')[0] -@cache -def is_prebuilt() -> bool: - return os.path.exists(os.path.join(BASEDIR, 'prebuilt')) +def get_release_notes(path: str = BASEDIR) -> str: + with open(os.path.join(path, "RELEASES.md"), "r") as f: + return f.read().split('\n\n', 1)[0] @cache -def is_comma_remote() -> bool: - # note to fork maintainers, this is used for release metrics. please do not - # touch this to get rid of the orange startup alert. there's better ways to do that - return get_normalized_origin() in ("github.com/sunnypilot/sunnypilot", "github.com/sunnyhaibin/sunnypilot", - "github.com/sunnypilot/openpilot", "github.com/sunnyhaibin/openpilot") +def is_prebuilt(path: str = BASEDIR) -> bool: + return os.path.exists(os.path.join(path, 'prebuilt')) + @cache -def is_tested_branch() -> bool: - return get_short_branch() in TESTED_BRANCHES - -@cache -def is_release_branch() -> bool: - return get_short_branch() in RELEASE_BRANCHES - -@cache -def is_release_sp_branch() -> bool: - return get_short_branch() in RELEASE_SP_BRANCHES - -@cache -def is_dirty() -> bool: +def is_dirty(cwd: str = BASEDIR) -> bool: origin = get_origin() branch = get_branch() if not origin or not branch: @@ -114,34 +47,132 @@ def is_dirty() -> bool: dirty = False try: # Actually check dirty files - if not is_prebuilt(): + if not is_prebuilt(cwd): # This is needed otherwise touched files might show up as modified try: - subprocess.check_call(["git", "update-index", "--refresh"]) + subprocess.check_call(["git", "update-index", "--refresh"], cwd=cwd) except subprocess.CalledProcessError: pass - dirty = (subprocess.call(["git", "diff-index", "--quiet", branch, "--"]) != 0) + dirty = (subprocess.call(["git", "diff-index", "--quiet", branch, "--"], cwd=cwd)) != 0 except subprocess.CalledProcessError: cloudlog.exception("git subprocess failed while checking dirty") dirty = True return dirty -@cache -def get_branch_type() -> str: - short_branch = get_short_branch() - if short_branch.startswith("dev-"): - return "development" - elif short_branch.startswith("staging-"): - return "staging" - elif short_branch.startswith("release-"): - return "release" - elif is_tested_branch(): - return "release" - else: - return "master" +@dataclass +class OpenpilotMetadata: + version: str + release_notes: str + git_commit: str + git_origin: str + git_commit_date: str + build_style: str + is_dirty: bool # whether there are local changes + + @property + def short_version(self) -> str: + return self.version.split('-')[0] + + @property + def comma_remote(self) -> bool: + # note to fork maintainers, this is used for release metrics. please do not + # touch this to get rid of the orange startup alert. there's better ways to do that + return self.git_normalized_origin in ("github.com/sunnypilot/sunnypilot", "github.com/sunnyhaibin/sunnypilot", + "github.com/sunnypilot/openpilot", "github.com/sunnyhaibin/openpilot") + + @property + def git_normalized_origin(self) -> str: + return self.git_origin \ + .replace("git@", "", 1) \ + .replace(".git", "", 1) \ + .replace("https://", "", 1) \ + .replace(":", "/", 1) + + +@dataclass +class BuildMetadata: + channel: str + openpilot: OpenpilotMetadata + + @property + def tested_channel(self) -> bool: + return self.channel in TESTED_BRANCHES + + @property + def release_channel(self) -> bool: + return self.channel in RELEASE_BRANCHES + + @property + def release_sp_channel(self) -> bool: + return self.channel in RELEASE_SP_BRANCHES + + @property + def canonical(self) -> str: + return f"{self.openpilot.version}-{self.openpilot.git_commit}-{self.openpilot.build_style}" + + @property + def ui_description(self) -> str: + return f"{self.openpilot.version} / {self.openpilot.git_commit[:6]} / {self.channel}" + + @property + def channel_type(self) -> str: + if self.channel.startswith("dev-"): + return "development" + elif self.channel.startswith("staging-"): + return "staging" + elif self.channel.startswith("release-"): + return "release" + elif self.tested_channel: + return "release" + else: + return "master" + + +def build_metadata_from_dict(build_metadata: dict) -> BuildMetadata: + channel = build_metadata.get("channel", "unknown") + openpilot_metadata = build_metadata.get("openpilot", {}) + version = openpilot_metadata.get("version", "unknown") + release_notes = openpilot_metadata.get("release_notes", "unknown") + git_commit = openpilot_metadata.get("git_commit", "unknown") + git_origin = openpilot_metadata.get("git_origin", "unknown") + git_commit_date = openpilot_metadata.get("git_commit_date", "unknown") + build_style = openpilot_metadata.get("build_style", "unknown") + return BuildMetadata(channel, + OpenpilotMetadata( + version=version, + release_notes=release_notes, + git_commit=git_commit, + git_origin=git_origin, + git_commit_date=git_commit_date, + build_style=build_style, + is_dirty=False)) + + +def get_build_metadata(path: str = BASEDIR) -> BuildMetadata: + build_metadata_path = pathlib.Path(path) / BUILD_METADATA_FILENAME + + if build_metadata_path.exists(): + build_metadata = json.loads(build_metadata_path.read_text()) + return build_metadata_from_dict(build_metadata) + + git_folder = pathlib.Path(path) / ".git" + + if git_folder.exists(): + return BuildMetadata(get_short_branch(path), + OpenpilotMetadata( + version=get_version(path), + release_notes=get_release_notes(path), + git_commit=get_commit(path), + git_origin=get_origin(path), + git_commit_date=get_commit_date(path), + build_style="unknown", + is_dirty=is_dirty(path))) + + cloudlog.exception("unable to get build metadata") + raise Exception("invalid build metadata") if __name__ == "__main__": @@ -151,12 +182,4 @@ if __name__ == "__main__": params.put("TermsVersion", terms_version) params.put("TrainingVersion", training_version) - print(f"Dirty: {is_dirty()}") - print(f"Version: {get_version()}") - print(f"Short version: {get_short_version()}") - print(f"Origin: {get_origin()}") - print(f"Normalized origin: {get_normalized_origin()}") - print(f"Branch: {get_branch()}") - print(f"Short branch: {get_short_branch()}") - print(f"Prebuilt: {is_prebuilt()}") - print(f"Commit date: {get_commit_date()}") + print(get_build_metadata()) diff --git a/system/webrtc/tests/test_webrtcd.py b/system/webrtc/tests/test_webrtcd.py index c31b63d02b..e5742dba07 100755 --- a/system/webrtc/tests/test_webrtcd.py +++ b/system/webrtc/tests/test_webrtcd.py @@ -11,8 +11,15 @@ from openpilot.system.webrtc.webrtcd import get_stream import aiortc from teleoprtc import WebRTCOfferBuilder +from parameterized import parameterized_class +@parameterized_class(("in_services", "out_services"), [ + (["testJoystick"], ["carState"]), + ([], ["carState"]), + (["testJoystick"], []), + ([], []), +]) class TestWebrtcdProc(unittest.IsolatedAsyncioTestCase): async def assertCompletesWithTimeout(self, awaitable, timeout=1): try: @@ -24,7 +31,7 @@ class TestWebrtcdProc(unittest.IsolatedAsyncioTestCase): async def test_webrtcd(self): mock_request = MagicMock() async def connect(offer): - body = {'sdp': offer.sdp, 'cameras': offer.video, 'bridge_services_in': [], 'bridge_services_out': ['carState']} + body = {'sdp': offer.sdp, 'cameras': offer.video, 'bridge_services_in': self.in_services, 'bridge_services_out': self.out_services} mock_request.json.side_effect = AsyncMock(return_value=body) response = await get_stream(mock_request) response_json = json.loads(response.text) @@ -33,7 +40,8 @@ class TestWebrtcdProc(unittest.IsolatedAsyncioTestCase): builder = WebRTCOfferBuilder(connect) builder.offer_to_receive_video_stream("road") builder.offer_to_receive_audio_stream() - builder.add_messaging() + if len(self.in_services) > 0 or len(self.out_services) > 0: + builder.add_messaging() stream = builder.stream() @@ -42,7 +50,7 @@ class TestWebrtcdProc(unittest.IsolatedAsyncioTestCase): self.assertTrue(stream.has_incoming_video_track("road")) self.assertTrue(stream.has_incoming_audio_track()) - self.assertTrue(stream.has_messaging_channel()) + self.assertEqual(stream.has_messaging_channel(), len(self.in_services) > 0 or len(self.out_services) > 0) video_track, audio_track = stream.get_incoming_video_track("road"), stream.get_incoming_audio_track() await self.assertCompletesWithTimeout(video_track.recv()) diff --git a/system/webrtc/webrtcd.py b/system/webrtc/webrtcd.py index 6c1370eae9..51c86aacc6 100755 --- a/system/webrtc/webrtcd.py +++ b/system/webrtc/webrtcd.py @@ -102,7 +102,21 @@ class CerealProxyRunner: await asyncio.sleep(0.01) +class DynamicPubMaster(messaging.PubMaster): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.lock = asyncio.Lock() + + async def add_services_if_needed(self, services): + async with self.lock: + for service in services: + if service not in self.sock: + self.sock[service] = messaging.pub_sock(service) + + class StreamSession: + shared_pub_master = DynamicPubMaster([]) + def __init__(self, sdp: str, cameras: list[str], incoming_services: list[str], outgoing_services: list[str], debug_mode: bool = False): from aiortc.mediastreams import VideoStreamTrack, AudioStreamTrack from aiortc.contrib.media import MediaBlackhole @@ -128,9 +142,15 @@ class StreamSession: self.stream = builder.stream() self.identifier = str(uuid.uuid4()) - self.outgoing_bridge = CerealOutgoingMessageProxy(messaging.SubMaster(outgoing_services)) - self.incoming_bridge = CerealIncomingMessageProxy(messaging.PubMaster(incoming_services)) - self.outgoing_bridge_runner = CerealProxyRunner(self.outgoing_bridge) + self.incoming_bridge: CerealIncomingMessageProxy | None = None + self.incoming_bridge_services = incoming_services + self.outgoing_bridge: CerealOutgoingMessageProxy | None = None + self.outgoing_bridge_runner: CerealProxyRunner | None = None + if len(incoming_services) > 0: + self.incoming_bridge = CerealIncomingMessageProxy(self.shared_pub_master) + if len(outgoing_services) > 0: + self.outgoing_bridge = CerealOutgoingMessageProxy(messaging.SubMaster(outgoing_services)) + self.outgoing_bridge_runner = CerealProxyRunner(self.outgoing_bridge) self.audio_output: AudioOutputSpeaker | MediaBlackhole | None = None self.run_task: asyncio.Task | None = None @@ -152,6 +172,7 @@ class StreamSession: return await self.stream.start() async def message_handler(self, message: bytes): + assert self.incoming_bridge is not None try: self.incoming_bridge.send(message) except Exception as ex: @@ -161,10 +182,13 @@ class StreamSession: try: await self.stream.wait_for_connection() if self.stream.has_messaging_channel(): - self.stream.set_message_handler(self.message_handler) - channel = self.stream.get_messaging_channel() - self.outgoing_bridge_runner.proxy.add_channel(channel) - self.outgoing_bridge_runner.start() + if self.incoming_bridge is not None: + await self.shared_pub_master.add_services_if_needed(self.incoming_bridge_services) + self.stream.set_message_handler(self.message_handler) + if self.outgoing_bridge_runner is not None: + channel = self.stream.get_messaging_channel() + self.outgoing_bridge_runner.proxy.add_channel(channel) + self.outgoing_bridge_runner.start() if self.stream.has_incoming_audio_track(): track = self.stream.get_incoming_audio_track(buffered=False) self.audio_output = self.audio_output_cls() @@ -181,7 +205,8 @@ class StreamSession: async def post_run_cleanup(self): await self.stream.stop() - self.outgoing_bridge_runner.stop() + if self.outgoing_bridge is not None: + self.outgoing_bridge_runner.stop() if self.audio_output: self.audio_output.stop() diff --git a/teleoprtc_repo b/teleoprtc_repo index 3f9e8176d1..f2e5a6dd9e 160000 --- a/teleoprtc_repo +++ b/teleoprtc_repo @@ -1 +1 @@ -Subproject commit 3f9e8176d1be3d217528baee09fc418fa980a0c3 +Subproject commit f2e5a6dd9e13a184b2f0e95a6c8afd308ec2da89 diff --git a/third_party/libyuv/.gitignore b/third_party/libyuv/.gitignore new file mode 100644 index 0000000000..450712e47d --- /dev/null +++ b/third_party/libyuv/.gitignore @@ -0,0 +1 @@ +libyuv/ diff --git a/third_party/libyuv/build.sh b/third_party/libyuv/build.sh index e044312d05..b960f60ef5 100755 --- a/third_party/libyuv/build.sh +++ b/third_party/libyuv/build.sh @@ -1,12 +1,39 @@ #!/usr/bin/env bash set -e -git clone https://chromium.googlesource.com/libyuv/libyuv +DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" + +ARCHNAME=$(uname -m) +if [ -f /TICI ]; then + ARCHNAME="larch64" +fi + +if [[ "$OSTYPE" == "darwin"* ]]; then + ARCHNAME="Darwin" +fi + +cd $DIR +if [ ! -d libyuv ]; then + git clone --single-branch https://chromium.googlesource.com/libyuv/libyuv +fi + cd libyuv -git reset --hard 4a14cb2e81235ecd656e799aecaaf139db8ce4a2 +git checkout 4a14cb2e81235ecd656e799aecaaf139db8ce4a2 + +# build cmake . +make -j$(nproc) + +INSTALL_DIR="$DIR/$ARCHNAME" +rm -rf $INSTALL_DIR +mkdir -p $INSTALL_DIR + +rm -rf $DIR/include +mkdir -p $INSTALL_DIR/lib +cp $DIR/libyuv/libyuv.a $INSTALL_DIR/lib +cp -r $DIR/libyuv/include $DIR ## To create universal binary on Darwin: ## ``` ## lipo -create -output Darwin/libyuv.a path-to-x64/libyuv.a path-to-arm64/libyuv.a -## ``` \ No newline at end of file +## ``` diff --git a/third_party/maplibre-native-qt/build.sh b/third_party/maplibre-native-qt/build.sh index 5cbf22d3bb..216ff4b626 100755 --- a/third_party/maplibre-native-qt/build.sh +++ b/third_party/maplibre-native-qt/build.sh @@ -5,7 +5,7 @@ DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)" ARCHNAME=$(uname -m) MAPLIBRE_FLAGS="-DMLN_QT_WITH_LOCATION=OFF" -if [ -f /AGNOS ]; then +if [ -f /TICI ]; then ARCHNAME="larch64" #MAPLIBRE_FLAGS="$MAPLIBRE_FLAGS -DCMAKE_SYSTEM_NAME=Android -DANDROID_ABI=arm64-v8a" fi @@ -18,26 +18,24 @@ fi cd $DIR if [ ! -d maplibre ]; then - git clone git@github.com:maplibre/maplibre-native-qt.git $DIR/maplibre + git clone --single-branch https://github.com/maplibre/maplibre-native-qt.git $DIR/maplibre fi cd maplibre -git fetch --all git checkout 3726266e127c1f94ad64837c9dbe03d238255816 git submodule update --depth=1 --recursive --init # build mkdir -p build cd build -set -x cmake $MAPLIBRE_FLAGS $DIR/maplibre -make -j$(nproc) || make -j2 || make -j1 +make -j$(nproc) INSTALL_DIR="$DIR/$ARCHNAME" rm -rf $INSTALL_DIR mkdir -p $INSTALL_DIR -rm -rf $INSTALL_DIR/lib $DIR/include +rm -rf $DIR/include mkdir -p $INSTALL_DIR/lib $INSTALL_DIR/include $DIR/include cp -r $DIR/maplibre/build/src/core/include/* $INSTALL_DIR/include cp -r $DIR/maplibre/src/**/*.hpp $DIR/include diff --git a/tools/cabana/SConscript b/tools/cabana/SConscript index 6af4ca08f5..2574e3368b 100644 --- a/tools/cabana/SConscript +++ b/tools/cabana/SConscript @@ -26,7 +26,7 @@ cabana_env.Command(assets, assets_src, f"rcc $SOURCES -o $TARGET") cabana_env.Depends(assets, Glob('/assets/*', exclude=[assets, assets_src, "assets/assets.o"])) cabana_lib = cabana_env.Library("cabana_lib", ['mainwin.cc', 'streams/socketcanstream.cc', 'streams/pandastream.cc', 'streams/devicestream.cc', 'streams/livestream.cc', 'streams/abstractstream.cc', 'streams/replaystream.cc', 'binaryview.cc', 'historylog.cc', 'videowidget.cc', 'signalview.cc', - 'dbc/dbc.cc', 'dbc/dbcfile.cc', 'dbc/dbcmanager.cc', + 'streams/routes.cc', 'dbc/dbc.cc', 'dbc/dbcfile.cc', 'dbc/dbcmanager.cc', 'utils/export.cc', 'utils/util.cc', 'chart/chartswidget.cc', 'chart/chart.cc', 'chart/signalselector.cc', 'chart/tiplabel.cc', 'chart/sparkline.cc', 'commands.cc', 'messageswidget.cc', 'streamselector.cc', 'settings.cc', 'detailwidget.cc', 'tools/findsimilarbits.cc', 'tools/findsignal.cc'], LIBS=cabana_libs, FRAMEWORKS=base_frameworks) diff --git a/tools/cabana/cabana.cc b/tools/cabana/cabana.cc index 205d795776..bb29a7e3a4 100644 --- a/tools/cabana/cabana.cc +++ b/tools/cabana/cabana.cc @@ -3,7 +3,6 @@ #include "selfdrive/ui/qt/util.h" #include "tools/cabana/mainwin.h" -#include "tools/cabana/streamselector.h" #include "tools/cabana/streams/devicestream.h" #include "tools/cabana/streams/pandastream.h" #include "tools/cabana/streams/replaystream.h" @@ -82,28 +81,17 @@ int main(int argc, char *argv[]) { } } - int ret = 0; - { - MainWindow w; - QTimer::singleShot(0, [&]() { - if (!stream) { - StreamSelector dlg(&stream); - dlg.exec(); - dbc_file = dlg.dbcFile(); - } - if (!stream) { - stream = new DummyStream(&app); - } - stream->start(); - if (!dbc_file.isEmpty()) { - w.loadFile(dbc_file); - } - w.show(); - }); - - ret = app.exec(); + MainWindow w; + if (stream) { + stream->start(); + if (!dbc_file.isEmpty()) { + w.loadFile(dbc_file); + } + } else { + w.openStream(); } - + w.show(); + int ret = app.exec(); delete can; return ret; } diff --git a/tools/cabana/chart/chart.cc b/tools/cabana/chart/chart.cc index 6f08a9f20b..fcf171a858 100644 --- a/tools/cabana/chart/chart.cc +++ b/tools/cabana/chart/chart.cc @@ -22,6 +22,7 @@ // ChartAxisElement's padding is 4 (https://codebrowser.dev/qt5/qtcharts/src/charts/axis/chartaxiselement_p.h.html) const int AXIS_X_TOP_MARGIN = 4; +const double MIN_ZOOM_SECONDS = 0.01; // 10ms // Define a small value of epsilon to compare double values const float EPSILON = 0.000001; static inline bool xLessThan(const QPointF &p, float x) { return p.x() < (x - EPSILON); } @@ -111,6 +112,8 @@ void ChartView::setTheme(QChart::ChartTheme theme) { axis_y->setLabelsBrush(palette().text()); chart()->legend()->setLabelColor(palette().color(QPalette::Text)); } + axis_x->setLineVisible(false); + axis_y->setLineVisible(false); for (auto &s : sigs) { s.series->setColor(s.sig->color); } @@ -509,7 +512,7 @@ void ChartView::mouseReleaseEvent(QMouseEvent *event) { if (rubber->width() <= 0) { // no rubber dragged, seek to mouse position can->seekTo(min); - } else if (rubber->width() > 10 && (max - min) > 0.01) { // Minimum range is 10 milliseconds. + } else if (rubber->width() > 10 && (max - min) > MIN_ZOOM_SECONDS) { charts_widget->zoom_undo_stack->push(new ZoomCommand(charts_widget, {min, max})); } else { viewport()->update(); @@ -579,7 +582,7 @@ void ChartView::showTip(double sec) { // use reverse iterator to find last item <= sec. auto it = std::lower_bound(s.vals.crbegin(), s.vals.crend(), sec, [](auto &p, double x) { return p.x() > x; }); if (it != s.vals.crend() && it->x() >= axis_x->min()) { - value = QString::number(it->y()); + value = s.sig->formatValue(it->y(), false); s.track_pt = *it; x = std::max(x, chart()->mapToPosition(*it).x()); } @@ -745,8 +748,8 @@ void ChartView::drawTimeline(QPainter *painter) { const auto plot_area = chart()->plotArea(); // draw vertical time line qreal x = std::clamp(chart()->mapToPosition(QPointF{cur_sec, 0}).x(), plot_area.left(), plot_area.right()); - painter->setPen(QPen(chart()->titleBrush().color(), 2)); - painter->drawLine(QPointF{x, plot_area.top()}, QPointF{x, plot_area.bottom() + 1}); + painter->setPen(QPen(chart()->titleBrush().color(), 1)); + painter->drawLine(QPointF{x, plot_area.top() - 1}, QPointF{x, plot_area.bottom() + 1}); // draw current time under the axis-x QString time_str = QString::number(cur_sec, 'f', 2); diff --git a/tools/cabana/chart/chartswidget.cc b/tools/cabana/chart/chartswidget.cc index 63d6091cac..a7bdd74646 100644 --- a/tools/cabana/chart/chartswidget.cc +++ b/tools/cabana/chart/chartswidget.cc @@ -197,7 +197,8 @@ void ChartsWidget::updateState() { display_range.second = display_range.first + max_chart_range; } else if (cur_sec < (zoomed_range.first - 0.1) || cur_sec >= zoomed_range.second) { // loop in zoomed range - can->seekTo(zoomed_range.first); + QTimer::singleShot(0, [ts = zoomed_range.first]() { can->seekTo(ts);}); + return; } const auto &range = is_zoomed ? zoomed_range : display_range; diff --git a/tools/cabana/dbc/dbc.cc b/tools/cabana/dbc/dbc.cc index b1256098eb..149bb9f59a 100644 --- a/tools/cabana/dbc/dbc.cc +++ b/tools/cabana/dbc/dbc.cc @@ -142,7 +142,7 @@ void cabana::Signal::update() { precision = std::max(num_decimals(factor), num_decimals(offset)); } -QString cabana::Signal::formatValue(double value) const { +QString cabana::Signal::formatValue(double value, bool with_unit) const { // Show enum string int64_t raw_value = round((value - offset) / factor); for (const auto &[val, desc] : val_desc) { @@ -152,7 +152,7 @@ QString cabana::Signal::formatValue(double value) const { } QString val_str = QString::number(value, 'f', precision); - if (!unit.isEmpty()) { + if (with_unit && !unit.isEmpty()) { val_str += " " + unit; } return val_str; diff --git a/tools/cabana/dbc/dbc.h b/tools/cabana/dbc/dbc.h index 0262a546f6..da44319b5c 100644 --- a/tools/cabana/dbc/dbc.h +++ b/tools/cabana/dbc/dbc.h @@ -29,11 +29,11 @@ struct MessageId { } bool operator<(const MessageId &other) const { - return std::pair{source, address} < std::pair{other.source, other.address}; + return std::tie(source, address) < std::tie(other.source, other.address); } bool operator>(const MessageId &other) const { - return std::pair{source, address} > std::pair{other.source, other.address}; + return std::tie(source, address) > std::tie(other.source, other.address); } }; @@ -55,7 +55,7 @@ public: Signal(const Signal &other) = default; void update(); bool getValue(const uint8_t *data, size_t data_size, double *val) const; - QString formatValue(double value) const; + QString formatValue(double value, bool with_unit = true) const; bool operator==(const cabana::Signal &other) const; inline bool operator!=(const cabana::Signal &other) const { return !(*this == other); } diff --git a/tools/cabana/dbc/dbcfile.cc b/tools/cabana/dbc/dbcfile.cc index fbbb54fd58..4a1c52819a 100644 --- a/tools/cabana/dbc/dbcfile.cc +++ b/tools/cabana/dbc/dbcfile.cc @@ -3,7 +3,6 @@ #include #include #include -#include DBCFile::DBCFile(const QString &dbc_file_name) { QFile file(dbc_file_name); @@ -76,112 +75,50 @@ cabana::Msg *DBCFile::msg(const QString &name) { return it != msgs.end() ? &(it->second) : nullptr; } +cabana::Signal *DBCFile::signal(uint32_t address, const QString name) { + auto m = msg(address); + return m ? (cabana::Signal *)m->sig(name) : nullptr; +} + void DBCFile::parse(const QString &content) { - static QRegularExpression bo_regexp(R"(^BO_ (\w+) (\w+) *: (\w+) (\w+))"); - static QRegularExpression sg_regexp(R"(^SG_ (\w+) : (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); - static QRegularExpression sgm_regexp(R"(^SG_ (\w+) (\w+) *: (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); - static QRegularExpression msg_comment_regexp(R"(^CM_ BO_ *(\w+) *\"([^"]*)\"\s*;)"); - static QRegularExpression sg_comment_regexp(R"(^CM_ SG_ *(\w+) *(\w+) *\"([^"]*)\"\s*;)"); - static QRegularExpression val_regexp(R"(VAL_ (\w+) (\w+) (\s*[-+]?[0-9]+\s+\".+?\"[^;]*))"); + msgs.clear(); int line_num = 0; QString line; - auto dbc_assert = [&line_num, &line, this](bool condition, const QString &msg = "") { - if (!condition) throw std::runtime_error(QString("[%1:%2]%3: %4").arg(filename).arg(line_num).arg(msg).arg(line).toStdString()); - }; - auto get_sig = [this](uint32_t address, const QString &name) -> cabana::Signal * { - auto m = (cabana::Msg *)msg(address); - return m ? (cabana::Signal *)m->sig(name) : nullptr; - }; - - msgs.clear(); - QTextStream stream((QString *)&content); cabana::Msg *current_msg = nullptr; int multiplexor_cnt = 0; + bool seen_first = false; + QTextStream stream((QString *)&content); + while (!stream.atEnd()) { ++line_num; QString raw_line = stream.readLine(); line = raw_line.trimmed(); - if (line.startsWith("BO_ ")) { - multiplexor_cnt = 0; - auto match = bo_regexp.match(line); - dbc_assert(match.hasMatch()); - auto address = match.captured(1).toUInt(); - dbc_assert(msgs.count(address) == 0, QString("Duplicate message address: %1").arg(address)); - current_msg = &msgs[address]; - current_msg->address = address; - current_msg->name = match.captured(2); - current_msg->size = match.captured(3).toULong(); - current_msg->transmitter = match.captured(4).trimmed(); - } else if (line.startsWith("SG_ ")) { - int offset = 0; - auto match = sg_regexp.match(line); - if (!match.hasMatch()) { - match = sgm_regexp.match(line); - offset = 1; - } - dbc_assert(match.hasMatch()); - dbc_assert(current_msg, "No Message"); - auto name = match.captured(1); - dbc_assert(current_msg->sig(name) == nullptr, "Duplicate signal name"); - cabana::Signal s{}; - if (offset == 1) { - auto indicator = match.captured(2); - if (indicator == "M") { - // Only one signal within a single message can be the multiplexer switch. - dbc_assert(++multiplexor_cnt < 2, "Multiple multiplexor"); - s.type = cabana::Signal::Type::Multiplexor; - } else { - s.type = cabana::Signal::Type::Multiplexed; - s.multiplex_value = indicator.mid(1).toInt(); - } - } - s.name = name; - s.start_bit = match.captured(offset + 2).toInt(); - s.size = match.captured(offset + 3).toInt(); - s.is_little_endian = match.captured(offset + 4).toInt() == 1; - s.is_signed = match.captured(offset + 5) == "-"; - s.factor = match.captured(offset + 6).toDouble(); - s.offset = match.captured(offset + 7).toDouble(); - s.min = match.captured(8 + offset).toDouble(); - s.max = match.captured(9 + offset).toDouble(); - s.unit = match.captured(10 + offset); - s.receiver_name = match.captured(11 + offset).trimmed(); - current_msg->sigs.push_back(new cabana::Signal(s)); - } else if (line.startsWith("VAL_ ")) { - auto match = val_regexp.match(line); - dbc_assert(match.hasMatch()); - if (auto s = get_sig(match.captured(1).toUInt(), match.captured(2))) { - QStringList desc_list = match.captured(3).trimmed().split('"'); - for (int i = 0; i < desc_list.size(); i += 2) { - auto val = desc_list[i].trimmed(); - if (!val.isEmpty() && (i + 1) < desc_list.size()) { - auto desc = desc_list[i + 1].trimmed(); - s->val_desc.push_back({val.toDouble(), desc}); - } - } - } - } else if (line.startsWith("CM_ BO_")) { - if (!line.endsWith("\";")) { - int pos = stream.pos() - raw_line.length() - 1; - line = content.mid(pos, content.indexOf("\";", pos)); - } - auto match = msg_comment_regexp.match(line); - dbc_assert(match.hasMatch()); - if (auto m = (cabana::Msg *)msg(match.captured(1).toUInt())) { - m->comment = match.captured(2).trimmed(); - } - } else if (line.startsWith("CM_ SG_ ")) { - if (!line.endsWith("\";")) { - int pos = stream.pos() - raw_line.length() - 1; - line = content.mid(pos, content.indexOf("\";", pos)); - } - auto match = sg_comment_regexp.match(line); - dbc_assert(match.hasMatch()); - if (auto s = get_sig(match.captured(1).toUInt(), match.captured(2))) { - s->comment = match.captured(3).trimmed(); + bool seen = true; + try { + if (line.startsWith("BO_ ")) { + multiplexor_cnt = 0; + current_msg = parseBO(line); + } else if (line.startsWith("SG_ ")) { + parseSG(line, current_msg, multiplexor_cnt); + } else if (line.startsWith("VAL_ ")) { + parseVAL(line); + } else if (line.startsWith("CM_ BO_")) { + parseCM_BO(line, content, raw_line, stream); + } else if (line.startsWith("CM_ SG_ ")) { + parseCM_SG(line, content, raw_line, stream); + } else { + seen = false; } + } catch (std::exception &e) { + throw std::runtime_error(QString("[%1:%2]%3: %4").arg(filename).arg(line_num).arg(e.what()).arg(line).toStdString()); + } + + if (seen) { + seen_first = true; + } else if (!seen_first) { + header += raw_line + "\n"; } } @@ -190,13 +127,134 @@ void DBCFile::parse(const QString &content) { } } +cabana::Msg *DBCFile::parseBO(const QString &line) { + static QRegularExpression bo_regexp(R"(^BO_ (?
\w+) (?\w+) *: (?\w+) (?\w+))"); + + QRegularExpressionMatch match = bo_regexp.match(line); + if (!match.hasMatch()) + throw std::runtime_error("Invalid BO_ line format"); + + uint32_t address = match.captured("address").toUInt(); + if (msgs.count(address) > 0) + throw std::runtime_error(QString("Duplicate message address: %1").arg(address).toStdString()); + + // Create a new message object + cabana::Msg *msg = &msgs[address]; + msg->address = address; + msg->name = match.captured("name"); + msg->size = match.captured("size").toULong(); + msg->transmitter = match.captured("transmitter").trimmed(); + return msg; +} + +void DBCFile::parseCM_BO(const QString &line, const QString &content, const QString &raw_line, const QTextStream &stream) { + static QRegularExpression msg_comment_regexp(R"(^CM_ BO_ *(?
\w+) *\"(?(?:[^"\\]|\\.)*)\"\s*;)"); + + QString parse_line = line; + if (!parse_line.endsWith("\";")) { + int pos = stream.pos() - raw_line.length() - 1; + parse_line = content.mid(pos, content.indexOf("\";", pos)); + } + auto match = msg_comment_regexp.match(parse_line); + if (!match.hasMatch()) + throw std::runtime_error("Invalid message comment format"); + + if (auto m = (cabana::Msg *)msg(match.captured("address").toUInt())) + m->comment = match.captured("comment").trimmed().replace("\\\"", "\""); +} + +void DBCFile::parseSG(const QString &line, cabana::Msg *current_msg, int &multiplexor_cnt) { + static QRegularExpression sg_regexp(R"(^SG_ (\w+) : (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); + static QRegularExpression sgm_regexp(R"(^SG_ (\w+) (\w+) *: (\d+)\|(\d+)@(\d+)([\+|\-]) \(([0-9.+\-eE]+),([0-9.+\-eE]+)\) \[([0-9.+\-eE]+)\|([0-9.+\-eE]+)\] \"(.*)\" (.*))"); + + if (!current_msg) + throw std::runtime_error("No Message"); + + int offset = 0; + auto match = sg_regexp.match(line); + if (!match.hasMatch()) { + match = sgm_regexp.match(line); + offset = 1; + } + if (!match.hasMatch()) + throw std::runtime_error("Invalid SG_ line format"); + + QString name = match.captured(1); + if (current_msg->sig(name) != nullptr) + throw std::runtime_error("Duplicate signal name"); + + cabana::Signal s{}; + if (offset == 1) { + auto indicator = match.captured(2); + if (indicator == "M") { + ++multiplexor_cnt; + // Only one signal within a single message can be the multiplexer switch. + if (multiplexor_cnt >= 2) + throw std::runtime_error("Multiple multiplexor"); + + s.type = cabana::Signal::Type::Multiplexor; + } else { + s.type = cabana::Signal::Type::Multiplexed; + s.multiplex_value = indicator.mid(1).toInt(); + } + } + s.name = name; + s.start_bit = match.captured(offset + 2).toInt(); + s.size = match.captured(offset + 3).toInt(); + s.is_little_endian = match.captured(offset + 4).toInt() == 1; + s.is_signed = match.captured(offset + 5) == "-"; + s.factor = match.captured(offset + 6).toDouble(); + s.offset = match.captured(offset + 7).toDouble(); + s.min = match.captured(8 + offset).toDouble(); + s.max = match.captured(9 + offset).toDouble(); + s.unit = match.captured(10 + offset); + s.receiver_name = match.captured(11 + offset).trimmed(); + current_msg->sigs.push_back(new cabana::Signal(s)); +} + +void DBCFile::parseCM_SG(const QString &line, const QString &content, const QString &raw_line, const QTextStream &stream) { + static QRegularExpression sg_comment_regexp(R"(^CM_ SG_ *(\w+) *(\w+) *\"((?:[^"\\]|\\.)*)\"\s*;)"); + + QString parse_line = line; + if (!parse_line.endsWith("\";")) { + int pos = stream.pos() - raw_line.length() - 1; + parse_line = content.mid(pos, content.indexOf("\";", pos)); + } + auto match = sg_comment_regexp.match(parse_line); + if (!match.hasMatch()) + throw std::runtime_error("Invalid CM_ SG_ line format"); + + if (auto s = signal(match.captured(1).toUInt(), match.captured(2))) { + s->comment = match.captured(3).trimmed().replace("\\\"", "\""); + } +} + +void DBCFile::parseVAL(const QString &line) { + static QRegularExpression val_regexp(R"(VAL_ (\w+) (\w+) (\s*[-+]?[0-9]+\s+\".+?\"[^;]*))"); + + auto match = val_regexp.match(line); + if (!match.hasMatch()) + throw std::runtime_error("invalid VAL_ line format"); + + if (auto s = signal(match.captured(1).toUInt(), match.captured(2))) { + QStringList desc_list = match.captured(3).trimmed().split('"'); + for (int i = 0; i < desc_list.size(); i += 2) { + auto val = desc_list[i].trimmed(); + if (!val.isEmpty() && (i + 1) < desc_list.size()) { + auto desc = desc_list[i + 1].trimmed(); + s->val_desc.push_back({val.toDouble(), desc}); + } + } + } +} + QString DBCFile::generateDBC() { - QString dbc_string, signal_comment, message_comment, val_desc; + QString dbc_string, comment, val_desc; for (const auto &[address, m] : msgs) { const QString transmitter = m.transmitter.isEmpty() ? DEFAULT_NODE_NAME : m.transmitter; dbc_string += QString("BO_ %1 %2: %3 %4\n").arg(address).arg(m.name).arg(m.size).arg(transmitter); if (!m.comment.isEmpty()) { - message_comment += QString("CM_ BO_ %1 \"%2\";\n").arg(address).arg(m.comment); + comment += QString("CM_ BO_ %1 \"%2\";\n").arg(address).arg(QString(m.comment).replace("\"", "\\\"")); } for (auto sig : m.getSignals()) { QString multiplexer_indicator; @@ -219,7 +277,7 @@ QString DBCFile::generateDBC() { .arg(sig->unit) .arg(sig->receiver_name.isEmpty() ? DEFAULT_NODE_NAME : sig->receiver_name); if (!sig->comment.isEmpty()) { - signal_comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(sig->comment); + comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(QString(sig->comment).replace("\"", "\\\"")); } if (!sig->val_desc.empty()) { QStringList text; @@ -231,5 +289,5 @@ QString DBCFile::generateDBC() { } dbc_string += "\n"; } - return dbc_string + message_comment + signal_comment + val_desc; + return header + dbc_string + comment + val_desc; } diff --git a/tools/cabana/dbc/dbcfile.h b/tools/cabana/dbc/dbcfile.h index 551bac4946..20de04a861 100644 --- a/tools/cabana/dbc/dbcfile.h +++ b/tools/cabana/dbc/dbcfile.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include "tools/cabana/dbc/dbc.h" @@ -26,6 +27,7 @@ public: cabana::Msg *msg(uint32_t address); cabana::Msg *msg(const QString &name); inline cabana::Msg *msg(const MessageId &id) { return msg(id.address); } + cabana::Signal *signal(uint32_t address, const QString name); inline QString name() const { return name_.isEmpty() ? "untitled" : name_; } inline bool isEmpty() const { return msgs.empty() && name_.isEmpty(); } @@ -34,6 +36,13 @@ public: private: void parse(const QString &content); + cabana::Msg *parseBO(const QString &line); + void parseSG(const QString &line, cabana::Msg *current_msg, int &multiplexor_cnt); + void parseCM_BO(const QString &line, const QString &content, const QString &raw_line, const QTextStream &stream); + void parseCM_SG(const QString &line, const QString &content, const QString &raw_line, const QTextStream &stream); + void parseVAL(const QString &line); + + QString header; std::map msgs; QString name_; }; diff --git a/tools/cabana/dbc/generate_dbc_json.py b/tools/cabana/dbc/generate_dbc_json.py index da19e27b77..2d3fbe9fc4 100755 --- a/tools/cabana/dbc/generate_dbc_json.py +++ b/tools/cabana/dbc/generate_dbc_json.py @@ -2,13 +2,17 @@ import argparse import json -from openpilot.selfdrive.car.car_helpers import get_interface_attr +from openpilot.selfdrive.car.fingerprints import MIGRATION +from openpilot.selfdrive.car.values import PLATFORMS def generate_dbc_json() -> str: - all_cars_by_brand = get_interface_attr("CAR_INFO") - all_dbcs_by_brand = get_interface_attr("DBC") - dbc_map = {car: all_dbcs_by_brand[brand][car]['pt'] for brand, cars in all_cars_by_brand.items() for car in cars if car != 'mock'} + dbc_map = {platform.name: platform.config.dbc_dict['pt'] for platform in PLATFORMS.values() if platform != "MOCK"} + + for m in MIGRATION: + if MIGRATION[m] in dbc_map: + dbc_map[m] = dbc_map[MIGRATION[m]] + return json.dumps(dict(sorted(dbc_map.items())), indent=2) diff --git a/tools/cabana/historylog.cc b/tools/cabana/historylog.cc index 90bd9a8f76..55ba0a4919 100644 --- a/tools/cabana/historylog.cc +++ b/tools/cabana/historylog.cc @@ -10,61 +10,49 @@ #include "tools/cabana/utils/export.h" QVariant HistoryLogModel::data(const QModelIndex &index, int role) const { - const bool show_signals = display_signals_mode && sigs.size() > 0; const auto &m = messages[index.row()]; + const int col = index.column(); if (role == Qt::DisplayRole) { - if (index.column() == 0) { - return QString::number((m.mono_time / (double)1e9) - can->routeStartTime(), 'f', 2); - } - int i = index.column() - 1; - return show_signals ? QString::number(m.sig_values[i], 'f', sigs[i]->precision) : QString(); - } else if (role == ColorsRole) { - return QVariant::fromValue((void *)(&m.colors)); - } else if (role == BytesRole) { - return QVariant::fromValue((void *)(&m.data)); + if (col == 0) return QString::number((m.mono_time / (double)1e9) - can->routeStartTime(), 'f', 3); + if (!isHexMode()) return sigs[col - 1]->formatValue(m.sig_values[col - 1], false); } else if (role == Qt::TextAlignmentRole) { return (uint32_t)(Qt::AlignRight | Qt::AlignVCenter); } + + if (isHexMode() && col == 1) { + if (role == ColorsRole) return QVariant::fromValue((void *)(&m.colors)); + if (role == BytesRole) return QVariant::fromValue((void *)(&m.data)); + } return {}; } void HistoryLogModel::setMessage(const MessageId &message_id) { msg_id = message_id; + reset(); } -void HistoryLogModel::refresh(bool fetch_message) { +void HistoryLogModel::reset() { beginResetModel(); sigs.clear(); if (auto dbc_msg = dbc()->msg(msg_id)) { sigs = dbc_msg->getSignals(); } - last_fetch_time = 0; - has_more_data = true; messages.clear(); hex_colors = {}; - if (fetch_message) { - updateState(); - } endResetModel(); + setFilter(0, "", nullptr); } QVariant HistoryLogModel::headerData(int section, Qt::Orientation orientation, int role) const { if (orientation == Qt::Horizontal) { - const bool show_signals = display_signals_mode && !sigs.empty(); if (role == Qt::DisplayRole || role == Qt::ToolTipRole) { - if (section == 0) { - return "Time"; - } - if (show_signals) { - QString name = sigs[section - 1]->name; - if (!sigs[section - 1]->unit.isEmpty()) { - name += QString(" (%1)").arg(sigs[section - 1]->unit); - } - return name; - } else { - return "Data"; - } - } else if (role == Qt::BackgroundRole && section > 0 && show_signals) { + if (section == 0) return "Time"; + if (isHexMode()) return "Data"; + + QString name = sigs[section - 1]->name; + QString unit = sigs[section - 1]->unit; + return unit.isEmpty() ? name : QString("%1 (%2)").arg(name, unit); + } else if (role == Qt::BackgroundRole && section > 0 && !isHexMode()) { // Alpha-blend the signal color with the background to ensure contrast QColor sigColor = sigs[section - 1]->color; sigColor.setAlpha(128); @@ -74,110 +62,80 @@ QVariant HistoryLogModel::headerData(int section, Qt::Orientation orientation, i return {}; } -void HistoryLogModel::setDynamicMode(int state) { - dynamic_mode = state != 0; - refresh(); -} - -void HistoryLogModel::setDisplayType(int type) { - display_signals_mode = type == 0; - refresh(); -} - -void HistoryLogModel::segmentsMerged() { - if (!dynamic_mode) { - has_more_data = true; - } +void HistoryLogModel::setHexMode(bool hex) { + hex_mode = hex; + reset(); } void HistoryLogModel::setFilter(int sig_idx, const QString &value, std::function cmp) { filter_sig_idx = sig_idx; filter_value = value.toDouble(); filter_cmp = value.isEmpty() ? nullptr : cmp; + updateState(true); } -void HistoryLogModel::updateState() { - uint64_t current_time = (can->lastMessage(msg_id).ts + can->routeStartTime()) * 1e9 + 1; - auto new_msgs = dynamic_mode ? fetchData(current_time, last_fetch_time) : fetchData(0); - if (!new_msgs.empty()) { - beginInsertRows({}, 0, new_msgs.size() - 1); - messages.insert(messages.begin(), std::move_iterator(new_msgs.begin()), std::move_iterator(new_msgs.end())); - endInsertRows(); +void HistoryLogModel::updateState(bool clear) { + if (clear && !messages.empty()) { + beginRemoveRows({}, 0, messages.size() - 1); + messages.clear(); + endRemoveRows(); } - has_more_data = new_msgs.size() >= batch_size; - last_fetch_time = current_time; + uint64_t current_time = (can->lastMessage(msg_id).ts + can->routeStartTime()) * 1e9 + 1; + fetchData(messages.begin(), current_time, messages.empty() ? 0 : messages.front().mono_time); +} + +bool HistoryLogModel::canFetchMore(const QModelIndex &parent) const { + const auto &events = can->events(msg_id); + return !events.empty() && !messages.empty() && messages.back().mono_time > events.front()->mono_time; } void HistoryLogModel::fetchMore(const QModelIndex &parent) { - if (!messages.empty()) { - auto new_msgs = fetchData(messages.back().mono_time); - if (!new_msgs.empty()) { - beginInsertRows({}, messages.size(), messages.size() + new_msgs.size() - 1); - messages.insert(messages.end(), std::move_iterator(new_msgs.begin()), std::move_iterator(new_msgs.end())); - endInsertRows(); - } - has_more_data = new_msgs.size() >= batch_size; - } + if (!messages.empty()) + fetchData(messages.end(), messages.back().mono_time, 0); } -template -std::deque HistoryLogModel::fetchData(InputIt first, InputIt last, uint64_t min_time) { - std::deque msgs; +void HistoryLogModel::fetchData(std::deque::iterator insert_pos, uint64_t from_time, uint64_t min_time) { + const auto &events = can->events(msg_id); + auto first = std::upper_bound(events.rbegin(), events.rend(), from_time, [](uint64_t ts, auto e) { + return ts > e->mono_time; + }); + + std::vector msgs; std::vector values(sigs.size()); - for (; first != last && (*first)->mono_time > min_time; ++first) { + msgs.reserve(batch_size); + for (; first != events.rend() && (*first)->mono_time > min_time; ++first) { const CanEvent *e = *first; for (int i = 0; i < sigs.size(); ++i) { sigs[i]->getValue(e->dat, e->size, &values[i]); } if (!filter_cmp || filter_cmp(values[filter_sig_idx], filter_value)) { - auto &m = msgs.emplace_back(); - m.mono_time = e->mono_time; - m.data.assign(e->dat, e->dat + e->size); - m.sig_values = values; + msgs.emplace_back(Message{e->mono_time, values, {e->dat, e->dat + e->size}}); if (msgs.size() >= batch_size && min_time == 0) { - return msgs; + break; } } } - return msgs; -} -std::deque HistoryLogModel::fetchData(uint64_t from_time, uint64_t min_time) { - const auto &events = can->events(msg_id); - const auto freq = can->lastMessage(msg_id).freq; - const bool update_colors = !display_signals_mode || sigs.empty(); - const std::vector no_mask; - const auto speed = can->getSpeed(); - if (dynamic_mode) { - auto first = std::upper_bound(events.rbegin(), events.rend(), from_time, [](uint64_t ts, auto e) { - return ts > e->mono_time; - }); - auto msgs = fetchData(first, events.rend(), min_time); - if (update_colors && (min_time > 0 || messages.empty())) { - for (auto it = msgs.rbegin(); it != msgs.rend(); ++it) { - hex_colors.compute(msg_id, it->data.data(), it->data.size(), it->mono_time / (double)1e9, speed, no_mask, freq); - it->colors = hex_colors.colors; + if (!msgs.empty()) { + if (isHexMode() && (min_time > 0 || messages.empty())) { + const auto freq = can->lastMessage(msg_id).freq; + const std::vector no_mask; + for (auto &m : msgs) { + hex_colors.compute(msg_id, m.data.data(), m.data.size(), m.mono_time / (double)1e9, can->getSpeed(), no_mask, freq); + m.colors = hex_colors.colors; } } - return msgs; - } else { - assert(min_time == 0); - auto first = std::upper_bound(events.cbegin(), events.cend(), from_time, CompareCanEvent()); - auto msgs = fetchData(first, events.cend(), 0); - if (update_colors) { - for (auto it = msgs.begin(); it != msgs.end(); ++it) { - hex_colors.compute(msg_id, it->data.data(), it->data.size(), it->mono_time / (double)1e9, speed, no_mask, freq); - it->colors = hex_colors.colors; - } - } - return msgs; + int pos = std::distance(messages.begin(), insert_pos); + beginInsertRows({}, pos , pos + msgs.size() - 1); + messages.insert(insert_pos, std::move_iterator(msgs.begin()), std::move_iterator(msgs.end())); + endInsertRows(); } } // HeaderView QSize HeaderView::sectionSizeFromContents(int logicalIndex) const { - static const QSize time_col_size = fontMetrics().boundingRect({0, 0, 200, 200}, defaultAlignment(), "000000.000").size() + QSize(10, 6); + static const QSize time_col_size = fontMetrics().size(Qt::TextSingleLine, "000000.000") + QSize(10, 6); if (logicalIndex == 0) { return time_col_size; } else { @@ -220,8 +178,7 @@ LogsWidget::LogsWidget(QWidget *parent) : QFrame(parent) { filter_layout->addWidget(value_edit = new QLineEdit(this)); h->addWidget(filters_widget); h->addStretch(0); - h->addWidget(dynamic_mode = new QCheckBox(tr("Dynamic")), 0, Qt::AlignRight); - ToolButton *export_btn = new ToolButton("filetype-csv", tr("Export to CSV file...")); + export_btn = new ToolButton("filetype-csv", tr("Export to CSV file...")); h->addWidget(export_btn, 0, Qt::AlignRight); display_type_cb->addItems({"Signal", "Hex"}); @@ -229,8 +186,6 @@ LogsWidget::LogsWidget(QWidget *parent) : QFrame(parent) { comp_box->addItems({">", "=", "!=", "<"}); value_edit->setClearButtonEnabled(true); value_edit->setValidator(new DoubleValidator(this)); - dynamic_mode->setChecked(true); - dynamic_mode->setEnabled(!can->liveStreaming()); main_layout->addWidget(toolbar); QFrame *line = new QFrame(this); @@ -238,52 +193,38 @@ LogsWidget::LogsWidget(QWidget *parent) : QFrame(parent) { main_layout->addWidget(line); main_layout->addWidget(logs = new QTableView(this)); logs->setModel(model = new HistoryLogModel(this)); - delegate = new MessageBytesDelegate(this); + logs->setItemDelegate(delegate = new MessageBytesDelegate(this)); logs->setHorizontalHeader(new HeaderView(Qt::Horizontal, this)); logs->horizontalHeader()->setDefaultAlignment(Qt::AlignRight | (Qt::Alignment)Qt::TextWordWrap); logs->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); logs->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed); logs->verticalHeader()->setDefaultSectionSize(delegate->sizeForBytes(8).height()); - logs->verticalHeader()->setVisible(false); logs->setFrameShape(QFrame::NoFrame); - QObject::connect(display_type_cb, qOverload(&QComboBox::activated), [this](int index) { - logs->setItemDelegateForColumn(1, index == 1 ? delegate : nullptr); - model->setDisplayType(index); - }); - QObject::connect(dynamic_mode, &QCheckBox::stateChanged, model, &HistoryLogModel::setDynamicMode); - QObject::connect(signals_cb, SIGNAL(activated(int)), this, SLOT(setFilter())); - QObject::connect(comp_box, SIGNAL(activated(int)), this, SLOT(setFilter())); - QObject::connect(value_edit, &QLineEdit::textChanged, this, &LogsWidget::setFilter); + QObject::connect(display_type_cb, qOverload(&QComboBox::activated), model, &HistoryLogModel::setHexMode); + QObject::connect(signals_cb, SIGNAL(activated(int)), this, SLOT(filterChanged())); + QObject::connect(comp_box, SIGNAL(activated(int)), this, SLOT(filterChanged())); + QObject::connect(value_edit, &QLineEdit::textEdited, this, &LogsWidget::filterChanged); QObject::connect(export_btn, &QToolButton::clicked, this, &LogsWidget::exportToCSV); - QObject::connect(can, &AbstractStream::seekedTo, model, &HistoryLogModel::refresh); - QObject::connect(dbc(), &DBCManager::DBCFileChanged, this, &LogsWidget::refresh); - QObject::connect(UndoStack::instance(), &QUndoStack::indexChanged, this, &LogsWidget::refresh); - QObject::connect(can, &AbstractStream::eventsMerged, model, &HistoryLogModel::segmentsMerged); + QObject::connect(can, &AbstractStream::seekedTo, model, &HistoryLogModel::reset); + QObject::connect(dbc(), &DBCManager::DBCFileChanged, model, &HistoryLogModel::reset); + QObject::connect(UndoStack::instance(), &QUndoStack::indexChanged, model, &HistoryLogModel::reset); + QObject::connect(model, &HistoryLogModel::modelReset, this, &LogsWidget::modelReset); + QObject::connect(model, &HistoryLogModel::rowsInserted, [this]() { export_btn->setEnabled(true); }); } -void LogsWidget::setMessage(const MessageId &message_id) { - model->setMessage(message_id); - refresh(); -} - -void LogsWidget::refresh() { - model->setFilter(0, "", nullptr); - model->refresh(isVisible()); - bool has_signal = model->sigs.size(); - if (has_signal) { - signals_cb->clear(); - for (auto s : model->sigs) { - signals_cb->addItem(s->name); - } +void LogsWidget::modelReset() { + signals_cb->clear(); + for (auto s : model->sigs) { + signals_cb->addItem(s->name); } - logs->setItemDelegateForColumn(1, !has_signal || display_type_cb->currentIndex() == 1 ? delegate : nullptr); + export_btn->setEnabled(false); value_edit->clear(); comp_box->setCurrentIndex(0); - filters_widget->setVisible(has_signal); + filters_widget->setVisible(!model->sigs.empty()); } -void LogsWidget::setFilter() { +void LogsWidget::filterChanged() { if (value_edit->text().isEmpty() && !value_edit->isModified()) return; std::function cmp = nullptr; @@ -294,19 +235,6 @@ void LogsWidget::setFilter() { case 3: cmp = std::less{}; break; } model->setFilter(signals_cb->currentIndex(), value_edit->text(), cmp); - model->refresh(); -} - -void LogsWidget::updateState() { - if (isVisible() && dynamic_mode->isChecked()) { - model->updateState(); - } -} - -void LogsWidget::showEvent(QShowEvent *event) { - if (dynamic_mode->isChecked() || model->canFetchMore({}) && model->rowCount() == 0) { - model->refresh(); - } } void LogsWidget::exportToCSV() { @@ -314,7 +242,7 @@ void LogsWidget::exportToCSV() { QString fn = QFileDialog::getSaveFileName(this, QString("Export %1 to CSV file").arg(msgName(model->msg_id)), dir, tr("csv (*.csv)")); if (!fn.isEmpty()) { - const bool export_signals = model->display_signals_mode && model->sigs.size() > 0; - export_signals ? utils::exportSignalsToCSV(fn, model->msg_id) : utils::exportToCSV(fn, model->msg_id); + model->isHexMode() ? utils::exportToCSV(fn, model->msg_id) + : utils::exportSignalsToCSV(fn, model->msg_id); } } diff --git a/tools/cabana/historylog.h b/tools/cabana/historylog.h index 21df6a622e..1ac6e5bbad 100644 --- a/tools/cabana/historylog.h +++ b/tools/cabana/historylog.h @@ -3,7 +3,6 @@ #include #include -#include #include #include #include @@ -11,7 +10,6 @@ #include "tools/cabana/dbc/dbcmanager.h" #include "tools/cabana/streams/abstractstream.h" -#include "tools/cabana/utils/util.h" class HeaderView : public QHeaderView { public: @@ -26,24 +24,18 @@ class HistoryLogModel : public QAbstractTableModel { public: HistoryLogModel(QObject *parent) : QAbstractTableModel(parent) {} void setMessage(const MessageId &message_id); - void updateState(); + void updateState(bool clear = false); void setFilter(int sig_idx, const QString &value, std::function cmp); QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; void fetchMore(const QModelIndex &parent) override; - inline bool canFetchMore(const QModelIndex &parent) const override { return has_more_data; } + bool canFetchMore(const QModelIndex &parent) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override { return messages.size(); } - int columnCount(const QModelIndex &parent = QModelIndex()) const override { - return display_signals_mode && !sigs.empty() ? sigs.size() + 1 : 2; - } - void refresh(bool fetch_message = true); + int columnCount(const QModelIndex &parent = QModelIndex()) const override { return !isHexMode() ? sigs.size() + 1 : 2; } + inline bool isHexMode() const { return sigs.empty() || hex_mode; } + void reset(); + void setHexMode(bool hex_mode); -public slots: - void setDisplayType(int type); - void setDynamicMode(int state); - void segmentsMerged(); - -public: struct Message { uint64_t mono_time = 0; std::vector sig_values; @@ -51,22 +43,17 @@ public: std::vector colors; }; - template - std::deque fetchData(InputIt first, InputIt last, uint64_t min_time); - std::deque fetchData(uint64_t from_time, uint64_t min_time = 0); + void fetchData(std::deque::iterator insert_pos, uint64_t from_time, uint64_t min_time); MessageId msg_id; CanData hex_colors; - bool has_more_data = true; const int batch_size = 50; int filter_sig_idx = -1; double filter_value = 0; - uint64_t last_fetch_time = 0; std::function filter_cmp = nullptr; std::deque messages; std::vector sigs; - bool dynamic_mode = true; - bool display_signals_mode = true; + bool hex_mode = false; }; class LogsWidget : public QFrame { @@ -74,22 +61,21 @@ class LogsWidget : public QFrame { public: LogsWidget(QWidget *parent); - void setMessage(const MessageId &message_id); - void updateState(); - void showEvent(QShowEvent *event) override; + void setMessage(const MessageId &message_id) { model->setMessage(message_id); } + void updateState() { model->updateState(); } + void showEvent(QShowEvent *event) override { model->updateState(true); } private slots: - void setFilter(); + void filterChanged(); void exportToCSV(); + void modelReset(); private: - void refresh(); - QTableView *logs; HistoryLogModel *model; - QCheckBox *dynamic_mode; QComboBox *signals_cb, *comp_box, *display_type_cb; QLineEdit *value_edit; QWidget *filters_widget; + ToolButton *export_btn; MessageBytesDelegate *delegate; }; diff --git a/tools/cabana/mainwin.cc b/tools/cabana/mainwin.cc index bcb65e2e3e..e6c9b49ca1 100644 --- a/tools/cabana/mainwin.cc +++ b/tools/cabana/mainwin.cc @@ -179,6 +179,7 @@ void MainWindow::createDockWindows() { void MainWindow::createDockWidgets() { messages_widget = new MessagesWidget(this); messages_dock->setWidget(messages_widget); + QObject::connect(messages_widget, &MessagesWidget::titleChanged, messages_dock, &QDockWidget::setWindowTitle); // right panel charts_widget = new ChartsWidget(this); @@ -261,6 +262,9 @@ void MainWindow::openStream() { } stream->start(); statusBar()->showMessage(tr("Route %1 loaded").arg(can->routeName()), 2000); + } else if (!can) { + stream = new DummyStream(this); + stream->start(); } } diff --git a/tools/cabana/messageswidget.cc b/tools/cabana/messageswidget.cc index 0cec551017..396cfdc38b 100644 --- a/tools/cabana/messageswidget.cc +++ b/tools/cabana/messageswidget.cc @@ -6,16 +6,29 @@ #include #include #include +#include #include #include #include #include "tools/cabana/commands.h" +static bool isMessageActive(const MessageId &id) { + if (auto dummy_stream = dynamic_cast(can)) { + return true; + } + if (id.source == INVALID_SOURCE) { + return false; + } + // Check if the message is active based on time difference and frequency + const auto &m = can->lastMessage(id); + float delta = can->currentSec() - m.ts; + return (m.freq == 0 && delta < 1.5) || (m.freq > 0 && ((delta - 1.0 / settings.fps) < (5.0 / m.freq))); +} + MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget(parent) { QVBoxLayout *main_layout = new QVBoxLayout(this); main_layout->setContentsMargins(0, 0, 0, 0); - main_layout->setSpacing(0); // toolbar main_layout->addWidget(createToolBar()); // message table @@ -30,7 +43,6 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget view->setItemsExpandable(false); view->setIndentation(0); view->setRootIsDecorated(false); - view->setUniformRowHeights(!settings.multiple_lines_hex); // Must be called before setting any header parameters to avoid overriding restoreHeaderState(settings.message_header_state); @@ -39,23 +51,10 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget header->setStretchLastSection(true); header->setContextMenuPolicy(Qt::CustomContextMenu); - // suppress - QHBoxLayout *suppress_layout = new QHBoxLayout(); - suppress_layout->addWidget(suppress_add = new QPushButton("Suppress Highlighted")); - suppress_layout->addWidget(suppress_clear = new QPushButton()); - suppress_clear->setToolTip(tr("Clear suppressed")); - suppress_layout->addStretch(1); - QCheckBox *suppress_defined_signals = new QCheckBox(tr("Suppress Signals"), this); - suppress_defined_signals->setToolTip(tr("Suppress defined signals")); - suppress_defined_signals->setChecked(settings.suppress_defined_signals); - suppress_layout->addWidget(suppress_defined_signals); - main_layout->addLayout(suppress_layout); - // signals/slots QObject::connect(menu, &QMenu::aboutToShow, this, &MessagesWidget::menuAboutToShow); QObject::connect(header, &MessageViewHeader::customContextMenuRequested, this, &MessagesWidget::headerContextMenuEvent); QObject::connect(view->horizontalScrollBar(), &QScrollBar::valueChanged, header, &MessageViewHeader::updateHeaderPositions); - QObject::connect(suppress_defined_signals, &QCheckBox::stateChanged, can, &AbstractStream::suppressDefinedSignals); QObject::connect(can, &AbstractStream::msgsReceived, model, &MessageListModel::msgsReceived); QObject::connect(dbc(), &DBCManager::DBCFileChanged, model, &MessageListModel::dbcModified); QObject::connect(UndoStack::instance(), &QUndoStack::indexChanged, model, &MessageListModel::dbcModified); @@ -75,9 +74,6 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget } } }); - QObject::connect(suppress_add, &QPushButton::clicked, this, &MessagesWidget::suppressHighlighted); - QObject::connect(suppress_clear, &QPushButton::clicked, this, &MessagesWidget::suppressHighlighted); - suppressHighlighted(); setWhatsThis(tr(R"( Message View
@@ -85,22 +81,36 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget Byte color
constant changing
increasing
- decreasing + decreasing
+ Shortcuts
+ Horizontal Scrolling:  shift+wheel  )")); } -QToolBar *MessagesWidget::createToolBar() { - QToolBar *toolbar = new QToolBar(this); - toolbar->setIconSize({12, 12}); - toolbar->addWidget(num_msg_label = new QLabel(this)); - num_msg_label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); +QWidget *MessagesWidget::createToolBar() { + QWidget *toolbar = new QWidget(this); + QHBoxLayout *layout = new QHBoxLayout(toolbar); + layout->setContentsMargins(0, 9, 0, 0); + layout->addWidget(suppress_add = new QPushButton("Suppress Highlighted")); + layout->addWidget(suppress_clear = new QPushButton()); + suppress_clear->setToolTip(tr("Clear suppressed")); + layout->addStretch(1); + QCheckBox *suppress_defined_signals = new QCheckBox(tr("Suppress Signals"), this); + suppress_defined_signals->setToolTip(tr("Suppress defined signals")); + suppress_defined_signals->setChecked(settings.suppress_defined_signals); + layout->addWidget(suppress_defined_signals); - auto views_btn = toolbar->addAction(utils::icon("three-dots"), tr("View...")); - views_btn->setMenu(menu); - auto view_button = qobject_cast(toolbar->widgetForAction(views_btn)); + auto view_button = new ToolButton("three-dots", tr("View...")); + view_button->setMenu(menu); view_button->setPopupMode(QToolButton::InstantPopup); - view_button->setToolButtonStyle(Qt::ToolButtonIconOnly); view_button->setStyleSheet("QToolButton::menu-indicator { image: none; }"); + layout->addWidget(view_button); + + QObject::connect(suppress_add, &QPushButton::clicked, this, &MessagesWidget::suppressHighlighted); + QObject::connect(suppress_clear, &QPushButton::clicked, this, &MessagesWidget::suppressHighlighted); + QObject::connect(suppress_defined_signals, &QCheckBox::stateChanged, can, &AbstractStream::suppressDefinedSignals); + + suppressHighlighted(); return toolbar; } @@ -111,7 +121,7 @@ void MessagesWidget::updateTitle() { auto m = dbc()->msg(item.id); return m ? std::make_pair(pair.first + 1, pair.second + m->sigs.size()) : pair; }); - num_msg_label->setText(tr("%1 Messages (%2 DBC Messages, %3 Signals)") + emit titleChanged(tr("%1 Messages (%2 DBC Messages, %3 Signals)") .arg(model->items_.size()).arg(stats.first).arg(stats.second)); } @@ -124,15 +134,9 @@ void MessagesWidget::selectMessage(const MessageId &msg_id) { } void MessagesWidget::suppressHighlighted() { - if (sender() == suppress_add) { - size_t n = can->suppressHighlighted(); - suppress_clear->setText(tr("Clear (%1)").arg(n)); - suppress_clear->setEnabled(true); - } else { - can->clearSuppressed(); - suppress_clear->setText(tr("Clear")); - suppress_clear->setEnabled(false); - } + int n = sender() == suppress_add ? can->suppressHighlighted() : (can->clearSuppressed(), 0); + suppress_clear->setText(n > 0 ? tr("Clear (%1)").arg(n) : tr("Clear")); + suppress_clear->setEnabled(n > 0); } void MessagesWidget::headerContextMenuEvent(const QPoint &pos) { @@ -154,12 +158,15 @@ void MessagesWidget::menuAboutToShow() { auto action = menu->addAction(tr("Multi-Line bytes"), this, &MessagesWidget::setMultiLineBytes); action->setCheckable(true); action->setChecked(settings.multiple_lines_hex); + + action = menu->addAction(tr("Show inactive Messages"), model, &MessageListModel::showInactivemessages); + action->setCheckable(true); + action->setChecked(model->show_inactive_messages); } void MessagesWidget::setMultiLineBytes(bool multi) { settings.multiple_lines_hex = multi; delegate->setMultipleLines(multi); - view->setUniformRowHeights(!multi); view->updateBytesSectionSize(); view->doItemsLayout(); } @@ -184,30 +191,32 @@ QVariant MessageListModel::headerData(int section, Qt::Orientation orientation, QVariant MessageListModel::data(const QModelIndex &index, int role) const { if (!index.isValid() || index.row() >= items_.size()) return {}; - auto getFreq = [](const CanData &d) { - if (d.freq > 0 && (can->currentSec() - d.ts - 1.0 / settings.fps) < (5.0 / d.freq)) { - return d.freq >= 0.95 ? QString::number(std::nearbyint(d.freq)) : QString::number(d.freq, 'f', 2); + auto getFreq = [](float freq) { + if (freq > 0) { + return freq >= 0.95 ? QString::number(std::nearbyint(freq)) : QString::number(freq, 'f', 2); } else { return QStringLiteral("--"); } }; + const static QString NA = QStringLiteral("N/A"); const auto &item = items_[index.row()]; - const auto &data = can->lastMessage(item.id); if (role == Qt::DisplayRole) { switch (index.column()) { case Column::NAME: return item.name; - case Column::SOURCE: return item.id.source != INVALID_SOURCE ? QString::number(item.id.source) : "N/A"; + case Column::SOURCE: return item.id.source != INVALID_SOURCE ? QString::number(item.id.source) : NA; case Column::ADDRESS: return QString::number(item.id.address, 16); case Column::NODE: return item.node; - case Column::FREQ: return item.id.source != INVALID_SOURCE ? getFreq(data) : "N/A"; - case Column::COUNT: return item.id.source != INVALID_SOURCE ? QString::number(data.count) : "N/A"; - case Column::DATA: return item.id.source != INVALID_SOURCE ? "" : "N/A"; + case Column::FREQ: return item.id.source != INVALID_SOURCE ? getFreq(can->lastMessage(item.id).freq) : NA; + case Column::COUNT: return item.id.source != INVALID_SOURCE ? QString::number(can->lastMessage(item.id).count) : NA; + case Column::DATA: return item.id.source != INVALID_SOURCE ? "" : NA; } } else if (role == ColorsRole) { - return QVariant::fromValue((void*)(&data.colors)); + return QVariant::fromValue((void*)(&can->lastMessage(item.id).colors)); } else if (role == BytesRole && index.column() == Column::DATA && item.id.source != INVALID_SOURCE) { - return QVariant::fromValue((void*)(&data.dat)); + return QVariant::fromValue((void*)(&can->lastMessage(item.id).dat)); + } else if (role == Qt::ForegroundRole && !item.active) { + return settings.theme == DARK_THEME ? QApplication::palette().color(QPalette::Text).darker(150) : QColor(Qt::gray); } else if (role == Qt::ToolTipRole && index.column() == Column::NAME) { auto msg = dbc()->msg(item.id); auto tooltip = item.name; @@ -222,6 +231,11 @@ void MessageListModel::setFilterStrings(const QMap &filters) { filterAndSort(); } +void MessageListModel::showInactivemessages(bool show) { + show_inactive_messages = show; + filterAndSort(); +} + void MessageListModel::dbcModified() { dbc_messages_.clear(); for (const auto &[_, m] : dbc()->getMessages(-1)) { @@ -231,19 +245,22 @@ void MessageListModel::dbcModified() { } void MessageListModel::sortItems(std::vector &items) { - auto do_sort = [order = sort_order](std::vector &m, auto proj) { - std::stable_sort(m.begin(), m.end(), [order, proj = std::move(proj)](auto &l, auto &r) { - return order == Qt::AscendingOrder ? proj(l) < proj(r) : proj(l) > proj(r); - }); + auto compare = [this](const auto &l, const auto &r) { + switch (sort_column) { + case Column::NAME: return std::tie(l.name, l.id) < std::tie(r.name, r.id); + case Column::SOURCE: return std::tie(l.id.source, l.id.address) < std::tie(r.id.source, r.id.address); + case Column::ADDRESS: return std::tie(l.id.address, l.id.source) < std::tie(r.id.address, r.id.source); + case Column::NODE: return std::tie(l.node, l.id) < std::tie(r.node, r.id); + case Column::FREQ: return std::tie(can->lastMessage(l.id).freq, l.id) < std::tie(can->lastMessage(r.id).freq, r.id); + case Column::COUNT: return std::tie(can->lastMessage(l.id).count, l.id) < std::tie(can->lastMessage(r.id).count, r.id); + default: return false; // Default case to suppress compiler warning + } }; - switch (sort_column) { - case Column::NAME: do_sort(items, [](auto &item) { return std::tie(item.name, item.id); }); break; - case Column::SOURCE: do_sort(items, [](auto &item) { return std::tie(item.id.source, item.id); }); break; - case Column::ADDRESS: do_sort(items, [](auto &item) { return std::tie(item.id.address, item.id);}); break; - case Column::NODE: do_sort(items, [](auto &item) { return std::tie(item.node, item.id);}); break; - case Column::FREQ: do_sort(items, [](auto &item) { return std::make_pair(can->lastMessage(item.id).freq, item.id); }); break; - case Column::COUNT: do_sort(items, [](auto &item) { return std::make_pair(can->lastMessage(item.id).count, item.id); }); break; - } + + if (sort_order == Qt::DescendingOrder) + std::stable_sort(items.rbegin(), items.rend(), compare); + else + std::stable_sort(items.begin(), items.end(), compare); } static bool parseRange(const QString &filter, uint32_t value, int base = 10) { @@ -290,7 +307,6 @@ bool MessageListModel::match(const MessageListModel::Item &item) { match = item.node.contains(txt, Qt::CaseInsensitive); break; case Column::FREQ: - // TODO: Hide stale messages? match = parseRange(txt, data.freq); break; case Column::COUNT: @@ -304,7 +320,7 @@ bool MessageListModel::match(const MessageListModel::Item &item) { return match; } -void MessageListModel::filterAndSort() { +bool MessageListModel::filterAndSort() { // merge CAN and DBC messages std::vector all_messages; all_messages.reserve(can->lastMessages().size() + dbc_messages_.size()); @@ -317,13 +333,18 @@ void MessageListModel::filterAndSort() { // filter and sort std::vector items; + items.reserve(all_messages.size()); for (const auto &id : all_messages) { - auto msg = dbc()->msg(id); - Item item = {.id = id, - .name = msg ? msg->name : UNTITLED, - .node = msg ? msg->transmitter : QString()}; - if (match(item)) - items.emplace_back(item); + bool active = isMessageActive(id); + if (active || show_inactive_messages) { + auto msg = dbc()->msg(id); + Item item = {.id = id, + .active = active, + .name = msg ? msg->name : UNTITLED, + .node = msg ? msg->transmitter : QString()}; + if (match(item)) + items.emplace_back(item); + } } sortItems(items); @@ -331,19 +352,23 @@ void MessageListModel::filterAndSort() { beginResetModel(); items_ = std::move(items); endResetModel(); + return true; } + return false; } void MessageListModel::msgsReceived(const std::set *new_msgs, bool has_new_ids) { - if (has_new_ids || filters_.contains(Column::FREQ) || filters_.contains(Column::COUNT) || filters_.contains(Column::DATA)) { - filterAndSort(); + if (has_new_ids || ((filters_.count(Column::FREQ) || filters_.count(Column::COUNT) || filters_.count(Column::DATA)) && + ++sort_threshold_ == settings.fps)) { + sort_threshold_ = 0; + if (filterAndSort()) return; } - for (int i = 0; i < items_.size(); ++i) { - if (!new_msgs || new_msgs->count(items_[i].id)) { - for (int col = Column::FREQ; col < columnCount(); ++col) - emit dataChanged(index(i, col), index(i, col), {Qt::DisplayRole}); - } + + for (auto &item : items_) { + item.active = isMessageActive(item.id); } + // Update viewport + emit dataChanged(index(0, 0), index(rowCount() - 1, columnCount() - 1)); } void MessageListModel::sort(int column, Qt::SortOrder order) { @@ -358,20 +383,18 @@ void MessageListModel::sort(int column, Qt::SortOrder order) { void MessageView::drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { QTreeView::drawRow(painter, option, index); - const int gridHint = style()->styleHint(QStyle::SH_Table_GridLineColor, &option, this); - const QColor gridColor = QColor::fromRgba(static_cast(gridHint)); - QPen old_pen = painter->pen(); - painter->setPen(gridColor); - painter->drawLine(option.rect.left(), option.rect.bottom(), option.rect.right(), option.rect.bottom()); - auto y = option.rect.y(); - painter->translate(visualRect(model()->index(0, 0)).x() - indentation() - .5, -.5); + QPen oldPen = painter->pen(); + const int gridHint = style()->styleHint(QStyle::SH_Table_GridLineColor, &option, this); + painter->setPen(QColor::fromRgba(static_cast(gridHint))); + // Draw bottom border for the row + painter->drawLine(option.rect.bottomLeft(), option.rect.bottomRight()); + // Draw vertical borders for each column for (int i = 0; i < header()->count(); ++i) { - painter->translate(header()->sectionSize(header()->logicalIndex(i)), 0); - painter->drawLine(0, y, 0, y + option.rect.height()); + int sectionX = header()->sectionViewportPosition(i); + painter->drawLine(sectionX, option.rect.top(), sectionX, option.rect.bottom()); } - painter->setPen(old_pen); - painter->resetTransform(); + painter->setPen(oldPen); } void MessageView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles) { @@ -388,9 +411,18 @@ void MessageView::updateBytesSectionSize() { max_bytes = std::max(max_bytes, m.dat.size()); } } + setUniformRowHeights(!delegate->multipleLines() || max_bytes <= 8); header()->resizeSection(MessageListModel::Column::DATA, delegate->sizeForBytes(max_bytes).width()); } +void MessageView::wheelEvent(QWheelEvent *event) { + if (event->modifiers() == Qt::ShiftModifier) { + QApplication::sendEvent(horizontalScrollBar(), event); + } else { + QTreeView::wheelEvent(event); + } +} + // MessageViewHeader MessageViewHeader::MessageViewHeader(QWidget *parent) : QHeaderView(Qt::Horizontal, parent) { diff --git a/tools/cabana/messageswidget.h b/tools/cabana/messageswidget.h index 4f54941c64..823fcb74e3 100644 --- a/tools/cabana/messageswidget.h +++ b/tools/cabana/messageswidget.h @@ -7,11 +7,10 @@ #include #include -#include #include #include -#include #include +#include #include "tools/cabana/dbc/dbcmanager.h" #include "tools/cabana/streams/abstractstream.h" @@ -37,19 +36,22 @@ public: int rowCount(const QModelIndex &parent = QModelIndex()) const override { return items_.size(); } void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override; void setFilterStrings(const QMap &filters); + void showInactivemessages(bool show); void msgsReceived(const std::set *new_msgs, bool has_new_ids); - void filterAndSort(); + bool filterAndSort(); void dbcModified(); struct Item { MessageId id; QString name; QString node; + bool active; bool operator==(const Item &other) const { return id == other.id && name == other.name && node == other.node; } }; std::vector items_; + bool show_inactive_messages = true; private: void sortItems(std::vector &items); @@ -59,16 +61,20 @@ private: std::set dbc_messages_; int sort_column = 0; Qt::SortOrder sort_order = Qt::AscendingOrder; + int sort_threshold_ = 0; }; class MessageView : public QTreeView { Q_OBJECT public: MessageView(QWidget *parent) : QTreeView(parent) {} + void updateBytesSectionSize(); + +protected: void drawRow(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; void drawBranches(QPainter *painter, const QRect &rect, const QModelIndex &index) const override {} void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()) override; - void updateBytesSectionSize(); + void wheelEvent(QWheelEvent *event) override; }; class MessageViewHeader : public QHeaderView { @@ -96,9 +102,10 @@ public: signals: void msgSelectionChanged(const MessageId &message_id); + void titleChanged(const QString &title); protected: - QToolBar *createToolBar(); + QWidget *createToolBar(); void headerContextMenuEvent(const QPoint &pos); void menuAboutToShow(); void setMultiLineBytes(bool multi); @@ -111,6 +118,5 @@ protected: MessageListModel *model; QPushButton *suppress_add; QPushButton *suppress_clear; - QLabel *num_msg_label; QMenu *menu; }; diff --git a/tools/cabana/settings.cc b/tools/cabana/settings.cc index b63789a026..523cbf3be7 100644 --- a/tools/cabana/settings.cc +++ b/tools/cabana/settings.cc @@ -12,6 +12,9 @@ #include "tools/cabana/utils/util.h" +const int MIN_CACHE_MINIUTES = 30; +const int MAX_CACHE_MINIUTES = 120; + Settings settings; template @@ -72,7 +75,7 @@ SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent) { fps->setValue(settings.fps); form_layout->addRow(tr("Max Cached Minutes"), cached_minutes = new QSpinBox(this)); - cached_minutes->setRange(5, 60); + cached_minutes->setRange(MIN_CACHE_MINIUTES, MAX_CACHE_MINIUTES); cached_minutes->setSingleStep(1); cached_minutes->setValue(settings.max_cached_minutes); main_layout->addWidget(groupbox); diff --git a/tools/cabana/streams/abstractstream.cc b/tools/cabana/streams/abstractstream.cc index 8a20086b5c..540634b9b7 100644 --- a/tools/cabana/streams/abstractstream.cc +++ b/tools/cabana/streams/abstractstream.cc @@ -127,22 +127,33 @@ const CanData &AbstractStream::lastMessage(const MessageId &id) { // it is thread safe to update data in updateLastMsgsTo. // updateLastMsgsTo is always called in UI thread. void AbstractStream::updateLastMsgsTo(double sec) { - new_msgs_.clear(); - messages_.clear(); - current_sec_ = sec; uint64_t last_ts = (sec + routeStartTime()) * 1e9; + std::unordered_map msgs; + msgs.reserve(events_.size()); + for (const auto &[id, ev] : events_) { auto it = std::upper_bound(ev.begin(), ev.end(), last_ts, CompareCanEvent()); if (it != ev.begin()) { auto prev = std::prev(it); double ts = (*prev)->mono_time / 1e9 - routeStartTime(); - auto &m = messages_[id]; - m.compute(id, (*prev)->dat, (*prev)->size, ts, getSpeed(), {}); + auto &m = msgs[id]; + double freq = 0; + // Keep suppressed bits. + if (auto old_m = messages_.find(id); old_m != messages_.end()) { + freq = old_m->second.freq; + m.last_changes.reserve(old_m->second.last_changes.size()); + std::transform(old_m->second.last_changes.cbegin(), old_m->second.last_changes.cend(), + std::back_inserter(m.last_changes), + [](const auto &change) { return CanData::ByteLastChange{.suppressed = change.suppressed}; }); + } + m.compute(id, (*prev)->dat, (*prev)->size, ts, getSpeed(), {}, freq); m.count = std::distance(ev.begin(), prev) + 1; } } + new_msgs_.clear(); + messages_ = std::move(msgs); bool id_changed = messages_.size() != last_msgs.size() || std::any_of(messages_.cbegin(), messages_.cend(), [this](const auto &m) { return !last_msgs.count(m.first); }); @@ -164,6 +175,8 @@ const CanEvent *AbstractStream::newEvent(uint64_t mono_time, const cereal::CanDa void AbstractStream::mergeEvents(const std::vector &events) { static MessageEventsMap msg_events; std::for_each(msg_events.begin(), msg_events.end(), [](auto &e) { e.second.clear(); }); + + // Group events by message ID for (auto e : events) { msg_events[{.source = e->src, .address = e->address}].push_back(e); } @@ -183,8 +196,6 @@ void AbstractStream::mergeEvents(const std::vector &events) { lastest_event_ts = all_events_.empty() ? 0 : all_events_.back()->mono_time; } -// CanData - namespace { enum Color { GREYISH_BLUE, CYAN, RED}; @@ -202,7 +213,7 @@ inline QColor blend(const QColor &a, const QColor &b) { return QColor((a.red() + b.red()) / 2, (a.green() + b.green()) / 2, (a.blue() + b.blue()) / 2, (a.alpha() + b.alpha()) / 2); } -// Calculate the frequency of the past minute. +// Calculate the frequency from the past one minute data double calc_freq(const MessageId &msg_id, double current_sec) { const auto &events = can->events(msg_id); uint64_t cur_mono_time = (can->routeStartTime() + current_sec) * 1e9; @@ -250,11 +261,8 @@ void CanData::compute(const MessageId &msg_id, const uint8_t *can_data, const in if (last != cur) { const int delta = cur - last; // Keep track if signal is changing randomly, or mostly moving in the same direction - if (std::signbit(delta) == std::signbit(last_change.delta)) { - last_change.same_delta_counter = std::min(16, last_change.same_delta_counter + 1); - } else { - last_change.same_delta_counter = std::max(0, last_change.same_delta_counter - 4); - } + last_change.same_delta_counter += std::signbit(delta) == std::signbit(last_change.delta) ? 1 : -4; + last_change.same_delta_counter = std::clamp(last_change.same_delta_counter, 0, 16); const double delta_t = ts - last_change.ts; // Mostly moves in the same direction, color based on delta up/down @@ -267,10 +275,10 @@ void CanData::compute(const MessageId &msg_id, const uint8_t *can_data, const in } // Track bit level changes - const uint8_t tmp = (cur ^ last); + const uint8_t diff = (cur ^ last); for (int bit = 0; bit < 8; bit++) { - if (tmp & (1 << (7 - bit))) { - last_change.bit_change_counts[bit] += 1; + if (diff & (1u << bit)) { + ++last_change.bit_change_counts[7 - bit]; } } diff --git a/tools/cabana/streams/abstractstream.h b/tools/cabana/streams/abstractstream.h index 10ffcb184a..3d63ee49bd 100644 --- a/tools/cabana/streams/abstractstream.h +++ b/tools/cabana/streams/abstractstream.h @@ -13,6 +13,7 @@ #include "cereal/messaging/messaging.h" #include "tools/cabana/dbc/dbcmanager.h" #include "tools/cabana/utils/util.h" +#include "tools/replay/util.h" struct CanData { void compute(const MessageId &msg_id, const uint8_t *dat, const int size, double current_sec, @@ -89,6 +90,7 @@ public: signals: void paused(); void resume(); + void seekingTo(double sec); void seekedTo(double sec); void streamStarted(); void eventsMerged(const MessageEventsMap &events_map); @@ -106,6 +108,7 @@ protected: uint64_t lastEventMonoTime() const { return lastest_event_ts; } std::vector all_events_; + double current_sec_ = 0; uint64_t lastest_event_ts = 0; private: @@ -113,7 +116,6 @@ private: void updateLastMsgsTo(double sec); void updateMasks(); - double current_sec_ = 0; MessageEventsMap events_; std::unordered_map last_msgs; std::unique_ptr event_buffer_; diff --git a/tools/cabana/streams/pandastream.cc b/tools/cabana/streams/pandastream.cc index bea1fd7480..308391a10c 100644 --- a/tools/cabana/streams/pandastream.cc +++ b/tools/cabana/streams/pandastream.cc @@ -6,39 +6,12 @@ #include #include #include -#include -// TODO: remove clearLayout -static void clearLayout(QLayout* layout) { - while (layout->count() > 0) { - QLayoutItem* item = layout->takeAt(0); - if (QWidget* widget = item->widget()) { - widget->deleteLater(); - } - if (QLayout* childLayout = item->layout()) { - clearLayout(childLayout); - } - delete item; - } -} - -PandaStream::PandaStream(QObject *parent, PandaStreamConfig config_) : config(config_), LiveStream(parent) { - if (config.serial.isEmpty()) { - auto serials = Panda::list(); - if (serials.size() == 0) { - throw std::runtime_error("No panda found"); - } - config.serial = QString::fromStdString(serials[0]); - } - - qDebug() << "Connecting to panda with serial" << config.serial; - if (!connect()) { - throw std::runtime_error("Failed to connect to panda"); - } -} +PandaStream::PandaStream(QObject *parent, PandaStreamConfig config_) : config(config_), LiveStream(parent) {} bool PandaStream::connect() { try { + qDebug() << "Connecting to panda with serial" << config.serial; panda.reset(new Panda(config.serial.toStdString())); config.bus_config.resize(3); qDebug() << "Connected"; @@ -47,7 +20,6 @@ bool PandaStream::connect() { } panda->set_safety_model(cereal::CarParams::SafetyModel::SILENT); - for (int bus = 0; bus < config.bus_config.size(); bus++) { panda->set_can_speed_kbps(bus, config.bus_config[bus].can_speed_kbps); @@ -60,7 +32,6 @@ bool PandaStream::connect() { panda->set_data_speed_kbps(bus, 10); } } - } return true; } @@ -108,26 +79,14 @@ AbstractOpenStreamWidget *PandaStream::widget(AbstractStream **stream) { // OpenPandaWidget OpenPandaWidget::OpenPandaWidget(AbstractStream **stream) : AbstractOpenStreamWidget(stream) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - main_layout->addStretch(1); - - QFormLayout *form_layout = new QFormLayout(); - + form_layout = new QFormLayout(this); QHBoxLayout *serial_layout = new QHBoxLayout(); - serial_edit = new QComboBox(); - serial_edit->setFixedWidth(300); - serial_layout->addWidget(serial_edit); + serial_layout->addWidget(serial_edit = new QComboBox()); QPushButton *refresh = new QPushButton(tr("Refresh")); - refresh->setFixedWidth(100); + refresh->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred); serial_layout->addWidget(refresh); form_layout->addRow(tr("Serial"), serial_layout); - main_layout->addLayout(form_layout); - - config_layout = new QFormLayout(); - main_layout->addLayout(config_layout); - - main_layout->addStretch(1); QObject::connect(refresh, &QPushButton::clicked, this, &OpenPandaWidget::refreshSerials); QObject::connect(serial_edit, &QComboBox::currentTextChanged, this, &OpenPandaWidget::buildConfigForm); @@ -145,15 +104,16 @@ void OpenPandaWidget::refreshSerials() { } void OpenPandaWidget::buildConfigForm() { - clearLayout(config_layout); - QString serial = serial_edit->currentText(); + for (int i = form_layout->rowCount() - 1; i > 0; --i) { + form_layout->removeRow(i); + } + QString serial = serial_edit->currentText(); bool has_fd = false; bool has_panda = !serial.isEmpty(); - if (has_panda) { try { - Panda panda = Panda(serial.toStdString()); + Panda panda(serial.toStdString()); has_fd = (panda.hw_type == cereal::PandaState::PandaType::RED_PANDA) || (panda.hw_type == cereal::PandaState::PandaType::RED_PANDA_V2); } catch (const std::exception& e) { has_panda = false; @@ -201,20 +161,22 @@ void OpenPandaWidget::buildConfigForm() { QObject::connect(enable_fd, &QCheckBox::stateChanged, [=](int state) {config.bus_config[i].can_fd = (bool)state;}); } - config_layout->addRow(tr("Bus %1:").arg(i), bus_layout); + form_layout->addRow(tr("Bus %1:").arg(i), bus_layout); } } else { config.serial = ""; - config_layout->addWidget(new QLabel(tr("No panda found"))); + form_layout->addWidget(new QLabel(tr("No panda found"))); } } bool OpenPandaWidget::open() { - try { - *stream = new PandaStream(qApp, config); - } catch (std::exception &e) { - QMessageBox::warning(nullptr, tr("Warning"), tr("Failed to connect to panda: '%1'").arg(e.what())); - return false; + if (!config.serial.isEmpty()) { + auto panda_stream = std::make_unique(qApp, config); + if (panda_stream->connect()) { + *stream = panda_stream.release(); + return true; + } } - return true; + QMessageBox::warning(nullptr, tr("Warning"), tr("Failed to connect to panda")); + return false; } diff --git a/tools/cabana/streams/pandastream.h b/tools/cabana/streams/pandastream.h index 919156f400..ce0adfc9f8 100644 --- a/tools/cabana/streams/pandastream.h +++ b/tools/cabana/streams/pandastream.h @@ -21,6 +21,7 @@ class PandaStream : public LiveStream { Q_OBJECT public: PandaStream(QObject *parent, PandaStreamConfig config_ = {}); + bool connect(); static AbstractOpenStreamWidget *widget(AbstractStream **stream); inline QString routeName() const override { return QString("Live Streaming From Panda %1").arg(config.serial); @@ -28,7 +29,6 @@ public: protected: void streamThread() override; - bool connect(); std::unique_ptr panda; PandaStreamConfig config = {}; @@ -47,6 +47,6 @@ private: void buildConfigForm(); QComboBox *serial_edit; - QFormLayout *config_layout; + QFormLayout *form_layout; PandaStreamConfig config = {}; }; diff --git a/tools/cabana/streams/replaystream.cc b/tools/cabana/streams/replaystream.cc index aff0122b47..3c3e431ce7 100644 --- a/tools/cabana/streams/replaystream.cc +++ b/tools/cabana/streams/replaystream.cc @@ -7,6 +7,7 @@ #include #include "common/timing.h" +#include "tools/cabana/streams/routes.h" ReplayStream::ReplayStream(QObject *parent) : AbstractStream(parent) { unsetenv("ZMQ"); @@ -33,11 +34,12 @@ void ReplayStream::mergeSegments() { std::vector new_events; new_events.reserve(seg->log->events.size()); - for (auto it = seg->log->events.cbegin(); it != seg->log->events.cend(); ++it) { - if ((*it)->which == cereal::Event::Which::CAN) { - const uint64_t ts = (*it)->mono_time; - for (const auto &c : (*it)->event.getCan()) { - new_events.push_back(newEvent(ts, c)); + for (const Event &e : seg->log->events) { + if (e.which == cereal::Event::Which::CAN) { + capnp::FlatArrayMessageReader reader(e.data); + auto event = reader.getRoot(); + for (const auto &c : event.getCan()) { + new_events.push_back(newEvent(e.mono_time, c)); } } } @@ -66,7 +68,9 @@ bool ReplayStream::eventFilter(const Event *event) { static double prev_update_ts = 0; if (event->which == cereal::Event::Which::CAN) { double current_sec = event->mono_time / 1e9 - routeStartTime(); - for (const auto &c : event->event.getCan()) { + capnp::FlatArrayMessageReader reader(event->data); + auto e = reader.getRoot(); + for (const auto &c : e.getCan()) { MessageId id = {.source = c.getSrc(), .address = c.getAddress()}; const auto dat = c.getDat(); updateEvent(id, current_sec, (const uint8_t*)dat.begin(), dat.size()); @@ -81,6 +85,16 @@ bool ReplayStream::eventFilter(const Event *event) { return true; } +void ReplayStream::seekTo(double ts) { + // Update timestamp and notify receivers of the time change. + current_sec_ = ts; + std::set new_msgs; + msgsReceived(&new_msgs, false); + + // Seek to the specified timestamp + replay->seekTo(std::max(double(0), ts), false); +} + void ReplayStream::pause(bool pause) { replay->pause(pause); emit(pause ? paused() : resume()); @@ -94,29 +108,36 @@ AbstractOpenStreamWidget *ReplayStream::widget(AbstractStream **stream) { // OpenReplayWidget OpenReplayWidget::OpenReplayWidget(AbstractStream **stream) : AbstractOpenStreamWidget(stream) { - // TODO: get route list from api.comma.ai QGridLayout *grid_layout = new QGridLayout(this); grid_layout->addWidget(new QLabel(tr("Route")), 0, 0); grid_layout->addWidget(route_edit = new QLineEdit(this), 0, 1); - route_edit->setPlaceholderText(tr("Enter remote route name or click browse to select a local route")); - auto file_btn = new QPushButton(tr("Browse..."), this); - grid_layout->addWidget(file_btn, 0, 2); + route_edit->setPlaceholderText(tr("Enter route name or browse for local/remote route")); + auto browse_remote_btn = new QPushButton(tr("Remote route..."), this); + grid_layout->addWidget(browse_remote_btn, 0, 2); + auto browse_local_btn = new QPushButton(tr("Local route..."), this); + grid_layout->addWidget(browse_local_btn, 0, 3); - grid_layout->addWidget(new QLabel(tr("Camera")), 1, 0); QHBoxLayout *camera_layout = new QHBoxLayout(); for (auto c : {tr("Road camera"), tr("Driver camera"), tr("Wide road camera")}) camera_layout->addWidget(cameras.emplace_back(new QCheckBox(c, this))); + cameras[0]->setChecked(true); camera_layout->addStretch(1); grid_layout->addItem(camera_layout, 1, 1); setMinimumWidth(550); - QObject::connect(file_btn, &QPushButton::clicked, [=]() { + QObject::connect(browse_local_btn, &QPushButton::clicked, [=]() { QString dir = QFileDialog::getExistingDirectory(this, tr("Open Local Route"), settings.last_route_dir); if (!dir.isEmpty()) { route_edit->setText(dir); settings.last_route_dir = QFileInfo(dir).absolutePath(); } }); + QObject::connect(browse_remote_btn, &QPushButton::clicked, [this]() { + RoutesDialog route_dlg(this); + if (route_dlg.exec()) { + route_edit->setText(route_dlg.route()); + } + }); } bool OpenReplayWidget::open() { diff --git a/tools/cabana/streams/replaystream.h b/tools/cabana/streams/replaystream.h index b4e4be4db6..e3278d9a32 100644 --- a/tools/cabana/streams/replaystream.h +++ b/tools/cabana/streams/replaystream.h @@ -18,12 +18,12 @@ public: void start() override; bool loadRoute(const QString &route, const QString &data_dir, uint32_t replay_flags = REPLAY_FLAG_NONE); bool eventFilter(const Event *event); - void seekTo(double ts) override { replay->seekTo(std::max(double(0), ts), false); } + void seekTo(double ts) override; bool liveStreaming() const override { return false; } inline QString routeName() const override { return replay->route()->name(); } inline QString carFingerprint() const override { return replay->carFingerprint().c_str(); } double totalSeconds() const override { return replay->totalSeconds(); } - inline QDateTime beginDateTime() const { return replay->route()->datetime(); } + inline QDateTime beginDateTime() const { return replay->routeDateTime(); } inline double routeStartTime() const override { return replay->routeStartTime() / (double)1e9; } inline const Route *route() const { return replay->route(); } inline void setSpeed(float speed) override { replay->setSpeed(speed); } diff --git a/tools/cabana/streams/routes.cc b/tools/cabana/streams/routes.cc new file mode 100644 index 0000000000..c805e7d60d --- /dev/null +++ b/tools/cabana/streams/routes.cc @@ -0,0 +1,123 @@ +#include "tools/cabana/streams/routes.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "system/hardware/hw.h" + +// The RouteListWidget class extends QListWidget to display a custom message when empty +class RouteListWidget : public QListWidget { +public: + RouteListWidget(QWidget *parent = nullptr) : QListWidget(parent) {} + void setEmptyText(const QString &text) { + empty_text_ = text; + viewport()->update(); + } + void paintEvent(QPaintEvent *event) override { + QListWidget::paintEvent(event); + if (count() == 0) { + QPainter painter(viewport()); + painter.drawText(viewport()->rect(), Qt::AlignCenter, empty_text_); + } + } + QString empty_text_ = tr("No items"); +}; + +RoutesDialog::RoutesDialog(QWidget *parent) : QDialog(parent) { + setWindowTitle(tr("Remote routes")); + + QFormLayout *layout = new QFormLayout(this); + layout->addRow(tr("Device"), device_list_ = new QComboBox(this)); + layout->addRow(tr("Duration"), period_selector_ = new QComboBox(this)); + layout->addRow(route_list_ = new RouteListWidget(this)); + auto button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + layout->addRow(button_box); + + device_list_->addItem(tr("Loading...")); + // Populate period selector with predefined durations + period_selector_->addItem(tr("Last week"), 7); + period_selector_->addItem(tr("Last 2 weeks"), 14); + period_selector_->addItem(tr("Last month"), 30); + period_selector_->addItem(tr("Last 6 months"), 180); + + // Connect signals and slots + connect(device_list_, QOverload::of(&QComboBox::currentIndexChanged), this, &RoutesDialog::fetchRoutes); + connect(period_selector_, QOverload::of(&QComboBox::currentIndexChanged), this, &RoutesDialog::fetchRoutes); + connect(route_list_, &QListWidget::itemDoubleClicked, this, &QDialog::accept); + QObject::connect(button_box, &QDialogButtonBox::accepted, this, &QDialog::accept); + QObject::connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); + + // Send request to fetch devices + HttpRequest *http = new HttpRequest(this, !Hardware::PC()); + QObject::connect(http, &HttpRequest::requestDone, this, &RoutesDialog::parseDeviceList); + http->sendRequest(CommaApi::BASE_URL + "/v1/me/devices/"); +} + +void RoutesDialog::parseDeviceList(const QString &json, bool success, QNetworkReply::NetworkError err) { + if (success) { + device_list_->clear(); + auto devices = QJsonDocument::fromJson(json.toUtf8()).array(); + for (const QJsonValue &device : devices) { + QString dongle_id = device["dongle_id"].toString(); + device_list_->addItem(dongle_id, dongle_id); + } + } else { + bool unauthorized = (err == QNetworkReply::ContentAccessDenied || err == QNetworkReply::AuthenticationRequiredError); + QMessageBox::warning(this, tr("Error"), unauthorized ? tr("Unauthorized, Authenticate with tools/lib/auth.py") : tr("Network error")); + reject(); + } + sender()->deleteLater(); +} + +void RoutesDialog::fetchRoutes() { + if (device_list_->currentIndex() == -1 || device_list_->currentData().isNull()) + return; + + route_list_->clear(); + route_list_->setEmptyText(tr("Loading...")); + + HttpRequest *http = new HttpRequest(this, !Hardware::PC()); + QObject::connect(http, &HttpRequest::requestDone, this, &RoutesDialog::parseRouteList); + + // Construct URL with selected device and date range + auto dongle_id = device_list_->currentData().toString(); + QDateTime current = QDateTime::currentDateTime(); + QString url = QString("%1/v1/devices/%2/routes_segments?start=%3&end=%4") + .arg(CommaApi::BASE_URL).arg(dongle_id) + .arg(current.addDays(-(period_selector_->currentData().toInt())).toMSecsSinceEpoch()) + .arg(current.toMSecsSinceEpoch()); + http->sendRequest(url); +} + +void RoutesDialog::parseRouteList(const QString &json, bool success, QNetworkReply::NetworkError err) { + if (success) { + for (const QJsonValue &route : QJsonDocument::fromJson(json.toUtf8()).array()) { + uint64_t start_time = route["start_time_utc_millis"].toDouble(); + uint64_t end_time = route["end_time_utc_millis"].toDouble(); + auto datetime = QDateTime::fromMSecsSinceEpoch(start_time); + auto item = new QListWidgetItem(QString("%1 %2min").arg(datetime.toString()).arg((end_time - start_time) / (1000 * 60))); + item->setData(Qt::UserRole, route["fullname"].toString()); + route_list_->addItem(item); + } + // Select first route if available + if (route_list_->count() > 0) route_list_->setCurrentRow(0); + } else { + QMessageBox::warning(this, tr("Error"), tr("Failed to fetch routes. Check your network connection.")); + reject(); + } + route_list_->setEmptyText(tr("No items")); + sender()->deleteLater(); +} + +void RoutesDialog::accept() { + if (auto current_item = route_list_->currentItem()) { + route_ = current_item->data(Qt::UserRole).toString(); + } + QDialog::accept(); +} diff --git a/tools/cabana/streams/routes.h b/tools/cabana/streams/routes.h new file mode 100644 index 0000000000..31e42fb075 --- /dev/null +++ b/tools/cabana/streams/routes.h @@ -0,0 +1,26 @@ +#pragma once + +#include +#include + +#include "selfdrive/ui/qt/api.h" + +class RouteListWidget; + +class RoutesDialog : public QDialog { + Q_OBJECT +public: + RoutesDialog(QWidget *parent); + QString route() const { return route_; } + +protected: + void accept() override; + void parseDeviceList(const QString &json, bool success, QNetworkReply::NetworkError err); + void parseRouteList(const QString &json, bool success, QNetworkReply::NetworkError err); + void fetchRoutes(); + + QComboBox *device_list_; + QComboBox *period_selector_; + RouteListWidget *route_list_; + QString route_; +}; diff --git a/tools/cabana/streamselector.cc b/tools/cabana/streamselector.cc index 07755c0fe0..d12f1a5df7 100644 --- a/tools/cabana/streamselector.cc +++ b/tools/cabana/streamselector.cc @@ -13,12 +13,8 @@ StreamSelector::StreamSelector(AbstractStream **stream, QWidget *parent) : QDialog(parent) { setWindowTitle(tr("Open stream")); - QVBoxLayout *main_layout = new QVBoxLayout(this); - - QWidget *w = new QWidget(this); - QVBoxLayout *layout = new QVBoxLayout(w); + QVBoxLayout *layout = new QVBoxLayout(this); tab = new QTabWidget(this); - tab->setTabBarAutoHide(true); layout->addWidget(tab); QHBoxLayout *dbc_layout = new QHBoxLayout(); @@ -35,9 +31,8 @@ StreamSelector::StreamSelector(AbstractStream **stream, QWidget *parent) : QDial line->setFrameStyle(QFrame::HLine | QFrame::Sunken); layout->addWidget(line); - main_layout->addWidget(w); auto btn_box = new QDialogButtonBox(QDialogButtonBox::Open | QDialogButtonBox::Cancel); - main_layout->addWidget(btn_box); + layout->addWidget(btn_box); addStreamWidget(ReplayStream::widget(stream)); addStreamWidget(PandaStream::widget(stream)); @@ -48,14 +43,11 @@ StreamSelector::StreamSelector(AbstractStream **stream, QWidget *parent) : QDial QObject::connect(btn_box, &QDialogButtonBox::rejected, this, &QDialog::reject); QObject::connect(btn_box, &QDialogButtonBox::accepted, [=]() { - btn_box->button(QDialogButtonBox::Open)->setEnabled(false); - w->setEnabled(false); + setEnabled(false); if (((AbstractOpenStreamWidget *)tab->currentWidget())->open()) { accept(); - } else { - btn_box->button(QDialogButtonBox::Open)->setEnabled(true); - w->setEnabled(true); } + setEnabled(true); }); QObject::connect(file_btn, &QPushButton::clicked, [this]() { QString fn = QFileDialog::getOpenFileName(this, tr("Open File"), settings.last_dir, "DBC (*.dbc)"); diff --git a/tools/cabana/tests/test_cabana.cc b/tools/cabana/tests/test_cabana.cc index bf7550be0b..d9fcae6f21 100644 --- a/tools/cabana/tests/test_cabana.cc +++ b/tools/cabana/tests/test_cabana.cc @@ -28,6 +28,54 @@ TEST_CASE("DBCFile::generateDBC") { } } +TEST_CASE("DBCFile::generateDBC - comment order") { + // Ensure that message comments are followed by signal comments and in the correct order + auto content = R"(BO_ 160 message_1: 8 EON + SG_ signal_1 : 0|12@1+ (1,0) [0|4095] "unit" XXX + +BO_ 162 message_2: 8 EON + SG_ signal_2 : 0|12@1+ (1,0) [0|4095] "unit" XXX + +CM_ BO_ 160 "message comment"; +CM_ SG_ 160 signal_1 "signal comment"; +CM_ BO_ 162 "message comment"; +CM_ SG_ 162 signal_2 "signal comment"; +)"; + DBCFile dbc("", content); + REQUIRE(dbc.generateDBC() == content); +} + +TEST_CASE("DBCFile::generateDBC -- preserve original header") { + QString content = R"(VERSION "1.0" + +NS_ : + CM_ + +BS_: + +BU_: EON + +BO_ 160 message_1: 8 EON + SG_ signal_1 : 0|12@1+ (1,0) [0|4095] "unit" XXX + +CM_ BO_ 160 "message comment"; +CM_ SG_ 160 signal_1 "signal comment"; +)"; + DBCFile dbc("", content); + REQUIRE(dbc.generateDBC() == content); +} + +TEST_CASE("DBCFile::generateDBC - escaped quotes") { + QString content = R"(BO_ 160 message_1: 8 EON + SG_ signal_1 : 0|12@1+ (1,0) [0|4095] "unit" XXX + +CM_ BO_ 160 "message comment with \"escaped quotes\""; +CM_ SG_ 160 signal_1 "signal comment with \"escaped quotes\""; +)"; + DBCFile dbc("", content); + REQUIRE(dbc.generateDBC() == content); +} + TEST_CASE("parse_dbc") { QString content = R"( BO_ 160 message_1: 8 EON @@ -45,7 +93,11 @@ CM_ SG_ 160 signal_1 "signal comment"; CM_ SG_ 160 signal_2 "multiple line comment 1 2 -";)"; +"; + +CM_ BO_ 162 "message comment with \"escaped quotes\""; +CM_ SG_ 162 signal_1 "signal comment with \"escaped quotes\""; +)"; DBCFile file("", content); auto msg = file.msg(160); @@ -84,6 +136,10 @@ CM_ SG_ 160 signal_2 "multiple line comment REQUIRE(msg->sigs[1]->start_bit == 12); REQUIRE(msg->sigs[1]->size == 1); REQUIRE(msg->sigs[1]->receiver_name == "XXX"); + + // escaped quotes + REQUIRE(msg->comment == "message comment with \"escaped quotes\""); + REQUIRE(msg->sigs[0]->comment == "signal comment with \"escaped quotes\""); } TEST_CASE("parse_opendbc") { diff --git a/tools/cabana/utils/util.cc b/tools/cabana/utils/util.cc index c89e39993b..4556f90850 100644 --- a/tools/cabana/utils/util.cc +++ b/tools/cabana/utils/util.cc @@ -51,7 +51,8 @@ std::pair SegmentTree::get_minmax(int n, int left, int right, in // MessageBytesDelegate -MessageBytesDelegate::MessageBytesDelegate(QObject *parent, bool multiple_lines) : multiple_lines(multiple_lines), QStyledItemDelegate(parent) { +MessageBytesDelegate::MessageBytesDelegate(QObject *parent, bool multiple_lines) + : font_metrics(QApplication::font()), multiple_lines(multiple_lines), QStyledItemDelegate(parent) { fixed_font = QFontDatabase::systemFont(QFontDatabase::FixedFont); byte_size = QFontMetrics(fixed_font).size(Qt::TextSingleLine, "00 ") + QSize(0, 2); for (int i = 0; i < 256; ++i) { @@ -73,38 +74,49 @@ QSize MessageBytesDelegate::sizeHint(const QStyleOptionViewItem &option, const Q } void MessageBytesDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { - auto data = index.data(BytesRole); - if (!data.isValid()) { - return QStyledItemDelegate::paint(painter, option, index); - } - - QFont old_font = painter->font(); - QPen old_pen = painter->pen(); if (option.state & QStyle::State_Selected) { painter->fillRect(option.rect, option.palette.brush(QPalette::Normal, QPalette::Highlight)); } - const QPoint pt{option.rect.left() + h_margin, option.rect.top() + v_margin}; - painter->setFont(fixed_font); - const auto &bytes = *static_cast*>(data.value()); - const auto &colors = *static_cast*>(index.data(ColorsRole).value()); + QRect item_rect = option.rect.adjusted(h_margin, v_margin, -h_margin, -v_margin); + QColor highlighted_color = option.palette.color(QPalette::HighlightedText); + auto text_color = index.data(Qt::ForegroundRole).value(); + bool inactive = text_color.isValid(); + if (!inactive) { + text_color = option.palette.color(QPalette::Text); + } + auto data = index.data(BytesRole); + if (!data.isValid()) { + painter->setFont(option.font); + painter->setPen(option.state & QStyle::State_Selected ? highlighted_color : text_color); + QString text = font_metrics.elidedText(index.data(Qt::DisplayRole).toString(), Qt::ElideRight, item_rect.width()); + painter->drawText(item_rect, Qt::AlignLeft | Qt::AlignVCenter, text); + return; + } + + // Paint hex column + const auto &bytes = *static_cast *>(data.value()); + const auto &colors = *static_cast *>(index.data(ColorsRole).value()); + + painter->setFont(fixed_font); + const QPen text_pen(option.state & QStyle::State_Selected ? highlighted_color : text_color); + const QPoint pt = item_rect.topLeft(); for (int i = 0; i < bytes.size(); ++i) { int row = !multiple_lines ? 0 : i / 8; int column = !multiple_lines ? i : i % 8; - QRect r = QRect({pt.x() + column * byte_size.width(), pt.y() + row * byte_size.height()}, byte_size); - if (i < colors.size() && colors[i].alpha() > 0) { + QRect r({pt.x() + column * byte_size.width(), pt.y() + row * byte_size.height()}, byte_size); + + if (!inactive && i < colors.size() && colors[i].alpha() > 0) { if (option.state & QStyle::State_Selected) { painter->setPen(option.palette.color(QPalette::Text)); painter->fillRect(r, option.palette.color(QPalette::Window)); } painter->fillRect(r, colors[i]); - } else if (option.state & QStyle::State_Selected) { - painter->setPen(option.palette.color(QPalette::HighlightedText)); + } else { + painter->setPen(text_pen); } utils::drawStaticText(painter, r, hex_text_table[bytes[i]]); } - painter->setFont(old_font); - painter->setPen(old_pen); } // TabBar @@ -257,26 +269,3 @@ QString signalToolTip(const cabana::Signal *sig) { )").arg(sig->name).arg(sig->start_bit).arg(sig->size).arg(sig->msb).arg(sig->lsb) .arg(sig->is_little_endian ? "Y" : "N").arg(sig->is_signed ? "Y" : "N"); } - -// MonotonicBuffer - -void *MonotonicBuffer::allocate(size_t bytes, size_t alignment) { - assert(bytes > 0); - void *p = std::align(alignment, bytes, current_buf, available); - if (p == nullptr) { - available = next_buffer_size = std::max(next_buffer_size, bytes); - current_buf = buffers.emplace_back(std::aligned_alloc(alignment, next_buffer_size)); - next_buffer_size *= growth_factor; - p = current_buf; - } - - current_buf = (char *)current_buf + bytes; - available -= bytes; - return p; -} - -MonotonicBuffer::~MonotonicBuffer() { - for (auto buf : buffers) { - free(buf); - } -} diff --git a/tools/cabana/utils/util.h b/tools/cabana/utils/util.h index 158321f784..0ebd7e41f8 100644 --- a/tools/cabana/utils/util.h +++ b/tools/cabana/utils/util.h @@ -2,7 +2,6 @@ #include #include -#include #include #include @@ -10,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -77,6 +77,7 @@ public: private: std::array hex_text_table; + QFontMetrics font_metrics; QFont fixed_font; QSize byte_size = {}; bool multiple_lines = false; @@ -160,20 +161,5 @@ private: QSocketNotifier *sn; }; -class MonotonicBuffer { -public: - MonotonicBuffer(size_t initial_size) : next_buffer_size(initial_size) {} - ~MonotonicBuffer(); - void *allocate(size_t bytes, size_t alignment = 16ul); - void deallocate(void *p) {} - -private: - void *current_buf = nullptr; - size_t next_buffer_size = 0; - size_t available = 0; - std::deque buffers; - static constexpr float growth_factor = 1.5; -}; - int num_decimals(double num); QString signalToolTip(const cabana::Signal *sig); diff --git a/tools/cabana/videowidget.cc b/tools/cabana/videowidget.cc index a6fd0b2b64..cd412f7271 100644 --- a/tools/cabana/videowidget.cc +++ b/tools/cabana/videowidget.cc @@ -151,6 +151,7 @@ QWidget *VideoWidget::createCameraWidget() { setMaximumTime(can->totalSeconds()); QObject::connect(slider, &QSlider::sliderReleased, [this]() { can->seekTo(slider->currentSecond()); }); QObject::connect(slider, &Slider::updateMaximumTime, this, &VideoWidget::setMaximumTime, Qt::QueuedConnection); + QObject::connect(can, &AbstractStream::eventsMerged, [this]() { slider->update(); }); QObject::connect(static_cast(can), &ReplayStream::qLogLoaded, slider, &Slider::parseQLog); QObject::connect(cam_widget, &CameraWidget::clicked, []() { can->pause(!can->isPaused()); }); QObject::connect(cam_widget, &CameraWidget::vipcAvailableStreamsUpdated, this, &VideoWidget::vipcAvailableStreamsUpdated); @@ -257,25 +258,27 @@ void Slider::setTimeRange(double min, double max) { void Slider::parseQLog(int segnum, std::shared_ptr qlog) { const auto &segments = qobject_cast(can)->route()->segments(); if (segments.size() > 0 && segnum == segments.rbegin()->first && !qlog->events.empty()) { - emit updateMaximumTime(qlog->events.back()->mono_time / 1e9 - can->routeStartTime()); + emit updateMaximumTime(qlog->events.back().mono_time / 1e9 - can->routeStartTime()); } std::mutex mutex; - QtConcurrent::blockingMap(qlog->events.cbegin(), qlog->events.cend(), [&mutex, this](const Event *e) { - if (e->which == cereal::Event::Which::THUMBNAIL) { - auto thumb = e->event.getThumbnail(); + QtConcurrent::blockingMap(qlog->events.cbegin(), qlog->events.cend(), [&mutex, this](const Event &e) { + if (e.which == cereal::Event::Which::THUMBNAIL) { + capnp::FlatArrayMessageReader reader(e.data); + auto thumb = reader.getRoot().getThumbnail(); auto data = thumb.getThumbnail(); if (QPixmap pm; pm.loadFromData(data.begin(), data.size(), "jpeg")) { QPixmap scaled = pm.scaledToHeight(MIN_VIDEO_HEIGHT - THUMBNAIL_MARGIN * 2, Qt::SmoothTransformation); std::lock_guard lk(mutex); thumbnails[thumb.getTimestampEof()] = scaled; } - } else if (e->which == cereal::Event::Which::CONTROLS_STATE) { - auto cs = e->event.getControlsState(); + } else if (e.which == cereal::Event::Which::CONTROLS_STATE) { + capnp::FlatArrayMessageReader reader(e.data); + auto cs = reader.getRoot().getControlsState(); if (cs.getAlertType().size() > 0 && cs.getAlertText1().size() > 0 && cs.getAlertSize() != cereal::ControlsState::AlertSize::NONE) { std::lock_guard lk(mutex); - alerts.emplace(e->mono_time, AlertInfo{cs.getAlertStatus(), cs.getAlertText1().cStr(), cs.getAlertText2().cStr()}); + alerts.emplace(e.mono_time, AlertInfo{cs.getAlertStatus(), cs.getAlertText1().cStr(), cs.getAlertText2().cStr()}); } } }); @@ -403,7 +406,7 @@ void InfoLabel::paintEvent(QPaintEvent *event) { font.setPixelSize(11); p.setFont(font); } - QRect text_rect = rect().adjusted(2, 2, -2, -2); + QRect text_rect = rect().adjusted(1, 1, -1, -1); QRect r = p.fontMetrics().boundingRect(text_rect, Qt::AlignTop | Qt::AlignHCenter | Qt::TextWordWrap, text); p.fillRect(text_rect.left(), r.top(), text_rect.width(), r.height(), color); p.drawText(text_rect, Qt::AlignTop | Qt::AlignHCenter | Qt::TextWordWrap, text); diff --git a/tools/camerastream/compressed_vipc.py b/tools/camerastream/compressed_vipc.py index f4b8862a84..df9de096f0 100755 --- a/tools/camerastream/compressed_vipc.py +++ b/tools/camerastream/compressed_vipc.py @@ -25,7 +25,7 @@ ENCODE_SOCKETS = { def decoder(addr, vipc_server, vst, nvidia, W, H, debug=False): sock_name = ENCODE_SOCKETS[vst] if debug: - print("start decoder for %s" % sock_name) + print(f"start decoder for {sock_name}, {W}x{H}") if nvidia: os.environ["NV_LOW_LATENCY"] = "3" # both bLowLatency and CUVID_PKT_ENDOFPICTURE @@ -124,7 +124,7 @@ class CompressedVipc: self.procs = [] for vst in vision_streams: ed = sm[ENCODE_SOCKETS[vst]] - p = multiprocessing.Process(target=decoder, args=(addr, self.vipc_server, vst, nvidia, debug, ed.width, ed.height)) + p = multiprocessing.Process(target=decoder, args=(addr, self.vipc_server, vst, nvidia, ed.width, ed.height, debug)) p.start() self.procs.append(p) diff --git a/tools/car_porting/README.md b/tools/car_porting/README.md index 8db17b0976..a32e9f96c9 100644 --- a/tools/car_porting/README.md +++ b/tools/car_porting/README.md @@ -21,8 +21,8 @@ Given a route and platform, automatically inserts FW fingerprints from the platf Example: ```bash -> python tools/car_porting/auto_fingerprint.py '1bbe6bf2d62f58a8|2022-07-14--17-11-43' 'SUBARU OUTBACK 6TH GEN' -Attempting to add fw version for: SUBARU OUTBACK 6TH GEN +> python tools/car_porting/auto_fingerprint.py '1bbe6bf2d62f58a8|2022-07-14--17-11-43' 'OUTBACK' +Attempting to add fw version for: OUTBACK ``` ### [selfdrive/car/tests/test_car_interfaces.py](/selfdrive/car/tests/test_car_interfaces.py) diff --git a/tools/car_porting/auto_fingerprint.py b/tools/car_porting/auto_fingerprint.py index f122c2774e..145f38c63f 100755 --- a/tools/car_porting/auto_fingerprint.py +++ b/tools/car_porting/auto_fingerprint.py @@ -4,67 +4,37 @@ import argparse from collections import defaultdict from openpilot.selfdrive.debug.format_fingerprints import format_brand_fw_versions -from openpilot.selfdrive.car.fw_versions import match_fw_to_car -from openpilot.selfdrive.car.interfaces import get_interface_attr +from openpilot.selfdrive.car.fingerprints import MIGRATION +from openpilot.selfdrive.car.fw_versions import MODEL_TO_BRAND, match_fw_to_car from openpilot.tools.lib.logreader import LogReader, ReadMode - -ALL_FW_VERSIONS = get_interface_attr("FW_VERSIONS") -ALL_CARS = get_interface_attr("CAR") - -PLATFORM_TO_PYTHON_CAR_NAME = {brand: {car.value: car.name for car in ALL_CARS[brand]} for brand in ALL_CARS} -BRAND_TO_PLATFORMS = {brand: [car.value for car in ALL_CARS[brand]] for brand in ALL_CARS} -PLATFORM_TO_BRAND = dict(sum([[(platform, brand) for platform in BRAND_TO_PLATFORMS[brand]] for brand in BRAND_TO_PLATFORMS], [])) - - if __name__ == "__main__": parser = argparse.ArgumentParser(description="Auto fingerprint from a route") parser.add_argument("route", help="The route name to use") - parser.add_argument("platform", help="The platform, or leave empty to auto-determine using fuzzy", default=None, nargs='?') + parser.add_argument("platform", help="The platform, or leave empty to auto-determine using fuzzy", default=None, nargs="?") args = parser.parse_args() lr = LogReader(args.route, ReadMode.QLOG) - - carFw = None - carVin = None - carPlatform = None - - platform: str | None = None - CP = lr.first("carParams") + assert CP is not None, "No carParams in route" - if CP is None: - raise Exception("No fw versions in the provided route...") + carPlatform = MIGRATION.get(CP.carFingerprint, CP.carFingerprint) - carFw = CP.carFw - carVin = CP.carVin - carPlatform = CP.carFingerprint - - if args.platform is None: # attempt to auto-determine platform with other fuzzy fingerprints - _, possible_platforms = match_fw_to_car(carFw, log=False) - - if len(possible_platforms) != 1: - print(f"Unable to auto-determine platform, possible platforms: {possible_platforms}") - - if carPlatform != "mock": - print("Using platform from route") - platform = carPlatform - else: - platform = None - else: - platform = list(possible_platforms)[0] - else: + if args.platform is not None: platform = args.platform + elif carPlatform != "MOCK": + platform = carPlatform + else: + _, matches = match_fw_to_car(CP.carFw, CP.carVin, log=False) + assert len(matches) == 1, f"Unable to auto-determine platform, matches: {matches}" + platform = list(matches)[0] - if platform is None: - raise Exception("unable to determine platform, try manually specifying the fingerprint.") - - print("Attempting to add fw version for: ", platform) + print("Attempting to add fw version for:", platform) fw_versions: dict[str, dict[tuple, list[bytes]]] = defaultdict(lambda: defaultdict(list)) - brand = PLATFORM_TO_BRAND[platform] + brand = MODEL_TO_BRAND[platform] - for fw in carFw: + for fw in CP.carFw: if fw.brand == brand and not fw.logging: addr = fw.address subAddr = None if fw.subAddress == 0 else fw.subAddress diff --git a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb index fbd88a769e..1048011c05 100644 --- a/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb +++ b/tools/car_porting/examples/subaru_fuzzy_fingerprint.ipynb @@ -2,15 +2,23 @@ "cells": [ { "cell_type": "code", - "execution_count": 148, + "execution_count": null, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "kj/filesystem-disk-unix.c++:1703: warning: PWD environment variable doesn't match current directory; pwd = /home/batman\n" + ] + } + ], "source": [ "from cereal import car\n", - "from openpilot.selfdrive.car.subaru.values import CAR, PREGLOBAL_CARS\n", + "from openpilot.selfdrive.car.subaru.values import CAR, SubaruFlags\n", "from openpilot.selfdrive.car.subaru.fingerprints import FW_VERSIONS\n", "\n", - "TEST_PLATFORMS = set(c.value for c in CAR) - PREGLOBAL_CARS # preglobal cars seem to have a different format for fingerprints, ignore for now\n", + "TEST_PLATFORMS = set(CAR) - CAR.with_flags(SubaruFlags.PREGLOBAL)\n", "\n", "Ecu = car.CarParams.Ecu\n", "\n", @@ -19,33 +27,18 @@ }, { "cell_type": "code", - "execution_count": 149, - "metadata": {}, - "outputs": [], - "source": [ - "from openpilot.selfdrive.car.subaru.values import CAR_INFO\n", - "\n", - "def get_carinfo(model: CAR):\n", - " c = CAR_INFO[model]\n", - " if isinstance(c, list):\n", - " c = c[0]\n", - " return c" - ] - }, - { - "cell_type": "code", - "execution_count": 150, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ "PLATFORM_CODES = {\n", " Ecu.abs: {\n", " 0: {\n", - " b'\\xa5': [CAR.ASCENT, CAR.ASCENT_2023],\n", - " b'\\xa2': [CAR.IMPREZA, CAR.IMPREZA_2020, CAR.CROSSTREK_HYBRID],\n", - " b'\\xa1': [CAR.OUTBACK, CAR.LEGACY, CAR.OUTBACK_2023],\n", - " b'\\xa3': [CAR.FORESTER, CAR.FORESTER_HYBRID, CAR.FORESTER_2022],\n", - " b'z': [CAR.IMPREZA],\n", + " b'\\xa5': [CAR.SUBARU_ASCENT, CAR.SUBARU_ASCENT_2023],\n", + " b'\\xa2': [CAR.SUBARU_IMPREZA, CAR.SUBARU_IMPREZA_2020, CAR.SUBARU_CROSSTREK_HYBRID],\n", + " b'\\xa1': [CAR.SUBARU_OUTBACK, CAR.SUBARU_LEGACY, CAR.SUBARU_OUTBACK_2023],\n", + " b'\\xa3': [CAR.SUBARU_FORESTER, CAR.SUBARU_FORESTER_HYBRID, CAR.SUBARU_FORESTER_2022],\n", + " b'z': [CAR.SUBARU_IMPREZA],\n", " }\n", " }\n", "}\n", @@ -66,7 +59,7 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -90,7 +83,7 @@ }, { "cell_type": "code", - "execution_count": 152, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -103,56 +96,60 @@ "SUBARU IMPREZA LIMITED 2019 0c not in dict_keys([b'\\x18', b'\\x19', b' ', b'!', b'\"', b'#'])\n", "SUBARU IMPREZA LIMITED 2019 2e not in dict_keys([b'\\x18', b'\\x19', b' ', b'!', b'\"', b'#'])\n", "SUBARU IMPREZA LIMITED 2019 3f not in dict_keys([b'\\x18', b'\\x19', b' ', b'!', b'\"', b'#'])\n", - "correct_year=True platform=SUBARU ASCENT LIMITED 2019 year=2019 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU ASCENT LIMITED 2019 year=2021 years=[2019, 2020, 2021]\n", - "correct_year=False platform=SUBARU IMPREZA SPORT 2020 year=2019 years=[2020, 2021, 2022]\n", - "correct_year=False platform=SUBARU IMPREZA SPORT 2020 year=2019 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", - "correct_year=False platform=SUBARU FORESTER 2019 year=2018 years=[2019, 2020, 2021]\n", - "correct_year=False platform=SUBARU FORESTER 2019 year=2018 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU FORESTER 2019 year=2019 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU FORESTER 2019 year=2019 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU FORESTER 2019 year=2020 years=[2019, 2020, 2021]\n", - "correct_year=True platform=SUBARU FORESTER 2019 year=2020 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU OUTBACK 7TH GEN year=2023 years=[2023]\n", + "correct_year=True platform=SUBARU OUTBACK 7TH GEN year=2023 years=[2023]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2022 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2022 years=[2020, 2021, 2022]\n", + "correct_year=False platform=SUBARU CROSSTREK HYBRID 2020 year=2019 years=[2020]\n", + "correct_year=False platform=SUBARU CROSSTREK HYBRID 2020 year=2021 years=[2020]\n", + "correct_year=False platform=SUBARU FORESTER HYBRID 2020 year=2019 years=[2020]\n", + "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2018 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", "correct_year=True platform=SUBARU IMPREZA LIMITED 2019 year=2019 years=[2017, 2018, 2019]\n", - "correct_year=True platform=SUBARU OUTBACK 7TH GEN year=2023 years=[2023]\n", - "correct_year=True platform=SUBARU OUTBACK 7TH GEN year=2023 years=[2023]\n", - "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU LEGACY 7TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=False platform=SUBARU FORESTER 2022 year=2021 years=[2022, 2023]\n", - "correct_year=False platform=SUBARU FORESTER 2022 year=2021 years=[2022, 2023]\n", - "correct_year=True platform=SUBARU FORESTER 2022 year=2022 years=[2022, 2023]\n", - "correct_year=True platform=SUBARU FORESTER 2022 year=2022 years=[2022, 2023]\n", - "correct_year=False platform=SUBARU CROSSTREK HYBRID 2020 year=2019 years=[2020]\n", - "correct_year=False platform=SUBARU CROSSTREK HYBRID 2020 year=2021 years=[2020]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2020 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2022 years=[2020, 2021, 2022]\n", - "correct_year=True platform=SUBARU OUTBACK 6TH GEN year=2022 years=[2020, 2021, 2022]\n", + "correct_year=False platform=SUBARU FORESTER 2022 year=2021 years=[2022, 2023, 2024]\n", + "correct_year=False platform=SUBARU FORESTER 2022 year=2021 years=[2022, 2023, 2024]\n", + "correct_year=True platform=SUBARU FORESTER 2022 year=2022 years=[2022, 2023, 2024]\n", + "correct_year=True platform=SUBARU FORESTER 2022 year=2022 years=[2022, 2023, 2024]\n", + "correct_year=False platform=SUBARU IMPREZA SPORT 2020 year=2019 years=[2020, 2021, 2022]\n", + "correct_year=False platform=SUBARU IMPREZA SPORT 2020 year=2019 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2020 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", + "correct_year=True platform=SUBARU IMPREZA SPORT 2020 year=2021 years=[2020, 2021, 2022]\n", "correct_year=True platform=SUBARU ASCENT 2023 year=2023 years=[2023]\n", - "correct_year=False platform=SUBARU FORESTER HYBRID 2020 year=2019 years=[2020]\n" + "correct_year=True platform=SUBARU ASCENT LIMITED 2019 year=2019 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU ASCENT LIMITED 2019 year=2021 years=[2019, 2020, 2021]\n", + "correct_year=False platform=SUBARU FORESTER 2019 year=2018 years=[2019, 2020, 2021]\n", + "correct_year=False platform=SUBARU FORESTER 2019 year=2018 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU FORESTER 2019 year=2019 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU FORESTER 2019 year=2019 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU FORESTER 2019 year=2020 years=[2019, 2020, 2021]\n", + "correct_year=True platform=SUBARU FORESTER 2019 year=2020 years=[2019, 2020, 2021]\n" ] } ], "source": [ "def test_year_code(platform, year):\n", - " years = [int(y) for y in get_carinfo(platform).year_list]\n", + " car_docs = CAR(platform).config.car_docs\n", + " if isinstance(car_docs, list):\n", + " car_docs = car_docs[0]\n", + " years = [int(y) for y in car_docs.year_list]\n", " correct_year = year in years\n", " print(f\"{correct_year=!s: <6} {platform=: <32} {year=: <5} {years=}\")\n", "\n", @@ -163,63 +160,64 @@ }, { "cell_type": "code", - "execution_count": 153, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "in_possible_platforms=True platform=SUBARU ASCENT LIMITED 2019 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", - "in_possible_platforms=True platform=SUBARU ASCENT LIMITED 2019 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", "in_possible_platforms=True platform=SUBARU OUTBACK 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", "in_possible_platforms=True platform=SUBARU OUTBACK 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", - "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", "in_possible_platforms=True platform=SUBARU CROSSTREK HYBRID 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", "in_possible_platforms=True platform=SUBARU CROSSTREK HYBRID 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", - "in_possible_platforms=True platform=SUBARU OUTBACK 6TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU FORESTER HYBRID 2020 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU LEGACY 7TH GEN platforms=['SUBARU OUTBACK 6TH GEN', 'SUBARU LEGACY 7TH GEN', 'SUBARU OUTBACK 7TH GEN']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA LIMITED 2019 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2022 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", + "in_possible_platforms=True platform=SUBARU IMPREZA SPORT 2020 platforms=['SUBARU IMPREZA LIMITED 2019', 'SUBARU IMPREZA SPORT 2020', 'SUBARU CROSSTREK HYBRID 2020']\n", "in_possible_platforms=True platform=SUBARU ASCENT 2023 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", - "in_possible_platforms=True platform=SUBARU FORESTER HYBRID 2020 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n" + "in_possible_platforms=True platform=SUBARU ASCENT LIMITED 2019 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", + "in_possible_platforms=True platform=SUBARU ASCENT LIMITED 2019 platforms=['SUBARU ASCENT LIMITED 2019', 'SUBARU ASCENT 2023']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n", + "in_possible_platforms=True platform=SUBARU FORESTER 2019 platforms=['SUBARU FORESTER 2019', 'SUBARU FORESTER HYBRID 2020', 'SUBARU FORESTER 2022']\n" ] } ], diff --git a/tools/car_porting/examples/subaru_long_accel.ipynb b/tools/car_porting/examples/subaru_long_accel.ipynb index 24470b44d2..9d18a114df 100644 --- a/tools/car_porting/examples/subaru_long_accel.ipynb +++ b/tools/car_porting/examples/subaru_long_accel.ipynb @@ -9,7 +9,7 @@ "segments = [\n", " \"d9df6f87e8feff94|2023-03-28--17-41-10/1:12\"\n", "]\n", - "platform = \"SUBARU OUTBACK 6TH GEN\"\n" + "platform = \"SUBARU_OUTBACK\"\n" ] }, { @@ -56,7 +56,7 @@ " es_status_history.append(copy.copy(cp.vl[\"ES_Status\"]))\n", "\n", " acceleration_history.append(last_acc)\n", - " \n", + "\n", " if msg.which() == \"carState\":\n", " last_acc = msg.carState.aEgo" ] diff --git a/tools/car_porting/examples/subaru_steer_temp_fault.ipynb b/tools/car_porting/examples/subaru_steer_temp_fault.ipynb index 46d8dc413e..3d5055cbc2 100644 --- a/tools/car_porting/examples/subaru_steer_temp_fault.ipynb +++ b/tools/car_porting/examples/subaru_steer_temp_fault.ipynb @@ -11,7 +11,7 @@ "segments = [\n", " \"c3d1ccb52f5f9d65|2023-07-22--01-23-20/6:10\",\n", "]\n", - "platform = \"SUBARU OUTBACK 6TH GEN\"" + "platform = \"SUBARU_OUTBACK\"" ] }, { @@ -52,7 +52,7 @@ " for msg in can_msgs:\n", " cp.update_strings([msg.as_builder().to_bytes()])\n", " steering_torque_history.append(copy.copy(cp.vl[\"Steering_Torque\"]))\n", - " \n", + "\n", " steer_warning_last = False\n", " for i, steering_torque_msg in enumerate(steering_torque_history):\n", " steer_warning = steering_torque_msg[\"Steer_Warning\"]\n", diff --git a/tools/car_porting/test_car_model.py b/tools/car_porting/test_car_model.py index 86980b054b..5f8294fd3c 100755 --- a/tools/car_porting/test_car_model.py +++ b/tools/car_porting/test_car_model.py @@ -12,7 +12,7 @@ def create_test_models_suite(routes: list[CarTestRoute], ci=False) -> unittest.T test_suite = unittest.TestSuite() for test_route in routes: # create new test case and discover tests - test_case_args = {"car_model": test_route.car_model, "test_route": test_route, "ci": ci} + test_case_args = {"platform": test_route.car_model, "test_route": test_route, "test_route_on_bucket": ci} CarModelTestCase = type("CarModelTestCase", (TestCarModel,), test_case_args) test_suite.addTest(unittest.TestLoader().loadTestsFromTestCase(CarModelTestCase)) return test_suite @@ -31,6 +31,7 @@ if __name__ == "__main__": route_or_segment_name = SegmentName(args.route_or_segment_name.strip(), allow_route_name=True) segment_num = route_or_segment_name.segment_num if route_or_segment_name.segment_num != -1 else None + test_route = CarTestRoute(route_or_segment_name.route_name.canonical_name, args.car, segment=segment_num) test_suite = create_test_models_suite([test_route], ci=args.ci) diff --git a/tools/install_python_dependencies.sh b/tools/install_python_dependencies.sh index f7ba316480..df815b582f 100755 --- a/tools/install_python_dependencies.sh +++ b/tools/install_python_dependencies.sh @@ -54,8 +54,8 @@ fi eval "$(pyenv init --path)" echo "update pip" -pip install pip==23.3 -pip install poetry==1.6.1 +pip install pip==24.0 +pip install poetry==1.7.0 poetry config virtualenvs.prefer-active-python true --local poetry config virtualenvs.in-project true --local diff --git a/tools/install_ubuntu_dependencies.sh b/tools/install_ubuntu_dependencies.sh index 78a01f2b75..75d19141b6 100755 --- a/tools/install_ubuntu_dependencies.sh +++ b/tools/install_ubuntu_dependencies.sh @@ -75,12 +75,13 @@ function install_ubuntu_common_requirements() { libqt5charts5-dev \ libqt5serialbus5-dev \ libqt5x11extras5-dev \ + libqt5opengl5-dev \ libreadline-dev \ libdw1 \ valgrind } -# Install Ubuntu 22.04 LTS packages +# Install Ubuntu 24.04 LTS packages function install_ubuntu_lts_latest_requirements() { install_ubuntu_common_requirements @@ -107,10 +108,7 @@ function install_ubuntu_focal_requirements() { if [ -f "/etc/os-release" ]; then source /etc/os-release case "$VERSION_CODENAME" in - "jammy") - install_ubuntu_lts_latest_requirements - ;; - "kinetic") + "jammy" | "kinetic" | "noble") install_ubuntu_lts_latest_requirements ;; "focal") @@ -123,10 +121,10 @@ if [ -f "/etc/os-release" ]; then if [[ ! $REPLY =~ ^[Yy]$ ]]; then exit 1 fi - if [ "$UBUNTU_CODENAME" = "jammy" ] || [ "$UBUNTU_CODENAME" = "kinetic" ]; then - install_ubuntu_lts_latest_requirements - else + if [ "$UBUNTU_CODENAME" = "focal" ]; then install_ubuntu_focal_requirements + else + install_ubuntu_lts_latest_requirements fi esac else diff --git a/tools/lib/azure_container.py b/tools/lib/azure_container.py index 52b2f37dbf..f5a3a8bfb1 100644 --- a/tools/lib/azure_container.py +++ b/tools/lib/azure_container.py @@ -57,18 +57,18 @@ class AzureContainer: ext = "hevc" if log_type.endswith('camera') else "bz2" return self.BASE_URL + f"{route_name.replace('|', '/')}/{segment_num}/{log_type}.{ext}" - def upload_bytes(self, data: bytes | IO, blob_name: str) -> str: + def upload_bytes(self, data: bytes | IO, blob_name: str, overwrite=False) -> str: from azure.storage.blob import BlobClient blob = BlobClient( account_url=self.ACCOUNT_URL, container_name=self.CONTAINER, blob_name=blob_name, credential=get_azure_credential(), - overwrite=False, + overwrite=overwrite, ) - blob.upload_blob(data) + blob.upload_blob(data, overwrite=overwrite) return self.BASE_URL + blob_name - def upload_file(self, path: str | os.PathLike, blob_name: str) -> str: + def upload_file(self, path: str | os.PathLike, blob_name: str, overwrite=False) -> str: with open(path, "rb") as f: - return self.upload_bytes(f, blob_name) + return self.upload_bytes(f, blob_name, overwrite) diff --git a/tools/lib/comma_car_segments.py b/tools/lib/comma_car_segments.py index 9027fec637..78825504e6 100644 --- a/tools/lib/comma_car_segments.py +++ b/tools/lib/comma_car_segments.py @@ -1,13 +1,22 @@ import os import requests + # Forks with additional car support can fork the commaCarSegments repo on huggingface or host the LFS files themselves COMMA_CAR_SEGMENTS_REPO = os.environ.get("COMMA_CAR_SEGMENTS_REPO", "https://huggingface.co/datasets/commaai/commaCarSegments") COMMA_CAR_SEGMENTS_BRANCH = os.environ.get("COMMA_CAR_SEGMENTS_BRANCH", "main") COMMA_CAR_SEGMENTS_LFS_INSTANCE = os.environ.get("COMMA_CAR_SEGMENTS_LFS_INSTANCE", COMMA_CAR_SEGMENTS_REPO) def get_comma_car_segments_database(): - return requests.get(get_repo_raw_url("database.json")).json() + from openpilot.selfdrive.car.fingerprints import MIGRATION + + database = requests.get(get_repo_raw_url("database.json")).json() + + ret = {} + for platform in database: + ret[MIGRATION.get(platform, platform)] = database[platform] + + return ret # Helpers related to interfacing with the commaCarSegments repository, which contains a collection of public segments for users to perform validation on. diff --git a/tools/lib/helpers.py b/tools/lib/helpers.py index 653eb3d7e0..e9b4b85e70 100644 --- a/tools/lib/helpers.py +++ b/tools/lib/helpers.py @@ -1,7 +1,4 @@ import bz2 -import datetime - -TIME_FMT = "%Y-%m-%d--%H-%M-%S" # regex patterns @@ -23,13 +20,6 @@ class RE: OP_SEGMENT_DIR = fr'^(?P{SEGMENT_NAME})$' -def timestamp_to_datetime(t: str) -> datetime.datetime: - """ - Convert an openpilot route timestamp to a python datetime - """ - return datetime.datetime.strptime(t, TIME_FMT) - - def save_log(dest, log_msgs, compress=True): dat = b"".join(msg.as_builder().to_bytes() for msg in log_msgs) diff --git a/tools/lib/logreader.py b/tools/lib/logreader.py index 6247bbc9db..669c1520db 100755 --- a/tools/lib/logreader.py +++ b/tools/lib/logreader.py @@ -89,7 +89,7 @@ def default_valid_file(fn: LogPath) -> bool: def auto_strategy(rlog_paths: LogPaths, qlog_paths: LogPaths, interactive: bool, valid_file: ValidFileCallable) -> LogPaths: # auto select logs based on availability - if any(rlog is None or not valid_file(rlog) for rlog in rlog_paths): + if any(rlog is None or not valid_file(rlog) for rlog in rlog_paths) and all(qlog is not None and valid_file(qlog) for qlog in qlog_paths): if interactive: if input("Some rlogs were not found, would you like to fallback to qlogs for those segments? (y/n) ").lower() != "y": return rlog_paths @@ -172,6 +172,15 @@ def auto_source(sr: SegmentRange, mode=ReadMode.RLOG) -> LogPaths: SOURCES: list[Source] = [internal_source, openpilotci_source, comma_api_source, comma_car_segments_source,] exceptions = [] + + # for automatic fallback modes, auto_source needs to first check if rlogs exist for any source + if mode in [ReadMode.AUTO, ReadMode.AUTO_INTERACTIVE]: + for source in SOURCES: + try: + return check_source(source, sr, ReadMode.RLOG) + except Exception: + pass + # Automatically determine viable source for source in SOURCES: try: @@ -248,7 +257,7 @@ are uploaded or auto fallback to qlogs with '/a' selector at the end of the rout def _get_lr(self, i): if i not in self.__lrs: - self.__lrs[i] = _LogFileReader(self.logreader_identifiers[i]) + self.__lrs[i] = _LogFileReader(self.logreader_identifiers[i], sort_by_time=self.sort_by_time, only_union_types=self.only_union_types) return self.__lrs[i] def __iter__(self): diff --git a/tools/lib/route.py b/tools/lib/route.py index bd0ccc1fc3..d5fd41108b 100644 --- a/tools/lib/route.py +++ b/tools/lib/route.py @@ -4,7 +4,6 @@ from functools import cache from urllib.parse import urlparse from collections import defaultdict from itertools import chain -from typing import cast from openpilot.tools.lib.auth_config import get_token from openpilot.tools.lib.api import CommaApi @@ -240,7 +239,9 @@ class SegmentName: def get_max_seg_number_cached(sr: 'SegmentRange') -> int: try: api = CommaApi(get_token()) - return cast(int, api.get("/v1/route/" + sr.route_name.replace("/", "|"))["segment_numbers"][-1]) + max_seg_number = api.get("/v1/route/" + sr.route_name.replace("/", "|"))["maxqlog"] + assert isinstance(max_seg_number, int) + return max_seg_number except Exception as e: raise Exception("unable to get max_segment_number. ensure you have access to this route or the route is public.") from e @@ -263,6 +264,10 @@ class SegmentRange: def timestamp(self) -> str: return self.m.group("timestamp") + @property + def log_id(self) -> str: + return self.m.group("log_id") + @property def slice(self) -> str: return self.m.group("slice") or "" @@ -291,7 +296,7 @@ class SegmentRange: return list(range(end + 1))[s] def __str__(self) -> str: - return f"{self.dongle_id}/{self.timestamp}" + (f"/{self.slice}" if self.slice else "") + (f"/{self.selector}" if self.selector else "") + return f"{self.dongle_id}/{self.log_id}" + (f"/{self.slice}" if self.slice else "") + (f"/{self.selector}" if self.selector else "") def __repr__(self) -> str: return self.__str__() diff --git a/tools/lib/tests/test_comma_car_segments.py b/tools/lib/tests/test_comma_car_segments.py index 50d4200b4f..91bab94343 100644 --- a/tools/lib/tests/test_comma_car_segments.py +++ b/tools/lib/tests/test_comma_car_segments.py @@ -1,11 +1,13 @@ +import pytest import unittest - import requests +from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.tools.lib.comma_car_segments import get_comma_car_segments_database, get_url from openpilot.tools.lib.logreader import LogReader from openpilot.tools.lib.route import SegmentRange +@pytest.mark.skip(reason="huggingface is flaky, run this test manually to check for issues") class TestCommaCarSegments(unittest.TestCase): def test_database(self): database = get_comma_car_segments_database() @@ -17,7 +19,7 @@ class TestCommaCarSegments(unittest.TestCase): def test_download_segment(self): database = get_comma_car_segments_database() - fp = "SUBARU FORESTER 2019" + fp = "SUBARU_FORESTER" segment = database[fp][0] @@ -29,10 +31,8 @@ class TestCommaCarSegments(unittest.TestCase): self.assertEqual(resp.status_code, 200) lr = LogReader(url) - CP = lr.first("carParams") - - self.assertEqual(CP.carFingerprint, fp) + self.assertEqual(MIGRATION.get(CP.carFingerprint, CP.carFingerprint), fp) if __name__ == "__main__": diff --git a/tools/lib/tests/test_logreader.py b/tools/lib/tests/test_logreader.py index 2141915b87..fc72202b26 100755 --- a/tools/lib/tests/test_logreader.py +++ b/tools/lib/tests/test_logreader.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +import capnp import contextlib import io import shutil @@ -11,6 +12,7 @@ import requests from parameterized import parameterized from unittest import mock +from cereal import log as capnp_log from openpilot.tools.lib.logreader import LogIterable, LogReader, comma_api_source, parse_indirect, ReadMode, InternalUnavailableException from openpilot.tools.lib.route import SegmentRange from openpilot.tools.lib.url_file import URLFileException @@ -216,6 +218,43 @@ class TestLogReader(unittest.TestCase): log_len = len(list(lr)) self.assertEqual(qlog_len, log_len) + @pytest.mark.slow + def test_sort_by_time(self): + msgs = list(LogReader(f"{TEST_ROUTE}/0/q")) + self.assertNotEqual(msgs, sorted(msgs, key=lambda m: m.logMonoTime)) + + msgs = list(LogReader(f"{TEST_ROUTE}/0/q", sort_by_time=True)) + self.assertEqual(msgs, sorted(msgs, key=lambda m: m.logMonoTime)) + + def test_only_union_types(self): + with tempfile.NamedTemporaryFile() as qlog: + # write valid Event messages + num_msgs = 100 + with open(qlog.name, "wb") as f: + f.write(b"".join(capnp_log.Event.new_message().to_bytes() for _ in range(num_msgs))) + + msgs = list(LogReader(qlog.name)) + self.assertEqual(len(msgs), num_msgs) + [m.which() for m in msgs] + + # append non-union Event message + event_msg = capnp_log.Event.new_message() + non_union_bytes = bytearray(event_msg.to_bytes()) + non_union_bytes[event_msg.total_size.word_count * 8] = 0xff # set discriminant value out of range using Event word offset + with open(qlog.name, "ab") as f: + f.write(non_union_bytes) + + # ensure new message is added, but is not a union type + msgs = list(LogReader(qlog.name)) + self.assertEqual(len(msgs), num_msgs + 1) + with self.assertRaises(capnp.KjException): + [m.which() for m in msgs] + + # should not be added when only_union_types=True + msgs = list(LogReader(qlog.name, only_union_types=True)) + self.assertEqual(len(msgs), num_msgs) + [m.which() for m in msgs] + if __name__ == "__main__": unittest.main() diff --git a/tools/plotjuggler/README.md b/tools/plotjuggler/README.md index ca9946145d..dcf2bbbac7 100644 --- a/tools/plotjuggler/README.md +++ b/tools/plotjuggler/README.md @@ -12,7 +12,7 @@ Once you've [set up the openpilot environment](../README.md), this command will ``` $ ./juggle.py -h -usage: juggle.py [-h] [--demo] [--qlog] [--ci] [--can] [--stream] [--layout [LAYOUT]] [--install] [--dbc DBC] +usage: juggle.py [-h] [--demo] [--can] [--stream] [--layout [LAYOUT]] [--install] [--dbc DBC] [route_or_segment_name] [segment_count] A helper to run PlotJuggler on openpilot routes @@ -25,8 +25,6 @@ positional arguments: optional arguments: -h, --help show this help message and exit --demo Use the demo route instead of providing one (default: False) - --qlog Use qlogs (default: False) - --ci Download data from openpilot CI bucket (default: False) --can Parse CAN data (default: False) --stream Start PlotJuggler in streaming mode (default: False) --layout [LAYOUT] Run PlotJuggler with a pre-defined layout (default: None) @@ -38,11 +36,13 @@ optional arguments: Examples using route name: -`./juggle.py "a2a0ccea32023010|2023-07-27--13-01-19"` +`./juggle.py "a2a0ccea32023010/2023-07-27--13-01-19"` -Examples using segment name: +Examples using segment range: -`./juggle.py "a2a0ccea32023010|2023-07-27--13-01-19--1"` +`./juggle.py "a2a0ccea32023010/2023-07-27--13-01-19/1"` + +`./juggle.py "a2a0ccea32023010/2023-07-27--13-01-19/1/q" # use qlogs` ## Streaming diff --git a/tools/plotjuggler/juggle.py b/tools/plotjuggler/juggle.py index 0caf5a18ff..1d1612a1cd 100755 --- a/tools/plotjuggler/juggle.py +++ b/tools/plotjuggler/juggle.py @@ -11,19 +11,20 @@ import argparse from functools import partial from openpilot.common.basedir import BASEDIR +from openpilot.selfdrive.car.fingerprints import MIGRATION from openpilot.tools.lib.helpers import save_log - from openpilot.tools.lib.logreader import LogReader, ReadMode juggle_dir = os.path.dirname(os.path.realpath(__file__)) DEMO_ROUTE = "a2a0ccea32023010|2023-07-27--13-01-19" -RELEASES_URL="https://github.com/commaai/PlotJuggler/releases/download/latest" +RELEASES_URL = "https://github.com/commaai/PlotJuggler/releases/download/latest" INSTALL_DIR = os.path.join(juggle_dir, "bin") PLOTJUGGLER_BIN = os.path.join(juggle_dir, "bin/plotjuggler") MINIMUM_PLOTJUGGLER_VERSION = (3, 5, 2) MAX_STREAMING_BUFFER_SIZE = 1000 + def install(): m = f"{platform.system()}-{platform.machine()}" supported = ("Linux-x86_64", "Linux-aarch64", "Darwin-arm64", "Darwin-x86_64") @@ -38,7 +39,7 @@ def install(): with requests.get(url, stream=True, timeout=10) as r, tempfile.NamedTemporaryFile() as tmp: r.raise_for_status() with open(tmp.name, 'wb') as tmpf: - for chunk in r.iter_content(chunk_size=1024*1024): + for chunk in r.iter_content(chunk_size=1024 * 1024): tmpf.write(chunk) with tarfile.open(tmp.name) as tar: @@ -69,9 +70,11 @@ def start_juggler(fn=None, dbc=None, layout=None, route_or_segment_name=None): cmd = f'{PLOTJUGGLER_BIN} --buffer_size {MAX_STREAMING_BUFFER_SIZE} --plugin_folders {INSTALL_DIR}{extra_args}' subprocess.call(cmd, shell=True, env=env, cwd=juggle_dir) + def process(can, lr): return [d for d in lr if can or d.which() not in ['can', 'sendcan']] + def juggle_route(route_or_segment_name, can, layout, dbc=None): sr = LogReader(route_or_segment_name, default_mode=ReadMode.AUTO_INTERACTIVE) @@ -82,7 +85,8 @@ def juggle_route(route_or_segment_name, can, layout, dbc=None): for cp in [m for m in all_data if m.which() == 'carParams']: try: DBC = __import__(f"openpilot.selfdrive.car.{cp.carParams.carName}.values", fromlist=['DBC']).DBC - dbc = DBC[cp.carParams.carFingerprint]['pt'] + fingerprint = cp.carParams.carFingerprint + dbc = DBC[MIGRATION.get(fingerprint, fingerprint)]['pt'] except Exception: pass break diff --git a/tools/plotjuggler/layouts/controls_mismatch_debug.xml b/tools/plotjuggler/layouts/controls_mismatch_debug.xml index 54586d6e7b..7f9def379c 100644 --- a/tools/plotjuggler/layouts/controls_mismatch_debug.xml +++ b/tools/plotjuggler/layouts/controls_mismatch_debug.xml @@ -24,6 +24,7 @@ + diff --git a/tools/plotjuggler/layouts/gps_vs_llk.xml b/tools/plotjuggler/layouts/gps_vs_llk.xml index 44980712ed..69b8f20058 100644 --- a/tools/plotjuggler/layouts/gps_vs_llk.xml +++ b/tools/plotjuggler/layouts/gps_vs_llk.xml @@ -32,7 +32,7 @@ - + diff --git a/tools/plotjuggler/layouts/max-torque-debug.xml b/tools/plotjuggler/layouts/max-torque-debug.xml index 20a49c2181..8cfd30599e 100644 --- a/tools/plotjuggler/layouts/max-torque-debug.xml +++ b/tools/plotjuggler/layouts/max-torque-debug.xml @@ -24,7 +24,7 @@ - + diff --git a/tools/plotjuggler/layouts/torque-controller.xml b/tools/plotjuggler/layouts/torque-controller.xml index 443255968a..d6e4684d63 100644 --- a/tools/plotjuggler/layouts/torque-controller.xml +++ b/tools/plotjuggler/layouts/torque-controller.xml @@ -24,8 +24,8 @@ - - + + diff --git a/tools/plotjuggler/layouts/ublox-debug.xml b/tools/plotjuggler/layouts/ublox-debug.xml index d595a9ecc7..ea4dd35535 100644 --- a/tools/plotjuggler/layouts/ublox-debug.xml +++ b/tools/plotjuggler/layouts/ublox-debug.xml @@ -8,7 +8,7 @@ - + diff --git a/tools/replay/SConscript b/tools/replay/SConscript index db8447003b..5d88f560be 100644 --- a/tools/replay/SConscript +++ b/tools/replay/SConscript @@ -9,8 +9,6 @@ if arch == "Darwin": else: base_libs.append('OpenCL') -qt_env['CXXFLAGS'] += ["-Wno-deprecated-declarations"] - replay_lib_src = ["replay.cc", "consoleui.cc", "camera.cc", "filereader.cc", "logreader.cc", "framereader.cc", "route.cc", "util.cc"] replay_lib = qt_env.Library("qt_replay", replay_lib_src, LIBS=base_libs, FRAMEWORKS=base_frameworks) Export('replay_lib') diff --git a/tools/replay/camera.cc b/tools/replay/camera.cc index 49f3010c6c..9e711149c5 100644 --- a/tools/replay/camera.cc +++ b/tools/replay/camera.cc @@ -1,11 +1,13 @@ #include "tools/replay/camera.h" +#include #include -#include #include "third_party/linux/include/msm_media_info.h" #include "tools/replay/util.h" +const int BUFFER_COUNT = 40; + std::tuple get_nv12_info(int width, int height) { int nv12_width = VENUS_Y_STRIDE(COLOR_FMT_NV12, width); int nv12_height = VENUS_Y_SCANLINES(COLOR_FMT_NV12, height); @@ -35,10 +37,12 @@ CameraServer::~CameraServer() { void CameraServer::startVipcServer() { vipc_server_.reset(new VisionIpcServer("camerad")); for (auto &cam : cameras_) { + cam.cached_buf.clear(); + if (cam.width > 0 && cam.height > 0) { rInfo("camera[%d] frame size %dx%d", cam.type, cam.width, cam.height); auto [nv12_width, nv12_height, nv12_buffer_size] = get_nv12_info(cam.width, cam.height); - vipc_server_->create_buffers_with_sizes(cam.stream_type, YUV_BUFFER_COUNT, false, cam.width, cam.height, + vipc_server_->create_buffers_with_sizes(cam.stream_type, BUFFER_COUNT, false, cam.width, cam.height, nv12_buffer_size, nv12_width, nv12_width * nv12_height); if (!cam.thread.joinable()) { cam.thread = std::thread(&CameraServer::cameraThread, this, std::ref(cam)); @@ -49,41 +53,51 @@ void CameraServer::startVipcServer() { } void CameraServer::cameraThread(Camera &cam) { - auto read_frame = [&](FrameReader *fr, int frame_id) { - VisionBuf *yuv_buf = vipc_server_->get_buffer(cam.stream_type); - assert(yuv_buf); - bool ret = fr->get(frame_id, yuv_buf); - return ret ? yuv_buf : nullptr; - }; - while (true) { - const auto [fr, eidx] = cam.queue.pop(); + const auto [fr, event] = cam.queue.pop(); if (!fr) break; - const int id = eidx.getSegmentId(); - bool prefetched = (id == cam.cached_id && eidx.getSegmentNum() == cam.cached_seg); - auto yuv = prefetched ? cam.cached_buf : read_frame(fr, id); - if (yuv) { + capnp::FlatArrayMessageReader reader(event->data); + auto evt = reader.getRoot(); + auto eidx = capnp::AnyStruct::Reader(evt).getPointerSection()[0].getAs(); + if (eidx.getType() != cereal::EncodeIndex::Type::FULL_H_E_V_C) continue; + + int segment_id = eidx.getSegmentId(); + uint32_t frame_id = eidx.getFrameId(); + if (auto yuv = getFrame(cam, fr, segment_id, frame_id)) { VisionIpcBufExtra extra = { - .frame_id = eidx.getFrameId(), + .frame_id = frame_id, .timestamp_sof = eidx.getTimestampSof(), .timestamp_eof = eidx.getTimestampEof(), }; - yuv->set_frame_id(eidx.getFrameId()); vipc_server_->send(yuv, &extra); } else { - rError("camera[%d] failed to get frame: %lu", cam.type, eidx.getSegmentId()); + rError("camera[%d] failed to get frame: %lu", cam.type, segment_id); } - cam.cached_id = id + 1; - cam.cached_seg = eidx.getSegmentNum(); - cam.cached_buf = read_frame(fr, cam.cached_id); + // Prefetch the next frame + getFrame(cam, fr, segment_id + 1, frame_id + 1); --publishing_; } } -void CameraServer::pushFrame(CameraType type, FrameReader *fr, const cereal::EncodeIndex::Reader &eidx) { +VisionBuf *CameraServer::getFrame(Camera &cam, FrameReader *fr, int32_t segment_id, uint32_t frame_id) { + // Check if the frame is cached + auto buf_it = std::find_if(cam.cached_buf.begin(), cam.cached_buf.end(), + [frame_id](VisionBuf *buf) { return buf->get_frame_id() == frame_id; }); + if (buf_it != cam.cached_buf.end()) return *buf_it; + + VisionBuf *yuv_buf = vipc_server_->get_buffer(cam.stream_type); + if (fr->get(segment_id, yuv_buf)) { + yuv_buf->set_frame_id(frame_id); + cam.cached_buf.insert(yuv_buf); + return yuv_buf; + } + return nullptr; +} + +void CameraServer::pushFrame(CameraType type, FrameReader *fr, const Event *event) { auto &cam = cameras_[type]; if (cam.width != fr->width || cam.height != fr->height) { cam.width = fr->width; @@ -93,7 +107,7 @@ void CameraServer::pushFrame(CameraType type, FrameReader *fr, const cereal::Enc } ++publishing_; - cam.queue.push({fr, eidx}); + cam.queue.push({fr, event}); } void CameraServer::waitForSent() { diff --git a/tools/replay/camera.h b/tools/replay/camera.h index 9f43c5a362..77a6293ec6 100644 --- a/tools/replay/camera.h +++ b/tools/replay/camera.h @@ -1,8 +1,7 @@ #pragma once -#include - #include +#include #include #include @@ -17,7 +16,7 @@ class CameraServer { public: CameraServer(std::pair camera_size[MAX_CAMERAS] = nullptr); ~CameraServer(); - void pushFrame(CameraType type, FrameReader* fr, const cereal::EncodeIndex::Reader& eidx); + void pushFrame(CameraType type, FrameReader* fr, const Event *event); void waitForSent(); protected: @@ -27,13 +26,12 @@ protected: int width; int height; std::thread thread; - SafeQueue> queue; - int cached_id = -1; - int cached_seg = -1; - VisionBuf * cached_buf; + SafeQueue> queue; + std::set cached_buf; }; void startVipcServer(); void cameraThread(Camera &cam); + VisionBuf *getFrame(Camera &cam, FrameReader *fr, int32_t segment_id, uint32_t frame_id); Camera cameras_[MAX_CAMERAS] = { {.type = RoadCam, .stream_type = VISION_STREAM_ROAD}, diff --git a/tools/replay/can_replay.py b/tools/replay/can_replay.py index bf6b1e9ae2..c7da8caf71 100755 --- a/tools/replay/can_replay.py +++ b/tools/replay/can_replay.py @@ -26,12 +26,10 @@ def send_thread(j: PandaJungle, flock): with flock: j.flash() + j.reset() for i in [0, 1, 2, 3, 0xFFFF]: j.can_clear(i) j.set_can_speed_kbps(i, 500) - j.set_can_data_speed_kbps(i, 500) - j.set_ignition(False) - time.sleep(5) j.set_ignition(True) j.set_panda_power(True) j.set_can_loopback(False) @@ -98,6 +96,10 @@ if __name__ == "__main__": sr = LogReader(args.route_or_segment_name) + CP = sr.first("carParams") + + print(f"carFingerprint (for hardcoding fingerprint): '{CP.carFingerprint}'") + CAN_MSGS = sr.run_across_segments(24, process) print("Finished loading...") diff --git a/tools/replay/consoleui.cc b/tools/replay/consoleui.cc index 54056c6cd5..eaff78c691 100644 --- a/tools/replay/consoleui.cc +++ b/tools/replay/consoleui.cc @@ -172,7 +172,7 @@ void ConsoleUI::updateStatus() { if (status != Status::Paused) { auto events = replay->events(); uint64_t current_mono_time = replay->routeStartTime() + replay->currentSeconds() * 1e9; - bool playing = !events->empty() && events->back()->mono_time > current_mono_time; + bool playing = !events->empty() && events->back().mono_time > current_mono_time; status = playing ? Status::Playing : Status::Waiting; } auto [status_str, status_color] = status_text[status]; @@ -368,7 +368,6 @@ void ConsoleUI::handleKey(char c) { } else if (c == ' ') { pauseReplay(!replay->isPaused()); } else if (c == 'q' || c == 'Q') { - replay->stop(); qApp->exit(); } } diff --git a/tools/replay/filereader.cc b/tools/replay/filereader.cc index 22af7f5f86..d74aaebaba 100644 --- a/tools/replay/filereader.cc +++ b/tools/replay/filereader.cc @@ -35,7 +35,10 @@ std::string FileReader::read(const std::string &file, std::atomic *abort) std::string FileReader::download(const std::string &url, std::atomic *abort) { for (int i = 0; i <= max_retries_ && !(abort && *abort); ++i) { - if (i > 0) rWarning("download failed, retrying %d", i); + if (i > 0) { + rWarning("download failed, retrying %d", i); + util::sleep_for(3000); + } std::string result = httpGet(url, chunk_size_, abort); if (!result.empty()) { diff --git a/tools/replay/framereader.cc b/tools/replay/framereader.cc index 303f0c60ca..26ef4684a4 100644 --- a/tools/replay/framereader.cc +++ b/tools/replay/framereader.cc @@ -1,9 +1,13 @@ #include "tools/replay/framereader.h" -#include "tools/replay/util.h" -#include -#include +#include +#include +#include +#include + +#include "common/util.h" #include "third_party/libyuv/include/libyuv.h" +#include "tools/replay/util.h" #ifdef __APPLE__ #define HW_DEVICE_TYPE AV_HWDEVICE_TYPE_VIDEOTOOLBOX @@ -15,34 +19,38 @@ namespace { -struct buffer_data { - const uint8_t *data; - int64_t offset; - size_t size; -}; - -int readPacket(void *opaque, uint8_t *buf, int buf_size) { - struct buffer_data *bd = (struct buffer_data *)opaque; - assert(bd->offset <= bd->size); - buf_size = std::min((size_t)buf_size, (size_t)(bd->size - bd->offset)); - if (!buf_size) return AVERROR_EOF; - - memcpy(buf, bd->data + bd->offset, buf_size); - bd->offset += buf_size; - return buf_size; -} - enum AVPixelFormat get_hw_format(AVCodecContext *ctx, const enum AVPixelFormat *pix_fmts) { enum AVPixelFormat *hw_pix_fmt = reinterpret_cast(ctx->opaque); for (const enum AVPixelFormat *p = pix_fmts; *p != -1; p++) { if (*p == *hw_pix_fmt) return *p; } rWarning("Please run replay with the --no-hw-decoder flag!"); - // fallback to YUV420p *hw_pix_fmt = AV_PIX_FMT_NONE; return AV_PIX_FMT_YUV420P; } +struct DecoderManager { + VideoDecoder *acquire(CameraType type, AVCodecParameters *codecpar, bool hw_decoder) { + auto key = std::tuple(type, codecpar->width, codecpar->height); + std::unique_lock lock(mutex_); + if (auto it = decoders_.find(key); it != decoders_.end()) { + return it->second.get(); + } + + auto decoder = std::make_unique(); + if (!decoder->open(codecpar, hw_decoder)) { + decoder.reset(nullptr); + } + decoders_[key] = std::move(decoder); + return decoders_[key].get(); + } + + std::mutex mutex_; + std::map, std::unique_ptr> decoders_; +}; + +DecoderManager decoder_manager; + } // namespace FrameReader::FrameReader() { @@ -50,121 +58,105 @@ FrameReader::FrameReader() { } FrameReader::~FrameReader() { - for (AVPacket *pkt : packets) { - av_packet_free(&pkt); - } - - if (decoder_ctx) avcodec_free_context(&decoder_ctx); if (input_ctx) avformat_close_input(&input_ctx); - if (hw_device_ctx) av_buffer_unref(&hw_device_ctx); - - if (avio_ctx_) { - av_freep(&avio_ctx_->buffer); - avio_context_free(&avio_ctx_); - } } -bool FrameReader::load(const std::string &url, bool no_hw_decoder, std::atomic *abort, bool local_cache, int chunk_size, int retries) { - FileReader f(local_cache, chunk_size, retries); - std::string data = f.read(url, abort); - if (data.empty()) { - rWarning("URL %s returned no data", url.c_str()); - return false; +bool FrameReader::load(CameraType type, const std::string &url, bool no_hw_decoder, std::atomic *abort, bool local_cache, int chunk_size, int retries) { + auto local_file_path = url.find("https://") == 0 ? cacheFilePath(url) : url; + if (!util::file_exists(local_file_path)) { + FileReader f(local_cache, chunk_size, retries); + if (f.read(url, abort).empty()) { + return false; + } } - - return load((std::byte *)data.data(), data.size(), no_hw_decoder, abort); + return loadFromFile(type, local_file_path, no_hw_decoder, abort); } -bool FrameReader::load(const std::byte *data, size_t size, bool no_hw_decoder, std::atomic *abort) { - input_ctx = avformat_alloc_context(); - if (!input_ctx) { - rError("Error calling avformat_alloc_context"); +bool FrameReader::loadFromFile(CameraType type, const std::string &file, bool no_hw_decoder, std::atomic *abort) { + if (avformat_open_input(&input_ctx, file.c_str(), nullptr, nullptr) != 0 || + avformat_find_stream_info(input_ctx, nullptr) < 0) { + rError("Failed to open input file or find video stream"); return false; } - - struct buffer_data bd = { - .data = (const uint8_t*)data, - .offset = 0, - .size = size, - }; - const int avio_ctx_buffer_size = 64 * 1024; - unsigned char *avio_ctx_buffer = (unsigned char *)av_malloc(avio_ctx_buffer_size); - avio_ctx_ = avio_alloc_context(avio_ctx_buffer, avio_ctx_buffer_size, 0, &bd, readPacket, nullptr, nullptr); - input_ctx->pb = avio_ctx_; - input_ctx->probesize = 10 * 1024 * 1024; // 10MB - int ret = avformat_open_input(&input_ctx, nullptr, nullptr, nullptr); - if (ret != 0) { - char err_str[1024] = {0}; - av_strerror(ret, err_str, std::size(err_str)); - rError("Error loading video - %s", err_str); + + decoder_ = decoder_manager.acquire(type, input_ctx->streams[0]->codecpar, !no_hw_decoder); + if (!decoder_) { return false; } + width = decoder_->width; + height = decoder_->height; - ret = avformat_find_stream_info(input_ctx, nullptr); - if (ret < 0) { - rError("cannot find a video stream in the input file"); + AVPacket pkt; + packets_info.reserve(60 * 20); // 20fps, one minute + while (!(abort && *abort) && av_read_frame(input_ctx, &pkt) == 0) { + packets_info.emplace_back(PacketInfo{.flags = pkt.flags, .pos = pkt.pos}); + av_packet_unref(&pkt); + } + avio_seek(input_ctx->pb, 0, SEEK_SET); + return !packets_info.empty(); +} + +bool FrameReader::get(int idx, VisionBuf *buf) { + if (!buf || idx < 0 || idx >= packets_info.size()) { return false; } + return decoder_->decode(this, idx, buf); +} - AVStream *video = input_ctx->streams[0]; - const AVCodec *decoder = avcodec_find_decoder(video->codecpar->codec_id); +// class VideoDecoder + +VideoDecoder::VideoDecoder() { + av_frame_ = av_frame_alloc(); + hw_frame_ = av_frame_alloc(); +} + +VideoDecoder::~VideoDecoder() { + if (hw_device_ctx) av_buffer_unref(&hw_device_ctx); + if (decoder_ctx) avcodec_free_context(&decoder_ctx); + av_frame_free(&av_frame_); + av_frame_free(&hw_frame_); +} + +bool VideoDecoder::open(AVCodecParameters *codecpar, bool hw_decoder) { + const AVCodec *decoder = avcodec_find_decoder(codecpar->codec_id); if (!decoder) return false; decoder_ctx = avcodec_alloc_context3(decoder); - ret = avcodec_parameters_to_context(decoder_ctx, video->codecpar); - if (ret != 0) return false; - + if (!decoder_ctx || avcodec_parameters_to_context(decoder_ctx, codecpar) != 0) { + rError("Failed to allocate or initialize codec context"); + return false; + } width = (decoder_ctx->width + 3) & ~3; height = decoder_ctx->height; - if (has_hw_decoder && !no_hw_decoder) { - if (!initHardwareDecoder(HW_DEVICE_TYPE)) { - rWarning("No device with hardware decoder found. fallback to CPU decoding."); - } + if (hw_decoder && !initHardwareDecoder(HW_DEVICE_TYPE)) { + rWarning("No device with hardware decoder found. fallback to CPU decoding."); } - ret = avcodec_open2(decoder_ctx, decoder, nullptr); - if (ret < 0) { - rError("avcodec_open2 failed %d", ret); + if (avcodec_open2(decoder_ctx, decoder, nullptr) < 0) { + rError("Failed to open codec"); return false; } - - packets.reserve(60 * 20); // 20fps, one minute - while (!(abort && *abort)) { - AVPacket *pkt = av_packet_alloc(); - ret = av_read_frame(input_ctx, pkt); - if (ret < 0) { - av_packet_free(&pkt); - valid_ = (ret == AVERROR_EOF); - break; - } - packets.push_back(pkt); - // some stream seems to contain no keyframes - key_frames_count_ += pkt->flags & AV_PKT_FLAG_KEY; - } - valid_ = valid_ && !packets.empty(); - return valid_; + return true; } -bool FrameReader::initHardwareDecoder(AVHWDeviceType hw_device_type) { - for (int i = 0;; i++) { - const AVCodecHWConfig *config = avcodec_get_hw_config(decoder_ctx->codec, i); - if (!config) { - rWarning("decoder %s does not support hw device type %s.", decoder_ctx->codec->name, - av_hwdevice_get_type_name(hw_device_type)); - return false; - } +bool VideoDecoder::initHardwareDecoder(AVHWDeviceType hw_device_type) { + const AVCodecHWConfig *config = nullptr; + for (int i = 0; (config = avcodec_get_hw_config(decoder_ctx->codec, i)) != nullptr; i++) { if (config->methods & AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX && config->device_type == hw_device_type) { hw_pix_fmt = config->pix_fmt; break; } } + if (!config) { + rWarning("Hardware configuration not found"); + return false; + } int ret = av_hwdevice_ctx_create(&hw_device_ctx, hw_device_type, nullptr, nullptr, 0); if (ret < 0) { hw_pix_fmt = AV_PIX_FMT_NONE; - has_hw_decoder = false; rWarning("Failed to create specified HW device %d.", ret); return false; } @@ -175,64 +167,55 @@ bool FrameReader::initHardwareDecoder(AVHWDeviceType hw_device_type) { return true; } -bool FrameReader::get(int idx, VisionBuf *buf) { - assert(buf != nullptr); - if (!valid_ || idx < 0 || idx >= packets.size()) { - return false; - } - return decode(idx, buf); -} - -bool FrameReader::decode(int idx, VisionBuf *buf) { +bool VideoDecoder::decode(FrameReader *reader, int idx, VisionBuf *buf) { int from_idx = idx; - if (idx != prev_idx + 1 && key_frames_count_ > 1) { + if (idx != reader->prev_idx + 1) { // seeking to the nearest key frame for (int i = idx; i >= 0; --i) { - if (packets[i]->flags & AV_PKT_FLAG_KEY) { + if (reader->packets_info[i].flags & AV_PKT_FLAG_KEY) { from_idx = i; break; } } + avio_seek(reader->input_ctx->pb, reader->packets_info[from_idx].pos, SEEK_SET); } - prev_idx = idx; + reader->prev_idx = idx; + bool result = false; + AVPacket pkt; for (int i = from_idx; i <= idx; ++i) { - AVFrame *f = decodeFrame(packets[i]); - if (f && i == idx) { - return copyBuffers(f, buf); + if (av_read_frame(reader->input_ctx, &pkt) == 0) { + AVFrame *f = decodeFrame(&pkt); + if (f && i == idx) { + result = copyBuffer(f, buf); + } + av_packet_unref(&pkt); } } - return false; + return result; } -AVFrame *FrameReader::decodeFrame(AVPacket *pkt) { +AVFrame *VideoDecoder::decodeFrame(AVPacket *pkt) { int ret = avcodec_send_packet(decoder_ctx, pkt); if (ret < 0) { rError("Error sending a packet for decoding: %d", ret); return nullptr; } - av_frame_.reset(av_frame_alloc()); - ret = avcodec_receive_frame(decoder_ctx, av_frame_.get()); + ret = avcodec_receive_frame(decoder_ctx, av_frame_); if (ret != 0) { rError("avcodec_receive_frame error: %d", ret); return nullptr; } - if (av_frame_->format == hw_pix_fmt) { - hw_frame.reset(av_frame_alloc()); - if ((ret = av_hwframe_transfer_data(hw_frame.get(), av_frame_.get(), 0)) < 0) { - rError("error transferring the data from GPU to CPU"); - return nullptr; - } - return hw_frame.get(); - } else { - return av_frame_.get(); + if (av_frame_->format == hw_pix_fmt && av_hwframe_transfer_data(hw_frame_, av_frame_, 0) < 0) { + rError("error transferring frame data from GPU to CPU"); + return nullptr; } + return (av_frame_->format == hw_pix_fmt) ? hw_frame_ : av_frame_; } -bool FrameReader::copyBuffers(AVFrame *f, VisionBuf *buf) { - assert(f != nullptr && buf != nullptr); +bool VideoDecoder::copyBuffer(AVFrame *f, VisionBuf *buf) { if (hw_pix_fmt == HW_PIX_FMT) { for (int i = 0; i < height/2; i++) { memcpy(buf->y + (i*2 + 0)*buf->stride, f->data[0] + (i*2 + 0)*f->linesize[0], width); diff --git a/tools/replay/framereader.h b/tools/replay/framereader.h index bb72ac8f8d..b9abefb7c3 100644 --- a/tools/replay/framereader.h +++ b/tools/replay/framereader.h @@ -1,10 +1,10 @@ #pragma once -#include #include #include #include "cereal/visionipc/visionbuf.h" +#include "system/camerad/cameras/camera_common.h" #include "tools/replay/filereader.h" extern "C" { @@ -12,40 +12,46 @@ extern "C" { #include } -struct AVFrameDeleter { - void operator()(AVFrame* frame) const { av_frame_free(&frame); } -}; +class VideoDecoder; class FrameReader { public: FrameReader(); ~FrameReader(); - bool load(const std::string &url, bool no_hw_decoder = false, std::atomic *abort = nullptr, bool local_cache = false, + bool load(CameraType type, const std::string &url, bool no_hw_decoder = false, std::atomic *abort = nullptr, bool local_cache = false, int chunk_size = -1, int retries = 0); - bool load(const std::byte *data, size_t size, bool no_hw_decoder = false, std::atomic *abort = nullptr); + bool loadFromFile(CameraType type, const std::string &file, bool no_hw_decoder = false, std::atomic *abort = nullptr); bool get(int idx, VisionBuf *buf); - int getYUVSize() const { return width * height * 3 / 2; } - size_t getFrameCount() const { return packets.size(); } - bool valid() const { return valid_; } + size_t getFrameCount() const { return packets_info.size(); } int width = 0, height = 0; + VideoDecoder *decoder_ = nullptr; + AVFormatContext *input_ctx = nullptr; + int prev_idx = -1; + struct PacketInfo { + int flags; + int64_t pos; + }; + std::vector packets_info; +}; + + +class VideoDecoder { +public: + VideoDecoder(); + ~VideoDecoder(); + bool open(AVCodecParameters *codecpar, bool hw_decoder); + bool decode(FrameReader *reader, int idx, VisionBuf *buf); + int width = 0, height = 0; + private: bool initHardwareDecoder(AVHWDeviceType hw_device_type); - bool decode(int idx, VisionBuf *buf); - AVFrame * decodeFrame(AVPacket *pkt); - bool copyBuffers(AVFrame *f, VisionBuf *buf); + AVFrame *decodeFrame(AVPacket *pkt); + bool copyBuffer(AVFrame *f, VisionBuf *buf); - std::vector packets; - std::unique_ptrav_frame_, hw_frame; - AVFormatContext *input_ctx = nullptr; + AVFrame *av_frame_, *hw_frame_; AVCodecContext *decoder_ctx = nullptr; - int key_frames_count_ = 0; - bool valid_ = false; - AVIOContext *avio_ctx_ = nullptr; - AVPixelFormat hw_pix_fmt = AV_PIX_FMT_NONE; AVBufferRef *hw_device_ctx = nullptr; - int prev_idx = -1; - inline static std::atomic has_hw_decoder = true; }; diff --git a/tools/replay/lib/ui_helpers.py b/tools/replay/lib/ui_helpers.py index 23f3563084..11b5182a6b 100644 --- a/tools/replay/lib/ui_helpers.py +++ b/tools/replay/lib/ui_helpers.py @@ -7,9 +7,7 @@ import pygame from matplotlib.backends.backend_agg import FigureCanvasAgg -from openpilot.common.transformations.camera import (eon_f_frame_size, eon_f_focal_length, - tici_f_frame_size, tici_f_focal_length, - get_view_frame_from_calib_frame) +from openpilot.common.transformations.camera import get_view_frame_from_calib_frame from openpilot.selfdrive.controls.radard import RADAR_TO_CAMERA @@ -20,9 +18,6 @@ YELLOW = (255, 255, 0) BLACK = (0, 0, 0) WHITE = (255, 255, 255) -_FULL_FRAME_SIZE = { -} - class UIParams: lidar_x, lidar_y, lidar_zoom = 384, 960, 6 lidar_car_x, lidar_car_y = lidar_x / 2., lidar_y / 1.1 @@ -32,45 +27,13 @@ class UIParams: car_color = 110 UP = UIParams -_BB_TO_FULL_FRAME = {} -_CALIB_BB_TO_FULL = {} -_FULL_FRAME_TO_BB = {} -_INTRINSICS = {} - -eon_f_qcam_frame_size = (480, 360) -tici_f_qcam_frame_size = (528, 330) - -cams = [(eon_f_frame_size, eon_f_focal_length, eon_f_frame_size), - (tici_f_frame_size, tici_f_focal_length, tici_f_frame_size), - (eon_f_qcam_frame_size, eon_f_focal_length, eon_f_frame_size), - (tici_f_qcam_frame_size, tici_f_focal_length, tici_f_frame_size)] -for size, focal, full_size in cams: - sz = size[0] * size[1] - _BB_SCALE = size[0] / 640. - _BB_TO_FULL_FRAME[sz] = np.asarray([ - [_BB_SCALE, 0., 0.], - [0., _BB_SCALE, 0.], - [0., 0., 1.]]) - calib_scale = full_size[0] / 640. - _CALIB_BB_TO_FULL[sz] = np.asarray([ - [calib_scale, 0., 0.], - [0., calib_scale, 0.], - [0., 0., 1.]]) - _FULL_FRAME_TO_BB[sz] = np.linalg.inv(_BB_TO_FULL_FRAME[sz]) - _FULL_FRAME_SIZE[sz] = (size[0], size[1]) - _INTRINSICS[sz] = np.array([ - [focal, 0., full_size[0] / 2.], - [0., focal, full_size[1] / 2.], - [0., 0., 1.]]) - - METER_WIDTH = 20 class Calibration: - def __init__(self, num_px, rpy, intrinsic): + def __init__(self, num_px, rpy, intrinsic, calib_scale): self.intrinsic = intrinsic self.extrinsics_matrix = get_view_frame_from_calib_frame(rpy[0], rpy[1], rpy[2], 0.0)[:,:3] - self.zoom = _CALIB_BB_TO_FULL[num_px][0, 0] + self.zoom = calib_scale def car_space_to_ff(self, x, y, z): car_space_projective = np.column_stack((x, y, z)).T diff --git a/tools/replay/logreader.cc b/tools/replay/logreader.cc index c92ff4753f..0f1638145f 100644 --- a/tools/replay/logreader.cc +++ b/tools/replay/logreader.cc @@ -1,97 +1,60 @@ #include "tools/replay/logreader.h" #include +#include #include "tools/replay/filereader.h" #include "tools/replay/util.h" -Event::Event(const kj::ArrayPtr &amsg, bool frame) : reader(amsg), frame(frame) { - words = kj::ArrayPtr(amsg.begin(), reader.getEnd()); - event = reader.getRoot(); - which = event.which(); - mono_time = event.getLogMonoTime(); - - // 1) Send video data at t=timestampEof/timestampSof - // 2) Send encodeIndex packet at t=logMonoTime - if (frame) { - auto idx = capnp::AnyStruct::Reader(event).getPointerSection()[0].getAs(); - // C2 only has eof set, and some older routes have neither - uint64_t sof = idx.getTimestampSof(); - uint64_t eof = idx.getTimestampEof(); - if (sof > 0) { - mono_time = sof; - } else if (eof > 0) { - mono_time = eof; - } - } -} - -// class LogReader - -LogReader::LogReader(size_t memory_pool_block_size) { -#ifdef HAS_MEMORY_RESOURCE - const size_t buf_size = sizeof(Event) * memory_pool_block_size; - mbr_ = std::make_unique(buf_size); -#endif - events.reserve(memory_pool_block_size); -} - -LogReader::~LogReader() { - for (Event *e : events) { - delete e; - } -} - bool LogReader::load(const std::string &url, std::atomic *abort, bool local_cache, int chunk_size, int retries) { - raw_ = FileReader(local_cache, chunk_size, retries).read(url, abort); - if (raw_.empty()) return false; + std::string data = FileReader(local_cache, chunk_size, retries).read(url, abort); + if (!data.empty() && url.find(".bz2") != std::string::npos) + data = decompressBZ2(data, abort); - if (url.find(".bz2") != std::string::npos) { - raw_ = decompressBZ2(raw_, abort); - if (raw_.empty()) return false; - } - return parse(abort); + bool success = !data.empty() && load(data.data(), data.size(), abort); + if (filters_.empty()) + raw_ = std::move(data); + return success; } -bool LogReader::load(const std::byte *data, size_t size, std::atomic *abort) { - raw_.assign((const char *)data, size); - return parse(abort); -} - -bool LogReader::parse(std::atomic *abort) { +bool LogReader::load(const char *data, size_t size, std::atomic *abort) { try { - kj::ArrayPtr words((const capnp::word *)raw_.data(), raw_.size() / sizeof(capnp::word)); + events.reserve(65000); + kj::ArrayPtr words((const capnp::word *)data, size / sizeof(capnp::word)); while (words.size() > 0 && !(abort && *abort)) { -#ifdef HAS_MEMORY_RESOURCE - Event *evt = new (mbr_.get()) Event(words); -#else - Event *evt = new Event(words); -#endif - // Add encodeIdx packet again as a frame packet for the video stream - if (evt->which == cereal::Event::ROAD_ENCODE_IDX || - evt->which == cereal::Event::DRIVER_ENCODE_IDX || - evt->which == cereal::Event::WIDE_ROAD_ENCODE_IDX) { + capnp::FlatArrayMessageReader reader(words); + auto event = reader.getRoot(); + auto which = event.which(); + auto event_data = kj::arrayPtr(words.begin(), reader.getEnd()); + words = kj::arrayPtr(reader.getEnd(), words.end()); -#ifdef HAS_MEMORY_RESOURCE - Event *frame_evt = new (mbr_.get()) Event(words, true); -#else - Event *frame_evt = new Event(words, true); -#endif - - events.push_back(frame_evt); + if (!filters_.empty()) { + if (which >= filters_.size() || !filters_[which]) + continue; + auto buf = buffer_.allocate(event_data.size() * sizeof(capnp::word)); + memcpy(buf, event_data.begin(), event_data.size() * sizeof(capnp::word)); + event_data = kj::arrayPtr((const capnp::word *)buf, event_data.size()); } - words = kj::arrayPtr(evt->reader.getEnd(), words.end()); - events.push_back(evt); + uint64_t mono_time = event.getLogMonoTime(); + const Event &evt = events.emplace_back(which, mono_time, event_data); + // Add encodeIdx packet again as a frame packet for the video stream + if (evt.which == cereal::Event::ROAD_ENCODE_IDX || + evt.which == cereal::Event::DRIVER_ENCODE_IDX || + evt.which == cereal::Event::WIDE_ROAD_ENCODE_IDX) { + auto idx = capnp::AnyStruct::Reader(event).getPointerSection()[0].getAs(); + if (uint64_t sof = idx.getTimestampSof()) { + mono_time = sof; + } + events.emplace_back(which, mono_time, event_data, idx.getSegmentNum()); + } } } catch (const kj::Exception &e) { - rWarning("failed to parse log : %s", e.getDescription().cStr()); - if (!events.empty()) { - rWarning("read %zu events from corrupt log", events.size()); - } + rWarning("Failed to parse log : %s.\nRetrieved %zu events from corrupt log", e.getDescription().cStr(), events.size()); } if (!events.empty() && !(abort && *abort)) { - std::sort(events.begin(), events.end(), Event::lessThan()); + events.shrink_to_fit(); + std::sort(events.begin(), events.end()); return true; } return false; diff --git a/tools/replay/logreader.h b/tools/replay/logreader.h index 73f822d16c..782c00b90a 100644 --- a/tools/replay/logreader.h +++ b/tools/replay/logreader.h @@ -1,67 +1,40 @@ #pragma once -#if __has_include() -#define HAS_MEMORY_RESOURCE 1 -#include -#endif - -#include #include #include #include "cereal/gen/cpp/log.capnp.h" #include "system/camerad/cameras/camera_common.h" +#include "tools/replay/util.h" const CameraType ALL_CAMERAS[] = {RoadCam, DriverCam, WideRoadCam}; const int MAX_CAMERAS = std::size(ALL_CAMERAS); -const int DEFAULT_EVENT_MEMORY_POOL_BLOCK_SIZE = 65000; class Event { public: - Event(cereal::Event::Which which, uint64_t mono_time) : reader(kj::ArrayPtr{}) { - // construct a dummy Event for binary search, e.g std::upper_bound - this->which = which; - this->mono_time = mono_time; - } - Event(const kj::ArrayPtr &amsg, bool frame = false); - inline kj::ArrayPtr bytes() const { return words.asBytes(); } + Event(cereal::Event::Which which, uint64_t mono_time, const kj::ArrayPtr &data, int eidx_segnum = -1) + : which(which), mono_time(mono_time), data(data), eidx_segnum(eidx_segnum) {} - struct lessThan { - inline bool operator()(const Event *l, const Event *r) { - return l->mono_time < r->mono_time || (l->mono_time == r->mono_time && l->which < r->which); - } - }; - -#if HAS_MEMORY_RESOURCE - void *operator new(size_t size, std::pmr::monotonic_buffer_resource *mbr) { - return mbr->allocate(size); + bool operator<(const Event &other) const { + return mono_time < other.mono_time || (mono_time == other.mono_time && which < other.which); } - void operator delete(void *ptr) { - // No-op. memory used by EventMemoryPool increases monotonically until the logReader is destroyed. - } -#endif uint64_t mono_time; cereal::Event::Which which; - cereal::Event::Reader event; - capnp::FlatArrayMessageReader reader; - kj::ArrayPtr words; - bool frame; + kj::ArrayPtr data; + int32_t eidx_segnum; }; class LogReader { public: - LogReader(size_t memory_pool_block_size = DEFAULT_EVENT_MEMORY_POOL_BLOCK_SIZE); - ~LogReader(); + LogReader(const std::vector &filters = {}) { filters_ = filters; } bool load(const std::string &url, std::atomic *abort = nullptr, bool local_cache = false, int chunk_size = -1, int retries = 0); - bool load(const std::byte *data, size_t size, std::atomic *abort = nullptr); - std::vector events; + bool load(const char *data, size_t size, std::atomic *abort = nullptr); + std::vector events; private: - bool parse(std::atomic *abort); std::string raw_; -#ifdef HAS_MEMORY_RESOURCE - std::unique_ptr mbr_; -#endif + std::vector filters_; + MonotonicBuffer buffer_{1024 * 1024}; }; diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index 9657375be7..6a159aa8e2 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -2,15 +2,20 @@ #include #include - #include +#include #include "cereal/services.h" #include "common/params.h" #include "common/timing.h" #include "tools/replay/util.h" +static void interrupt_sleep_handler(int signal) {} + Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *sm_, uint32_t flags, QString data_dir, QObject *parent) : sm(sm_), flags_(flags), QObject(parent) { + // Register signal handler for SIGUSR1 + std::signal(SIGUSR1, interrupt_sleep_handler); + if (!(flags_ & REPLAY_FLAG_ALL_SERVICES)) { block << "uiDebug" << "userFlag"; } @@ -22,6 +27,11 @@ Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *s sockets_[which] = name.c_str(); } } + if (!allow.isEmpty()) { + for (int i = 0; i < sockets_.size(); ++i) { + filters_.push_back(i == cereal::Event::Which::INIT_DATA || i == cereal::Event::Which::CAR_PARAMS || sockets_[i]); + } + } std::vector s; std::copy_if(sockets_.begin(), sockets_.end(), std::back_inserter(s), @@ -33,28 +43,21 @@ Replay::Replay(QString route, QStringList allow, QStringList block, SubMaster *s pm = std::make_unique(s); } route_ = std::make_unique(route, data_dir); - events_ = std::make_unique>(); - new_events_ = std::make_unique>(); } Replay::~Replay() { - stop(); -} - -void Replay::stop() { if (!stream_thread_ && segments_.empty()) return; rInfo("shutdown: in progress..."); if (stream_thread_ != nullptr) { - exit_ = updating_events_ = true; + exit_ =true; + paused_ = true; stream_cv_.notify_one(); stream_thread_->quit(); stream_thread_->wait(); - stream_thread_ = nullptr; + delete stream_thread_; } - camera_server_.reset(nullptr); timeline_future.waitForFinished(); - segments_.clear(); rInfo("shutdown: done"); } @@ -81,37 +84,41 @@ bool Replay::load() { } void Replay::start(int seconds) { - seekTo(route_->identifier().segment_id * 60 + seconds, false); + seekTo(route_->identifier().begin_segment * 60 + seconds, false); } -void Replay::updateEvents(const std::function &lambda) { - // set updating_events to true to force stream thread release the lock and wait for events_updated. - updating_events_ = true; +void Replay::updateEvents(const std::function &update_events_function) { + pauseStreamThread(); { std::unique_lock lk(stream_lock_); - events_updated_ = lambda(); - updating_events_ = false; + events_ready_ = update_events_function(); + paused_ = user_paused_; } stream_cv_.notify_one(); } void Replay::seekTo(double seconds, bool relative) { - seconds = relative ? seconds + currentSeconds() : seconds; updateEvents([&]() { - seconds = std::max(double(0.0), seconds); - int seg = (int)seconds / 60; - if (segments_.find(seg) == segments_.end()) { - rWarning("can't seek to %d s segment %d is invalid", seconds, seg); + seeking_to_seconds_ = relative ? seconds + currentSeconds() : seconds; + seeking_to_seconds_ = std::max(double(0.0), seeking_to_seconds_); + int target_segment = (int)seeking_to_seconds_ / 60; + if (segments_.count(target_segment) == 0) { + rWarning("can't seek to %d s segment %d is invalid", (int)seeking_to_seconds_, target_segment); return true; } - rInfo("seeking to %d s, segment %d", (int)seconds, seg); - current_segment_ = seg; - cur_mono_time_ = route_start_ts_ + seconds * 1e9; - emit seekedTo(seconds); - return isSegmentMerged(seg); + rInfo("seeking to %d s, segment %d", (int)seeking_to_seconds_, target_segment); + current_segment_ = target_segment; + cur_mono_time_ = route_start_ts_ + seeking_to_seconds_ * 1e9; + bool segment_merged = isSegmentMerged(target_segment); + if (segment_merged) { + emit seekedTo(seeking_to_seconds_); + // Reset seeking_to_seconds_ to indicate completion of seek + seeking_to_seconds_ = -1; + } + return segment_merged; }); - queueSegment(); + updateSegmentsCache(); } void Replay::seekToFlag(FindFlag flag) { @@ -140,32 +147,34 @@ void Replay::buildTimeline() { std::shared_ptr log(new LogReader()); if (!log->load(it->second.qlog.toStdString(), &exit_, !hasFlag(REPLAY_FLAG_NO_FILE_CACHE), 0, 3)) continue; - for (const Event *e : log->events) { - if (e->which == cereal::Event::Which::CONTROLS_STATE) { - auto cs = e->event.getControlsState(); + for (const Event &e : log->events) { + if (e.which == cereal::Event::Which::CONTROLS_STATE) { + capnp::FlatArrayMessageReader reader(e.data); + auto event = reader.getRoot(); + auto cs = event.getControlsState(); if (engaged != cs.getEnabled()) { if (engaged) { std::lock_guard lk(timeline_lock); - timeline.push_back({toSeconds(engaged_begin), toSeconds(e->mono_time), TimelineType::Engaged}); + timeline.push_back({toSeconds(engaged_begin), toSeconds(e.mono_time), TimelineType::Engaged}); } - engaged_begin = e->mono_time; + engaged_begin = e.mono_time; engaged = cs.getEnabled(); } if (alert_type != cs.getAlertType().cStr() || alert_status != cs.getAlertStatus()) { if (!alert_type.empty() && alert_size != cereal::ControlsState::AlertSize::NONE) { std::lock_guard lk(timeline_lock); - timeline.push_back({toSeconds(alert_begin), toSeconds(e->mono_time), timeline_types[(int)alert_status]}); + timeline.push_back({toSeconds(alert_begin), toSeconds(e.mono_time), timeline_types[(int)alert_status]}); } - alert_begin = e->mono_time; + alert_begin = e.mono_time; alert_type = cs.getAlertType().cStr(); alert_size = cs.getAlertSize(); alert_status = cs.getAlertStatus(); } - } else if (e->which == cereal::Event::Which::USER_FLAG) { + } else if (e.which == cereal::Event::Which::USER_FLAG) { std::lock_guard lk(timeline_lock); - timeline.push_back({toSeconds(e->mono_time), toSeconds(e->mono_time), TimelineType::UserFlag}); + timeline.push_back({toSeconds(e.mono_time), toSeconds(e.mono_time), TimelineType::UserFlag}); } } std::sort(timeline.begin(), timeline.end(), [](auto &l, auto &r) { return std::get<2>(l) < std::get<2>(r); }); @@ -195,16 +204,22 @@ std::optional Replay::find(FindFlag flag) { } void Replay::pause(bool pause) { - updateEvents([=]() { - rWarning("%s at %.2f s", pause ? "paused..." : "resuming", currentSeconds()); - paused_ = pause; - return true; - }); + if (user_paused_ != pause) { + pauseStreamThread(); + { + std::unique_lock lk(stream_lock_); + rWarning("%s at %.2f s", pause ? "paused..." : "resuming", currentSeconds()); + paused_ = user_paused_ = pause; + } + stream_cv_.notify_one(); + } } -void Replay::setCurrentSegment(int n) { - if (current_segment_.exchange(n) != n) { - QMetaObject::invokeMethod(this, &Replay::queueSegment, Qt::QueuedConnection); +void Replay::pauseStreamThread() { + paused_ = true; + // Send SIGUSR1 to interrupt clock_nanosleep + if (stream_thread_ && stream_thread_id) { + pthread_kill(stream_thread_id, SIGUSR1); } } @@ -214,26 +229,22 @@ void Replay::segmentLoadFinished(bool success) { rWarning("failed to load segment %d, removing it from current replay list", seg->seg_num); updateEvents([&]() { segments_.erase(seg->seg_num); - return true; + return !segments_.empty(); }); } - queueSegment(); + updateSegmentsCache(); } -void Replay::queueSegment() { +void Replay::updateSegmentsCache() { auto cur = segments_.lower_bound(current_segment_.load()); if (cur == segments_.end()) return; + // Calculate the range of segments to load auto begin = std::prev(cur, std::min(segment_cache_limit / 2, std::distance(segments_.begin(), cur))); - auto end = std::next(begin, std::min(segment_cache_limit, segments_.size())); - // load one segment at a time - auto it = std::find_if(cur, end, [](auto &it) { return !it.second || !it.second->isLoaded(); }); - if (it != end && !it->second) { - rDebug("loading segment %d...", it->first); - it->second = std::make_unique(it->first, route_->at(it->first), flags_); - QObject::connect(it->second.get(), &Segment::loadFinished, this, &Replay::segmentLoadFinished); - } + auto end = std::next(begin, std::min(segment_cache_limit, std::distance(begin, segments_.end()))); + begin = std::prev(end, std::min(segment_cache_limit, std::distance(segments_.begin(), end))); + loadSegmentInRange(begin, cur, end); mergeSegments(begin, end); // free segments out of current semgnt window. @@ -248,58 +259,95 @@ void Replay::queueSegment() { } } +void Replay::loadSegmentInRange(SegmentMap::iterator begin, SegmentMap::iterator cur, SegmentMap::iterator end) { + auto loadNext = [this](auto begin, auto end) { + auto it = std::find_if(begin, end, [](const auto &seg_it) { return !seg_it.second || !seg_it.second->isLoaded(); }); + if (it != end && !it->second) { + rDebug("loading segment %d...", it->first); + it->second = std::make_unique(it->first, route_->at(it->first), flags_, filters_); + QObject::connect(it->second.get(), &Segment::loadFinished, this, &Replay::segmentLoadFinished); + return true; + } + return false; + }; + + // Load forward segments, then try reverse + if (!loadNext(cur, end)) { + loadNext(std::make_reverse_iterator(cur), segments_.rend()); + } +} + void Replay::mergeSegments(const SegmentMap::iterator &begin, const SegmentMap::iterator &end) { - std::vector segments_need_merge; + std::set segments_to_merge; size_t new_events_size = 0; for (auto it = begin; it != end; ++it) { if (it->second && it->second->isLoaded()) { - segments_need_merge.push_back(it->first); + segments_to_merge.insert(it->first); new_events_size += it->second->log->events.size(); } } - if (segments_need_merge != segments_merged_) { - std::string s; - for (int i = 0; i < segments_need_merge.size(); ++i) { - s += std::to_string(segments_need_merge[i]); - if (i != segments_need_merge.size() - 1) s += ", "; - } - rDebug("merge segments %s", s.c_str()); - new_events_->clear(); - new_events_->reserve(new_events_size); - for (int n : segments_need_merge) { - size_t size = new_events_->size(); - const auto &events = segments_[n]->log->events; - std::copy_if(events.begin(), events.end(), std::back_inserter(*new_events_), - [this](auto e) { return e->which < sockets_.size() && sockets_[e->which] != nullptr; }); - std::inplace_merge(new_events_->begin(), new_events_->begin() + size, new_events_->end(), Event::lessThan()); - } + if (segments_to_merge == merged_segments_) return; - if (stream_thread_) { - emit segmentsMerged(); - } - updateEvents([&]() { - events_.swap(new_events_); - segments_merged_ = segments_need_merge; - // Do not wake up the stream thread if the current segment has not been merged. - return isSegmentMerged(current_segment_) || (segments_.count(current_segment_) == 0); - }); + rDebug("merge segments %s", std::accumulate(segments_to_merge.begin(), segments_to_merge.end(), std::string{}, + [](auto & a, int b) { return a + (a.empty() ? "" : ", ") + std::to_string(b); }).c_str()); + + std::vector new_events; + new_events.reserve(new_events_size); + + // Merge events from segments_to_merge into new_events + for (int n : segments_to_merge) { + size_t size = new_events.size(); + const auto &events = segments_.at(n)->log->events; + std::copy_if(events.begin(), events.end(), std::back_inserter(new_events), + [this](const Event &e) { return e.which < sockets_.size() && sockets_[e.which] != nullptr; }); + std::inplace_merge(new_events.begin(), new_events.begin() + size, new_events.end()); } + + if (stream_thread_) { + emit segmentsMerged(); + } + + updateEvents([&]() { + events_.swap(new_events); + merged_segments_ = segments_to_merge; + // Check if seeking is in progress + int target_segment = int(seeking_to_seconds_ / 60); + if (seeking_to_seconds_ >= 0 && segments_to_merge.count(target_segment) > 0) { + emit seekedTo(seeking_to_seconds_); + seeking_to_seconds_ = -1; // Reset seeking_to_seconds_ to indicate completion of seek + } + // Wake up the stream thread if the current segment is loaded or invalid. + return isSegmentMerged(current_segment_) || (segments_.count(current_segment_) == 0); + }); } void Replay::startStream(const Segment *cur_segment) { const auto &events = cur_segment->log->events; - - // each segment has an INIT_DATA - route_start_ts_ = events.front()->mono_time; + route_start_ts_ = events.front().mono_time; cur_mono_time_ += route_start_ts_ - 1; + // get datetime from INIT_DATA, fallback to datetime in the route name + route_date_time_ = route()->datetime(); + auto it = std::find_if(events.cbegin(), events.cend(), + [](const Event &e) { return e.which == cereal::Event::Which::INIT_DATA; }); + if (it != events.cend()) { + capnp::FlatArrayMessageReader reader(it->data); + auto event = reader.getRoot(); + uint64_t wall_time = event.getInitData().getWallTimeNanos(); + if (wall_time > 0) { + route_date_time_ = QDateTime::fromMSecsSinceEpoch(wall_time / 1e6); + } + } + // write CarParams - auto it = std::find_if(events.begin(), events.end(), [](auto e) { return e->which == cereal::Event::Which::CAR_PARAMS; }); + it = std::find_if(events.begin(), events.end(), [](const Event &e) { return e.which == cereal::Event::Which::CAR_PARAMS; }); if (it != events.end()) { - car_fingerprint_ = (*it)->event.getCarParams().getCarFingerprint(); + capnp::FlatArrayMessageReader reader(it->data); + auto event = reader.getRoot(); + car_fingerprint_ = event.getCarParams().getCarFingerprint(); capnp::MallocMessageBuilder builder; - builder.setRoot((*it)->event.getCarParams()); + builder.setRoot(event.getCarParams()); auto words = capnp::messageToFlatArray(builder); auto bytes = words.asBytes(); Params().put("CarParams", (const char *)bytes.begin(), bytes.size()); @@ -322,8 +370,7 @@ void Replay::startStream(const Segment *cur_segment) { emit segmentsMerged(); // start stream thread stream_thread_ = new QThread(); - QObject::connect(stream_thread_, &QThread::started, [=]() { stream(); }); - QObject::connect(stream_thread_, &QThread::finished, stream_thread_, &QThread::deleteLater); + QObject::connect(stream_thread_, &QThread::started, [=]() { streamThread(); }); stream_thread_->start(); timeline_future = QtConcurrent::run(this, &Replay::buildTimeline); @@ -333,92 +380,68 @@ void Replay::publishMessage(const Event *e) { if (event_filter && event_filter(e, filter_opaque)) return; if (sm == nullptr) { - auto bytes = e->bytes(); + auto bytes = e->data.asBytes(); int ret = pm->send(sockets_[e->which], (capnp::byte *)bytes.begin(), bytes.size()); if (ret == -1) { rWarning("stop publishing %s due to multiple publishers error", sockets_[e->which]); sockets_[e->which] = nullptr; } } else { - sm->update_msgs(nanos_since_boot(), {{sockets_[e->which], e->event}}); + capnp::FlatArrayMessageReader reader(e->data); + auto event = reader.getRoot(); + sm->update_msgs(nanos_since_boot(), {{sockets_[e->which], event}}); } } void Replay::publishFrame(const Event *e) { - static const std::map cam_types{ - {cereal::Event::ROAD_ENCODE_IDX, RoadCam}, - {cereal::Event::DRIVER_ENCODE_IDX, DriverCam}, - {cereal::Event::WIDE_ROAD_ENCODE_IDX, WideRoadCam}, - }; - if ((e->which == cereal::Event::DRIVER_ENCODE_IDX && !hasFlag(REPLAY_FLAG_DCAM)) || - (e->which == cereal::Event::WIDE_ROAD_ENCODE_IDX && !hasFlag(REPLAY_FLAG_ECAM))) { - return; + CameraType cam; + switch (e->which) { + case cereal::Event::ROAD_ENCODE_IDX: cam = RoadCam; break; + case cereal::Event::DRIVER_ENCODE_IDX: cam = DriverCam; break; + case cereal::Event::WIDE_ROAD_ENCODE_IDX: cam = WideRoadCam; break; + default: return; // Invalid event type } - auto eidx = capnp::AnyStruct::Reader(e->event).getPointerSection()[0].getAs(); - if (eidx.getType() == cereal::EncodeIndex::Type::FULL_H_E_V_C && isSegmentMerged(eidx.getSegmentNum())) { - CameraType cam = cam_types.at(e->which); - camera_server_->pushFrame(cam, segments_[eidx.getSegmentNum()]->frames[cam].get(), eidx); + + if ((cam == DriverCam && !hasFlag(REPLAY_FLAG_DCAM)) || (cam == WideRoadCam && !hasFlag(REPLAY_FLAG_ECAM))) + return; // Camera isdisabled + + if (isSegmentMerged(e->eidx_segnum)) { + auto &segment = segments_.at(e->eidx_segnum); + if (auto &frame = segment->frames[cam]; frame) { + camera_server_->pushFrame(cam, frame.get(), e); + } } } -void Replay::stream() { +void Replay::streamThread() { + stream_thread_id = pthread_self(); cereal::Event::Which cur_which = cereal::Event::Which::INIT_DATA; - double prev_replay_speed = speed_; std::unique_lock lk(stream_lock_); while (true) { - stream_cv_.wait(lk, [=]() { return exit_ || (events_updated_ && !paused_); }); - events_updated_ = false; + stream_cv_.wait(lk, [=]() { return exit_ || ( events_ready_ && !paused_); }); if (exit_) break; - Event cur_event(cur_which, cur_mono_time_); - auto eit = std::upper_bound(events_->begin(), events_->end(), &cur_event, Event::lessThan()); - if (eit == events_->end()) { + Event event(cur_which, cur_mono_time_, {}); + auto first = std::upper_bound(events_.cbegin(), events_.cend(), event); + if (first == events_.cend()) { rInfo("waiting for events..."); + events_ready_ = false; continue; } - uint64_t evt_start_ts = cur_mono_time_; - uint64_t loop_start_ts = nanos_since_boot(); + auto it = publishEvents(first, events_.cend()); - for (auto end = events_->end(); !updating_events_ && eit != end; ++eit) { - const Event *evt = (*eit); - cur_which = evt->which; - cur_mono_time_ = evt->mono_time; - setCurrentSegment(toSeconds(cur_mono_time_) / 60); - - if (sockets_[cur_which] != nullptr) { - // keep time - long etime = (cur_mono_time_ - evt_start_ts) / speed_; - long rtime = nanos_since_boot() - loop_start_ts; - long behind_ns = etime - rtime; - // if behind_ns is greater than 1 second, it means that an invalid segment is skipped by seeking/replaying - if (behind_ns >= 1 * 1e9 || speed_ != prev_replay_speed) { - // reset event start times - evt_start_ts = cur_mono_time_; - loop_start_ts = nanos_since_boot(); - prev_replay_speed = speed_; - } else if (behind_ns > 0) { - precise_nano_sleep(behind_ns); - } - - if (!evt->frame) { - publishMessage(evt); - } else if (camera_server_) { - if (speed_ > 1.0) { - camera_server_->waitForSent(); - } - publishFrame(evt); - } - } - } - // wait for frame to be sent before unlock.(frameReader may be deleted after unlock) + // Ensure frames are sent before unlocking to prevent race conditions if (camera_server_) { camera_server_->waitForSent(); } - if (eit == events_->end() && !hasFlag(REPLAY_FLAG_NO_LOOP)) { - int last_segment = segments_.empty() ? 0 : segments_.rbegin()->first; + if (it != events_.cend()) { + cur_which = it->which; + } else if (!hasFlag(REPLAY_FLAG_NO_LOOP)) { + // Check for loop end and restart if necessary + int last_segment = segments_.rbegin()->first; if (current_segment_ >= last_segment && isSegmentMerged(last_segment)) { rInfo("reaches the end of route, restart from beginning"); QMetaObject::invokeMethod(this, std::bind(&Replay::seekTo, this, 0, false), Qt::QueuedConnection); @@ -426,3 +449,51 @@ void Replay::stream() { } } } + +std::vector::const_iterator Replay::publishEvents(std::vector::const_iterator first, + std::vector::const_iterator last) { + uint64_t evt_start_ts = cur_mono_time_; + uint64_t loop_start_ts = nanos_since_boot(); + double prev_replay_speed = speed_; + + for (; !paused_ && first != last; ++first) { + const Event &evt = *first; + int segment = toSeconds(evt.mono_time) / 60; + + if (current_segment_ != segment) { + current_segment_ = segment; + QMetaObject::invokeMethod(this, &Replay::updateSegmentsCache, Qt::QueuedConnection); + } + + // Skip events if socket is not present + if (!sockets_[evt.which]) continue; + + const uint64_t current_nanos = nanos_since_boot(); + const int64_t time_diff = (evt.mono_time - evt_start_ts) / speed_ - (current_nanos - loop_start_ts); + + // Reset timestamps for potential synchronization issues: + // - A negative time_diff may indicate slow execution or system wake-up, + // - A time_diff exceeding 1 second suggests a skipped segment. + if ((time_diff < -1e9 || time_diff >= 1e9) || speed_ != prev_replay_speed) { + evt_start_ts = evt.mono_time; + loop_start_ts = current_nanos; + prev_replay_speed = speed_; + } else if (time_diff > 0) { + precise_nano_sleep(time_diff); + } + + if (paused_) break; + + cur_mono_time_ = evt.mono_time; + if (evt.eidx_segnum == -1) { + publishMessage(&evt); + } else if (camera_server_) { + if (speed_ > 1.0) { + camera_server_->waitForSent(); + } + publishFrame(&evt); + } + } + + return first; +} diff --git a/tools/replay/replay.h b/tools/replay/replay.h index 1a74b69c3d..e3f321e1d7 100644 --- a/tools/replay/replay.h +++ b/tools/replay/replay.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -53,11 +54,10 @@ public: ~Replay(); bool load(); void start(int seconds = 0); - void stop(); void pause(bool pause); void seekToFlag(FindFlag flag); void seekTo(double seconds, bool relative); - inline bool isPaused() const { return paused_; } + inline bool isPaused() const { return user_paused_; } // the filter is called in streaming thread.try to return quickly from it to avoid blocking streaming. // the filter function must return true if the event should be filtered. // otherwise it must return false. @@ -72,13 +72,14 @@ public: inline void removeFlag(REPLAY_FLAGS flag) { flags_ &= ~flag; } inline const Route* route() const { return route_.get(); } inline double currentSeconds() const { return double(cur_mono_time_ - route_start_ts_) / 1e9; } - inline QDateTime currentDateTime() const { return route_->datetime().addSecs(currentSeconds()); } + inline QDateTime routeDateTime() const { return route_date_time_; } + inline QDateTime currentDateTime() const { return route_date_time_.addSecs(currentSeconds()); } inline uint64_t routeStartTime() const { return route_start_ts_; } inline double toSeconds(uint64_t mono_time) const { return (mono_time - route_start_ts_) / 1e9; } inline int totalSeconds() const { return (!segments_.empty()) ? (segments_.rbegin()->first + 1) * 60 : 0; } inline void setSpeed(float speed) { speed_ = speed; } inline float getSpeed() const { return speed_; } - inline const std::vector *events() const { return events_.get(); } + inline const std::vector *events() const { return &events_; } inline const std::map> &segments() const { return segments_; } inline const std::string &carFingerprint() const { return car_fingerprint_; } inline const std::vector> getTimeline() { @@ -98,39 +99,43 @@ protected slots: protected: typedef std::map> SegmentMap; std::optional find(FindFlag flag); + void pauseStreamThread(); void startStream(const Segment *cur_segment); - void stream(); - void setCurrentSegment(int n); - void queueSegment(); + void streamThread(); + void updateSegmentsCache(); + void loadSegmentInRange(SegmentMap::iterator begin, SegmentMap::iterator cur, SegmentMap::iterator end); void mergeSegments(const SegmentMap::iterator &begin, const SegmentMap::iterator &end); - void updateEvents(const std::function& lambda); + void updateEvents(const std::function& update_events_function); + std::vector::const_iterator publishEvents(std::vector::const_iterator first, + std::vector::const_iterator last); void publishMessage(const Event *e); void publishFrame(const Event *e); void buildTimeline(); - inline bool isSegmentMerged(int n) { - return std::find(segments_merged_.begin(), segments_merged_.end(), n) != segments_merged_.end(); - } + inline bool isSegmentMerged(int n) const { return merged_segments_.count(n) > 0; } + pthread_t stream_thread_id = 0; QThread *stream_thread_ = nullptr; std::mutex stream_lock_; + bool user_paused_ = false; std::condition_variable stream_cv_; - std::atomic updating_events_ = false; std::atomic current_segment_ = 0; + double seeking_to_seconds_ = -1; SegmentMap segments_; // the following variables must be protected with stream_lock_ std::atomic exit_ = false; - bool paused_ = false; - bool events_updated_ = false; + std::atomic paused_ = false; + bool events_ready_ = false; + QDateTime route_date_time_; uint64_t route_start_ts_ = 0; std::atomic cur_mono_time_ = 0; - std::unique_ptr> events_; - std::unique_ptr> new_events_; - std::vector segments_merged_; + std::vector events_; + std::set merged_segments_; // messaging SubMaster *sm = nullptr; std::unique_ptr pm; std::vector sockets_; + std::vector filters_; std::unique_ptr route_; std::unique_ptr camera_server_; std::atomic flags_ = REPLAY_FLAG_NONE; diff --git a/tools/replay/route.cc b/tools/replay/route.cc index d0ddf7f3c8..e8e73459ea 100644 --- a/tools/replay/route.cc +++ b/tools/replay/route.cc @@ -4,7 +4,7 @@ #include #include #include -#include +#include #include #include @@ -18,11 +18,24 @@ Route::Route(const QString &route, const QString &data_dir) : data_dir_(data_dir } RouteIdentifier Route::parseRoute(const QString &str) { - QRegExp rx(R"(^(?:([a-z0-9]{16})([|_/]))?(\d{4}-\d{2}-\d{2}--\d{2}-\d{2}-\d{2})(?:(--|/)(\d*))?$)"); - if (rx.indexIn(str) == -1) return {}; - - const QStringList list = rx.capturedTexts(); - return {.dongle_id = list[1], .timestamp = list[3], .segment_id = list[5].toInt(), .str = list[1] + "|" + list[3]}; + RouteIdentifier identifier = {}; + QRegularExpression rx(R"(^((?[a-z0-9]{16})[|_/])?(?.{20})((?--|/)(?((-?\d+(:(-?\d+)?)?)|(:-?\d+))))?$)"); + if (auto match = rx.match(str); match.hasMatch()) { + identifier.dongle_id = match.captured("dongle_id"); + identifier.timestamp = match.captured("timestamp"); + identifier.str = identifier.dongle_id + "|" + identifier.timestamp; + auto range_str = match.captured("range"); + if (auto separator = match.captured("separator"); separator == "/" && !range_str.isEmpty()) { + auto range = range_str.split(":"); + identifier.begin_segment = identifier.end_segment = range[0].toInt(); + if (range.size() == 2) { + identifier.end_segment = range[1].isEmpty() ? -1 : range[1].toInt(); + } + } else if (separator == "--") { + identifier.begin_segment = range_str.toInt(); + } + } + return identifier; } bool Route::load() { @@ -31,21 +44,42 @@ bool Route::load() { return false; } date_time_ = QDateTime::fromString(route_.timestamp, "yyyy-MM-dd--HH-mm-ss"); - return data_dir_.isEmpty() ? loadFromServer() : loadFromLocal(); + bool ret = data_dir_.isEmpty() ? loadFromServer() : loadFromLocal(); + if (ret) { + if (route_.begin_segment == -1) route_.begin_segment = segments_.rbegin()->first; + if (route_.end_segment == -1) route_.end_segment = segments_.rbegin()->first; + for (auto it = segments_.begin(); it != segments_.end(); /**/) { + if (it->first < route_.begin_segment || it->first > route_.end_segment) { + it = segments_.erase(it); + } else { + ++it; + } + } + } + return !segments_.empty(); } -bool Route::loadFromServer() { - QEventLoop loop; - HttpRequest http(nullptr, !Hardware::PC()); - QObject::connect(&http, &HttpRequest::requestDone, [&](const QString &json, bool success, QNetworkReply::NetworkError error) { - if (error == QNetworkReply::ContentAccessDenied || error == QNetworkReply::AuthenticationRequiredError) { - qWarning() << ">> Unauthorized. Authenticate with tools/lib/auth.py <<"; +bool Route::loadFromServer(int retries) { + for (int i = 1; i <= retries; ++i) { + QString result; + QEventLoop loop; + HttpRequest http(nullptr, !Hardware::PC()); + QObject::connect(&http, &HttpRequest::requestDone, [&loop, &result](const QString &json, bool success, QNetworkReply::NetworkError err) { + result = json; + loop.exit((int)err); + }); + http.sendRequest(CommaApi::BASE_URL + "/v1/route/" + route_.str + "/files"); + auto err = (QNetworkReply::NetworkError)loop.exec(); + if (err == QNetworkReply::NoError) { + return loadFromJson(result); + } else if (err == QNetworkReply::ContentAccessDenied || err == QNetworkReply::AuthenticationRequiredError) { + rWarning(">> Unauthorized. Authenticate with tools/lib/auth.py <<"); + return false; } - - loop.exit(success ? loadFromJson(json) : 0); - }); - http.sendRequest(CommaApi::BASE_URL + "/v1/route/" + route_.str + "/files"); - return loop.exec(); + rWarning("Retrying %d/%d", i, retries); + util::sleep_for(3000); + } + return false; } bool Route::loadFromJson(const QString &json) { @@ -62,15 +96,13 @@ bool Route::loadFromJson(const QString &json) { } bool Route::loadFromLocal() { - QDir log_dir(data_dir_); - for (const auto &folder : log_dir.entryList(QDir::Dirs | QDir::NoDot | QDir::NoDotDot, QDir::NoSort)) { - int pos = folder.lastIndexOf("--"); - if (pos != -1 && folder.left(pos) == route_.timestamp) { - const int seg_num = folder.mid(pos + 2).toInt(); - QDir segment_dir(log_dir.filePath(folder)); - for (const auto &f : segment_dir.entryList(QDir::Files)) { - addFileToSegment(seg_num, segment_dir.absoluteFilePath(f)); - } + QDirIterator it(data_dir_, {QString("%1--*").arg(route_.timestamp)}, QDir::Dirs | QDir::NoDotAndDotDot); + while (it.hasNext()) { + QString segment = it.next(); + const int seg_num = segment.mid(segment.lastIndexOf("--") + 2).toInt(); + QDir segment_dir(segment); + for (const auto &f : segment_dir.entryList(QDir::Files)) { + addFileToSegment(seg_num, segment_dir.absoluteFilePath(f)); } } return !segments_.empty(); @@ -99,7 +131,8 @@ void Route::addFileToSegment(int n, const QString &file) { // class Segment -Segment::Segment(int n, const SegmentFile &files, uint32_t flags) : seg_num(n), flags(flags) { +Segment::Segment(int n, const SegmentFile &files, uint32_t flags, const std::vector &filters) + : seg_num(n), flags(flags), filters_(filters) { // [RoadCam, DriverCam, WideRoadCam, log]. fallback to qcamera/qlog const std::array file_list = { (flags & REPLAY_FLAG_QCAMERA) || files.road_cam.isEmpty() ? files.qcamera : files.road_cam, @@ -127,9 +160,9 @@ void Segment::loadFile(int id, const std::string file) { bool success = false; if (id < MAX_CAMERAS) { frames[id] = std::make_unique(); - success = frames[id]->load(file, flags & REPLAY_FLAG_NO_HW_DECODER, &abort_, local_cache, 20 * 1024 * 1024, 3); + success = frames[id]->load((CameraType)id, file, flags & REPLAY_FLAG_NO_HW_DECODER, &abort_, local_cache, 20 * 1024 * 1024, 3); } else { - log = std::make_unique(); + log = std::make_unique(filters_); success = log->load(file, &abort_, local_cache, 0, 3); } diff --git a/tools/replay/route.h b/tools/replay/route.h index 4dad7a1f37..f956497804 100644 --- a/tools/replay/route.h +++ b/tools/replay/route.h @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -14,7 +15,8 @@ struct RouteIdentifier { QString dongle_id; QString timestamp; - int segment_id; + int begin_segment = 0; + int end_segment = -1; QString str; }; @@ -41,7 +43,7 @@ public: protected: bool loadFromLocal(); - bool loadFromServer(); + bool loadFromServer(int retries = 3); bool loadFromJson(const QString &json); void addFileToSegment(int seg_num, const QString &file); RouteIdentifier route_ = {}; @@ -54,7 +56,7 @@ class Segment : public QObject { Q_OBJECT public: - Segment(int n, const SegmentFile &files, uint32_t flags); + Segment(int n, const SegmentFile &files, uint32_t flags, const std::vector &filters = {}); ~Segment(); inline bool isLoaded() const { return !loading_ && !abort_; } @@ -72,4 +74,5 @@ protected: std::atomic loading_ = 0; QFutureSynchronizer synchronizer_; uint32_t flags; + std::vector filters_; }; diff --git a/tools/replay/tests/test_replay.cc b/tools/replay/tests/test_replay.cc index 92510053ef..6c005f1bd4 100644 --- a/tools/replay/tests/test_replay.cc +++ b/tools/replay/tests/test_replay.cc @@ -1,7 +1,6 @@ #include #include -#include #include #include "catch2/catch.hpp" @@ -67,7 +66,7 @@ TEST_CASE("LogReader") { corrupt_content.resize(corrupt_content.length() / 2); corrupt_content = decompressBZ2(corrupt_content); LogReader log; - REQUIRE(log.load((std::byte *)corrupt_content.data(), corrupt_content.size())); + REQUIRE(log.load(corrupt_content.data(), corrupt_content.size())); REQUIRE(log.events.size() > 0); } } @@ -88,7 +87,7 @@ void read_segment(int n, const SegmentFile &segment_file, uint32_t flags) { // test LogReader & FrameReader REQUIRE(segment.log->events.size() > 0); - REQUIRE(std::is_sorted(segment.log->events.begin(), segment.log->events.end(), Event::lessThan())); + REQUIRE(std::is_sorted(segment.log->events.begin(), segment.log->events.end())); for (auto cam : ALL_CAMERAS) { auto &fr = segment.frames[cam]; @@ -158,63 +157,20 @@ TEST_CASE("Remote route") { } } -// helper class for unit tests -class TestReplay : public Replay { - public: - TestReplay(const QString &route, uint32_t flags = REPLAY_FLAG_NO_FILE_CACHE | REPLAY_FLAG_NO_VIPC) : Replay(route, {}, {}, nullptr, flags) {} - void test_seek(); - void testSeekTo(int seek_to); -}; - -void TestReplay::testSeekTo(int seek_to) { - seekTo(seek_to, false); - - while (true) { - std::unique_lock lk(stream_lock_); - stream_cv_.wait(lk, [=]() { return events_updated_ == true; }); - events_updated_ = false; - if (cur_mono_time_ != route_start_ts_ + seek_to * 1e9) { - // wake up by the previous merging, skip it. - continue; - } - - Event cur_event(cereal::Event::Which::INIT_DATA, cur_mono_time_); - auto eit = std::upper_bound(events_->begin(), events_->end(), &cur_event, Event::lessThan()); - if (eit == events_->end()) { - qDebug() << "waiting for events..."; - continue; - } - - REQUIRE(std::is_sorted(events_->begin(), events_->end(), Event::lessThan())); - const int seek_to_segment = seek_to / 60; - const int event_seconds = ((*eit)->mono_time - route_start_ts_) / 1e9; - current_segment_ = event_seconds / 60; - INFO("seek to [" << seek_to << "s segment " << seek_to_segment << "], events [" << event_seconds << "s segment" << current_segment_ << "]"); - REQUIRE(event_seconds >= seek_to); - if (event_seconds > seek_to) { - auto it = segments_.lower_bound(seek_to_segment); - REQUIRE(it->first == current_segment_); - } - break; - } -} - -void TestReplay::test_seek() { - // create a dummy stream thread - stream_thread_ = new QThread(this); +TEST_CASE("seek_to") { QEventLoop loop; - std::thread thread = std::thread([&]() { - for (int i = 0; i < 10; ++i) { - testSeekTo(util::random_int(0, 2 * 60)); - } + int seek_to = util::random_int(0, 2 * 59); + Replay replay(DEMO_ROUTE, {}, {}, nullptr, REPLAY_FLAG_NO_VIPC); + + QObject::connect(&replay, &Replay::seekedTo, [&](double sec) { + INFO("seek to " << seek_to << "s seeked to" << sec); + REQUIRE(sec >= seek_to); loop.quit(); }); - loop.exec(); - thread.join(); -} -TEST_CASE("Replay") { - TestReplay replay(DEMO_ROUTE); REQUIRE(replay.load()); - replay.test_seek(); + replay.start(); + replay.seekTo(seek_to, false); + + loop.exec(); } diff --git a/tools/replay/ui.py b/tools/replay/ui.py index be80166e76..31e4fff74d 100755 --- a/tools/replay/ui.py +++ b/tools/replay/ui.py @@ -10,8 +10,9 @@ import pygame import cereal.messaging as messaging from openpilot.common.numpy_fast import clip from openpilot.common.basedir import BASEDIR -from openpilot.tools.replay.lib.ui_helpers import (_BB_TO_FULL_FRAME, UP, - _INTRINSICS, BLACK, GREEN, +from openpilot.common.transformations.camera import DEVICE_CAMERAS +from openpilot.tools.replay.lib.ui_helpers import (UP, + BLACK, GREEN, YELLOW, Calibration, get_blank_lid_overlay, init_plots, maybe_update_radar_points, plot_lead, @@ -55,7 +56,7 @@ def ui_thread(addr): top_down_surface = pygame.surface.Surface((UP.lidar_x, UP.lidar_y), 0, 8) sm = messaging.SubMaster(['carState', 'longitudinalPlan', 'carControl', 'radarState', 'liveCalibration', 'controlsState', - 'liveTracks', 'modelV2', 'liveParameters'], addr=addr) + 'liveTracks', 'modelV2', 'liveParameters', 'roadCameraState'], addr=addr) img = np.zeros((480, 640, 3), dtype='uint8') imgff = None @@ -100,8 +101,11 @@ def ui_thread(addr): draw_plots = init_plots(plot_arr, name_to_arr_idx, plot_xlims, plot_ylims, plot_names, plot_colors, plot_styles) vipc_client = VisionIpcClient("camerad", VisionStreamType.VISION_STREAM_ROAD, True) - while 1: - list(pygame.event.get()) + while True: + for event in pygame.event.get(): + if event.type == pygame.QUIT: + pygame.quit() + sys.exit() screen.fill((64, 64, 64)) lid_overlay = lid_overlay_blank.copy() @@ -112,20 +116,27 @@ def ui_thread(addr): vipc_client.connect(True) yuv_img_raw = vipc_client.recv() - if yuv_img_raw is None or not yuv_img_raw.data.any(): continue + sm.update(0) + + camera = DEVICE_CAMERAS[("tici", str(sm['roadCameraState'].sensor))] + imgff = np.frombuffer(yuv_img_raw.data, dtype=np.uint8).reshape((len(yuv_img_raw.data) // vipc_client.stride, vipc_client.stride)) num_px = vipc_client.width * vipc_client.height rgb = cv2.cvtColor(imgff[:vipc_client.height * 3 // 2, :vipc_client.width], cv2.COLOR_YUV2RGB_NV12) - zoom_matrix = _BB_TO_FULL_FRAME[num_px] + qcam = "QCAM" in os.environ + bb_scale = (528 if qcam else camera.fcam.width) / 640. + calib_scale = camera.fcam.width / 640. + zoom_matrix = np.asarray([ + [bb_scale, 0., 0.], + [0., bb_scale, 0.], + [0., 0., 1.]]) cv2.warpAffine(rgb, zoom_matrix[:2], (img.shape[1], img.shape[0]), dst=img, flags=cv2.WARP_INVERSE_MAP) - intrinsic_matrix = _INTRINSICS[num_px] - - sm.update(0) + intrinsic_matrix = camera.fcam.intrinsics w = sm['controlsState'].lateralControlState.which() if w == 'lqrStateDEPRECATED': @@ -165,7 +176,7 @@ def ui_thread(addr): if sm.updated['liveCalibration'] and num_px: rpyCalib = np.asarray(sm['liveCalibration'].rpyCalib) - calibration = Calibration(num_px, rpyCalib, intrinsic_matrix) + calibration = Calibration(num_px, rpyCalib, intrinsic_matrix, calib_scale) # *** blits *** pygame.surfarray.blit_array(camera_surface, img.swapaxes(0, 1)) diff --git a/tools/replay/util.cc b/tools/replay/util.cc index b4f72d0530..c8203fd79d 100644 --- a/tools/replay/util.cc +++ b/tools/replay/util.cc @@ -4,10 +4,11 @@ #include #include +#include +#include +#include #include #include -#include -#include #include #include #include @@ -158,7 +159,10 @@ size_t getRemoteFileSize(const std::string &url, std::atomic *abort) { int still_running = 1; while (still_running > 0 && !(abort && *abort)) { CURLMcode mc = curl_multi_perform(cm, &still_running); - if (!mc) curl_multi_wait(cm, nullptr, 0, 1000, nullptr); + if (mc != CURLM_OK) break; + if (still_running > 0) { + curl_multi_wait(cm, nullptr, 0, 1000, nullptr); + } } double content_length = -1; @@ -208,10 +212,20 @@ bool httpDownload(const std::string &url, T &buf, size_t chunk_size, size_t cont } int still_running = 1; + size_t prev_written = 0; while (still_running > 0 && !(abort && *abort)) { - curl_multi_wait(cm, nullptr, 0, 1000, nullptr); - curl_multi_perform(cm, &still_running); - download_stats.update(url, written); + CURLMcode mc = curl_multi_perform(cm, &still_running); + if (mc != CURLM_OK) { + break; + } + if (still_running > 0) { + curl_multi_wait(cm, nullptr, 0, 1000, nullptr); + } + + if (((written - prev_written) / (double)content_length) >= 0.01) { + download_stats.update(url, written); + prev_written = written; + } } CURLMsg *msg; @@ -298,27 +312,39 @@ std::string decompressBZ2(const std::byte *in, size_t in_size, std::atomic BZ2_bzDecompressEnd(&strm); if (bzerror == BZ_STREAM_END && !(abort && *abort)) { out.resize(strm.total_out_lo32); + out.shrink_to_fit(); return out; } return {}; } -void precise_nano_sleep(long sleep_ns) { +void precise_nano_sleep(int64_t nanoseconds) { +#ifdef __APPLE__ const long estimate_ns = 1 * 1e6; // 1ms struct timespec req = {.tv_nsec = estimate_ns}; uint64_t start_sleep = nanos_since_boot(); - while (sleep_ns > estimate_ns) { + while (nanoseconds > estimate_ns) { nanosleep(&req, nullptr); uint64_t end_sleep = nanos_since_boot(); - sleep_ns -= (end_sleep - start_sleep); + nanoseconds -= (end_sleep - start_sleep); start_sleep = end_sleep; } // spin wait - if (sleep_ns > 0) { - while ((nanos_since_boot() - start_sleep) <= sleep_ns) { + if (nanoseconds > 0) { + while ((nanos_since_boot() - start_sleep) <= nanoseconds) { std::this_thread::yield(); } } +#else + struct timespec req, rem; + + req.tv_sec = nanoseconds / 1e9; + req.tv_nsec = nanoseconds % (int64_t)1e9; + while (clock_nanosleep(CLOCK_MONOTONIC, 0, &req, &rem) && errno == EINTR) { + // Retry sleep if interrupted by a signal + req = rem; + } +#endif } std::string sha256(const std::string &str) { @@ -329,3 +355,26 @@ std::string sha256(const std::string &str) { SHA256_Final(hash, &sha256); return util::hexdump(hash, SHA256_DIGEST_LENGTH); } + +// MonotonicBuffer + +void *MonotonicBuffer::allocate(size_t bytes, size_t alignment) { + assert(bytes > 0); + void *p = std::align(alignment, bytes, current_buf, available); + if (p == nullptr) { + available = next_buffer_size = std::max(next_buffer_size, bytes); + current_buf = buffers.emplace_back(std::aligned_alloc(alignment, next_buffer_size)); + next_buffer_size *= growth_factor; + p = current_buf; + } + + current_buf = (char *)current_buf + bytes; + available -= bytes; + return p; +} + +MonotonicBuffer::~MonotonicBuffer() { + for (auto buf : buffers) { + free(buf); + } +} diff --git a/tools/replay/util.h b/tools/replay/util.h index 6c808095e8..750c133555 100644 --- a/tools/replay/util.h +++ b/tools/replay/util.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -20,8 +21,23 @@ void logMessage(ReplyMsgType type, const char* fmt, ...); #define rWarning(fmt, ...) ::logMessage(ReplyMsgType::Warning, fmt, ## __VA_ARGS__) #define rError(fmt, ...) ::logMessage(ReplyMsgType::Critical , fmt, ## __VA_ARGS__) +class MonotonicBuffer { +public: + MonotonicBuffer(size_t initial_size) : next_buffer_size(initial_size) {} + ~MonotonicBuffer(); + void *allocate(size_t bytes, size_t alignment = 16ul); + void deallocate(void *p) {} + +private: + void *current_buf = nullptr; + size_t next_buffer_size = 0; + size_t available = 0; + std::deque buffers; + static constexpr float growth_factor = 1.5; +}; + std::string sha256(const std::string &str); -void precise_nano_sleep(long sleep_ns); +void precise_nano_sleep(int64_t nanoseconds); std::string decompressBZ2(const std::string &in, std::atomic *abort = nullptr); std::string decompressBZ2(const std::byte *in, size_t in_size, std::atomic *abort = nullptr); std::string getUrlWithoutQuery(const std::string &url); diff --git a/tools/sim/bridge/common.py b/tools/sim/bridge/common.py index 10e2a055a3..46d09c7b9d 100644 --- a/tools/sim/bridge/common.py +++ b/tools/sim/bridge/common.py @@ -13,7 +13,6 @@ from openpilot.selfdrive.car.honda.values import CruiseButtons from openpilot.tools.sim.lib.common import SimulatorState, World from openpilot.tools.sim.lib.simulated_car import SimulatedCar from openpilot.tools.sim.lib.simulated_sensors import SimulatedSensors -from openpilot.tools.sim.lib.keyboard_ctrl import KEYBOARD_HELP def rk_loop(function, hz, exit_event: threading.Event): @@ -29,6 +28,7 @@ class SimulatorBridge(ABC): def __init__(self, dual_camera, high_quality): set_params_enabled() self.params = Params() + self.params.put_bool("ExperimentalLongitudinalEnabled", True) self.rk = Ratekeeper(100, None) @@ -46,6 +46,7 @@ class SimulatorBridge(ABC): self.world: World | None = None self.past_startup_engaged = False + self.startup_button_prev = True def _on_shutdown(self, signal, frame): self.shutdown() @@ -57,14 +58,14 @@ class SimulatorBridge(ABC): try: self._run(q) finally: - self.close() + self.close("bridge terminated") - def close(self): + def close(self, reason): self.started.value = False self._exit_event.set() if self.world is not None: - self.world.close() + self.world.close(reason) def run(self, queue, retries=-1): bridge_p = Process(name="bridge", target=self.bridge_keep_alive, args=(queue, retries)) @@ -74,9 +75,6 @@ class SimulatorBridge(ABC): def print_status(self): print( f""" -Keyboard Commands: -{KEYBOARD_HELP} - State: Ignition: {self.simulator_state.ignition} Engaged: {self.simulator_state.is_engaged} """) @@ -164,15 +162,20 @@ Ignition: {self.simulator_state.ignition} Engaged: {self.simulator_state.is_enga self.past_startup_engaged = True elif not self.past_startup_engaged and controlsState.engageable: - self.simulator_state.cruise_button = CruiseButtons.DECEL_SET # force engagement on startup + self.simulator_state.cruise_button = CruiseButtons.DECEL_SET if self.startup_button_prev else CruiseButtons.MAIN # force engagement on startup + self.startup_button_prev = not self.startup_button_prev throttle_out = throttle_op if self.simulator_state.is_engaged else throttle_manual brake_out = brake_op if self.simulator_state.is_engaged else brake_manual steer_out = steer_op if self.simulator_state.is_engaged else steer_manual self.world.apply_controls(steer_out, throttle_out, brake_out) + self.world.read_state() self.world.read_sensors(self.simulator_state) + if self.world.exit_event.is_set(): + self.shutdown() + if self.rk.frame % self.TICKS_PER_FRAME == 0: self.world.tick() self.world.read_cameras() diff --git a/tools/sim/bridge/metadrive/metadrive_bridge.py b/tools/sim/bridge/metadrive/metadrive_bridge.py index c94fca2b95..5c91238c55 100644 --- a/tools/sim/bridge/metadrive/metadrive_bridge.py +++ b/tools/sim/bridge/metadrive/metadrive_bridge.py @@ -1,48 +1,14 @@ -import numpy as np +from multiprocessing import Queue -from metadrive.component.sensors.rgb_camera import RGBCamera from metadrive.component.sensors.base_camera import _cuda_enable from metadrive.component.map.pg_map import MapGenerateMethod -from panda3d.core import Texture, GraphicsOutput from openpilot.tools.sim.bridge.common import SimulatorBridge +from openpilot.tools.sim.bridge.metadrive.metadrive_common import RGBCameraRoad, RGBCameraWide from openpilot.tools.sim.bridge.metadrive.metadrive_world import MetaDriveWorld from openpilot.tools.sim.lib.camerad import W, H - -class CopyRamRGBCamera(RGBCamera): - """Camera which copies its content into RAM during the render process, for faster image grabbing.""" - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - self.cpu_texture = Texture() - self.buffer.addRenderTexture(self.cpu_texture, GraphicsOutput.RTMCopyRam) - - def get_rgb_array_cpu(self): - origin_img = self.cpu_texture - img = np.frombuffer(origin_img.getRamImage().getData(), dtype=np.uint8) - img = img.reshape((origin_img.getYSize(), origin_img.getXSize(), -1)) - img = img[:,:,:3] # RGBA to RGB - # img = np.swapaxes(img, 1, 0) - img = img[::-1] # Flip on vertical axis - return img - - -class RGBCameraWide(CopyRamRGBCamera): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - lens = self.get_lens() - lens.setFov(120) - lens.setNear(0.1) - -class RGBCameraRoad(CopyRamRGBCamera): - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - lens = self.get_lens() - lens.setFov(40) - lens.setNear(0.1) - - def straight_block(length): return { "id": "S", @@ -109,6 +75,7 @@ class MetaDriveBridge(SimulatorBridge): on_continuous_line_done=False, crash_vehicle_done=False, crash_object_done=False, + arrive_dest_done=False, traffic_density=0.0, # traffic is incredibly expensive map_config=create_map(), decision_repeat=1, @@ -116,4 +83,4 @@ class MetaDriveBridge(SimulatorBridge): preload_models=False ) - return MetaDriveWorld(config, self.dual_camera) + return MetaDriveWorld(Queue(), config, self.dual_camera) diff --git a/tools/sim/bridge/metadrive/metadrive_common.py b/tools/sim/bridge/metadrive/metadrive_common.py new file mode 100644 index 0000000000..42a7eb60dd --- /dev/null +++ b/tools/sim/bridge/metadrive/metadrive_common.py @@ -0,0 +1,37 @@ +import numpy as np + +from metadrive.component.sensors.rgb_camera import RGBCamera +from panda3d.core import Texture, GraphicsOutput + + +class CopyRamRGBCamera(RGBCamera): + """Camera which copies its content into RAM during the render process, for faster image grabbing.""" + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.cpu_texture = Texture() + self.buffer.addRenderTexture(self.cpu_texture, GraphicsOutput.RTMCopyRam) + + def get_rgb_array_cpu(self): + origin_img = self.cpu_texture + img = np.frombuffer(origin_img.getRamImage().getData(), dtype=np.uint8) + img = img.reshape((origin_img.getYSize(), origin_img.getXSize(), -1)) + img = img[:,:,:3] # RGBA to RGB + # img = np.swapaxes(img, 1, 0) + img = img[::-1] # Flip on vertical axis + return img + + +class RGBCameraWide(CopyRamRGBCamera): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + lens = self.get_lens() + lens.setFov(120) + lens.setNear(0.1) + + +class RGBCameraRoad(CopyRamRGBCamera): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + lens = self.get_lens() + lens.setFov(40) + lens.setNear(0.1) diff --git a/tools/sim/bridge/metadrive/metadrive_process.py b/tools/sim/bridge/metadrive/metadrive_process.py index aa6ae57976..79eefcd545 100644 --- a/tools/sim/bridge/metadrive/metadrive_process.py +++ b/tools/sim/bridge/metadrive/metadrive_process.py @@ -19,9 +19,10 @@ C3_POSITION = Vec3(0.0, 0, 1.22) C3_HPR = Vec3(0, 0,0) -metadrive_state = namedtuple("metadrive_state", ["velocity", "position", "bearing", "steering_angle"]) +metadrive_simulation_state = namedtuple("metadrive_simulation_state", ["running", "done", "done_info"]) +metadrive_vehicle_state = namedtuple("metadrive_vehicle_state", ["velocity", "position", "bearing", "steering_angle"]) -def apply_metadrive_patches(): +def apply_metadrive_patches(arrive_dest_done=True): # By default, metadrive won't try to use cuda images unless it's used as a sensor for vehicles, so patch that in def add_image_sensor_patched(self, name: str, cls, args): if self.global_config["image_on_cuda"]:# and name == self.global_config["vehicle_config"]["image_source"]: @@ -43,11 +44,14 @@ def apply_metadrive_patches(): def arrive_destination_patch(self, *args, **kwargs): return False - MetaDriveEnv._is_arrive_destination = arrive_destination_patch + if not arrive_dest_done: + MetaDriveEnv._is_arrive_destination = arrive_destination_patch def metadrive_process(dual_camera: bool, config: dict, camera_array, wide_camera_array, image_lock, - controls_recv: Connection, state_send: Connection, exit_event): - apply_metadrive_patches() + controls_recv: Connection, simulation_state_send: Connection, vehicle_state_send: Connection, + exit_event): + arrive_dest_done = config.pop("arrive_dest_done", True) + apply_metadrive_patches(arrive_dest_done) road_image = np.frombuffer(camera_array.get_obj(), dtype=np.uint8).reshape((H, W, 3)) if dual_camera: @@ -60,6 +64,13 @@ def metadrive_process(dual_camera: bool, config: dict, camera_array, wide_camera env.reset() env.vehicle.config["max_speed_km_h"] = 1000 + simulation_state = metadrive_simulation_state( + running=True, + done=False, + done_info=None, + ) + simulation_state_send.send(simulation_state) + reset() def get_cam_as_rgb(cam): @@ -78,14 +89,14 @@ def metadrive_process(dual_camera: bool, config: dict, camera_array, wide_camera vc = [0,0] while not exit_event.is_set(): - state = metadrive_state( + vehicle_state = metadrive_vehicle_state( velocity=vec3(x=float(env.vehicle.velocity[0]), y=float(env.vehicle.velocity[1]), z=0), position=env.vehicle.position, bearing=float(math.degrees(env.vehicle.heading_theta)), steering_angle=env.vehicle.steering * env.vehicle.MAX_STEERING ) - state_send.send(state) + vehicle_state_send.send(vehicle_state) if controls_recv.poll(0): while controls_recv.poll(0): @@ -103,7 +114,13 @@ def metadrive_process(dual_camera: bool, config: dict, camera_array, wide_camera obs, _, terminated, _, info = env.step(vc) if terminated: - reset() + done_result = env.done_function("default_agent") + simulation_state = metadrive_simulation_state( + running=False, + done=done_result[0], + done_info=done_result[1], + ) + simulation_state_send.send(simulation_state) if dual_camera: wide_road_image[...] = get_cam_as_rgb("rgb_wide") diff --git a/tools/sim/bridge/metadrive/metadrive_world.py b/tools/sim/bridge/metadrive/metadrive_world.py index 4cbe64393e..3570205069 100644 --- a/tools/sim/bridge/metadrive/metadrive_world.py +++ b/tools/sim/bridge/metadrive/metadrive_world.py @@ -5,14 +5,16 @@ import numpy as np import time from multiprocessing import Pipe, Array -from openpilot.tools.sim.bridge.metadrive.metadrive_process import metadrive_process, metadrive_state +from openpilot.tools.sim.bridge.metadrive.metadrive_process import (metadrive_process, metadrive_simulation_state, + metadrive_vehicle_state) from openpilot.tools.sim.lib.common import SimulatorState, World from openpilot.tools.sim.lib.camerad import W, H class MetaDriveWorld(World): - def __init__(self, config, dual_camera = False): + def __init__(self, status_q, config, dual_camera = False): super().__init__(dual_camera) + self.status_q = status_q self.camera_array = Array(ctypes.c_uint8, W*H*3) self.road_image = np.frombuffer(self.camera_array.get_obj(), dtype=np.uint8).reshape((H, W, 3)) self.wide_camera_array = None @@ -21,22 +23,26 @@ class MetaDriveWorld(World): self.wide_road_image = np.frombuffer(self.wide_camera_array.get_obj(), dtype=np.uint8).reshape((H, W, 3)) self.controls_send, self.controls_recv = Pipe() - self.state_send, self.state_recv = Pipe() + self.simulation_state_send, self.simulation_state_recv = Pipe() + self.vehicle_state_send, self.vehicle_state_recv = Pipe() self.exit_event = multiprocessing.Event() self.metadrive_process = multiprocessing.Process(name="metadrive process", target= functools.partial(metadrive_process, dual_camera, config, self.camera_array, self.wide_camera_array, self.image_lock, - self.controls_recv, self.state_send, self.exit_event)) + self.controls_recv, self.simulation_state_send, + self.vehicle_state_send, self.exit_event)) self.metadrive_process.start() + self.status_q.put({"status": "starting"}) print("----------------------------------------------------------") print("---- Spawning Metadrive world, this might take awhile ----") print("----------------------------------------------------------") - self.state_recv.recv() # wait for a state message to ensure metadrive is launched + self.vehicle_state_recv.recv() # wait for a state message to ensure metadrive is launched + self.status_q.put({"status": "started"}) self.steer_ratio = 15 self.vc = [0.0,0.0] @@ -58,13 +64,24 @@ class MetaDriveWorld(World): self.controls_send.send([*self.vc, self.should_reset]) self.should_reset = False + def read_state(self): + while self.simulation_state_recv.poll(0): + md_state: metadrive_simulation_state = self.simulation_state_recv.recv() + if md_state.done: + self.status_q.put({ + "status": "terminating", + "reason": "done", + "done_info": md_state.done_info + }) + self.exit_event.set() + def read_sensors(self, state: SimulatorState): - while self.state_recv.poll(0): - md_state: metadrive_state = self.state_recv.recv() - state.velocity = md_state.velocity - state.bearing = md_state.bearing - state.steering_angle = md_state.steering_angle - state.gps.from_xy(md_state.position) + while self.vehicle_state_recv.poll(0): + md_vehicle: metadrive_vehicle_state = self.vehicle_state_recv.recv() + state.velocity = md_vehicle.velocity + state.bearing = md_vehicle.bearing + state.steering_angle = md_vehicle.steering_angle + state.gps.from_xy(md_vehicle.position) state.valid = True def read_cameras(self): @@ -76,6 +93,10 @@ class MetaDriveWorld(World): def reset(self): self.should_reset = True - def close(self): + def close(self, reason: str): + self.status_q.put({ + "status": "terminating", + "reason": reason, + }) self.exit_event.set() self.metadrive_process.join() diff --git a/tools/sim/launch_openpilot.sh b/tools/sim/launch_openpilot.sh index 9532537283..86d9607bb0 100755 --- a/tools/sim/launch_openpilot.sh +++ b/tools/sim/launch_openpilot.sh @@ -4,7 +4,7 @@ export PASSIVE="0" export NOBOARD="1" export SIMULATION="1" export SKIP_FW_QUERY="1" -export FINGERPRINT="HONDA CIVIC 2016" +export FINGERPRINT="HONDA_CIVIC_2022" export BLOCK="${BLOCK},camerad,loggerd,encoderd,micd,logmessaged" if [[ "$CI" ]]; then diff --git a/tools/sim/lib/common.py b/tools/sim/lib/common.py index 795d7505c7..168b3aa324 100644 --- a/tools/sim/lib/common.py +++ b/tools/sim/lib/common.py @@ -69,6 +69,8 @@ class World(ABC): self.road_image = np.zeros((H, W, 3), dtype=np.uint8) self.wide_road_image = np.zeros((H, W, 3), dtype=np.uint8) + self.exit_event = multiprocessing.Event() + @abstractmethod def apply_controls(self, steer_sim, throttle_out, brake_out): pass @@ -77,6 +79,10 @@ class World(ABC): def tick(self): pass + @abstractmethod + def read_state(self): + pass + @abstractmethod def read_sensors(self, simulator_state: SimulatorState): pass @@ -86,7 +92,7 @@ class World(ABC): pass @abstractmethod - def close(self): + def close(self, reason: str): pass @abstractmethod diff --git a/tools/sim/lib/keyboard_ctrl.py b/tools/sim/lib/keyboard_ctrl.py index 339f4ea6bb..ea255d9ce4 100644 --- a/tools/sim/lib/keyboard_ctrl.py +++ b/tools/sim/lib/keyboard_ctrl.py @@ -49,7 +49,12 @@ def getch() -> str: termios.tcsetattr(STDIN_FD, termios.TCSADRAIN, old_settings) return ch +def print_keyboard_help(): + print(f"Keyboard Commands:\n{KEYBOARD_HELP}") + def keyboard_poll_thread(q: 'Queue[str]'): + print_keyboard_help() + while True: c = getch() if c == '1': @@ -77,6 +82,8 @@ def keyboard_poll_thread(q: 'Queue[str]'): elif c == 'q': q.put("quit") break + else: + print_keyboard_help() def test(q: 'Queue[str]') -> NoReturn: while True: diff --git a/tools/sim/lib/simulated_car.py b/tools/sim/lib/simulated_car.py index f6319dd819..e82100b520 100644 --- a/tools/sim/lib/simulated_car.py +++ b/tools/sim/lib/simulated_car.py @@ -10,9 +10,8 @@ from panda.python import Panda class SimulatedCar: - """Simulates a honda civic 2016 (panda state + can messages) to OpenPilot""" - packer = CANPacker("honda_civic_touring_2016_can_generated") - rpacker = CANPacker("acura_ilx_2016_nidec") + """Simulates a honda civic 2022 (panda state + can messages) to OpenPilot""" + packer = CANPacker("honda_civic_ex_2022_can_generated") def __init__(self): self.pm = messaging.PubMaster(['can', 'pandaStates']) @@ -24,11 +23,8 @@ class SimulatedCar: @staticmethod def get_car_can_parser(): - dbc_f = 'honda_civic_touring_2016_can_generated' + dbc_f = 'honda_civic_ex_2022_can_generated' checks = [ - (0xe4, 100), - (0x1fa, 50), - (0x200, 50), ] return CANParser(dbc_f, checks, 0) @@ -72,6 +68,7 @@ class SimulatedCar: msg.append(self.packer.make_can_msg("DOORS_STATUS", 0, {})) msg.append(self.packer.make_can_msg("CRUISE_PARAMS", 0, {})) msg.append(self.packer.make_can_msg("CRUISE", 0, {})) + msg.append(self.packer.make_can_msg("CRUISE_FAULT_STATUS", 0, {})) msg.append(self.packer.make_can_msg("SCM_FEEDBACK", 0, { "MAIN_ON": 1, @@ -84,20 +81,12 @@ class SimulatedCar: "PEDAL_GAS": simulator_state.user_gas, "BRAKE_PRESSED": simulator_state.user_brake > 0 })) - msg.append(self.packer.make_can_msg("HUD_SETTING", 0, {})) msg.append(self.packer.make_can_msg("CAR_SPEED", 0, {})) # *** cam bus *** msg.append(self.packer.make_can_msg("STEERING_CONTROL", 2, {})) msg.append(self.packer.make_can_msg("ACC_HUD", 2, {})) msg.append(self.packer.make_can_msg("LKAS_HUD", 2, {})) - msg.append(self.packer.make_can_msg("BRAKE_COMMAND", 2, {})) - - # *** radar bus *** - if self.idx % 5 == 0: - msg.append(self.rpacker.make_can_msg("RADAR_DIAGNOSTIC", 1, {"RADAR_STATE": 0x79})) - for i in range(16): - msg.append(self.rpacker.make_can_msg("TRACK_%d" % i, 1, {"LONG_DIST": 255.5})) self.pm.send('can', can_list_to_can_capnp(msg)) @@ -114,9 +103,9 @@ class SimulatedCar: 'ignitionLine': simulator_state.ignition, 'pandaType': "blackPanda", 'controlsAllowed': True, - 'safetyModel': 'hondaNidec', + 'safetyModel': 'hondaBosch', 'alternativeExperience': self.sm["carParams"].alternativeExperience, - 'safetyParam': Panda.FLAG_HONDA_GAS_INTERCEPTOR + 'safetyParam': Panda.FLAG_HONDA_RADARLESS | Panda.FLAG_HONDA_BOSCH_LONG, } self.pm.send('pandaStates', dat) diff --git a/tools/sim/lib/simulated_sensors.py b/tools/sim/lib/simulated_sensors.py index df6a0aeeff..e78f984736 100644 --- a/tools/sim/lib/simulated_sensors.py +++ b/tools/sim/lib/simulated_sensors.py @@ -55,7 +55,7 @@ class SimulatedSensors: dat.gpsLocationExternal = { "unixTimestampMillis": int(time.time() * 1000), "flags": 1, # valid fix - "accuracy": 1.0, + "horizontalAccuracy": 1.0, "verticalAccuracy": 1.0, "speedAccuracy": 0.1, "bearingAccuracyDeg": 0.1, diff --git a/tools/sim/scenarios/metadrive/stay_in_lane.py b/tools/sim/scenarios/metadrive/stay_in_lane.py new file mode 100755 index 0000000000..683ce55162 --- /dev/null +++ b/tools/sim/scenarios/metadrive/stay_in_lane.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python + +from multiprocessing import Queue + +from metadrive.component.sensors.base_camera import _cuda_enable +from metadrive.component.map.pg_map import MapGenerateMethod + +from openpilot.tools.sim.bridge.common import SimulatorBridge +from openpilot.tools.sim.bridge.metadrive.metadrive_common import RGBCameraRoad, RGBCameraWide +from openpilot.tools.sim.bridge.metadrive.metadrive_world import MetaDriveWorld +from openpilot.tools.sim.lib.camerad import W, H + + +def create_map(): + return dict( + type=MapGenerateMethod.PG_MAP_FILE, + lane_num=2, + lane_width=3.5, + config=[ + { + "id": "S", + "pre_block_socket_index": 0, + "length": 60, + }, + { + "id": "C", + "pre_block_socket_index": 0, + "length": 60, + "radius": 600, + "angle": 45, + "dir": 0, + }, + ] + ) + + +class MetaDriveBridge(SimulatorBridge): + TICKS_PER_FRAME = 5 + + def __init__(self, world_status_q, dual_camera, high_quality): + self.world_status_q = world_status_q + self.should_render = False + + super().__init__(dual_camera, high_quality) + + def spawn_world(self): + sensors = { + "rgb_road": (RGBCameraRoad, W, H, ) + } + + if self.dual_camera: + sensors["rgb_wide"] = (RGBCameraWide, W, H) + + config = dict( + use_render=self.should_render, + vehicle_config=dict( + enable_reverse=False, + image_source="rgb_road", + ), + sensors=sensors, + image_on_cuda=_cuda_enable, + image_observation=True, + interface_panel=[], + out_of_route_done=True, + on_continuous_line_done=True, + crash_vehicle_done=True, + crash_object_done=True, + arrive_dest_done=True, + traffic_density=0.0, + map_config=create_map(), + map_region_size=2048, + decision_repeat=1, + physics_world_step_size=self.TICKS_PER_FRAME/100, + preload_models=False + ) + + return MetaDriveWorld(world_status_q, config, self.dual_camera) + + +if __name__ == "__main__": + command_queue: Queue = Queue() + world_status_q: Queue = Queue() + simulator_bridge = MetaDriveBridge(world_status_q, True, False) + simulator_process = simulator_bridge.run(command_queue) + + while True: + world_status = world_status_q.get() + print(f"World Status: {str(world_status)}") + if world_status["status"] == "terminating": + break + + simulator_process.join() diff --git a/tools/sim/tests/test_sim_bridge.py b/tools/sim/tests/test_sim_bridge.py index 504914c562..d9653d5cfd 100644 --- a/tools/sim/tests/test_sim_bridge.py +++ b/tools/sim/tests/test_sim_bridge.py @@ -62,8 +62,6 @@ class TestSimBridgeBase(unittest.TestCase): while time.monotonic() < start_time + max_time_per_step: sm.update() - q.put("cruise_down") # Try engaging - if sm.all_alive() and sm['controlsState'].active: control_active += 1 diff --git a/tools/tuning/measure_steering_accuracy.py b/tools/tuning/measure_steering_accuracy.py index f804b328de..6abf1338dc 100755 --- a/tools/tuning/measure_steering_accuracy.py +++ b/tools/tuning/measure_steering_accuracy.py @@ -47,7 +47,7 @@ class SteeringAccuracyTool: v_ego = sm['carState'].vEgo active = sm['controlsState'].active - steer = sm['carControl'].actuatorsOutput.steer + steer = sm['carOutput'].actuatorsOutput.steer standstill = sm['carState'].standstill steer_limited = abs(sm['carControl'].actuators.steer - sm['carControl'].actuatorsOutput.steer) > 1e-2 overriding = sm['carState'].steeringPressed @@ -150,7 +150,7 @@ if __name__ == "__main__": messaging.context = messaging.Context() carControl = messaging.sub_sock('carControl', addr=args.addr, conflate=True) - sm = messaging.SubMaster(['carState', 'carControl', 'controlsState', 'modelV2'], addr=args.addr) + sm = messaging.SubMaster(['carState', 'carControl', 'carOutput', 'controlsState', 'modelV2'], addr=args.addr) time.sleep(1) # Make sure all submaster data is available before going further print("waiting for messages...") diff --git a/tools/zookeeper/__init__.py b/tools/zookeeper/__init__.py deleted file mode 100644 index 598e0a0587..0000000000 --- a/tools/zookeeper/__init__.py +++ /dev/null @@ -1,78 +0,0 @@ -import ft4222 -import ft4222.I2CMaster - -DEBUG = False - -INA231_ADDR = 0x40 -INA231_REG_CONFIG = 0x00 -INA231_REG_SHUNT_VOLTAGE = 0x01 -INA231_REG_BUS_VOLTAGE = 0x02 -INA231_REG_POWER = 0x03 -INA231_REG_CURRENT = 0x04 -INA231_REG_CALIBRATION = 0x05 - -INA231_BUS_LSB = 1.25e-3 -INA231_SHUNT_LSB = 2.5e-6 -SHUNT_RESISTOR = 30e-3 -CURRENT_LSB = 1e-5 - -class Zookeeper: - def __init__(self): - if ft4222.createDeviceInfoList() < 2: - raise Exception("No connected zookeeper found!") - self.dev_a = ft4222.openByDescription("FT4222 A") - self.dev_b = ft4222.openByDescription("FT4222 B") - - if DEBUG: - for i in range(ft4222.createDeviceInfoList()): - print(f"Device {i}: {ft4222.getDeviceInfoDetail(i, False)}") - - # Setup GPIO - self.dev_b.gpio_Init(gpio2=ft4222.Dir.OUTPUT, gpio3=ft4222.Dir.OUTPUT) - self.dev_b.setSuspendOut(False) - self.dev_b.setWakeUpInterrut(False) - - # Setup I2C - self.dev_a.i2cMaster_Init(kbps=400) - self._initialize_ina() - - # Helper functions - def _read_ina_register(self, register, length): - self.dev_a.i2cMaster_WriteEx(INA231_ADDR, data=register, flag=ft4222.I2CMaster.Flag.REPEATED_START) - return self.dev_a.i2cMaster_Read(INA231_ADDR, bytesToRead=length) - - def _write_ina_register(self, register, data): - msg = register.to_bytes(1, byteorder="big") + data.to_bytes(2, byteorder="big") - self.dev_a.i2cMaster_Write(INA231_ADDR, data=msg) - - def _initialize_ina(self): - # Config - self._write_ina_register(INA231_REG_CONFIG, 0x4127) - - # Calibration - CAL_VALUE = int(0.00512 / (CURRENT_LSB * SHUNT_RESISTOR)) - if DEBUG: - print(f"Calibration value: {hex(CAL_VALUE)}") - self._write_ina_register(INA231_REG_CALIBRATION, CAL_VALUE) - - def _set_gpio(self, number, enabled): - self.dev_b.gpio_Write(portNum=number, value=enabled) - - # Public API functions - def set_device_power(self, enabled): - self._set_gpio(2, enabled) - - def set_device_ignition(self, enabled): - self._set_gpio(3, enabled) - - def read_current(self): - # Returns in A - return int.from_bytes(self._read_ina_register(INA231_REG_CURRENT, 2), byteorder="big") * CURRENT_LSB - - def read_power(self): - # Returns in W - return int.from_bytes(self._read_ina_register(INA231_REG_POWER, 2), byteorder="big") * CURRENT_LSB * 25 - - def read_voltage(self): - # Returns in V - return int.from_bytes(self._read_ina_register(INA231_REG_BUS_VOLTAGE, 2), byteorder="big") * INA231_BUS_LSB diff --git a/tools/zookeeper/check_consumption.py b/tools/zookeeper/check_consumption.py deleted file mode 100755 index dab948318f..0000000000 --- a/tools/zookeeper/check_consumption.py +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env python3 - -import sys -import time -from openpilot.tools.zookeeper import Zookeeper - -# Usage: check_consumption.py -# Exit code: 0 -> passed -# 1 -> failed - -if __name__ == "__main__": - z = Zookeeper() - - averaging_time_s = int(sys.argv[1]) - max_average_power = float(sys.argv[2]) - - start_time = time.time() - measurements = [] - while time.time() - start_time < averaging_time_s: - measurements.append(z.read_power()) - time.sleep(0.1) - - average_power = sum(measurements)/len(measurements) - print(f"Average power: {round(average_power, 4)}W") - - if average_power > max_average_power: - exit(1) diff --git a/tools/zookeeper/disable.py b/tools/zookeeper/disable.py deleted file mode 100755 index 4bea3e7ed0..0000000000 --- a/tools/zookeeper/disable.py +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env python3 - -from openpilot.tools.zookeeper import Zookeeper - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_power(False) - diff --git a/tools/zookeeper/enable_and_wait.py b/tools/zookeeper/enable_and_wait.py deleted file mode 100755 index 51b8dc0a5c..0000000000 --- a/tools/zookeeper/enable_and_wait.py +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env python3 -import os -import sys -import time -from socket import gethostbyname, gaierror -from openpilot.tools.zookeeper import Zookeeper - -def is_online(ip): - try: - addr = gethostbyname(ip) - return (os.system(f"ping -c 1 {addr} > /dev/null") == 0) - except gaierror: - return False - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_power(True) - - - ip = str(sys.argv[1]) - timeout = int(sys.argv[2]) - start_time = time.time() - while not is_online(ip): - print(f"{ip} not online yet!") - - if time.time() - start_time > timeout: - print("Timed out!") - raise TimeoutError() - - time.sleep(1) - diff --git a/tools/zookeeper/ignition.py b/tools/zookeeper/ignition.py deleted file mode 100755 index d5f01c362f..0000000000 --- a/tools/zookeeper/ignition.py +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env python3 - -import sys -from openpilot.tools.zookeeper import Zookeeper - - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_ignition(1 if int(sys.argv[1]) > 0 else 0) - diff --git a/tools/zookeeper/power_monitor.py b/tools/zookeeper/power_monitor.py deleted file mode 100755 index a081baa72a..0000000000 --- a/tools/zookeeper/power_monitor.py +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env python3 -import sys -import time -import datetime - -from openpilot.common.realtime import Ratekeeper -from openpilot.common.filter_simple import FirstOrderFilter -from openpilot.tools.zookeeper import Zookeeper - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_power(True) - z.set_device_ignition(False) - - duration = None - if len(sys.argv) > 1: - duration = int(sys.argv[1]) - - rate = 123 - rk = Ratekeeper(rate, print_delay_threshold=None) - fltr = FirstOrderFilter(0, 5, 1. / rate, initialized=False) - - measurements = [] - start_time = time.monotonic() - - try: - while duration is None or time.monotonic() - start_time < duration: - fltr.update(z.read_power()) - if rk.frame % rate == 0: - measurements.append(fltr.x) - t = datetime.timedelta(seconds=time.monotonic() - start_time) - avg = sum(measurements) / len(measurements) - print(f"Now: {fltr.x:.2f} W, Avg: {avg:.2f} W over {t}") - rk.keep_time() - except KeyboardInterrupt: - pass - - t = datetime.timedelta(seconds=time.monotonic() - start_time) - avg = sum(measurements) / len(measurements) - print(f"\nAverage power: {avg:.2f}W over {t}") diff --git a/tools/zookeeper/test_zookeeper.py b/tools/zookeeper/test_zookeeper.py deleted file mode 100755 index 89f7f28975..0000000000 --- a/tools/zookeeper/test_zookeeper.py +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env python3 - -import time -from openpilot.tools.zookeeper import Zookeeper - - -if __name__ == "__main__": - z = Zookeeper() - z.set_device_power(True) - - i = 0 - ign = False - while 1: - voltage = round(z.read_voltage(), 2) - current = round(z.read_current(), 3) - power = round(z.read_power(), 2) - z.set_device_ignition(ign) - print(f"Voltage: {voltage}V, Current: {current}A, Power: {power}W, Ignition: {ign}") - - if i > 200: - ign = not ign - i = 0 - - i += 1 - time.sleep(0.1)