rosotacom-dev 2.5.dev79__tar.gz → 2.5.dev81__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/PKG-INFO +1 -1
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/README.md +1 -0
- rosotacom_dev-2.5.dev81/docs/findings/queueing-adds-delay-not-loss.md +122 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/the-size-law-belongs-to-the-transport-not-the-link.md +29 -3
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/PKG-INFO +1 -1
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/SOURCES.txt +1 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/scm_file_list.json +1 -0
- rosotacom_dev-2.5.dev81/src/rosotacom_dev.egg-info/scm_version.json +8 -0
- rosotacom_dev-2.5.dev79/src/rosotacom_dev.egg-info/scm_version.json +0 -8
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.devcontainer/devcontainer.json.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.devcontainer/re_generate_devcontainer_json.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/CODEOWNERS +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/documentation-audit.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/implementation-cleanup.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/quality-workflow.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/redesign.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/release-process.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/repository-diagnosis.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/test-ci-audit.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/work-item.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/actions/setup-just/action.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/dependabot.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/workflows/benchmark-calibrate.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/workflows/benchmark-gate.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/workflows/dev-release.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/workflows/image-scan.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/workflows/nightly-e2e.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/workflows/pr-lightweight.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/workflows/pr-merge-gate.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/workflows/release.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.pre-commit-config.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/AGENTS.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/CONCURRENCY.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/CONTRIBUTING.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/DEVELOPMENT_PRINCIPLES.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/MANIFEST.in +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/README.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/budgets.jsonl +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/README.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/capacity-size-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-gop-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-nominal-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-tight-cyclone.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-tight-fastdds.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-tight-zenoh.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/codecov.yml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/deployment-configuration.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/benchmark-ab.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/benchmark-bag-as-load.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/ci.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/ffmpeg-keyframes.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/a-fitted-delay-table-never-reached-the-shaper.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/a-shorter-group-does-not-lose-fewer-key-frames.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/a-transport-element-doubles-every-fastdds-sample.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/cyclone-fragment-equal-to-max-drops-fragmented-samples.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/cyclone-spdp-discovery-bursts.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/delay-alone-no-loss.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/fastdds-datagram-cap-drops-large-samples.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/graph-derived-types-block-a-non-graph-transport.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/head-of-line-irregularity.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/jitter-loss-bandwidth-latency.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/keyframe-loss-kills-the-next-deltas.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/lifespan-is-enforced-by-one-reader-and-not-the-other.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/lighter-message-loss.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/neither-a-queue-nor-a-burst-tilts-the-size-law.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/one-domain-two-cyclone-configs-stop-interoperating.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/oversubscription-queues-not-losses.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/reorder-becomes-reader-loss.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/repro/decode_chain_repro.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/repro/reorder_drop_repro.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/sender-rows-make-a-dead-link-look-loss-free.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/zero-loss-boundaries-18kb-20hz.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/forensics-report.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/geo-link-map.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/github-repository-settings.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/link-bandwidth.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/link-trace.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/ota-pcap.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/owner-runbook.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/performance-bands.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/playbooks/README.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/quality-model.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/release-notes/TEMPLATE.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/release-notes/v2.1.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/release-notes/v2.2.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/release-notes/v2.3.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/release-notes/v2.4.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/release.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/0001-expectation-driven-test-suite.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/0002-expectation-concepts.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/0003-metric-backbone.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/0004-network-profiles.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/0005-benchmark-genres-and-ci.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/0006-dynamic-qos.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/0007-regression-gate.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/README.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/testing.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/work-items.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/install.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/justfile +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/media/control_center.png +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/media/echo_test.png +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/media/forensics-report-example.png +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/media/host.png +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/media/vehicle.png +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/pyproject.toml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/requirements.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/session-configuration.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/__init__.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/__main__.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/anonymize.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/benched_set.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/benchmark.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/benchmark_delta.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/cli.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/cli_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/deployment.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/forensics.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/geomap.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/image_cache.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/netem_dist.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/network_preflight.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/plots.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/py.typed +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/benched-set.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/.gitignore +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/README.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/__init__.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/bags/8_drop_reference/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/deployment.example.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/dist/field-20260817.dist +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/profiles.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/ros2docker.lyrical.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/rosotacom.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scenarios/2_native_chatter/scenario-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_a.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/1_heartbeat/run_machine_b.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.lyrical.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_a/wait_for_echo_topic.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.lyrical.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/2_native_chatter/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/3_comp_occ_grid/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/foxglove.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/costmap_1second_0.mcap +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/costmap_1second/metadata.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/4_comp_occ_grid_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/5_sized_payload/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_a/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external.ros2docker.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/external_session.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_communication.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/scripts/6_sized_payload_zen/machine_b/run_external.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/10_restamp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/11_trickle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/12_content_integrity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/13_link_latency/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/14_remote_assist_anonymized/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/15_remote_assist_anonymized_costmap/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/16_remote_assist_anonymized_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/17_synthetic_camera_quality/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/1_heartbeat/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/1_heartbeat_status/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/2_native_chatter/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/3_comp_occ_grid/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/4_comp_occ_grid_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/5_sized_payload/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/6_sized_payload_zen/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/7_latched_static/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/8_drop/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/9_throttle/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_1_capacity/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_2_load_sweep/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_3_ramp/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_4_recovery/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/sessions/bench_1_5_camera/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ros2docker.json.example +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ros2docker.lyrical.json.example +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/.vscode/c_cpp_properties.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/.vscode/settings.json +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_easy_mode.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_initial_peer_list.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v2.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v3.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v4.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/archive/fastdds_v5.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/create_zenoh_json5.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/cyclonedds_local_participants.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/cyclonedds_minimal.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/cyclonedds_scoped.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/cyclonedds_tuned.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/fastdds_easy_mode.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/fastdds_local.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/fastdds_tuned.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/fastdds_unicast.xml.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/get_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/utils.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ota_configs/zenoh.json5.template +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/.gitkeep +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/COLCON_IGNORE +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/package.xml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/src/hz_monitor.cpp +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_compressor.cpp +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_cpp/src/universal_decompressor.cpp +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/CMakeLists.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/CompressedData.msg +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/EchoHeartbeat.msg +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/OtaStamped.msg +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/msg/SizedPayload.msg +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_msgs/package.xml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/LICENSE.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/__init__.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/base_bridge_relay.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_in.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/bridge_out.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/ffmpeg_flags.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/heartbeat_echo.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/hz_monitor.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_bandwidth_reducer.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/image_pixel_capper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/lanelet_saver.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/latch_relay.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/costmap_remapper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/marker_remapper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/speed_test.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/tf_remapper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/traffic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/legacy/wifi_network_analysis_1.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/link_trace.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/local_global_frame_bridge.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/localization_map_split_reduce_saver.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/msg_transform.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/ota_pcap.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pair_management.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/playout_pacer.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/playout_pacer_core.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/pub_sub_pair.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/qos.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_in.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/relay_out.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/restamp.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/sized_publisher.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/stage_latency_core.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/status_overview_core.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/tf_map_to_cart_saver.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_monitor.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/topic_resolution.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/trickle.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_compressor.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_decompressor.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_unwrapper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/com_py/universal_ota_wrapper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/package.xml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/resource/com_py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/setup.cfg +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/setup.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/test/test_copyright.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/test/test_flake8.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/ros2src/com_py/test/test_pep257.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/content/base/session_plugin_base.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/content/network/up_connectivity.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/content/network/wifi_network_analysis_2.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/anonymize_bag.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/catmux_log_setup.sh +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/create_session_yaml.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/generate_session_files.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/run_session.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/run_session_in_external_terminal.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/ws/session/creation/strip_ansi.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/status_eval.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/transit.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/video_quality.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/dependency_links.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/entry_points.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/requires.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/top_level.txt +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/terminology.md +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_benched_set_registry.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_findings.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_generated_topics_have_a_producer.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_lyrical_runtime_compat.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_markdown_links.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_ota_source_bundle.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_package_metadata.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_packaged_resources.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_profile_covers_generated_commands.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_pytest_policy.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_readme_examples.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_security_maintenance_config.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_session_configuration_doc.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_session_template_substitution.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/contract/test_workflow_contracts.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/e2e/conftest.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/e2e/test_anonymize_e2e.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/e2e/test_benchmark_ab.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/e2e/test_benchmark_capacity.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/e2e/test_benchmark_replay.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/e2e/test_parallel_smoke.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/e2e/test_smoke.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/e2e/test_timeline_stepping.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/e2e/test_video_quality_e2e.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/sessions/generate_rmw_matrix.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-local_zenoh-ros2dds-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_cyclone-ota-tuned/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_fastdds/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_fastdds-default/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/sessions/rmw_matrix/1_heartbeat_zen-endpoints/session-definition.yaml +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_anonymize.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_bag_ground_truth.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_benched_set.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_benchmark_delta.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_bundle_check.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_catmux_pane_logging.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_cli.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_cli_benchmark.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_concurrency.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_container_shaping.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_deployment.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_ffmpeg_flags.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_ffmpeg_packet.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_field_profiles.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_forensics.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_geomap.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_image_cache.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_link_bytes.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_link_trace.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_netem_dist.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_network_preflight.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_network_profiles.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_network_shaper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_benchmark_peer_exec.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_link_configs.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_pcap.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_unwrapper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_wrapper.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_ota_xml.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_playout_pacer.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_plots.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_pub_sub_pair_types.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_qos_fallback_logging.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_relay_optional_parameters.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_ros_node_entity_ownership.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_session_pipeline.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_stage_latency.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_status_eval.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_status_overview.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_status_overview_observer.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_stream_stats.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_terminology_stage_ownership.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_trace_profiles.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_transit.py +0 -0
- {rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/tests/unit/test_video_quality.py +0 -0
|
@@ -40,6 +40,7 @@ living verification hook.
|
|
|
40
40
|
- [A lost keyframe silences exactly the next gop_size−2 deltas](keyframe-loss-kills-the-next-deltas.md) - libavcodec emits nothing for them, the last delta decodes with artifacts, the next keyframe restores clean decode; a lost delta never blocks decode — so the display hole is gop_size × frame period, deterministically.
|
|
41
41
|
- [Any transport element in a Fast DDS profile doubles every sample on the wire](a-transport-element-doubles-every-fastdds-sample.md) - 366 datagrams for 180 samples against 183 without it; `<builtinTransports>DEFAULT` is a no-op selection and doubles too, so the trigger is the element's presence — removing it takes the shipped OTA profile from 2.10x the payload to 1.04x at identical delivery.
|
|
42
42
|
- [Lifespan is enforced by one DDS reader and not the other](lifespan-is-enforced-by-one-reader-and-not-the-other.md) - under the same 20% oversubscription both stacks queue alike (472 and 433 delivered at ~1.1-1.2 s); with `lifespan: 0.7` CycloneDDS is unchanged and delivers 9.1% inside the bound, while Fast DDS drops to 4 delivered and never exceeds 570 ms — the policy decides shown-vs-suppressed, not how long the wait is.
|
|
43
|
+
- [A filling queue adds delay and no loss of its own](queueing-adds-delay-not-loss.md) - 18 bins of ramp from 0.5 to 5.6 s lose 0 of 558 on a clean link and 15 of 558 on one that drops 0.6 % of packets, which is the unshaped rate; the queue defers, the link loses, and the buffer ends it at 97 % of one bin.
|
|
43
44
|
- [Oversubscription queues — it does not lose until the queue itself dies](oversubscription-queues-not-losses.md) - 16% over an emulated cap climbed one-way delay 340 → 3250 ms across twelve bins with zero loss in every one; the losses arrived only when the queue died, all at once.
|
|
44
45
|
- [Best-effort reordering becomes reader-side loss, independent of history depth](reorder-becomes-reader-loss.md) - under pure delay jitter a Cyclone best-effort reader discards every overtaken sample (57% at 100 Hz under 50+-45 ms), delivery stays strictly monotonic, and depth 50 loses the same as depth 1.
|
|
45
46
|
- [Jitter causes loss while bandwidth shortage builds latency](jitter-loss-bandwidth-latency.md) - 18 KB at 20 Hz separates jitter-induced loss from bandwidth-induced queueing.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# A Filling Queue Adds Delay And No Loss Of Its Own
|
|
2
|
+
|
|
3
|
+
## Claim
|
|
4
|
+
|
|
5
|
+
Under oversubscription a queue converts the excess into delay and contributes
|
|
6
|
+
**nothing** to the loss rate until it overflows. Capping an otherwise clean link
|
|
7
|
+
15 % below the offer ramps one-way delay from 0.5 s to 5.6 s across eighteen
|
|
8
|
+
consecutive one-second bins with **0 of 558** offered messages lost, and drops
|
|
9
|
+
97 % of a bin only once the buffer is full. Repeating the same cap on a link
|
|
10
|
+
that also drops 0.6 % of packets independently reproduces the identical ramp and
|
|
11
|
+
loses 15 of 558 during it — 2.7 %, which is the unshaped link's own 2.51 % and
|
|
12
|
+
not a milligram more.
|
|
13
|
+
|
|
14
|
+
So "the queue lost it" is never the explanation. Whatever a filling queue loses,
|
|
15
|
+
the link was losing anyway; what the queue adds is age. The corollary is the
|
|
16
|
+
useful one: **loss and delay have to be read as two measurements, because the
|
|
17
|
+
queue moves only one of them**, and a loss-based health verdict is blind to the
|
|
18
|
+
whole of the second signal.
|
|
19
|
+
|
|
20
|
+
## Setup
|
|
21
|
+
|
|
22
|
+
- Host pair / topology: `tks-lamborghini`, rosotacom local benchmark mode using
|
|
23
|
+
the packaged example project; two peer containers on a private bridge, uplink
|
|
24
|
+
shaping via `tc` inside the peers' own netns (no host privileges).
|
|
25
|
+
- rosotacom SHA: `c5ce52f` (harness), submodule `c2d2467`.
|
|
26
|
+
- Profile: four conditions in one file, offer held at 1.035 Mbit/s throughout so
|
|
27
|
+
only the shaping differs.
|
|
28
|
+
|
|
29
|
+
| name | uplink |
|
|
30
|
+
|---|---|
|
|
31
|
+
| `q-clean` | `delay: 25ms` |
|
|
32
|
+
| `q-loss` | `delay: 25ms, loss: 0.6%` |
|
|
33
|
+
| `q-squeeze` | 10 s clean, 25 s at `rate: 900kbit`, 10 s clean |
|
|
34
|
+
| `q-squeeze-loss` | the same three steps, `loss: 0.6%` throughout |
|
|
35
|
+
|
|
36
|
+
- Load: `--size-pattern 6x200B+1x28KB --rate-hz 31`, so one stream carries a
|
|
37
|
+
1-fragment and a 24-fragment class together and the size signature of the loss
|
|
38
|
+
is readable inside a single run.
|
|
39
|
+
- Seed policy: `loss` is netem's own stochastic element; `n=1` per condition,
|
|
40
|
+
reported as the four-cell comparison rather than as a distribution.
|
|
41
|
+
|
|
42
|
+
## Evidence
|
|
43
|
+
|
|
44
|
+
Evidence grade: packaged-profile benchmark runs plus their per-bin timelines.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
rosotacom benchmark probe --project src/rosotacom/resources/examples/rosotacom.yaml \
|
|
48
|
+
--profiles-file <profiles.yaml> --profile q-squeeze \
|
|
49
|
+
--size-pattern 6x200B+1x28KB --rate-hz 31 --duration 45 --repeats 1 \
|
|
50
|
+
--bin-s 1 --no-plot
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
| condition | ramp | delay across it | offered | lost in ramp | whole run |
|
|
54
|
+
|---|---:|---|---:|---:|---:|
|
|
55
|
+
| `q-clean` | none | 29.9 ms flat | — | — | 0 / 1398 = 0.00 % |
|
|
56
|
+
| `q-loss` | none | 29.2 ms flat | — | — | 35 / 1397 = 2.51 % |
|
|
57
|
+
| `q-squeeze` | 18 bins | 532 → 5623 ms | 558 | **0** | 84 / 1317 = 6.38 % |
|
|
58
|
+
| `q-squeeze-loss` | 18 bins | 538 → 5490 ms | 558 | **15 = 2.7 %** | 119 / 1314 = 9.06 % |
|
|
59
|
+
|
|
60
|
+
The ramp is cut by the delay's own slope and never by its loss — a bin belongs
|
|
61
|
+
to it when the median delay gained at least 250 ms over the bin before it. The
|
|
62
|
+
shaped bins gain about 295 ms each; the first bin to lose gains 221 and falls
|
|
63
|
+
outside by that rule rather than by its outcome. Without that discipline the
|
|
64
|
+
measurement defines its own answer.
|
|
65
|
+
|
|
66
|
+
Three readings:
|
|
67
|
+
|
|
68
|
+
1. **Queueing is not a loss process.** Eighteen bins, 558 messages, zero. At the
|
|
69
|
+
0.6 % per-packet rate the same load carries in `q-loss`, 558 messages of mean
|
|
70
|
+
4.2 fragments would carry ~14 losses; the shaped-but-clean arm has none,
|
|
71
|
+
because there is nothing to lose them to.
|
|
72
|
+
2. **Queueing does not amplify the link's loss either.** `q-squeeze-loss` loses
|
|
73
|
+
2.7 % during a ramp whose delay reaches 5.5 s, against 2.51 % on the same link
|
|
74
|
+
with no queue at all. The queue defers packets; it does not damage them.
|
|
75
|
+
3. **What ends it is the buffer, and it ends abruptly.** 97 % of a single bin,
|
|
76
|
+
not a gradual rise. The lossless window is therefore bounded by buffer depth
|
|
77
|
+
over excess rate and can be computed in advance, which is the only part of
|
|
78
|
+
this a deployment can design against.
|
|
79
|
+
|
|
80
|
+
Verification: manual, needs Docker and about three minutes per condition. Run
|
|
81
|
+
the command above for each profile and read `time-bins.jsonl` beside
|
|
82
|
+
`result.json`: the `q-squeeze` bins under the cap must show monotonically
|
|
83
|
+
climbing `latency_p50_ms` with `lost = 0`, and `q-squeeze-loss` must show the
|
|
84
|
+
same climb with `lost` at the unshaped arm's rate.
|
|
85
|
+
|
|
86
|
+
## Status
|
|
87
|
+
|
|
88
|
+
confirmed, 2026-09-01.
|
|
89
|
+
|
|
90
|
+
## Publication notes
|
|
91
|
+
|
|
92
|
+
This is the control the field could not supply. On a real cellular uplink the
|
|
93
|
+
two signals never separate — in the KAMO August campaign, thirty-six
|
|
94
|
+
pre-registered filling episodes over 168 s (delay rising for three or more
|
|
95
|
+
consecutive seconds, gaining at least 150 ms) lose 2.34 % against the 2.27 %
|
|
96
|
+
their own seconds' rate predicts, P(at most this many) = 0.71 — because whatever reduces
|
|
97
|
+
the grant also raises the error rate. Reading that field result alone, one would
|
|
98
|
+
conclude a filling queue loses. This finding shows it does not: the loss belongs
|
|
99
|
+
to the link and arrives whether or not the queue is filling.
|
|
100
|
+
|
|
101
|
+
A two-host repeat over the FZI LAN (lamborghini orchestrating, seat as peer b
|
|
102
|
+
through `remote-ota`) reached the peer, docker, and the containerized shaping
|
|
103
|
+
capability on both sides and then stopped: `--peer-exec` requires
|
|
104
|
+
`--install-mode checkout`, and checkout mode needs the project config inside the
|
|
105
|
+
peer's own checkout, while the only OTA project registered on seat is
|
|
106
|
+
`remote-assist`, whose session set has no synthetic benchmark session. So the
|
|
107
|
+
LAN arm needs either a bench session in `remote-assist` or the harness on a
|
|
108
|
+
second machine, and the four conditions above are single-host. That is the
|
|
109
|
+
weaker setting for network realism and the stronger one for this question: on
|
|
110
|
+
one host the shaper is the only thing between the peers, so a lossless ramp
|
|
111
|
+
cannot be a property of some intervening link.
|
|
112
|
+
|
|
113
|
+
It supersedes the reading in
|
|
114
|
+
[oversubscription-queues-not-losses.md](oversubscription-queues-not-losses.md),
|
|
115
|
+
which reported the same lossless ramp but attributed the boundary losses to the
|
|
116
|
+
timeline step destroying the queue. Here the buffer overflows *inside* an
|
|
117
|
+
unchanged shaping step, so the overflow is the queue's own limit rather than an
|
|
118
|
+
artefact of `tc qdisc replace`.
|
|
119
|
+
|
|
120
|
+
For papers: the pair `q-squeeze` / `q-squeeze-loss` is the figure. One ramp, one
|
|
121
|
+
loss axis, two arms — it shows in a single panel that the delay is the queue's
|
|
122
|
+
and the loss is the link's.
|
|
@@ -41,12 +41,15 @@ its largest message class* carries that scope with it.
|
|
|
41
41
|
|
|
42
42
|
- Host pair / topology: one host, the packaged local benchmark rig — two
|
|
43
43
|
communication containers on their own Docker network, `tc` inside each
|
|
44
|
-
container's own netns (`--sudo-mode container`), no host privileges.
|
|
44
|
+
container's own netns (`--sudo-mode container`), no host privileges. The
|
|
45
|
+
confirmation ladder runs the same session across two machines joined by a
|
|
46
|
+
point-to-point VPN, each shaping its own tunnel device, with the control
|
|
47
|
+
plane on a separate interface so the profile never touches it.
|
|
45
48
|
- Session: `bench_1_1_capacity` from the packaged example project, one
|
|
46
49
|
`a->b:/bench_capacity` stream at 10 Hz, OTA QoS best_effort / KEEP_LAST
|
|
47
50
|
depth 1, `--rmw` the only thing that differs between the three ladders.
|
|
48
|
-
- rosotacom SHA: measured at `7bb420c
|
|
49
|
-
2.5.dev74 or later, because before it a profile carrying a fitted delay table
|
|
51
|
+
- rosotacom SHA: measured at `7bb420c` on one host and `b3c573d` across two;
|
|
52
|
+
re-runs record theirs. The one-host runs need 2.5.dev74 or later, because before it a profile carrying a fitted delay table
|
|
50
53
|
could not be armed at all
|
|
51
54
|
([a fitted delay table never reached the shaper](a-fitted-delay-table-never-reached-the-shaper.md)).
|
|
52
55
|
- Profile: `tilt-iid` in
|
|
@@ -90,6 +93,22 @@ zenoh native on the identical profile: 0.571, 0.998, 0.712, 0.996, 0.475,
|
|
|
90
93
|
**61.693 %**. No fit is reported because there is nothing of this family to
|
|
91
94
|
fit — five points are flat and the sixth is a cliff.
|
|
92
95
|
|
|
96
|
+
**The CycloneDDS ladder is not an artefact of two containers on one host.**
|
|
97
|
+
Repeated across two machines over a point-to-point VPN — different NICs, a real
|
|
98
|
+
clock offset, the shaping on each host's own tunnel device rather than on a
|
|
99
|
+
docker bridge — it reproduces:
|
|
100
|
+
|
|
101
|
+
| payload | wrapped | one host | two hosts | ratio |
|
|
102
|
+
|---:|---:|---:|---:|---:|
|
|
103
|
+
| 200 B | 300 B | 1.047 % | 0.952 % | 0.91 |
|
|
104
|
+
| 3 kB | 3.1 kB | 3.468 % | 3.465 % | 1.00 |
|
|
105
|
+
| 12 kB | 12.1 kB | 11.227 % | 12.149 % | 1.08 |
|
|
106
|
+
| 38 kB | 38.1 kB | 31.922 % | 31.773 % | 1.00 |
|
|
107
|
+
|
|
108
|
+
The two extremes agree to within half a per cent and the worst point to within
|
|
109
|
+
eight. What the second host adds — serialisation on a real interface, a clock
|
|
110
|
+
that is not shared, a tunnel MTU — does not move the transfer function.
|
|
111
|
+
|
|
93
112
|
**The effective packet is smaller than the fragment, and by a measurable
|
|
94
113
|
amount.** CycloneDDS's fitted `F` lands at 872–1008 B against a configured
|
|
95
114
|
1024 B fragment, i.e. every packet carries roughly 15 % of itself in headers.
|
|
@@ -116,6 +135,13 @@ rows) rather than from `result.json`. The CycloneDDS ladder must fit one
|
|
|
116
135
|
`(p, F)` to within about ten per cent at every point; the zenoh ladder must be
|
|
117
136
|
flat below 12 kB.
|
|
118
137
|
|
|
138
|
+
Across two machines the same ladder runs through `ota-benchmark probe` with
|
|
139
|
+
`--install-mode checkout` and a `--peer-exec` transport on each peer. It needs
|
|
140
|
+
2.5.dev78 or later: before it the profile's impaired leg landed on the peer the
|
|
141
|
+
a/b convention calls the sender rather than the one the session's topic map
|
|
142
|
+
does, the benchmark's load never reached the peers' publishers, and the
|
|
143
|
+
collection looked for their artifacts in a directory the project does not use.
|
|
144
|
+
|
|
119
145
|
## Status
|
|
120
146
|
|
|
121
147
|
confirmed, 2026-08-31.
|
|
@@ -78,6 +78,7 @@ docs/findings/lighter-message-loss.md
|
|
|
78
78
|
docs/findings/neither-a-queue-nor-a-burst-tilts-the-size-law.md
|
|
79
79
|
docs/findings/one-domain-two-cyclone-configs-stop-interoperating.md
|
|
80
80
|
docs/findings/oversubscription-queues-not-losses.md
|
|
81
|
+
docs/findings/queueing-adds-delay-not-loss.md
|
|
81
82
|
docs/findings/reorder-becomes-reader-loss.md
|
|
82
83
|
docs/findings/sender-rows-make-a-dead-link-look-loss-free.md
|
|
83
84
|
docs/findings/the-size-law-belongs-to-the-transport-not-the-link.md
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom_dev.egg-info/scm_file_list.json
RENAMED
|
@@ -62,6 +62,7 @@
|
|
|
62
62
|
"docs/findings/neither-a-queue-nor-a-burst-tilts-the-size-law.md",
|
|
63
63
|
"docs/findings/one-domain-two-cyclone-configs-stop-interoperating.md",
|
|
64
64
|
"docs/findings/oversubscription-queues-not-losses.md",
|
|
65
|
+
"docs/findings/queueing-adds-delay-not-loss.md",
|
|
65
66
|
"docs/findings/reorder-becomes-reader-loss.md",
|
|
66
67
|
"docs/findings/repro/decode_chain_repro.py",
|
|
67
68
|
"docs/findings/repro/reorder_drop_repro.py",
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.devcontainer/devcontainer.json.template
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.devcontainer/re_generate_devcontainer_json.py
RENAMED
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/documentation-audit.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/implementation-cleanup.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/quality-workflow.md
RENAMED
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/release-process.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/ISSUE_TEMPLATE/repository-diagnosis.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/.github/workflows/benchmark-calibrate.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/capacity-size-tight-cyclone.json
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-gop-tight-cyclone.json
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-nominal-cyclone.json
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-tight-cyclone.json
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/calibration/probe-loss-tight-fastdds.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/cyclone-spdp-discovery-bursts.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/head-of-line-irregularity.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/jitter-loss-bandwidth-latency.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/reorder-becomes-reader-loss.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/repro/decode_chain_repro.py
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/repro/reorder_drop_repro.py
RENAMED
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/findings/zero-loss-boundaries-18kb-20hz.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/0001-expectation-driven-test-suite.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/docs/rfcs/0005-benchmark-genres-and-ci.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/benched-set.yaml
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/.gitignore
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/README.md
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/profiles.yaml
RENAMED
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/ros2docker.json
RENAMED
|
File without changes
|
|
File without changes
|
{rosotacom_dev-2.5.dev79 → rosotacom_dev-2.5.dev81}/src/rosotacom/resources/examples/rosotacom.yaml
RENAMED
|
File without changes
|
|
File without changes
|