bluer-ugv 7.713.1__tar.gz → 7.780.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.713.1/bluer_ugv.egg-info → bluer_ugv-7.780.1}/PKG-INFO +3 -3
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/README.md +2 -2
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/help.sh +3 -1
- bluer_ugv-7.780.1/bluer_ugv/.abcli/tests/ugv_get.sh +20 -0
- bluer_ugv-7.780.1/bluer_ugv/.abcli/ugv/get.sh +9 -0
- bluer_ugv-7.780.1/bluer_ugv/.abcli/ugv/ssh.sh +21 -0
- bluer_ugv-7.780.1/bluer_ugv/.abcli/ugv/watch.sh +21 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/arzhang/consts.py +5 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/build.py +2 -26
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/computer/box.py +1 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/computer/shield/docs.py +2 -1
- bluer_ugv-7.780.1/bluer_ugv/README/computer/shield/parts.py +22 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/computer/testing.py +2 -0
- bluer_ugv-7.780.1/bluer_ugv/README/docs.py +31 -0
- bluer_ugv-7.713.1/bluer_ugv/README/ravin/__init__.py → bluer_ugv-7.780.1/bluer_ugv/README/ravin/docs.py +4 -3
- bluer_ugv-7.780.1/bluer_ugv/README/ugvs/__main__.py +47 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/db.py +55 -1
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/docs.py +47 -3
- bluer_ugv-7.780.1/bluer_ugv/README/ugvs/get.py +23 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/__init__.py +1 -1
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/designs/rangin/parts.py +9 -7
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/designs/ravin/ravin3/parts.py +1 -1
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/functions.py +6 -0
- bluer_ugv-7.780.1/bluer_ugv/help/get.py +24 -0
- bluer_ugv-7.780.1/bluer_ugv/help/ssh.py +19 -0
- bluer_ugv-7.780.1/bluer_ugv/help/watch.py +19 -0
- bluer_ugv-7.780.1/bluer_ugv/swallow/session/classical/keyboard/__init__.py +0 -0
- bluer_ugv-7.780.1/bluer_ugv/swallow/session/classical/screen/__init__.py +0 -0
- bluer_ugv-7.780.1/bluer_ugv/swallow/session/classical/screen/video/__init__.py +0 -0
- bluer_ugv-7.780.1/bluer_ugv/swallow/session/classical/setpoint/__init__.py +0 -0
- bluer_ugv-7.780.1/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1/bluer_ugv.egg-info}/PKG-INFO +3 -3
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv.egg-info/SOURCES.txt +16 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/LICENSE +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/MANIFEST.in +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/abcli.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/actions.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/aka.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/alias.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/bluer_ugv.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/dataset/combine.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/dataset/download.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/dataset/edit.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/dataset/list.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/dataset/upload.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/dataset.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/debug.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/env/cp.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/env/list.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/env/set.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/env.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/git/rm_keys.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/git.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/keyboard/test.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/keyboard.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/select_target.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/session.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/ultrasonic/review.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/ultrasonic/test.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/ultrasonic.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/video/play.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/video/playlist/cat.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/video/playlist/download.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/video/playlist/edit.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/video/playlist/upload.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/video/playlist.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow/video.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/swallow.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/README.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/swallow_dataset_edit.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/swallow_dataset_list.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/swallow_video_play.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/swallow_video_playlist.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/ultrasonic_sensor_review.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/tests/version.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/.abcli/ugv/git.sh +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/alias.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/README/computer → bluer_ugv-7.780.1/bluer_ugv/README/arzhang}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/arzhang/algo.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/arzhang/design.py +0 -0
- /bluer_ugv-7.713.1/bluer_ugv/README/arzhang/__init__.py → /bluer_ugv-7.780.1/bluer_ugv/README/arzhang/docs.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/arzhang/flag.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/arzhang/items.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/beast.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/README/computer/shield → bluer_ugv-7.780.1/bluer_ugv/README/computer}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/computer/docs.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/computer/power.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/computer/schematics.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/README/ugvs → bluer_ugv-7.780.1/bluer_ugv/README/computer/shield}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/computer/shield/testing.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/computer/shield/v1.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/computer/shield/v2.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/consts.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/README/ugvs/comparison → bluer_ugv-7.780.1/bluer_ugv/README/eagle}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/eagle/consts.py +0 -0
- /bluer_ugv-7.713.1/bluer_ugv/README/eagle/__init__.py → /bluer_ugv-7.780.1/bluer_ugv/README/eagle/docs.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/eagle/items.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/README/ugvs/comparison/features → bluer_ugv-7.780.1/bluer_ugv/README/fire}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/fire/consts.py +0 -0
- /bluer_ugv-7.713.1/bluer_ugv/README/fire/__init__.py → /bluer_ugv-7.780.1/bluer_ugv/README/fire/docs.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/fire/items.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/items.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/README/ugvs/comparison/ugvs → bluer_ugv-7.780.1/bluer_ugv/README/rangin}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/rangin/consts.py +0 -0
- /bluer_ugv-7.713.1/bluer_ugv/README/rangin/__init__.py → /bluer_ugv-7.780.1/bluer_ugv/README/rangin/docs.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/rangin/items.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/rangin/mechanical.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/rangin/parts.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/rangin/power.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/rangin/root.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/rangin/schematics.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/rangin/specs.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/rangin/terraform.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/designs → bluer_ugv-7.780.1/bluer_ugv/README/ravin}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ravin/consts.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ravin/items.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/releases.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/root.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/shortcuts.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/analog.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/consts.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/algo/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/algo/driving.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/algo/navigation.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/algo/tracking.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/algo/yolo.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/design/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/design/mechanical.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/design/parts.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/swallow/items.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/designs/eagle → bluer_ugv-7.780.1/bluer_ugv/README/ugvs}/__init__.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/designs/fire → bluer_ugv-7.780.1/bluer_ugv/README/ugvs/comparison}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/build.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/DYI.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/designs/rangin → bluer_ugv-7.780.1/bluer_ugv/README/ugvs/comparison/features}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/classes.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/concealment.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/control.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/cost.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/db.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/payload.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/ps.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/range.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/sanction_proof.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/size.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/speed.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/swarm.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/features/uv_delivery.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/references/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/references/classes.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/references/db.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/designs/ravin → bluer_ugv-7.780.1/bluer_ugv/README/ugvs/comparison/ugvs}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/ugvs/classes.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/README/ugvs/comparison/ugvs/db.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/__main__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/assets/comparison.html +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/config.env +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/designs/ravin/ravin3 → bluer_ugv-7.780.1/bluer_ugv/designs}/__init__.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/designs/ravin/ravin4 → bluer_ugv-7.780.1/bluer_ugv/designs/eagle}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/designs/eagle/parts.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/help/swallow/video → bluer_ugv-7.780.1/bluer_ugv/designs/fire}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/designs/fire/parts.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/swallow → bluer_ugv-7.780.1/bluer_ugv/designs/rangin}/__init__.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/swallow/dataset → bluer_ugv-7.780.1/bluer_ugv/designs/ravin}/__init__.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/swallow/session → bluer_ugv-7.780.1/bluer_ugv/designs/ravin/ravin3}/__init__.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/swallow/session/classical → bluer_ugv-7.780.1/bluer_ugv/designs/ravin/ravin4}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/designs/ravin/ravin4/parts.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/env.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/__main__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/git.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/dataset.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/debug.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/env.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/git.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/keyboard.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/select_target.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/ultrasonic_sensor.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/swallow/session/classical/keyboard → bluer_ugv-7.780.1/bluer_ugv/help/swallow/video}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/video/functions.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/help/swallow/video/playlist.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/host.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/logger.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/sample.env +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/swallow/session/classical/screen → bluer_ugv-7.780.1/bluer_ugv/swallow}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/__main__.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/swallow/session/classical/screen/video → bluer_ugv-7.780.1/bluer_ugv/swallow/dataset}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/dataset/__main__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/dataset/combination.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/debug.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/swallow/session/classical/setpoint → bluer_ugv-7.780.1/bluer_ugv/swallow/session}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/__main__.py +0 -0
- {bluer_ugv-7.713.1/bluer_ugv/swallow/session/classical/ultrasonic_sensor → bluer_ugv-7.780.1/bluer_ugv/swallow/session/classical}/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/camera/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/camera/generic.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/camera/navigation.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/camera/tracking.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/camera/void.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/camera/yolo.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/keyboard/__main__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/keyboard/classes.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/keyboard/keys.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/keyboard/testing.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/leds.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/mode.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/motor/__init__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/motor/generic.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/motor/left.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/motor/rear.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/motor/right.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/motor/steering.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/mousepad.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/position.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/push_button.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/screen/classes.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/screen/video/__main__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/screen/video/engine.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/screen/video/player.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/screen/video/playlist.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/session.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/setpoint/classes.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/setpoint/steering.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection_list.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/session/functions.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/swallow/targeting.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv/urls.py +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv.egg-info/dependency_links.txt +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv.egg-info/requires.txt +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/bluer_ugv.egg-info/top_level.txt +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/pyproject.toml +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/requirements.txt +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.1}/setup.cfg +0 -0
- {bluer_ugv-7.713.1 → bluer_ugv-7.780.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.780.1
|
|
4
4
|
Summary: 🐬 AI x UGV.
|
|
5
5
|
Home-page: https://github.com/kamangir/bluer-ugv
|
|
6
6
|
Author: Arash Abadpour (Kamangir)
|
|
@@ -48,7 +48,7 @@ pip install bluer_ugv
|
|
|
48
48
|
|
|
49
49
|
| | |
|
|
50
50
|
| --- | --- |
|
|
51
|
-
| [`computer`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow/digital/design/computer) [ [](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow/digital/design/computer) | [`UGVs`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/UGVs) [](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/UGVs) |
|
|
52
52
|
| [`terraform`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow/digital/design/terraform.md) [](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow/digital/design/terraform.md) | [`validations`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/validations) [](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/validations) |
|
|
53
53
|
|
|
54
54
|
## aliases
|
|
@@ -66,7 +66,7 @@ pip install bluer_ugv
|
|
|
66
66
|
|
|
67
67
|
[](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)
|
|
68
68
|
|
|
69
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.
|
|
69
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.780.1`](https://github.com/kamangir/bluer-ugv).
|
|
70
70
|
|
|
71
71
|
|
|
72
72
|
built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
|
|
@@ -18,7 +18,7 @@ pip install bluer_ugv
|
|
|
18
18
|
|
|
19
19
|
| | |
|
|
20
20
|
| --- | --- |
|
|
21
|
-
| [`computer`](./bluer_ugv/docs/swallow/digital/design/computer) [ [](./bluer_ugv/docs/swallow/digital/design/computer) | [`UGVs`](./bluer_ugv/docs/UGVs) [](./bluer_ugv/docs/UGVs) |
|
|
22
22
|
| [`terraform`](./bluer_ugv/docs/swallow/digital/design/terraform.md) [](./bluer_ugv/docs/swallow/digital/design/terraform.md) | [`validations`](./bluer_ugv/docs/validations) [](./bluer_ugv/docs/validations) |
|
|
23
23
|
|
|
24
24
|
## aliases
|
|
@@ -36,5 +36,5 @@ pip install bluer_ugv
|
|
|
36
36
|
|
|
37
37
|
[](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)
|
|
38
38
|
|
|
39
|
-
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.
|
|
39
|
+
built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.780.1`](https://github.com/kamangir/bluer-ugv).
|
|
40
40
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function test_bluer_ugv_get() {
|
|
4
|
+
bluer_ai_assert $(bluer_ugv_get) not-found
|
|
5
|
+
[[ $? -ne 0 ]] && return 1
|
|
6
|
+
|
|
7
|
+
bluer_ai_hr
|
|
8
|
+
|
|
9
|
+
bluer_ai_assert $(bluer_ugv_get arzhang) not-found
|
|
10
|
+
[[ $? -ne 0 ]] && return 1
|
|
11
|
+
|
|
12
|
+
bluer_ai_hr
|
|
13
|
+
|
|
14
|
+
bluer_ai_assert $(bluer_ugv_get arzhang computer.front) not-found
|
|
15
|
+
[[ $? -ne 0 ]] && return 1
|
|
16
|
+
|
|
17
|
+
bluer_ai_hr
|
|
18
|
+
|
|
19
|
+
bluer_ai_assert $(bluer_ugv_get swallow computers.front) swallow2
|
|
20
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function bluer_ugv_ssh() {
|
|
4
|
+
local ugv_name=$1
|
|
5
|
+
if [[ -z "$ugv_name" ]]; then
|
|
6
|
+
bluer_ai_log_error "ugv name not found."
|
|
7
|
+
return 1
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
local node=${2:-front}
|
|
11
|
+
|
|
12
|
+
local computer_name=$(bluer_ugv_get "$ugv_name" computers.$node)
|
|
13
|
+
if [[ "$computer_name" == "not-found" ]]; then
|
|
14
|
+
bluer_ai_log_error "$ugv_name.$node not found."
|
|
15
|
+
return 1
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
bluer_ai_log "ssh $ugv_name.$node ($computer_name)..."
|
|
19
|
+
|
|
20
|
+
bluer_ai_ssh rpi $computer_name
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#! /usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
function bluer_ugv_watch() {
|
|
4
|
+
local ugv_name=$1
|
|
5
|
+
if [[ -z "$ugv_name" ]]; then
|
|
6
|
+
bluer_ai_log_error "ugv name not found."
|
|
7
|
+
return 1
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
local node=${2:-front}
|
|
11
|
+
|
|
12
|
+
local computer_name=$(bluer_ugv_get "$ugv_name" computers.$node)
|
|
13
|
+
if [[ "$computer_name" == "not-found" ]]; then
|
|
14
|
+
bluer_ai_log_error "$ugv_name.$node not found."
|
|
15
|
+
return 1
|
|
16
|
+
fi
|
|
17
|
+
|
|
18
|
+
bluer_ai_log "ssh $ugv_name.$node ($computer_name)..."
|
|
19
|
+
|
|
20
|
+
bluer_ai_log watch rpi $computer_name
|
|
21
|
+
}
|
|
@@ -5,21 +5,8 @@ from bluer_objects import file, README
|
|
|
5
5
|
|
|
6
6
|
from bluer_ugv import NAME, VERSION, ICON, REPO_NAME
|
|
7
7
|
from bluer_ugv.help.functions import help_functions
|
|
8
|
-
from bluer_ugv.README import (
|
|
9
|
-
alias,
|
|
10
|
-
beast,
|
|
11
|
-
eagle,
|
|
12
|
-
fire,
|
|
13
|
-
ravin,
|
|
14
|
-
root,
|
|
15
|
-
arzhang,
|
|
16
|
-
rangin,
|
|
17
|
-
releases,
|
|
18
|
-
swallow,
|
|
19
|
-
)
|
|
20
|
-
from bluer_ugv.README.computer import docs as computer
|
|
21
|
-
from bluer_ugv.README.ugvs import docs as ugvs
|
|
22
8
|
from bluer_ugv.README.ugvs.comparison.build import build as build_comparison
|
|
9
|
+
from bluer_ugv.README.docs import docs
|
|
23
10
|
|
|
24
11
|
|
|
25
12
|
def build() -> bool:
|
|
@@ -40,18 +27,7 @@ def build() -> bool:
|
|
|
40
27
|
),
|
|
41
28
|
macros=readme.get("macros", {}),
|
|
42
29
|
)
|
|
43
|
-
for readme in
|
|
44
|
-
+ alias.docs
|
|
45
|
-
+ arzhang.docs
|
|
46
|
-
+ beast.docs
|
|
47
|
-
+ eagle.docs
|
|
48
|
-
+ fire.docs
|
|
49
|
-
+ rangin.docs
|
|
50
|
-
+ ravin.docs
|
|
51
|
-
+ releases.docs
|
|
52
|
-
+ computer.docs
|
|
53
|
-
+ ugvs.docs
|
|
54
|
-
+ swallow.docs
|
|
30
|
+
for readme in docs
|
|
55
31
|
)
|
|
56
32
|
and build_comparison()
|
|
57
33
|
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from bluer_objects.README.items import ImageItems
|
|
2
2
|
|
|
3
3
|
from bluer_ugv.README.swallow.consts import swallow_assets2, swallow_designs
|
|
4
|
-
from bluer_ugv.README.computer.shield import testing, v1, v2
|
|
4
|
+
from bluer_ugv.README.computer.shield import parts, testing, v1, v2
|
|
5
5
|
|
|
6
6
|
items = ImageItems(
|
|
7
7
|
{
|
|
@@ -24,6 +24,7 @@ docs = (
|
|
|
24
24
|
"items": items,
|
|
25
25
|
},
|
|
26
26
|
]
|
|
27
|
+
+ parts.docs
|
|
27
28
|
+ testing.docs
|
|
28
29
|
+ v1.docs
|
|
29
30
|
+ v2.docs
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from bluer_sbc.README.design import design_doc_parts
|
|
2
|
+
|
|
3
|
+
parts = {
|
|
4
|
+
"470-mF": "",
|
|
5
|
+
"green-terminal": "2 x",
|
|
6
|
+
"LED": "green + red + yellow + 4 x blue",
|
|
7
|
+
"pin-headers": "1 x (female, 2 x 40) -> 2 x 20 + 2 x (male, 1 x 40) -> 4 x 1 + 2 x 20 + 1 x (male, 2 x 40) -> 2 x 2 x 6",
|
|
8
|
+
"Polyfuse": "optional",
|
|
9
|
+
"pushbutton": "",
|
|
10
|
+
"resistor": "7 x 330-470 Ω + 4 x 2.2 kΩ + 4 x 3.3 kΩ",
|
|
11
|
+
"TVS-diode": "",
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
docs = [
|
|
15
|
+
{
|
|
16
|
+
"path": "../docs/swallow/digital/design/computer/shield/parts.md",
|
|
17
|
+
"macros": design_doc_parts(
|
|
18
|
+
dict_of_parts=parts,
|
|
19
|
+
parts_reference="https://github.com/kamangir/bluer-sbc/tree/main/bluer_sbc/docs/parts",
|
|
20
|
+
),
|
|
21
|
+
}
|
|
22
|
+
]
|
|
@@ -9,6 +9,8 @@ items = ImageItems(
|
|
|
9
9
|
f"{swallow_assets2}/20251116_151611.jpg": "",
|
|
10
10
|
f"{swallow_assets2}/20251116_152801.jpg": "",
|
|
11
11
|
f"{swallow_assets2}/20251116_152832_1.gif": "",
|
|
12
|
+
f"{swallow_assets2}/2026-01-25-12-21.jpg": "",
|
|
13
|
+
f"{swallow_assets2}/2026-01-25-12-16.jpg": "",
|
|
12
14
|
}
|
|
13
15
|
)
|
|
14
16
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from bluer_ugv.README.arzhang import docs as arzhang_docs
|
|
2
|
+
from bluer_ugv.README.eagle import docs as eagle_docs
|
|
3
|
+
from bluer_ugv.README.fire import docs as fire_docs
|
|
4
|
+
from bluer_ugv.README.rangin import docs as rangin_docs
|
|
5
|
+
from bluer_ugv.README.ravin import docs as ravin_docs
|
|
6
|
+
from bluer_ugv.README import (
|
|
7
|
+
alias,
|
|
8
|
+
beast,
|
|
9
|
+
root,
|
|
10
|
+
releases,
|
|
11
|
+
swallow,
|
|
12
|
+
)
|
|
13
|
+
from bluer_ugv.README.computer import docs as computer
|
|
14
|
+
from bluer_ugv.README.ugvs import docs as ugvs
|
|
15
|
+
from bluer_ugv.README.validations import docs as validations
|
|
16
|
+
|
|
17
|
+
docs = (
|
|
18
|
+
root.docs
|
|
19
|
+
+ alias.docs
|
|
20
|
+
+ arzhang_docs.docs
|
|
21
|
+
+ beast.docs
|
|
22
|
+
+ eagle_docs.docs
|
|
23
|
+
+ fire_docs.docs
|
|
24
|
+
+ rangin_docs.docs
|
|
25
|
+
+ ravin_docs.docs
|
|
26
|
+
+ releases.docs
|
|
27
|
+
+ computer.docs
|
|
28
|
+
+ ugvs.docs
|
|
29
|
+
+ swallow.docs
|
|
30
|
+
+ validations.docs
|
|
31
|
+
)
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
from bluer_ugv.README.ravin import
|
|
1
|
+
from bluer_ugv.README.ravin.ravin3 import docs
|
|
2
2
|
from bluer_ugv.README.ravin.items import items
|
|
3
|
+
from bluer_ugv.README.ravin.ravin4 import docs
|
|
3
4
|
|
|
4
5
|
docs = (
|
|
5
6
|
[
|
|
@@ -8,6 +9,6 @@ docs = (
|
|
|
8
9
|
"path": "../docs/ravin",
|
|
9
10
|
},
|
|
10
11
|
]
|
|
11
|
-
+
|
|
12
|
-
+
|
|
12
|
+
+ docs.docs
|
|
13
|
+
+ docs.docs
|
|
13
14
|
)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
|
|
3
|
+
from blueness import module
|
|
4
|
+
from blueness.argparse.generic import sys_exit
|
|
5
|
+
|
|
6
|
+
from bluer_ugv import NAME
|
|
7
|
+
from bluer_ugv.README.ugvs.get import get
|
|
8
|
+
from bluer_ugv.logger import logger
|
|
9
|
+
|
|
10
|
+
NAME = module.name(__file__, NAME)
|
|
11
|
+
|
|
12
|
+
parser = argparse.ArgumentParser(NAME)
|
|
13
|
+
parser.add_argument(
|
|
14
|
+
"task",
|
|
15
|
+
type=str,
|
|
16
|
+
help="get",
|
|
17
|
+
)
|
|
18
|
+
parser.add_argument(
|
|
19
|
+
"--ugv_name",
|
|
20
|
+
type=str,
|
|
21
|
+
)
|
|
22
|
+
parser.add_argument(
|
|
23
|
+
"--what",
|
|
24
|
+
type=str,
|
|
25
|
+
)
|
|
26
|
+
parser.add_argument(
|
|
27
|
+
"--include_comments",
|
|
28
|
+
type=int,
|
|
29
|
+
default=0,
|
|
30
|
+
help="0 | 1",
|
|
31
|
+
)
|
|
32
|
+
args = parser.parse_args()
|
|
33
|
+
|
|
34
|
+
success = False
|
|
35
|
+
if args.task == "get":
|
|
36
|
+
success = True
|
|
37
|
+
print(
|
|
38
|
+
get(
|
|
39
|
+
ugv_name=args.ugv_name,
|
|
40
|
+
what=args.what,
|
|
41
|
+
include_comments=args.include_comments == 1,
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
else:
|
|
45
|
+
success = None
|
|
46
|
+
|
|
47
|
+
sys_exit(logger, NAME, args.task, success)
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
from bluer_ugv.README.consts import assets_url
|
|
2
2
|
from bluer_ugv.README.swallow.consts import swallow_assets2
|
|
3
|
-
from bluer_ugv.README.arzhang.consts import
|
|
3
|
+
from bluer_ugv.README.arzhang.consts import (
|
|
4
|
+
arzhang_assets,
|
|
5
|
+
arzhang_assets2,
|
|
6
|
+
arzhang2_assets2,
|
|
7
|
+
)
|
|
4
8
|
from bluer_ugv.README.rangin.consts import rangin_assets2, rangin_mechanical_design
|
|
5
9
|
|
|
6
10
|
dict_of_ugvs = {
|
|
@@ -12,18 +16,39 @@ dict_of_ugvs = {
|
|
|
12
16
|
f"{swallow_assets2}/20250913_203635~2_1.gif",
|
|
13
17
|
f"{swallow_assets2}/20251216_205015.jpg",
|
|
14
18
|
],
|
|
19
|
+
"tagline": "the first one.",
|
|
20
|
+
"class": "swallow",
|
|
21
|
+
"computers": {
|
|
22
|
+
"front": "swallow2 (`swallow` was used for Ubuntu experiments)",
|
|
23
|
+
},
|
|
15
24
|
},
|
|
16
25
|
"arzhang": {
|
|
17
26
|
"order": 2,
|
|
18
27
|
"items": [
|
|
19
28
|
f"{arzhang_assets2}/20251209_111322.jpg",
|
|
20
29
|
],
|
|
30
|
+
"tagline": "the first [arzhang](../arzhang).",
|
|
31
|
+
"class": "arzhang",
|
|
32
|
+
"computers": {
|
|
33
|
+
"front": "sparrow",
|
|
34
|
+
},
|
|
35
|
+
"comments": [
|
|
36
|
+
"disassembled 🛑",
|
|
37
|
+
],
|
|
21
38
|
},
|
|
22
39
|
"arzhang2": {
|
|
23
40
|
"order": 3,
|
|
24
41
|
"items": [
|
|
25
42
|
f"{arzhang_assets2}/20251210_154513.jpg",
|
|
43
|
+
f"{arzhang2_assets2}/20260108_175635.jpg",
|
|
44
|
+
f"{arzhang2_assets2}/20260109_133216.jpg",
|
|
26
45
|
],
|
|
46
|
+
"tagline": "an [arzhang](../arzhang) with updated body design.",
|
|
47
|
+
"class": "arzhang",
|
|
48
|
+
"computers": {
|
|
49
|
+
"front": "sparrow2",
|
|
50
|
+
"back": "sparrow3-back",
|
|
51
|
+
},
|
|
27
52
|
},
|
|
28
53
|
"arzhang3": {
|
|
29
54
|
"order": 4,
|
|
@@ -41,6 +66,15 @@ dict_of_ugvs = {
|
|
|
41
66
|
f"{arzhang_assets2}/20251210_154654.jpg",
|
|
42
67
|
]
|
|
43
68
|
),
|
|
69
|
+
"tagline": "the first [arzhang](../arzhang) with two computers.",
|
|
70
|
+
"class": "arzhang",
|
|
71
|
+
"computers": {
|
|
72
|
+
"front": "arzhang3-front",
|
|
73
|
+
"back": "sparrow3-back",
|
|
74
|
+
},
|
|
75
|
+
"comments": [
|
|
76
|
+
"-> [rangin](./rangin.md) 🛑",
|
|
77
|
+
],
|
|
44
78
|
},
|
|
45
79
|
"rangin": {
|
|
46
80
|
"order": 5,
|
|
@@ -68,6 +102,18 @@ dict_of_ugvs = {
|
|
|
68
102
|
f"{rangin_assets2}/20251231_111815.jpg",
|
|
69
103
|
f"{rangin_assets2}/20251231_111923.jpg",
|
|
70
104
|
f"{rangin_assets2}/20251231_112447.jpg",
|
|
105
|
+
f"{rangin_assets2}/2026-01-26-d1.jpg",
|
|
106
|
+
f"{rangin_assets2}/2026-01-26-d2.jpg",
|
|
107
|
+
f"{rangin_assets2}/2026-01-26-d3.jpg",
|
|
108
|
+
],
|
|
109
|
+
"tagline": "an ad robot.",
|
|
110
|
+
"class": "rangin",
|
|
111
|
+
"computers": {
|
|
112
|
+
"front": "arzhang3-front",
|
|
113
|
+
"top": "rangin-top2",
|
|
114
|
+
},
|
|
115
|
+
"comments": [
|
|
116
|
+
"built on [arzhang3](./arzhang3.md).",
|
|
71
117
|
],
|
|
72
118
|
},
|
|
73
119
|
"arzhang4": {
|
|
@@ -78,5 +124,13 @@ dict_of_ugvs = {
|
|
|
78
124
|
volume=2,
|
|
79
125
|
),
|
|
80
126
|
],
|
|
127
|
+
"tagline": "the first [arzhang](../arzhang) with [external motors](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/parts/DC-gearboxed-motor-12V-120RPM.md).",
|
|
128
|
+
"class": [
|
|
129
|
+
"arzhang",
|
|
130
|
+
"with external motors.",
|
|
131
|
+
],
|
|
132
|
+
"comments": [
|
|
133
|
+
"build is ongoing. 🔥",
|
|
134
|
+
],
|
|
81
135
|
},
|
|
82
136
|
}
|
|
@@ -7,8 +7,52 @@ docs = [
|
|
|
7
7
|
{
|
|
8
8
|
"path": f"../docs/UGVs/{ugv_name}.md",
|
|
9
9
|
"cols": info.get("cols", 3),
|
|
10
|
-
"items": ImageItems(
|
|
10
|
+
"items": ImageItems(
|
|
11
|
+
{
|
|
12
|
+
item: ""
|
|
13
|
+
for item in info.get(
|
|
14
|
+
"items",
|
|
15
|
+
[],
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
),
|
|
11
19
|
"macros": {
|
|
20
|
+
"class:::": "[{class_name}](../{class_name}){info}".format(
|
|
21
|
+
class_name=(
|
|
22
|
+
info["class"][0]
|
|
23
|
+
if isinstance(info["class"], list)
|
|
24
|
+
else info["class"]
|
|
25
|
+
),
|
|
26
|
+
info=(
|
|
27
|
+
" ".join([""] + info["class"][1:])
|
|
28
|
+
if isinstance(info["class"], list)
|
|
29
|
+
else ""
|
|
30
|
+
),
|
|
31
|
+
),
|
|
32
|
+
"computers:::": (
|
|
33
|
+
(
|
|
34
|
+
[
|
|
35
|
+
"- computer(s):",
|
|
36
|
+
]
|
|
37
|
+
+ [
|
|
38
|
+
" - {}: `{}`".format(
|
|
39
|
+
location,
|
|
40
|
+
computer_name,
|
|
41
|
+
)
|
|
42
|
+
for location, computer_name in info["computers"].items()
|
|
43
|
+
]
|
|
44
|
+
)
|
|
45
|
+
if "computers" in info
|
|
46
|
+
else []
|
|
47
|
+
),
|
|
48
|
+
"comments:::": [
|
|
49
|
+
f"- {comment}"
|
|
50
|
+
for comment in info.get(
|
|
51
|
+
"comments",
|
|
52
|
+
[],
|
|
53
|
+
)
|
|
54
|
+
],
|
|
55
|
+
"tagline:::": info.get("tagline", ""),
|
|
12
56
|
"validations:::": [
|
|
13
57
|
(lambda thing: f"validations: {thing}" if thing else "")(
|
|
14
58
|
", ".join(
|
|
@@ -24,7 +68,7 @@ docs = [
|
|
|
24
68
|
)
|
|
25
69
|
)
|
|
26
70
|
),
|
|
27
|
-
]
|
|
71
|
+
],
|
|
28
72
|
},
|
|
29
73
|
}
|
|
30
74
|
for ugv_name, info in dict_of_ugvs.items()
|
|
@@ -50,7 +94,7 @@ docs = [
|
|
|
50
94
|
]
|
|
51
95
|
),
|
|
52
96
|
"macros": {
|
|
53
|
-
"list": [
|
|
97
|
+
"list:::": [
|
|
54
98
|
f"- [{ugv_name}](./{ugv_name}.md)"
|
|
55
99
|
for ugv_name in sorted(
|
|
56
100
|
dict_of_ugvs.keys(),
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from bluer_ugv.README.ugvs.db import dict_of_ugvs
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def get(
|
|
5
|
+
ugv_name: str,
|
|
6
|
+
what: str,
|
|
7
|
+
include_comments: bool = False,
|
|
8
|
+
) -> str:
|
|
9
|
+
list_of_what = what.split(".")
|
|
10
|
+
info = dict_of_ugvs.get(ugv_name, {})
|
|
11
|
+
for what_ in list_of_what:
|
|
12
|
+
info = info.get(what_, {})
|
|
13
|
+
|
|
14
|
+
if isinstance(info, dict) and not info:
|
|
15
|
+
info = ""
|
|
16
|
+
|
|
17
|
+
if not info:
|
|
18
|
+
info = "not-found"
|
|
19
|
+
|
|
20
|
+
if not include_comments and info:
|
|
21
|
+
info = info.split(" ")[0]
|
|
22
|
+
|
|
23
|
+
return str(info)
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
dict_of_parts = {
|
|
2
|
-
"
|
|
2
|
+
"ac-volt-meter": "220 V, 5 A",
|
|
3
3
|
"dc-circuit-breaker": "40 A",
|
|
4
|
-
"TV": "2 x 40 inch",
|
|
5
|
-
"power-inverter": "continuous output ≥ 400-500 W, surge output ≥ 800 W",
|
|
6
|
-
"power-adapter": "12V DC, 10 A",
|
|
7
|
-
"TV-bracket": "2 x",
|
|
8
4
|
"dsn-vc288": "with 50 A shunt",
|
|
5
|
+
"hdmi-cable": "",
|
|
9
6
|
"mcb": "2 - 3 A @ 220 V AC",
|
|
10
|
-
"
|
|
11
|
-
"
|
|
7
|
+
"micro-hdmi-adapter": "",
|
|
8
|
+
"power-adapter": "12V DC, 10 A",
|
|
9
|
+
"power-inverter": "continuous output ≥ 400-500 W, surge output ≥ 800 W",
|
|
12
10
|
"relay": "12 V DC, 25 A",
|
|
11
|
+
"safety-fuse": "30 mA trip",
|
|
12
|
+
"SLA-Battery": "12 V, 42 Ah, 185 mm x 150 mm x 175 mm",
|
|
13
|
+
"TV-bracket": "2 x",
|
|
14
|
+
"TV": "2 x 40 inch",
|
|
13
15
|
}
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
from bluer_ai.help.generic import help_functions as generic_help_functions
|
|
2
2
|
|
|
3
3
|
from bluer_ugv import ALIAS
|
|
4
|
+
from bluer_ugv.help.get import help_get
|
|
4
5
|
from bluer_ugv.help.git import help_git
|
|
6
|
+
from bluer_ugv.help.ssh import help_ssh
|
|
5
7
|
from bluer_ugv.help.swallow import help_functions as help_swallow
|
|
8
|
+
from bluer_ugv.help.watch import help_watch
|
|
6
9
|
|
|
7
10
|
|
|
8
11
|
help_functions = generic_help_functions(plugin_name=ALIAS)
|
|
9
12
|
|
|
10
13
|
help_functions.update(
|
|
11
14
|
{
|
|
15
|
+
"get": help_get,
|
|
12
16
|
"git": help_git,
|
|
17
|
+
"ssh": help_ssh,
|
|
13
18
|
"swallow": help_swallow,
|
|
19
|
+
"watch": help_watch,
|
|
14
20
|
}
|
|
15
21
|
)
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from bluer_options.terminal import show_usage
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def help_get(
|
|
7
|
+
tokens: List[str],
|
|
8
|
+
mono: bool,
|
|
9
|
+
) -> str:
|
|
10
|
+
args = [
|
|
11
|
+
"[--include_comments 1]",
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
return show_usage(
|
|
15
|
+
[
|
|
16
|
+
"@ugv",
|
|
17
|
+
"get",
|
|
18
|
+
"<ugv-name>",
|
|
19
|
+
"computers.back | computers.front | computers.top | <what>",
|
|
20
|
+
]
|
|
21
|
+
+ args,
|
|
22
|
+
"get ugv info.",
|
|
23
|
+
mono=mono,
|
|
24
|
+
)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import List
|
|
2
|
+
|
|
3
|
+
from bluer_options.terminal import show_usage
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def help_ssh(
|
|
7
|
+
tokens: List[str],
|
|
8
|
+
mono: bool,
|
|
9
|
+
) -> str:
|
|
10
|
+
return show_usage(
|
|
11
|
+
[
|
|
12
|
+
"@ugv",
|
|
13
|
+
"ssh",
|
|
14
|
+
"<ugv-name>",
|
|
15
|
+
"[back | front | top | <node>]",
|
|
16
|
+
],
|
|
17
|
+
"ssh to <ugv-name>.<node>",
|
|
18
|
+
mono=mono,
|
|
19
|
+
)
|