bluer-ugv 7.578.1__tar.gz → 7.607.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.578.1/bluer_ugv.egg-info → bluer_ugv-7.607.1}/PKG-INFO +2 -2
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/README.md +1 -1
- bluer_ugv-7.607.1/bluer_ugv/.abcli/swallow/git/rm_keys.sh +27 -0
- bluer_ugv-7.607.1/bluer_ugv/README/swallow/digital/algo/__init__.py +17 -0
- bluer_ugv-7.607.1/bluer_ugv/README/swallow/digital/algo/driving.py +5 -0
- bluer_ugv-7.607.1/bluer_ugv/README/swallow/digital/algo/tracking.py +41 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/__init__.py +1 -1
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/__main__.py +9 -2
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/debug.py +8 -4
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/generic.py +10 -3
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/tracking.py +18 -3
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/targeting.py +11 -4
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1/bluer_ugv.egg-info}/PKG-INFO +2 -2
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv.egg-info/SOURCES.txt +2 -0
- bluer_ugv-7.578.1/bluer_ugv/.abcli/swallow/git/rm_keys.sh +0 -29
- bluer_ugv-7.578.1/bluer_ugv/README/swallow/digital/algo/__init__.py +0 -28
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/LICENSE +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/MANIFEST.in +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/abcli.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/actions.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/aka.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/alias.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/bluer_ugv.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/combine.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/download.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/edit.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/list.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/upload.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/debug.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/env/cp.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/env/list.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/env/set.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/env.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/git.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/keyboard/test.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/keyboard.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/select_target.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/session.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/ultrasonic/review.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/ultrasonic/test.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/ultrasonic.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/play.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist/cat.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist/download.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist/edit.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist/upload.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/README.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/help.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_edit.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_list.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_video_play.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_video_playlist.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/ultrasonic_sensor_review.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/version.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/ugv/git.sh +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/alias.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/algo.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/consts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/design.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/flag.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/items.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/beast.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/build.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/box.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/docs.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/power.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/schematics.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/docs.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/testing.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/v1.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/v2.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/testing.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/consts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/eagle/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/eagle/consts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/eagle/items.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/fire/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/fire/consts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/fire/items.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/items.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/rangin/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/rangin/consts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/rangin/items.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ravin/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ravin/consts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ravin/items.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/releases.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/root.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/shortcuts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/analog.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/consts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/algo/navigation.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/algo/yolo.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/design/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/design/mechanical.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/design/parts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/items.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/build.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/DYI.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/classes.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/concealment.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/control.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/cost.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/db.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/payload.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/ps.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/range.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/sanction_proof.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/size.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/speed.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/swarm.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/uv_delivery.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/references/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/references/classes.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/references/db.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/ugvs/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/ugvs/classes.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/ugvs/db.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/db.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/docs.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/__main__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/assets/comparison.html +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/config.env +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/eagle/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/eagle/parts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/fire/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/fire/parts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/rangin/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/rangin/parts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/ravin3/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/ravin3/parts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/ravin4/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/ravin4/parts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/env.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/__main__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/functions.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/git.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/dataset.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/debug.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/env.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/git.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/keyboard.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/select_target.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/ultrasonic_sensor.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/video/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/video/functions.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/video/playlist.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/host.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/logger.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/sample.env +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/dataset/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/dataset/__main__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/dataset/combination.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/__main__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/navigation.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/void.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/yolo.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/__main__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/classes.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/keys.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/testing.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/leds.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/mode.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/generic.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/left.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/rear.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/right.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/steering.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/mousepad.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/position.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/push_button.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/classes.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/__main__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/engine.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/player.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/playlist.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/session.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/setpoint/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/setpoint/classes.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/setpoint/steering.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__init__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection_list.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/functions.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/urls.py +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv.egg-info/dependency_links.txt +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv.egg-info/requires.txt +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv.egg-info/top_level.txt +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/pyproject.toml +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/requirements.txt +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/setup.cfg +0 -0
- {bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_ugv
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.607.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.607.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.607.1`](https://github.com/kamangir/bluer-ugv).
|
|
39
39
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#! /usr/bin/git bash
|
|
2
|
+
|
|
3
|
+
function bluer_ugv_swallow_git_rm_keys() {
|
|
4
|
+
local options=$1
|
|
5
|
+
local do_dryrun=$(bluer_ai_option_int "$options" dryrun 1)
|
|
6
|
+
|
|
7
|
+
if [[ "$abcli_is_rpi" == false ]]; then
|
|
8
|
+
bluer_ai_log_error "only works on rpi."
|
|
9
|
+
return 1
|
|
10
|
+
fi
|
|
11
|
+
|
|
12
|
+
sudo rm -v ~/.ssh/$BLUER_AI_GIT_SSH_KEY_NAME
|
|
13
|
+
|
|
14
|
+
sudo rm -v ~/.ssh/$BLUER_AI_GIT_SSH_KEY_NAME.pub
|
|
15
|
+
|
|
16
|
+
local repo_name
|
|
17
|
+
for repo_name in bluer-ai $(bluer_ai_plugins list_of_external \
|
|
18
|
+
--delim space \
|
|
19
|
+
--log 0 \
|
|
20
|
+
--repo_names 1); do
|
|
21
|
+
bluer_ai_git \
|
|
22
|
+
$repo_name \
|
|
23
|
+
set_remote \
|
|
24
|
+
dryrun=$do_dryrun,https
|
|
25
|
+
[[ $? -ne 0 ]] && return 1
|
|
26
|
+
done
|
|
27
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from bluer_objects.README.items import ImageItems
|
|
2
|
+
|
|
3
|
+
from bluer_ugv.README.consts import algo_docs
|
|
4
|
+
from bluer_ugv.README.swallow.consts import swallow_assets2
|
|
5
|
+
from bluer_ugv.README.swallow.digital.algo import driving, navigation, tracking, yolo
|
|
6
|
+
|
|
7
|
+
docs = (
|
|
8
|
+
[
|
|
9
|
+
{
|
|
10
|
+
"path": "../docs/swallow/digital/algo",
|
|
11
|
+
},
|
|
12
|
+
]
|
|
13
|
+
+ driving.docs
|
|
14
|
+
+ navigation.docs
|
|
15
|
+
+ tracking.docs
|
|
16
|
+
+ yolo.docs
|
|
17
|
+
)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
from bluer_objects.README.items import ImageItems
|
|
2
|
+
from bluer_objects.README.consts import assets
|
|
3
|
+
from bluer_objects.README.consts import assets_url
|
|
4
|
+
|
|
5
|
+
from bluer_ugv.README.consts import algo_docs
|
|
6
|
+
from bluer_ugv.README.swallow.consts import swallow_assets2
|
|
7
|
+
|
|
8
|
+
tracker_assets2 = assets_url(
|
|
9
|
+
"tracker",
|
|
10
|
+
volume=2,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
docs = [
|
|
14
|
+
{
|
|
15
|
+
"path": "../docs/swallow/digital/algo/tracking",
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"path": "../docs/swallow/digital/algo/tracking/validations",
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"path": "../docs/swallow/digital/algo/tracking/validations/one.md",
|
|
22
|
+
"items": ImageItems(
|
|
23
|
+
{
|
|
24
|
+
f"{swallow_assets2}/target-selection.png": f"{algo_docs}/socket.md",
|
|
25
|
+
}
|
|
26
|
+
),
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"path": "../docs/swallow/digital/algo/tracking/validations/two.md",
|
|
30
|
+
"items": ImageItems(
|
|
31
|
+
{
|
|
32
|
+
f"{tracker_assets2}/validations/two/socket-3.png": f"{algo_docs}/socket.md",
|
|
33
|
+
"{}/{}/{}.gif".format(
|
|
34
|
+
assets,
|
|
35
|
+
"swallow-debug-2025-12-11-17-23-59-6bhm5n",
|
|
36
|
+
"swallow-debug-2025-12-11-17-23-59-6bhm5n",
|
|
37
|
+
): "",
|
|
38
|
+
}
|
|
39
|
+
),
|
|
40
|
+
},
|
|
41
|
+
]
|
|
@@ -4,8 +4,8 @@ from blueness import module
|
|
|
4
4
|
from blueness.argparse.generic import sys_exit
|
|
5
5
|
|
|
6
6
|
from bluer_ugv import NAME
|
|
7
|
-
from bluer_ugv.swallow.targeting import select_target
|
|
8
|
-
from bluer_ugv.swallow.debug import debug
|
|
7
|
+
from bluer_ugv.swallow.targeting import select_target, DEFAULT_TARGETING_PORT
|
|
8
|
+
from bluer_ugv.swallow.debug import debug, DEFAULT_DEBUG_PORT
|
|
9
9
|
from bluer_ugv.logger import logger
|
|
10
10
|
|
|
11
11
|
NAME = module.name(__file__, NAME)
|
|
@@ -42,6 +42,11 @@ parser.add_argument(
|
|
|
42
42
|
default=1,
|
|
43
43
|
help="0 | 1",
|
|
44
44
|
)
|
|
45
|
+
parser.add_argument(
|
|
46
|
+
"--port",
|
|
47
|
+
type=int,
|
|
48
|
+
default=-1,
|
|
49
|
+
)
|
|
45
50
|
args = parser.parse_args()
|
|
46
51
|
|
|
47
52
|
success = False
|
|
@@ -50,11 +55,13 @@ if args.task == "debug":
|
|
|
50
55
|
object_name=args.object_name,
|
|
51
56
|
generate_gif=args.generate_gif == 1,
|
|
52
57
|
save_images=args.save_images == 1,
|
|
58
|
+
port=DEFAULT_DEBUG_PORT if args.port == -1 else args.port,
|
|
53
59
|
)
|
|
54
60
|
elif args.task == "select_target":
|
|
55
61
|
success = select_target(
|
|
56
62
|
host=args.host,
|
|
57
63
|
loop=args.loop == 1,
|
|
64
|
+
port=DEFAULT_TARGETING_PORT if args.port == -1 else args.port,
|
|
58
65
|
)
|
|
59
66
|
else:
|
|
60
67
|
success = None
|
|
@@ -8,7 +8,7 @@ from bluer_objects import file
|
|
|
8
8
|
from bluer_objects import objects
|
|
9
9
|
from bluer_objects.logger.stitch import stitch_images
|
|
10
10
|
from bluer_objects.graphics.gif import generate_animated_gif
|
|
11
|
-
from bluer_algo.socket.connection import SocketConnection
|
|
11
|
+
from bluer_algo.socket.connection import SocketConnection, DEFAULT_PORT
|
|
12
12
|
from bluer_algo.socket.message import SocketMessage
|
|
13
13
|
|
|
14
14
|
from bluer_ugv import NAME
|
|
@@ -17,24 +17,28 @@ from bluer_ugv.logger import logger
|
|
|
17
17
|
|
|
18
18
|
NAME = module.name(__file__, NAME)
|
|
19
19
|
|
|
20
|
+
DEFAULT_DEBUG_PORT = DEFAULT_PORT
|
|
21
|
+
|
|
20
22
|
|
|
21
23
|
def debug(
|
|
22
24
|
object_name: str,
|
|
23
25
|
generate_gif: bool = True,
|
|
24
26
|
save_images: bool = True,
|
|
27
|
+
port: int = DEFAULT_DEBUG_PORT,
|
|
25
28
|
) -> bool:
|
|
26
29
|
logger.info(
|
|
27
|
-
"{}.debug -{}{}> {}".format(
|
|
30
|
+
"{}.debug -{}{}{}> {}".format(
|
|
28
31
|
NAME,
|
|
32
|
+
f"port={port}-",
|
|
29
33
|
"images-" if save_images else "",
|
|
30
34
|
"gif-" if generate_gif else "",
|
|
31
35
|
object_name,
|
|
32
36
|
)
|
|
33
37
|
)
|
|
34
38
|
|
|
35
|
-
socket = SocketConnection.listen_on()
|
|
39
|
+
socket = SocketConnection.listen_on(port=port)
|
|
36
40
|
|
|
37
|
-
title = "debug..."
|
|
41
|
+
title = f"debug: port={port} -> {object_name} ..."
|
|
38
42
|
|
|
39
43
|
cv2.namedWindow(title)
|
|
40
44
|
logger.info("Ctrl+C to exit...")
|
{bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/generic.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
|
|
3
|
-
from bluer_algo.socket.connection import SocketConnection, DEV_HOST
|
|
3
|
+
from bluer_algo.socket.connection import SocketConnection, DEV_HOST, DEFAULT_PORT
|
|
4
4
|
from bluer_sbc.imager.camera import instance as camera
|
|
5
5
|
|
|
6
6
|
from bluer_ugv.swallow.session.classical.keyboard.classes import ClassicalKeyboard
|
|
@@ -29,8 +29,15 @@ class ClassicalCamera:
|
|
|
29
29
|
def cleanup(self):
|
|
30
30
|
camera.close(log=True)
|
|
31
31
|
|
|
32
|
-
def send_debug_data(
|
|
33
|
-
|
|
32
|
+
def send_debug_data(
|
|
33
|
+
self,
|
|
34
|
+
data: Any,
|
|
35
|
+
port: int = DEFAULT_PORT,
|
|
36
|
+
) -> bool:
|
|
37
|
+
socket = SocketConnection.connect_to(
|
|
38
|
+
target_host=DEV_HOST,
|
|
39
|
+
port=port,
|
|
40
|
+
)
|
|
34
41
|
return socket.send_data(data)
|
|
35
42
|
|
|
36
43
|
# multi-threaded support
|
{bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/tracking.py
RENAMED
|
@@ -2,9 +2,9 @@ from typing import Tuple
|
|
|
2
2
|
import numpy as np
|
|
3
3
|
|
|
4
4
|
from bluer_options.timer import Timer
|
|
5
|
-
from bluer_options import string
|
|
6
5
|
from bluer_algo.tracker.classes.target import Target
|
|
7
6
|
from bluer_algo.tracker.classes.camshift import CamShiftTracker
|
|
7
|
+
from bluer_algo.socket.message import SocketMessage
|
|
8
8
|
from bluer_sbc.imager.camera import instance as camera
|
|
9
9
|
|
|
10
10
|
from bluer_ugv import env
|
|
@@ -14,6 +14,7 @@ from bluer_ugv.swallow.session.classical.keyboard.classes import ClassicalKeyboa
|
|
|
14
14
|
from bluer_ugv.swallow.session.classical.leds import ClassicalLeds
|
|
15
15
|
from bluer_ugv.swallow.session.classical.setpoint.classes import ClassicalSetPoint
|
|
16
16
|
from bluer_ugv.swallow.session.classical.mode import OperationMode
|
|
17
|
+
from bluer_ugv.swallow.targeting import DEFAULT_TARGETING_PORT
|
|
17
18
|
from bluer_ugv.logger import logger
|
|
18
19
|
|
|
19
20
|
|
|
@@ -56,6 +57,7 @@ class ClassicalTrackingCamera(ClassicalCamera):
|
|
|
56
57
|
success, self.track_window = Target.select(
|
|
57
58
|
np.flip(image, axis=2),
|
|
58
59
|
local=False,
|
|
60
|
+
port=DEFAULT_TARGETING_PORT,
|
|
59
61
|
)
|
|
60
62
|
self.leds.set_all(False)
|
|
61
63
|
if not success:
|
|
@@ -100,10 +102,23 @@ class ClassicalTrackingCamera(ClassicalCamera):
|
|
|
100
102
|
if not success:
|
|
101
103
|
return success
|
|
102
104
|
|
|
103
|
-
|
|
105
|
+
debug_mode = self.keyboard.get("debug_mode", False)
|
|
106
|
+
_, self.track_window, output_image = self.tracker.track(
|
|
104
107
|
frame=image,
|
|
105
108
|
track_window=self.track_window,
|
|
109
|
+
log=debug_mode,
|
|
106
110
|
)
|
|
111
|
+
logger.info(f"🎯 {self.track_window}")
|
|
112
|
+
|
|
113
|
+
if debug_mode:
|
|
114
|
+
if not self.send_debug_data(
|
|
115
|
+
SocketMessage(
|
|
116
|
+
{
|
|
117
|
+
"image": output_image,
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
):
|
|
121
|
+
logger.warning("failed to send debug data.")
|
|
107
122
|
|
|
108
123
|
x, _, w, _ = self.track_window
|
|
109
124
|
if x + w // 2 > image.shape[1] * 2 / 3:
|
|
@@ -122,5 +137,5 @@ class ClassicalTrackingCamera(ClassicalCamera):
|
|
|
122
137
|
return True
|
|
123
138
|
|
|
124
139
|
def update_training(self) -> bool:
|
|
125
|
-
self.
|
|
140
|
+
self.keyboard.set("mode", OperationMode.NONE)
|
|
126
141
|
return self.select_target()
|
|
@@ -11,34 +11,41 @@ from bluer_ugv.logger import logger
|
|
|
11
11
|
|
|
12
12
|
NAME = module.name(__file__, NAME)
|
|
13
13
|
|
|
14
|
+
DEFAULT_TARGETING_PORT = 8002
|
|
15
|
+
|
|
14
16
|
|
|
15
17
|
def select_target(
|
|
16
18
|
host: str,
|
|
17
19
|
loop: bool = True,
|
|
20
|
+
port: int = DEFAULT_TARGETING_PORT,
|
|
18
21
|
) -> bool:
|
|
19
22
|
logger.info(
|
|
20
|
-
"{}.select_target on {}{}".format(
|
|
23
|
+
"{}.select_target on {} port={}{}".format(
|
|
21
24
|
NAME,
|
|
22
25
|
host,
|
|
26
|
+
port,
|
|
23
27
|
" on a loop." if loop else "",
|
|
24
28
|
)
|
|
25
29
|
)
|
|
26
30
|
|
|
27
31
|
try:
|
|
28
32
|
while loop:
|
|
29
|
-
socket = SocketConnection.listen_on()
|
|
33
|
+
socket = SocketConnection.listen_on(port=port)
|
|
30
34
|
success, image = socket.receive_data(np.ndarray)
|
|
31
35
|
if not success:
|
|
32
36
|
return success
|
|
33
37
|
|
|
34
38
|
success, track_window = Target.select(
|
|
35
39
|
image,
|
|
36
|
-
title=f"select target
|
|
40
|
+
title=f"select the target for {host} port={port}...",
|
|
37
41
|
)
|
|
38
42
|
if not success:
|
|
39
43
|
return success
|
|
40
44
|
|
|
41
|
-
socket = SocketConnection.connect_to(
|
|
45
|
+
socket = SocketConnection.connect_to(
|
|
46
|
+
host,
|
|
47
|
+
port=port,
|
|
48
|
+
)
|
|
42
49
|
if not socket.send_data(track_window):
|
|
43
50
|
return False
|
|
44
51
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bluer_ugv
|
|
3
|
-
Version: 7.
|
|
3
|
+
Version: 7.607.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.607.1`](https://github.com/kamangir/bluer-ugv).
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -108,7 +108,9 @@ bluer_ugv/README/swallow/consts.py
|
|
|
108
108
|
bluer_ugv/README/swallow/items.py
|
|
109
109
|
bluer_ugv/README/swallow/digital/__init__.py
|
|
110
110
|
bluer_ugv/README/swallow/digital/algo/__init__.py
|
|
111
|
+
bluer_ugv/README/swallow/digital/algo/driving.py
|
|
111
112
|
bluer_ugv/README/swallow/digital/algo/navigation.py
|
|
113
|
+
bluer_ugv/README/swallow/digital/algo/tracking.py
|
|
112
114
|
bluer_ugv/README/swallow/digital/algo/yolo.py
|
|
113
115
|
bluer_ugv/README/swallow/digital/design/__init__.py
|
|
114
116
|
bluer_ugv/README/swallow/digital/design/mechanical.py
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
#! /usr/bin/git bash
|
|
2
|
-
|
|
3
|
-
function bluer_ugv_swallow_git_rm_keys() {
|
|
4
|
-
local options=$1
|
|
5
|
-
local do_dryrun=$(bluer_ai_option_int "$options" dryrun 1)
|
|
6
|
-
|
|
7
|
-
if [[ "$abcli_is_rpi" == false ]]; then
|
|
8
|
-
bluer_ai_log_error "only works on rpi."
|
|
9
|
-
return 1
|
|
10
|
-
fi
|
|
11
|
-
|
|
12
|
-
bluer_ai_eval dryrun=$do_dryrun \
|
|
13
|
-
sudo rm -v ~/.ssh/$BLUER_AI_GIT_SSH_KEY_NAME
|
|
14
|
-
|
|
15
|
-
bluer_ai_eval dryrun=$do_dryrun \
|
|
16
|
-
sudo rm -v ~/.ssh/$BLUER_AI_GIT_SSH_KEY_NAME.pub
|
|
17
|
-
|
|
18
|
-
local repo
|
|
19
|
-
for repo in $(bluer_ai_plugins list_of_external --delim space --log 0 --repo_names 1); do
|
|
20
|
-
bluer_ai_eval dryrun=$do_dryrun \
|
|
21
|
-
bluer_ai_git_set_remote \
|
|
22
|
-
$repo_name \
|
|
23
|
-
dryrun=$do_dryrun,https
|
|
24
|
-
[[ $? -ne 0 ]] && return 1
|
|
25
|
-
|
|
26
|
-
git pull
|
|
27
|
-
[[ $? -ne 0 ]] && return 1
|
|
28
|
-
done
|
|
29
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
from bluer_objects.README.items import ImageItems
|
|
2
|
-
|
|
3
|
-
from bluer_ugv.README.consts import algo_docs
|
|
4
|
-
from bluer_ugv.README.swallow.consts import swallow_assets2
|
|
5
|
-
from bluer_ugv.README.swallow.digital.algo import navigation, yolo
|
|
6
|
-
|
|
7
|
-
docs = (
|
|
8
|
-
[
|
|
9
|
-
{
|
|
10
|
-
"path": "../docs/swallow/digital/algo",
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"path": "../docs/swallow/digital/algo/driving.md",
|
|
14
|
-
},
|
|
15
|
-
]
|
|
16
|
-
+ navigation.docs
|
|
17
|
-
+ [
|
|
18
|
-
{
|
|
19
|
-
"path": "../docs/swallow/digital/algo/tracking",
|
|
20
|
-
"items": ImageItems(
|
|
21
|
-
{
|
|
22
|
-
f"{swallow_assets2}/target-selection.png": f"{algo_docs}/socket.md",
|
|
23
|
-
}
|
|
24
|
-
),
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
+ yolo.docs
|
|
28
|
-
)
|
|
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
|
{bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh
RENAMED
|
File without changes
|
{bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh
RENAMED
|
File without changes
|
{bluer_ugv-7.578.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh
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
|