bluer-ugv 7.579.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.
Files changed (230) hide show
  1. {bluer_ugv-7.579.1/bluer_ugv.egg-info → bluer_ugv-7.607.1}/PKG-INFO +2 -2
  2. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/README.md +1 -1
  3. bluer_ugv-7.607.1/bluer_ugv/.abcli/swallow/git/rm_keys.sh +27 -0
  4. bluer_ugv-7.607.1/bluer_ugv/README/swallow/digital/algo/__init__.py +17 -0
  5. bluer_ugv-7.607.1/bluer_ugv/README/swallow/digital/algo/driving.py +5 -0
  6. bluer_ugv-7.607.1/bluer_ugv/README/swallow/digital/algo/tracking.py +41 -0
  7. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/__init__.py +1 -1
  8. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/__main__.py +9 -2
  9. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/debug.py +8 -4
  10. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/generic.py +10 -3
  11. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/tracking.py +18 -3
  12. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/targeting.py +11 -4
  13. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1/bluer_ugv.egg-info}/PKG-INFO +2 -2
  14. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv.egg-info/SOURCES.txt +2 -0
  15. bluer_ugv-7.579.1/bluer_ugv/.abcli/swallow/git/rm_keys.sh +0 -29
  16. bluer_ugv-7.579.1/bluer_ugv/README/swallow/digital/algo/__init__.py +0 -28
  17. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/LICENSE +0 -0
  18. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/MANIFEST.in +0 -0
  19. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/abcli.sh +0 -0
  20. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/actions.sh +0 -0
  21. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/aka.sh +0 -0
  22. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/alias.sh +0 -0
  23. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/bluer_ugv.sh +0 -0
  24. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/combine.sh +0 -0
  25. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/download.sh +0 -0
  26. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/edit.sh +0 -0
  27. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/list.sh +0 -0
  28. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset/upload.sh +0 -0
  29. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/dataset.sh +0 -0
  30. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/debug.sh +0 -0
  31. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/env/cp.sh +0 -0
  32. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/env/list.sh +0 -0
  33. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/env/set.sh +0 -0
  34. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/env.sh +0 -0
  35. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/git.sh +0 -0
  36. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/keyboard/test.sh +0 -0
  37. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/keyboard.sh +0 -0
  38. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/select_target.sh +0 -0
  39. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/session.sh +0 -0
  40. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/ultrasonic/review.sh +0 -0
  41. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/ultrasonic/test.sh +0 -0
  42. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/ultrasonic.sh +0 -0
  43. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/play.sh +0 -0
  44. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist/cat.sh +0 -0
  45. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist/download.sh +0 -0
  46. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist/edit.sh +0 -0
  47. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist/upload.sh +0 -0
  48. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video/playlist.sh +0 -0
  49. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow/video.sh +0 -0
  50. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/swallow.sh +0 -0
  51. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/README.sh +0 -0
  52. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/help.sh +0 -0
  53. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine.sh +0 -0
  54. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh +0 -0
  55. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh +0 -0
  56. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh +0 -0
  57. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_edit.sh +0 -0
  58. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_dataset_list.sh +0 -0
  59. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_video_play.sh +0 -0
  60. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/swallow_video_playlist.sh +0 -0
  61. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/ultrasonic_sensor_review.sh +0 -0
  62. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/tests/version.sh +0 -0
  63. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/.abcli/ugv/git.sh +0 -0
  64. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/__init__.py +0 -0
  65. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/alias.py +0 -0
  66. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/__init__.py +0 -0
  67. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/algo.py +0 -0
  68. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/consts.py +0 -0
  69. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/design.py +0 -0
  70. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/flag.py +0 -0
  71. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/arzhang/items.py +0 -0
  72. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/beast.py +0 -0
  73. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/build.py +0 -0
  74. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/__init__.py +0 -0
  75. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/box.py +0 -0
  76. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/docs.py +0 -0
  77. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/power.py +0 -0
  78. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/schematics.py +0 -0
  79. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/__init__.py +0 -0
  80. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/docs.py +0 -0
  81. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/testing.py +0 -0
  82. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/v1.py +0 -0
  83. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/shield/v2.py +0 -0
  84. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/computer/testing.py +0 -0
  85. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/consts.py +0 -0
  86. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/eagle/__init__.py +0 -0
  87. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/eagle/consts.py +0 -0
  88. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/eagle/items.py +0 -0
  89. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/fire/__init__.py +0 -0
  90. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/fire/consts.py +0 -0
  91. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/fire/items.py +0 -0
  92. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/items.py +0 -0
  93. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/rangin/__init__.py +0 -0
  94. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/rangin/consts.py +0 -0
  95. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/rangin/items.py +0 -0
  96. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ravin/__init__.py +0 -0
  97. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ravin/consts.py +0 -0
  98. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ravin/items.py +0 -0
  99. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/releases.py +0 -0
  100. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/root.py +0 -0
  101. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/shortcuts.py +0 -0
  102. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/__init__.py +0 -0
  103. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/analog.py +0 -0
  104. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/consts.py +0 -0
  105. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/__init__.py +0 -0
  106. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/algo/navigation.py +0 -0
  107. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/algo/yolo.py +0 -0
  108. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/design/__init__.py +0 -0
  109. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/design/mechanical.py +0 -0
  110. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/design/parts.py +0 -0
  111. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py +0 -0
  112. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/swallow/items.py +0 -0
  113. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/__init__.py +0 -0
  114. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/__init__.py +0 -0
  115. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/build.py +0 -0
  116. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/DYI.py +0 -0
  117. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/__init__.py +0 -0
  118. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/classes.py +0 -0
  119. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/concealment.py +0 -0
  120. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/control.py +0 -0
  121. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/cost.py +0 -0
  122. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/db.py +0 -0
  123. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/payload.py +0 -0
  124. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/ps.py +0 -0
  125. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/range.py +0 -0
  126. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/sanction_proof.py +0 -0
  127. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/size.py +0 -0
  128. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/speed.py +0 -0
  129. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/swarm.py +0 -0
  130. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/features/uv_delivery.py +0 -0
  131. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/references/__init__.py +0 -0
  132. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/references/classes.py +0 -0
  133. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/references/db.py +0 -0
  134. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/ugvs/__init__.py +0 -0
  135. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/ugvs/classes.py +0 -0
  136. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/comparison/ugvs/db.py +0 -0
  137. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/db.py +0 -0
  138. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/README/ugvs/docs.py +0 -0
  139. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/__main__.py +0 -0
  140. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/assets/comparison.html +0 -0
  141. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/config.env +0 -0
  142. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/__init__.py +0 -0
  143. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/eagle/__init__.py +0 -0
  144. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/eagle/parts.py +0 -0
  145. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/fire/__init__.py +0 -0
  146. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/fire/parts.py +0 -0
  147. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/rangin/__init__.py +0 -0
  148. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/rangin/parts.py +0 -0
  149. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/__init__.py +0 -0
  150. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/ravin3/__init__.py +0 -0
  151. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/ravin3/parts.py +0 -0
  152. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/ravin4/__init__.py +0 -0
  153. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/designs/ravin/ravin4/parts.py +0 -0
  154. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/env.py +0 -0
  155. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/__init__.py +0 -0
  156. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/__main__.py +0 -0
  157. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/functions.py +0 -0
  158. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/git.py +0 -0
  159. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/__init__.py +0 -0
  160. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/dataset.py +0 -0
  161. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/debug.py +0 -0
  162. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/env.py +0 -0
  163. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/git.py +0 -0
  164. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/keyboard.py +0 -0
  165. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/select_target.py +0 -0
  166. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/ultrasonic_sensor.py +0 -0
  167. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/video/__init__.py +0 -0
  168. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/video/functions.py +0 -0
  169. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/help/swallow/video/playlist.py +0 -0
  170. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/host.py +0 -0
  171. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/logger.py +0 -0
  172. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/sample.env +0 -0
  173. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/__init__.py +0 -0
  174. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/dataset/__init__.py +0 -0
  175. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/dataset/__main__.py +0 -0
  176. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/dataset/combination.py +0 -0
  177. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/__init__.py +0 -0
  178. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/__main__.py +0 -0
  179. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/__init__.py +0 -0
  180. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/__init__.py +0 -0
  181. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/navigation.py +0 -0
  182. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/void.py +0 -0
  183. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/camera/yolo.py +0 -0
  184. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/__init__.py +0 -0
  185. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/__main__.py +0 -0
  186. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/classes.py +0 -0
  187. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/keys.py +0 -0
  188. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/keyboard/testing.py +0 -0
  189. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/leds.py +0 -0
  190. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/mode.py +0 -0
  191. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/__init__.py +0 -0
  192. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/generic.py +0 -0
  193. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/left.py +0 -0
  194. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/rear.py +0 -0
  195. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/right.py +0 -0
  196. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/motor/steering.py +0 -0
  197. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/mousepad.py +0 -0
  198. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/position.py +0 -0
  199. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/push_button.py +0 -0
  200. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/__init__.py +0 -0
  201. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/classes.py +0 -0
  202. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/__init__.py +0 -0
  203. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/__main__.py +0 -0
  204. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/engine.py +0 -0
  205. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/player.py +0 -0
  206. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/screen/video/playlist.py +0 -0
  207. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/session.py +0 -0
  208. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/setpoint/__init__.py +0 -0
  209. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/setpoint/classes.py +0 -0
  210. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/setpoint/steering.py +0 -0
  211. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__init__.py +0 -0
  212. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py +0 -0
  213. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py +0 -0
  214. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py +0 -0
  215. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py +0 -0
  216. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection_list.py +0 -0
  217. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py +0 -0
  218. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py +0 -0
  219. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py +0 -0
  220. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py +0 -0
  221. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py +0 -0
  222. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/swallow/session/functions.py +0 -0
  223. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv/urls.py +0 -0
  224. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv.egg-info/dependency_links.txt +0 -0
  225. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv.egg-info/requires.txt +0 -0
  226. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/bluer_ugv.egg-info/top_level.txt +0 -0
  227. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/pyproject.toml +0 -0
  228. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/requirements.txt +0 -0
  229. {bluer_ugv-7.579.1 → bluer_ugv-7.607.1}/setup.cfg +0 -0
  230. {bluer_ugv-7.579.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.579.1
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
  [![pylint](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-ugv.svg)](https://pypi.org/project/bluer-ugv/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/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.579.1`](https://github.com/kamangir/bluer-ugv).
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
  [![pylint](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-ugv.svg)](https://pypi.org/project/bluer-ugv/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/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.579.1`](https://github.com/kamangir/bluer-ugv).
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,5 @@
1
+ docs = [
2
+ {
3
+ "path": "../docs/swallow/digital/algo/driving.md",
4
+ },
5
+ ]
@@ -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,7 +4,7 @@ ICON = "🐬"
4
4
 
5
5
  DESCRIPTION = f"{ICON} AI x UGV."
6
6
 
7
- VERSION = "7.579.1"
7
+ VERSION = "7.607.1"
8
8
 
9
9
  REPO_NAME = "bluer-ugv"
10
10
 
@@ -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...")
@@ -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(self, data: Any) -> bool:
33
- socket = SocketConnection.connect_to(DEV_HOST)
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
@@ -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
- _, self.track_window, _ = self.tracker.track(
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.keyboardset("mode", OperationMode.NONE)
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 on {host} ...",
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(host)
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.579.1
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
  [![pylint](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-ugv/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-ugv.svg)](https://pypi.org/project/bluer-ugv/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/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.579.1`](https://github.com/kamangir/bluer-ugv).
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