bluer-ugv 7.340.1__tar.gz → 7.359.1__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.
- {bluer_ugv-7.340.1/bluer_ugv.egg-info → bluer_ugv-7.359.1}/PKG-INFO +2 -2
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/README.md +1 -1
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/arzhang/items.py +6 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/build.py +1 -1
- bluer_ugv-7.359.1/bluer_ugv/README/shield/box.py +25 -0
- bluer_ugv-7.359.1/bluer_ugv/README/shield/docs.py +17 -0
- bluer_ugv-7.359.1/bluer_ugv/README/shield/pcb.py +49 -0
- bluer_ugv-7.359.1/bluer_ugv/README/shield/schematics.py +17 -0
- bluer_ugv-7.359.1/bluer_ugv/README/shield/testing.py +18 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/__init__.py +1 -1
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/config.env +1 -1
- bluer_ugv-7.359.1/bluer_ugv/swallow/session/classical/screen.py +11 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/session.py +1 -0
- bluer_ugv-7.359.1/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py +11 -16
- bluer_ugv-7.359.1/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection_list.py +45 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py +19 -16
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py +16 -4
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py +2 -2
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1/bluer_ugv.egg-info}/PKG-INFO +2 -2
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv.egg-info/SOURCES.txt +8 -1
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/setup.py +1 -0
- bluer_ugv-7.340.1/bluer_ugv/README/shield.py +0 -62
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/LICENSE +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/MANIFEST.in +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/abcli.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/actions.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/aka.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/alias.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/bluer_ugv.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/dataset/combine.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/dataset/download.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/dataset/edit.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/dataset/list.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/dataset/upload.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/dataset.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/debug.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/env/cp.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/env/list.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/env/set.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/env.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/keyboard/test.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/keyboard.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/select_target.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/session.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/ultrasonic/review.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/ultrasonic/test.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow/ultrasonic.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/swallow.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/README.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/help.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/swallow_dataset_edit.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/swallow_dataset_list.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/ultrasonic_sensor_review.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/tests/version.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/.abcli/ugv/git.sh +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/alias.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/arzhang/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/arzhang/algo.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/arzhang/consts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/arzhang/design.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/arzhang/flag.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/beast.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/consts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/eagle/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/eagle/consts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/eagle/items.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/fire/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/fire/consts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/fire/items.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/items.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/rangin/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/rangin/consts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/rangin/items.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ravin/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ravin/consts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ravin/items.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/releases.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/root.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/README/ugvs → bluer_ugv-7.359.1/bluer_ugv/README/shield}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/shortcuts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/analog.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/consts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/digital/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/digital/algo/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/digital/algo/navigation.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/digital/algo/yolo.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/digital/design/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/digital/design/mechanical.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/swallow/items.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/README/ugvs/comparison → bluer_ugv-7.359.1/bluer_ugv/README/ugvs}/__init__.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/README/ugvs/comparison/features → bluer_ugv-7.359.1/bluer_ugv/README/ugvs/comparison}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/build.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/DYI.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/README/ugvs/comparison/ugvs → bluer_ugv-7.359.1/bluer_ugv/README/ugvs/comparison/features}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/classes.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/concealment.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/control.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/cost.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/db.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/payload.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/ps.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/range.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/sanction_proof.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/size.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/speed.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/swarm.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/features/uv_delivery.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/references/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/references/classes.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/references/db.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/designs → bluer_ugv-7.359.1/bluer_ugv/README/ugvs/comparison/ugvs}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/ugvs/classes.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/comparison/ugvs/db.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/db.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/README/ugvs/docs.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/__main__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/assets/comparison.html +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/designs/eagle → bluer_ugv-7.359.1/bluer_ugv/designs}/__init__.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/designs/fire → bluer_ugv-7.359.1/bluer_ugv/designs/eagle}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/designs/eagle/parts.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/designs/rangin → bluer_ugv-7.359.1/bluer_ugv/designs/fire}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/designs/fire/parts.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/designs/ravin → bluer_ugv-7.359.1/bluer_ugv/designs/rangin}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/designs/rangin/parts.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/designs/ravin/ravin3 → bluer_ugv-7.359.1/bluer_ugv/designs/ravin}/__init__.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/designs/ravin/ravin4 → bluer_ugv-7.359.1/bluer_ugv/designs/ravin/ravin3}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/designs/ravin/ravin3/parts.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/swallow → bluer_ugv-7.359.1/bluer_ugv/designs/ravin/ravin4}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/designs/ravin/ravin4/parts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/env.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/__main__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/functions.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/git.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/swallow/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/swallow/dataset.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/swallow/debug.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/swallow/env.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/swallow/keyboard.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/swallow/select_target.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/help/swallow/ultrasonic_sensor.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/host.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/logger.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/sample.env +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/swallow/dataset → bluer_ugv-7.359.1/bluer_ugv/swallow}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/__main__.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/swallow/session → bluer_ugv-7.359.1/bluer_ugv/swallow/dataset}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/dataset/__main__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/dataset/combination.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/debug.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/swallow/session/classical → bluer_ugv-7.359.1/bluer_ugv/swallow/session}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/__main__.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/swallow/session/classical/keyboard → bluer_ugv-7.359.1/bluer_ugv/swallow/session/classical}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/camera/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/camera/generic.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/camera/navigation.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/camera/tracking.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/camera/yolo.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/swallow/session/classical/setpoint → bluer_ugv-7.359.1/bluer_ugv/swallow/session/classical/keyboard}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/keyboard/__main__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/keyboard/classes.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/keyboard/keys.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/keyboard/testing.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/leds.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/mode.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/motor/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/motor/generic.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/motor/left.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/motor/rear.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/motor/right.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/motor/steering.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/mousepad.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/position.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/push_button.py +0 -0
- {bluer_ugv-7.340.1/bluer_ugv/swallow/session/classical/ultrasonic_sensor → bluer_ugv-7.359.1/bluer_ugv/swallow/session/classical/setpoint}/__init__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/setpoint/classes.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/setpoint/steering.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/functions.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/targeting.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/urls.py +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv.egg-info/dependency_links.txt +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv.egg-info/requires.txt +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv.egg-info/top_level.txt +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/pyproject.toml +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/requirements.txt +0 -0
- {bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_ugv
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.359.1
|
|
4
4
|
Summary: 🐬 AI x UGV.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-ugv
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -64,7 +64,7 @@ pip install bluer_ugv
|
|
|
64
64
|
|
|
65
65
|
[](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-ugv/) [](https://pypistats.org/packages/bluer-ugv)
|
|
66
66
|
|
|
67
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.
|
|
67
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.359.1`](https://github.com/kamangir/bluer-ugv).
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -35,5 +35,5 @@ pip install bluer_ugv
|
|
|
35
35
|
|
|
36
36
|
[](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-ugv/) [](https://pypistats.org/packages/bluer-ugv)
|
|
37
37
|
|
|
38
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.
|
|
38
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.359.1`](https://github.com/kamangir/bluer-ugv).
|
|
39
39
|
|
|
@@ -25,5 +25,11 @@ items = ImageItems(
|
|
|
25
25
|
f"{arzhang_assets2}/20251005_112332.jpg": "",
|
|
26
26
|
f"{arzhang_assets2}/20251005_112530.jpg": "",
|
|
27
27
|
f"{arzhang_assets2}/20251018_213230.jpg": "",
|
|
28
|
+
f"{swallow_assets2}/20251117_112301.jpg": "",
|
|
29
|
+
f"{swallow_assets2}/20251117_120134.jpg": "",
|
|
30
|
+
f"{swallow_assets2}/20251117_125503.jpg": "",
|
|
31
|
+
f"{swallow_assets2}/20251117_125515.jpg": "",
|
|
32
|
+
f"{swallow_assets2}/20251117_125544.jpg": "",
|
|
33
|
+
f"{swallow_assets2}/20251117_160851.jpg": "",
|
|
28
34
|
}
|
|
29
35
|
)
|
|
@@ -12,12 +12,12 @@ from bluer_ugv.README import (
|
|
|
12
12
|
fire,
|
|
13
13
|
ravin,
|
|
14
14
|
root,
|
|
15
|
-
shield,
|
|
16
15
|
arzhang,
|
|
17
16
|
rangin,
|
|
18
17
|
releases,
|
|
19
18
|
swallow,
|
|
20
19
|
)
|
|
20
|
+
from bluer_ugv.README.shield import docs as shield
|
|
21
21
|
from bluer_ugv.README.ugvs import docs as ugvs
|
|
22
22
|
from bluer_ugv.README.ugvs.comparison.build import build as build_comparison
|
|
23
23
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from bluer_objects.README.items import ImageItems
|
|
2
|
+
|
|
3
|
+
from bluer_ugv.README.swallow.consts import (
|
|
4
|
+
swallow_assets2,
|
|
5
|
+
swallow_electrical_designs,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
items = ImageItems(
|
|
9
|
+
{
|
|
10
|
+
f"{swallow_electrical_designs}/nuts-bolts-spacers.png": f"{swallow_electrical_designs}/nuts-bolts-spacers.svg",
|
|
11
|
+
f"{swallow_assets2}/20251018_133202.jpg": "",
|
|
12
|
+
f"{swallow_assets2}/20251018_133349.jpg": "",
|
|
13
|
+
f"{swallow_assets2}/20251008_114557.jpg": "",
|
|
14
|
+
f"{swallow_assets2}/20251008_133418.jpg": "",
|
|
15
|
+
f"{swallow_assets2}/20251008_124129.jpg": "",
|
|
16
|
+
f"{swallow_assets2}/20251008_124932.jpg": "",
|
|
17
|
+
}
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
docs = [
|
|
21
|
+
{
|
|
22
|
+
"path": "../docs/swallow/digital/design/shield/box.md",
|
|
23
|
+
"items": items,
|
|
24
|
+
}
|
|
25
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from bluer_ugv.README.shield import box, pcb, schematics, testing
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
docs = (
|
|
5
|
+
[
|
|
6
|
+
{
|
|
7
|
+
"path": "../docs/swallow/digital/design/shield",
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"path": "../docs/swallow/digital/design/shield/connectors-v1.md",
|
|
11
|
+
},
|
|
12
|
+
]
|
|
13
|
+
+ box.docs
|
|
14
|
+
+ pcb.docs
|
|
15
|
+
+ schematics.docs
|
|
16
|
+
+ testing.docs
|
|
17
|
+
)
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
from bluer_objects.README.items import ImageItems
|
|
2
|
+
|
|
3
|
+
from bluer_ugv.README.swallow.consts import swallow_assets2, swallow_designs
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
items = ImageItems(
|
|
7
|
+
{
|
|
8
|
+
f"{swallow_designs}/kicad/swallow/exports/swallow.png": f"{swallow_designs}/kicad/swallow/exports/swallow.pdf",
|
|
9
|
+
f"{swallow_designs}/kicad/swallow/exports/swallow-3d.png": "",
|
|
10
|
+
f"{swallow_designs}/kicad/swallow/exports/swallow-3d-back.png": "",
|
|
11
|
+
f"{swallow_designs}/kicad/swallow/exports/swallow-pcb.png": "",
|
|
12
|
+
f"{swallow_assets2}/20251112_085331.jpg": "",
|
|
13
|
+
f"{swallow_assets2}/20251112_181047.jpg": "",
|
|
14
|
+
f"{swallow_assets2}/20251112_181053.jpg": "",
|
|
15
|
+
}
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
v1_items = ImageItems(
|
|
19
|
+
{
|
|
20
|
+
f"{swallow_assets2}/20250614_102301.jpg": "",
|
|
21
|
+
}
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
v2_items = ImageItems(
|
|
25
|
+
{
|
|
26
|
+
f"{swallow_assets2}/20250703_153834.jpg": "",
|
|
27
|
+
f"{swallow_assets2}/20250925_213013.jpg": "",
|
|
28
|
+
f"{swallow_assets2}/20250925_214017.jpg": "",
|
|
29
|
+
f"{swallow_assets2}/20250928_160425.jpg": "",
|
|
30
|
+
f"{swallow_assets2}/20250928_160449.jpg": "",
|
|
31
|
+
f"{swallow_assets2}/20251002_103712.jpg": "",
|
|
32
|
+
f"{swallow_assets2}/20251002_103720.jpg": "",
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
docs = [
|
|
37
|
+
{
|
|
38
|
+
"path": "../docs/swallow/digital/design/shield/pcb.md",
|
|
39
|
+
"items": items,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"path": "../docs/swallow/digital/design/shield/v1.md",
|
|
43
|
+
"items": v1_items,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"path": "../docs/swallow/digital/design/shield/v2.md",
|
|
47
|
+
"items": v2_items,
|
|
48
|
+
},
|
|
49
|
+
]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from bluer_objects.README.items import ImageItems
|
|
2
|
+
|
|
3
|
+
from bluer_ugv.README.swallow.consts import swallow_electrical_designs
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
items = ImageItems(
|
|
7
|
+
{
|
|
8
|
+
f"{swallow_electrical_designs}/digital.png": f"{swallow_electrical_designs}/digital.svg",
|
|
9
|
+
}
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
docs = [
|
|
13
|
+
{
|
|
14
|
+
"path": "../docs/swallow/digital/design/shield/schematics.md",
|
|
15
|
+
"items": items,
|
|
16
|
+
},
|
|
17
|
+
]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from bluer_objects.README.items import ImageItems
|
|
2
|
+
|
|
3
|
+
from bluer_ugv.README.swallow.consts import swallow_assets2
|
|
4
|
+
|
|
5
|
+
items = ImageItems(
|
|
6
|
+
{
|
|
7
|
+
f"{swallow_assets2}/20251113_205142.jpg": "",
|
|
8
|
+
f"{swallow_assets2}/20251113_210730.jpg": "",
|
|
9
|
+
f"{swallow_assets2}/20251113_210706.jpg": "",
|
|
10
|
+
},
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
docs = [
|
|
14
|
+
{
|
|
15
|
+
"path": "../docs/swallow/digital/design/shield/testing.md",
|
|
16
|
+
"items": items,
|
|
17
|
+
},
|
|
18
|
+
]
|
|
@@ -18,7 +18,7 @@ BLUER_UGV_SWALLOW_YOLO_MODEL=coco128-model-2025-09-16-meb4if
|
|
|
18
18
|
|
|
19
19
|
BLUER_UGV_SWALLOW_YOLO_DATASET_LIST=swallow-yolo-dataset-list-v1
|
|
20
20
|
|
|
21
|
-
BLUER_UGV_ULTRASONIC_SENSOR_TEST_OBJECT=ultrasonic-test-2025-
|
|
21
|
+
BLUER_UGV_ULTRASONIC_SENSOR_TEST_OBJECT=ultrasonic-test-2025-11-18-12-38-22-j4t7wl
|
|
22
22
|
|
|
23
23
|
BLUER_UGV_ULTRASONIC_SENSOR_WARNING_THRESHOLD=400
|
|
24
24
|
BLUER_UGV_ULTRASONIC_SENSOR_DANGER_THRESHOLD=200
|
|
@@ -24,6 +24,7 @@ from bluer_ugv.swallow.session.classical.motor import (
|
|
|
24
24
|
)
|
|
25
25
|
from bluer_ugv.swallow.session.classical.setpoint.classes import ClassicalSetPoint
|
|
26
26
|
from bluer_ugv.swallow.session.classical.position import ClassicalPosition
|
|
27
|
+
from bluer_ugv.swallow.session.classical.screen import ClassicalScreen
|
|
27
28
|
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.classes import (
|
|
28
29
|
ClassicalUltrasonicSensor,
|
|
29
30
|
)
|
|
File without changes
|
|
@@ -10,6 +10,9 @@ from bluer_ugv.swallow.session.classical.ultrasonic_sensor.pack import (
|
|
|
10
10
|
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.detection import (
|
|
11
11
|
DetectionState,
|
|
12
12
|
)
|
|
13
|
+
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.detection_list import (
|
|
14
|
+
DetectionList,
|
|
15
|
+
)
|
|
13
16
|
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.log import (
|
|
14
17
|
UltrasonicSensorDetectionLog,
|
|
15
18
|
)
|
|
@@ -42,6 +45,8 @@ class ClassicalUltrasonicSensor:
|
|
|
42
45
|
self.setpoint = setpoint
|
|
43
46
|
self.keyboard = keyboard
|
|
44
47
|
|
|
48
|
+
self.detection_list = DetectionList()
|
|
49
|
+
|
|
45
50
|
self.pack = None
|
|
46
51
|
self.log = None
|
|
47
52
|
self.running = False
|
|
@@ -85,30 +90,22 @@ class ClassicalUltrasonicSensor:
|
|
|
85
90
|
time.sleep(0.01)
|
|
86
91
|
continue
|
|
87
92
|
|
|
88
|
-
success,
|
|
89
|
-
log=env.BLUER_UGV_ULTRASONIC_SENSOR_LOG == 1
|
|
93
|
+
success, self.detection_list = self.pack.detect(
|
|
94
|
+
log=env.BLUER_UGV_ULTRASONIC_SENSOR_LOG == 1,
|
|
90
95
|
)
|
|
91
96
|
if not success:
|
|
92
97
|
raise NameError("failed to detect ultrasonic sensor.")
|
|
93
98
|
|
|
94
99
|
if self.log is not None:
|
|
95
|
-
self.log.append(
|
|
100
|
+
self.log.append(self.detection_list)
|
|
96
101
|
|
|
97
102
|
log_detections: bool = False
|
|
98
103
|
speed = self.setpoint.get(what="speed")
|
|
99
|
-
if
|
|
100
|
-
detection.state == DetectionState.DANGER for detection in detections
|
|
101
|
-
):
|
|
104
|
+
if self.detection_list.state == DetectionState.DANGER:
|
|
102
105
|
self.setpoint.stop()
|
|
103
106
|
log_detections = True
|
|
104
107
|
logger.info("⛔️ danger detected, stopping.")
|
|
105
|
-
elif
|
|
106
|
-
any(
|
|
107
|
-
detection.state == DetectionState.WARNING
|
|
108
|
-
for detection in detections
|
|
109
|
-
)
|
|
110
|
-
and speed > 0
|
|
111
|
-
):
|
|
108
|
+
elif self.detection_list.state == DetectionState.WARNING and speed > 0:
|
|
112
109
|
self.setpoint.put(
|
|
113
110
|
what="speed",
|
|
114
111
|
value=speed // 2,
|
|
@@ -123,8 +120,6 @@ class ClassicalUltrasonicSensor:
|
|
|
123
120
|
logger.info(
|
|
124
121
|
"{}: {}".format(
|
|
125
122
|
self.__class__.__name__,
|
|
126
|
-
", ".join(
|
|
127
|
-
[detection.as_str(short=True) for detection in detections]
|
|
128
|
-
),
|
|
123
|
+
", ".join(self.detection_list.as_str(short=True)),
|
|
129
124
|
)
|
|
130
125
|
)
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
from typing import List, Iterable, Iterator
|
|
2
|
+
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.detection import (
|
|
3
|
+
Detection,
|
|
4
|
+
DetectionState,
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DetectionList:
|
|
9
|
+
def __init__(
|
|
10
|
+
self,
|
|
11
|
+
list_of_detections: Iterable[Detection] | None = None,
|
|
12
|
+
):
|
|
13
|
+
self._content: List[Detection] = (
|
|
14
|
+
list(list_of_detections) if list_of_detections else []
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
def __iter__(self) -> Iterator[Detection]:
|
|
18
|
+
return iter(self._content)
|
|
19
|
+
|
|
20
|
+
def __len__(self) -> int:
|
|
21
|
+
return len(self._content)
|
|
22
|
+
|
|
23
|
+
def __getitem__(self, index: int) -> Detection:
|
|
24
|
+
return self._content[index]
|
|
25
|
+
|
|
26
|
+
def append(self, detection: Detection) -> None:
|
|
27
|
+
self._content.append(detection)
|
|
28
|
+
|
|
29
|
+
def as_str(
|
|
30
|
+
self,
|
|
31
|
+
short: bool = False,
|
|
32
|
+
) -> List[str]:
|
|
33
|
+
return [detection.as_str(short=short) for detection in self._content]
|
|
34
|
+
|
|
35
|
+
@property
|
|
36
|
+
def state(self) -> DetectionState:
|
|
37
|
+
if any(detection.state == DetectionState.DANGER for detection in self._content):
|
|
38
|
+
return DetectionState.DANGER
|
|
39
|
+
|
|
40
|
+
if any(
|
|
41
|
+
detection.state == DetectionState.WARNING for detection in self._content
|
|
42
|
+
):
|
|
43
|
+
return DetectionState.WARNING
|
|
44
|
+
|
|
45
|
+
return DetectionState.CLEAR
|
{bluer_ugv-7.340.1 → bluer_ugv-7.359.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py
RENAMED
|
@@ -12,16 +12,19 @@ from bluer_objects.graphics.signature import add_signature
|
|
|
12
12
|
|
|
13
13
|
from bluer_ugv import env
|
|
14
14
|
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.detection import Detection
|
|
15
|
+
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.detection_list import (
|
|
16
|
+
DetectionList,
|
|
17
|
+
)
|
|
15
18
|
from bluer_ugv.host import signature
|
|
16
19
|
from bluer_ugv.logger import logger
|
|
17
20
|
|
|
18
21
|
|
|
19
22
|
class UltrasonicSensorDetectionLog:
|
|
20
23
|
def __init__(self):
|
|
21
|
-
self.log: List[
|
|
24
|
+
self.log: List[DetectionList] = []
|
|
22
25
|
|
|
23
|
-
def append(self,
|
|
24
|
-
self.log.append(
|
|
26
|
+
def append(self, detection_list: DetectionList):
|
|
27
|
+
self.log.append(detection_list)
|
|
25
28
|
|
|
26
29
|
def export(
|
|
27
30
|
self,
|
|
@@ -72,12 +75,12 @@ class UltrasonicSensorDetectionLog:
|
|
|
72
75
|
)
|
|
73
76
|
|
|
74
77
|
plt.plot(
|
|
75
|
-
[func(
|
|
78
|
+
[func(detection_list[0]) for detection_list in self.log],
|
|
76
79
|
color="green",
|
|
77
80
|
label="left sensor",
|
|
78
81
|
)
|
|
79
82
|
plt.plot(
|
|
80
|
-
[func(
|
|
83
|
+
[func(detection_list[1]) for detection_list in self.log],
|
|
81
84
|
color="blue",
|
|
82
85
|
label="right sensor",
|
|
83
86
|
)
|
|
@@ -150,8 +153,8 @@ class UltrasonicSensorDetectionLog:
|
|
|
150
153
|
) -> bool:
|
|
151
154
|
image = np.zeros((len(self.log[0]), len(self.log), 3), dtype=np.uint8)
|
|
152
155
|
|
|
153
|
-
for detection_index,
|
|
154
|
-
for sensor_index, detection in enumerate(
|
|
156
|
+
for detection_index, detection_list in enumerate(self.log):
|
|
157
|
+
for sensor_index, detection in enumerate(detection_list):
|
|
155
158
|
assert isinstance(detection, Detection)
|
|
156
159
|
|
|
157
160
|
for channel in range(3):
|
|
@@ -213,12 +216,12 @@ class UltrasonicSensorDetectionLog:
|
|
|
213
216
|
if not path.create(temp_folder):
|
|
214
217
|
return False
|
|
215
218
|
|
|
216
|
-
for index,
|
|
219
|
+
for index, detection_list in tqdm(enumerate(self.log)):
|
|
217
220
|
if frame_count != -1 and len(image_list) >= frame_count:
|
|
218
221
|
rm_blank_count += 1
|
|
219
222
|
break
|
|
220
223
|
|
|
221
|
-
if rm_blank and all(detection.is_blank for detection in
|
|
224
|
+
if rm_blank and all(detection.is_blank for detection in detection_list):
|
|
222
225
|
continue
|
|
223
226
|
|
|
224
227
|
filename = objects.path_of(
|
|
@@ -230,12 +233,12 @@ class UltrasonicSensorDetectionLog:
|
|
|
230
233
|
[
|
|
231
234
|
detection.as_image(
|
|
232
235
|
height=height,
|
|
233
|
-
width=int(width / len(
|
|
236
|
+
width=int(width / len(detection_list)),
|
|
234
237
|
max_m=max_m,
|
|
235
|
-
line_width=int(line_width / len(
|
|
238
|
+
line_width=int(line_width / len(detection_list)),
|
|
236
239
|
sign=False,
|
|
237
240
|
)
|
|
238
|
-
for detection in
|
|
241
|
+
for detection in detection_list
|
|
239
242
|
],
|
|
240
243
|
axis=1,
|
|
241
244
|
)
|
|
@@ -254,14 +257,14 @@ class UltrasonicSensorDetectionLog:
|
|
|
254
257
|
env.BLUER_UGV_ULTRASONIC_SENSOR_DANGER_THRESHOLD
|
|
255
258
|
),
|
|
256
259
|
]
|
|
257
|
-
+
|
|
260
|
+
+ detection_list.as_str(short=True)
|
|
258
261
|
+ objects.signature(
|
|
259
262
|
"frame #{:04d}/{}".format(
|
|
260
263
|
index,
|
|
261
264
|
len(self.log),
|
|
262
265
|
),
|
|
263
266
|
object_name,
|
|
264
|
-
)
|
|
267
|
+
),
|
|
265
268
|
)
|
|
266
269
|
],
|
|
267
270
|
footer=[" | ".join(signature())],
|
|
@@ -316,8 +319,8 @@ class UltrasonicSensorDetectionLog:
|
|
|
316
319
|
),
|
|
317
320
|
{
|
|
318
321
|
"detections": [
|
|
319
|
-
[detection.as_dict() for detection in
|
|
320
|
-
for
|
|
322
|
+
[detection.as_dict() for detection in detection_list]
|
|
323
|
+
for detection_list in self.log
|
|
321
324
|
]
|
|
322
325
|
},
|
|
323
326
|
log=log,
|
|
@@ -4,7 +4,9 @@ from bluer_ugv import env
|
|
|
4
4
|
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.sensor import (
|
|
5
5
|
lUltrasonicSensor,
|
|
6
6
|
)
|
|
7
|
-
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.
|
|
7
|
+
from bluer_ugv.swallow.session.classical.ultrasonic_sensor.detection_list import (
|
|
8
|
+
DetectionList,
|
|
9
|
+
)
|
|
8
10
|
from bluer_ugv.logger import logger
|
|
9
11
|
|
|
10
12
|
|
|
@@ -30,7 +32,7 @@ class UltrasonicSensorPack:
|
|
|
30
32
|
def detect(
|
|
31
33
|
self,
|
|
32
34
|
log: bool = True,
|
|
33
|
-
) -> Tuple[bool,
|
|
35
|
+
) -> Tuple[bool, DetectionList]:
|
|
34
36
|
success_left, detection_left = self.left.detect(log=False)
|
|
35
37
|
success_right, detection_right = self.right.detect(log=False)
|
|
36
38
|
|
|
@@ -45,6 +47,16 @@ class UltrasonicSensorPack:
|
|
|
45
47
|
)
|
|
46
48
|
|
|
47
49
|
return (
|
|
48
|
-
|
|
49
|
-
|
|
50
|
+
all(
|
|
51
|
+
[
|
|
52
|
+
success_left,
|
|
53
|
+
success_right,
|
|
54
|
+
]
|
|
55
|
+
),
|
|
56
|
+
DetectionList(
|
|
57
|
+
[
|
|
58
|
+
detection_left,
|
|
59
|
+
detection_right,
|
|
60
|
+
],
|
|
61
|
+
),
|
|
50
62
|
)
|
|
@@ -32,12 +32,12 @@ def test(
|
|
|
32
32
|
success = True
|
|
33
33
|
try:
|
|
34
34
|
while True:
|
|
35
|
-
success,
|
|
35
|
+
success, detection_list = ultrasonic_sensor_pack.detect(log=log)
|
|
36
36
|
if not success:
|
|
37
37
|
break
|
|
38
38
|
|
|
39
39
|
if export:
|
|
40
|
-
detection_log.append(
|
|
40
|
+
detection_log.append(detection_list)
|
|
41
41
|
except KeyboardInterrupt:
|
|
42
42
|
logger.info("^C detected.")
|
|
43
43
|
finally:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_ugv
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.359.1
|
|
4
4
|
Summary: 🐬 AI x UGV.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-ugv
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -64,7 +64,7 @@ pip install bluer_ugv
|
|
|
64
64
|
|
|
65
65
|
[](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml) [](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml) [](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml) [](https://pypi.org/project/bluer-ugv/) [](https://pypistats.org/packages/bluer-ugv)
|
|
66
66
|
|
|
67
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.
|
|
67
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.359.1`](https://github.com/kamangir/bluer-ugv).
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -61,7 +61,6 @@ bluer_ugv/README/consts.py
|
|
|
61
61
|
bluer_ugv/README/items.py
|
|
62
62
|
bluer_ugv/README/releases.py
|
|
63
63
|
bluer_ugv/README/root.py
|
|
64
|
-
bluer_ugv/README/shield.py
|
|
65
64
|
bluer_ugv/README/shortcuts.py
|
|
66
65
|
bluer_ugv/README/arzhang/__init__.py
|
|
67
66
|
bluer_ugv/README/arzhang/algo.py
|
|
@@ -81,6 +80,12 @@ bluer_ugv/README/rangin/items.py
|
|
|
81
80
|
bluer_ugv/README/ravin/__init__.py
|
|
82
81
|
bluer_ugv/README/ravin/consts.py
|
|
83
82
|
bluer_ugv/README/ravin/items.py
|
|
83
|
+
bluer_ugv/README/shield/__init__.py
|
|
84
|
+
bluer_ugv/README/shield/box.py
|
|
85
|
+
bluer_ugv/README/shield/docs.py
|
|
86
|
+
bluer_ugv/README/shield/pcb.py
|
|
87
|
+
bluer_ugv/README/shield/schematics.py
|
|
88
|
+
bluer_ugv/README/shield/testing.py
|
|
84
89
|
bluer_ugv/README/swallow/__init__.py
|
|
85
90
|
bluer_ugv/README/swallow/analog.py
|
|
86
91
|
bluer_ugv/README/swallow/consts.py
|
|
@@ -158,6 +163,7 @@ bluer_ugv/swallow/session/classical/mode.py
|
|
|
158
163
|
bluer_ugv/swallow/session/classical/mousepad.py
|
|
159
164
|
bluer_ugv/swallow/session/classical/position.py
|
|
160
165
|
bluer_ugv/swallow/session/classical/push_button.py
|
|
166
|
+
bluer_ugv/swallow/session/classical/screen.py
|
|
161
167
|
bluer_ugv/swallow/session/classical/session.py
|
|
162
168
|
bluer_ugv/swallow/session/classical/camera/__init__.py
|
|
163
169
|
bluer_ugv/swallow/session/classical/camera/generic.py
|
|
@@ -183,6 +189,7 @@ bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py
|
|
|
183
189
|
bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py
|
|
184
190
|
bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py
|
|
185
191
|
bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py
|
|
192
|
+
bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection_list.py
|
|
186
193
|
bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py
|
|
187
194
|
bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py
|
|
188
195
|
bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
from bluer_objects.README.items import ImageItems
|
|
2
|
-
|
|
3
|
-
from bluer_ugv.README.swallow.consts import (
|
|
4
|
-
swallow_assets2,
|
|
5
|
-
swallow_designs,
|
|
6
|
-
swallow_electrical_designs,
|
|
7
|
-
)
|
|
8
|
-
|
|
9
|
-
items = ImageItems(
|
|
10
|
-
{
|
|
11
|
-
f"{swallow_electrical_designs}/digital.png": f"{swallow_electrical_designs}/digital.svg",
|
|
12
|
-
f"{swallow_assets2}/20250609_164433.jpg": "",
|
|
13
|
-
f"{swallow_assets2}/20250614_102301.jpg": "",
|
|
14
|
-
f"{swallow_assets2}/20250614_114954.jpg": "",
|
|
15
|
-
f"{swallow_assets2}/20250615_192339.jpg": "",
|
|
16
|
-
f"{swallow_assets2}/20250703_153834.jpg": "",
|
|
17
|
-
f"{swallow_assets2}/design/v2/01.jpg": "",
|
|
18
|
-
f"{swallow_assets2}/design/v3/01.jpg": "",
|
|
19
|
-
f"{swallow_assets2}/design/v4/01.jpg": "",
|
|
20
|
-
f"{swallow_assets2}/20250925_213013.jpg": "",
|
|
21
|
-
f"{swallow_assets2}/20250925_214017.jpg": "",
|
|
22
|
-
f"{swallow_assets2}/20250928_160425.jpg": "",
|
|
23
|
-
f"{swallow_assets2}/20250928_160449.jpg": "",
|
|
24
|
-
f"{swallow_assets2}/design/head-v1/01.jpg": "",
|
|
25
|
-
f"{swallow_assets2}/20251002_103712.jpg": "",
|
|
26
|
-
f"{swallow_assets2}/20251002_103720.jpg": "",
|
|
27
|
-
f"{swallow_assets2}/design/v5/01.jpg": "",
|
|
28
|
-
f"{swallow_electrical_designs}/nuts-bolts-spacers.png": f"{swallow_electrical_designs}/nuts-bolts-spacers.svg",
|
|
29
|
-
f"{swallow_assets2}/20251018_133202.jpg": "",
|
|
30
|
-
f"{swallow_assets2}/20251018_133349.jpg": "",
|
|
31
|
-
f"{swallow_assets2}/20251008_114557.jpg": "",
|
|
32
|
-
f"{swallow_assets2}/20251008_133418.jpg": "",
|
|
33
|
-
f"{swallow_assets2}/20251008_124129.jpg": "",
|
|
34
|
-
f"{swallow_assets2}/20251008_124932.jpg": "",
|
|
35
|
-
f"{swallow_designs}/kicad/swallow/exports/swallow.png": f"{swallow_designs}/kicad/swallow/exports/swallow.pdf",
|
|
36
|
-
f"{swallow_designs}/kicad/swallow/exports/swallow-3d.png": "",
|
|
37
|
-
f"{swallow_designs}/kicad/swallow/exports/swallow-3d-back.png": "",
|
|
38
|
-
f"{swallow_designs}/kicad/swallow/exports/swallow-pcb.png": "",
|
|
39
|
-
f"{swallow_assets2}/20250609_164433.jpg": "",
|
|
40
|
-
f"{swallow_assets2}/20251112_085331.jpg": "",
|
|
41
|
-
f"{swallow_assets2}/20251112_181047.jpg": "",
|
|
42
|
-
f"{swallow_assets2}/20251112_181053.jpg": "",
|
|
43
|
-
}
|
|
44
|
-
)
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
docs = [
|
|
48
|
-
{
|
|
49
|
-
"path": "../docs/swallow/digital/design/shield",
|
|
50
|
-
"items": items,
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"path": "../docs/swallow/digital/design/shield/testing.md",
|
|
54
|
-
"items": ImageItems(
|
|
55
|
-
{
|
|
56
|
-
f"{swallow_assets2}/20251113_205142.jpg": "",
|
|
57
|
-
f"{swallow_assets2}/20251113_210730.jpg": "",
|
|
58
|
-
f"{swallow_assets2}/20251113_210706.jpg": "",
|
|
59
|
-
},
|
|
60
|
-
),
|
|
61
|
-
},
|
|
62
|
-
]
|
|
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
|