bluer-ugv 7.201.1__tar.gz → 7.211.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 (165) hide show
  1. {bluer_ugv-7.201.1/bluer_ugv.egg-info → bluer_ugv-7.211.1}/PKG-INFO +3 -3
  2. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/README.md +2 -2
  3. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/items.py +1 -1
  4. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/rangin/items.py +2 -1
  5. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/__init__.py +1 -1
  6. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/debug.py +24 -6
  7. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/camera/generic.py +2 -2
  8. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/camera/yolo.py +8 -1
  9. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/keyboard/classes.py +1 -1
  10. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/keyboard/keys.py +9 -6
  11. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/targeting.py +3 -3
  12. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1/bluer_ugv.egg-info}/PKG-INFO +3 -3
  13. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/LICENSE +0 -0
  14. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/MANIFEST.in +0 -0
  15. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/abcli.sh +0 -0
  16. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/actions.sh +0 -0
  17. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/aka.sh +0 -0
  18. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/alias.sh +0 -0
  19. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/bluer_ugv.sh +0 -0
  20. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/dataset/combine.sh +0 -0
  21. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/dataset/download.sh +0 -0
  22. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/dataset/edit.sh +0 -0
  23. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/dataset/list.sh +0 -0
  24. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/dataset/upload.sh +0 -0
  25. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/dataset.sh +0 -0
  26. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/debug.sh +0 -0
  27. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/env/cp.sh +0 -0
  28. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/env/list.sh +0 -0
  29. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/env/set.sh +0 -0
  30. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/env.sh +0 -0
  31. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/keyboard/test.sh +0 -0
  32. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/keyboard.sh +0 -0
  33. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/select_target.sh +0 -0
  34. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/session.sh +0 -0
  35. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/ultrasonic/review.sh +0 -0
  36. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/ultrasonic/test.sh +0 -0
  37. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow/ultrasonic.sh +0 -0
  38. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/swallow.sh +0 -0
  39. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/README.sh +0 -0
  40. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/help.sh +0 -0
  41. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine.sh +0 -0
  42. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh +0 -0
  43. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh +0 -0
  44. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh +0 -0
  45. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/swallow_dataset_edit.sh +0 -0
  46. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/swallow_dataset_list.sh +0 -0
  47. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/ultrasonic_sensor_review.sh +0 -0
  48. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/tests/version.sh +0 -0
  49. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/.abcli/ugv/git.sh +0 -0
  50. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/UGVs.py +0 -0
  51. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/__init__.py +0 -0
  52. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/alias.py +0 -0
  53. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/arzhang/__init__.py +0 -0
  54. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/arzhang/algo.py +0 -0
  55. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/arzhang/consts.py +0 -0
  56. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/arzhang/design.py +0 -0
  57. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/arzhang/flag.py +0 -0
  58. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/arzhang/items.py +0 -0
  59. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/beast.py +0 -0
  60. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/build.py +0 -0
  61. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/consts.py +0 -0
  62. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/eagle/__init__.py +0 -0
  63. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/eagle/consts.py +0 -0
  64. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/eagle/items.py +0 -0
  65. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/fire/__init__.py +0 -0
  66. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/fire/consts.py +0 -0
  67. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/fire/items.py +0 -0
  68. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/rangin/__init__.py +0 -0
  69. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/rangin/consts.py +0 -0
  70. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/ravin/__init__.py +0 -0
  71. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/ravin/consts.py +0 -0
  72. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/ravin/items.py +0 -0
  73. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/root.py +0 -0
  74. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/shield.py +0 -0
  75. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/shortcuts.py +0 -0
  76. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/__init__.py +0 -0
  77. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/analog.py +0 -0
  78. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/consts.py +0 -0
  79. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/digital/__init__.py +0 -0
  80. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/digital/algo/__init__.py +0 -0
  81. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/digital/algo/navigation.py +0 -0
  82. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/digital/algo/yolo.py +0 -0
  83. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/digital/design/__init__.py +0 -0
  84. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/digital/design/mechanical.py +0 -0
  85. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py +0 -0
  86. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/README/swallow/items.py +0 -0
  87. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/__main__.py +0 -0
  88. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/config.env +0 -0
  89. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/__init__.py +0 -0
  90. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/arzhang/__init__.py +0 -0
  91. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/arzhang/parts.py +0 -0
  92. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/eagle/__init__.py +0 -0
  93. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/eagle/parts.py +0 -0
  94. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/fire/__init__.py +0 -0
  95. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/fire/parts.py +0 -0
  96. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/rangin/__init__.py +0 -0
  97. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/rangin/parts.py +0 -0
  98. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/ravin/__init__.py +0 -0
  99. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/ravin/ravin3/__init__.py +0 -0
  100. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/ravin/ravin3/parts.py +0 -0
  101. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/ravin/ravin4/__init__.py +0 -0
  102. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/designs/ravin/ravin4/parts.py +0 -0
  103. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/env.py +0 -0
  104. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/__init__.py +0 -0
  105. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/__main__.py +0 -0
  106. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/functions.py +0 -0
  107. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/git.py +0 -0
  108. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/swallow/__init__.py +0 -0
  109. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/swallow/dataset.py +0 -0
  110. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/swallow/debug.py +0 -0
  111. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/swallow/env.py +0 -0
  112. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/swallow/keyboard.py +0 -0
  113. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/swallow/select_target.py +0 -0
  114. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/help/swallow/ultrasonic_sensor.py +0 -0
  115. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/host.py +0 -0
  116. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/logger.py +0 -0
  117. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/sample.env +0 -0
  118. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/__init__.py +0 -0
  119. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/__main__.py +0 -0
  120. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/dataset/__init__.py +0 -0
  121. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/dataset/__main__.py +0 -0
  122. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/dataset/combination.py +0 -0
  123. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/__init__.py +0 -0
  124. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/__main__.py +0 -0
  125. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/__init__.py +0 -0
  126. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/camera/__init__.py +0 -0
  127. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/camera/navigation.py +0 -0
  128. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/camera/tracking.py +0 -0
  129. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/keyboard/__init__.py +0 -0
  130. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/keyboard/__main__.py +0 -0
  131. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/keyboard/testing.py +0 -0
  132. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/leds.py +0 -0
  133. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/mode.py +0 -0
  134. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/motor/__init__.py +0 -0
  135. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/motor/generic.py +0 -0
  136. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/motor/left.py +0 -0
  137. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/motor/rear.py +0 -0
  138. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/motor/right.py +0 -0
  139. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/motor/steering.py +0 -0
  140. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/mousepad.py +0 -0
  141. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/push_button.py +0 -0
  142. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/session.py +0 -0
  143. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/setpoint/__init__.py +0 -0
  144. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/setpoint/classes.py +0 -0
  145. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/setpoint/steering.py +0 -0
  146. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__init__.py +0 -0
  147. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py +0 -0
  148. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py +0 -0
  149. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py +0 -0
  150. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py +0 -0
  151. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py +0 -0
  152. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py +0 -0
  153. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py +0 -0
  154. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py +0 -0
  155. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py +0 -0
  156. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/swallow/session/functions.py +0 -0
  157. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv/urls.py +0 -0
  158. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv.egg-info/SOURCES.txt +0 -0
  159. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv.egg-info/dependency_links.txt +0 -0
  160. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv.egg-info/requires.txt +0 -0
  161. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/bluer_ugv.egg-info/top_level.txt +0 -0
  162. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/pyproject.toml +0 -0
  163. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/requirements.txt +0 -0
  164. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/setup.cfg +0 -0
  165. {bluer_ugv-7.201.1 → bluer_ugv-7.211.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.201.1
3
+ Version: 7.211.1
4
4
  Summary: 🐬 AI x UGV.
5
5
  Home-page: https://github.com/kamangir/bluer-ugv
6
6
  Author: Arash Abadpour (Kamangir)
@@ -39,7 +39,7 @@ pip install bluer_ugv
39
39
 
40
40
  | | | |
41
41
  | --- | --- | --- |
42
- | [`swallow`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow) [![image](https://github.com/kamangir/assets2/raw/main/swallow/20250913_203635~2_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow) based on power wheels. | [`arzhang`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/arzhang) [![image](https://github.com/kamangir/assets2/raw/main/arzhang/VID-20250905-WA0014_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/arzhang) [swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow)'s little sister. | [`rangin`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/rangin) [![image](https://github.com/kamangir/assets2/raw/main/rangin/rangin.png)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/rangin) [swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow)'s ad robot. |
42
+ | [`swallow`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow) [![image](https://github.com/kamangir/assets2/raw/main/swallow/20250913_203635~2_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow) based on power wheels. | [`arzhang`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/arzhang) [![image](https://github.com/kamangir/assets2/raw/main/arzhang/VID-20250905-WA0014_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/arzhang) [swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow)'s little sister. | [`rangin`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/rangin) [![image](https://github.com/kamangir/assets2/raw/main/rangin/concepts/11.png)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/rangin) [swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow)'s ad robot. |
43
43
  | [`ravin`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/ravin) [![image](https://github.com/kamangir/assets2/raw/main/ravin/20250723_095155~2_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/ravin) remote control car kit for teenagers. | [`eagle`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/eagle) [![image](https://github.com/kamangir/assets2/raw/main/eagle/file_0000000007986246b45343b0c06325dd.png?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/eagle) a remotely controlled ballon. | [`fire`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/fire) [![image](https://github.com/kamangir/assets/raw/main/bluer-ugv/fire.png?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/fire) based on a used car. |
44
44
  | [`beast`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/beast) [![image](https://github.com/waveshareteam/ugv_rpi/raw/main/media/UGV-Rover-details-23.jpg)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/beast) based on [UGV Beast PI ROS2](https://www.waveshare.com/wiki/UGV_Beast_PI_ROS2). | | |
45
45
 
@@ -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.201.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.211.1`](https://github.com/kamangir/bluer-ugv).
68
68
 
69
69
 
70
70
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -10,7 +10,7 @@ pip install bluer_ugv
10
10
 
11
11
  | | | |
12
12
  | --- | --- | --- |
13
- | [`swallow`](./bluer_ugv/docs/swallow) [![image](https://github.com/kamangir/assets2/raw/main/swallow/20250913_203635~2_1.gif?raw=true)](./bluer_ugv/docs/swallow) based on power wheels. | [`arzhang`](./bluer_ugv/docs/arzhang) [![image](https://github.com/kamangir/assets2/raw/main/arzhang/VID-20250905-WA0014_1.gif?raw=true)](./bluer_ugv/docs/arzhang) [swallow](./bluer_ugv/docs/swallow)'s little sister. | [`rangin`](./bluer_ugv/docs/rangin) [![image](https://github.com/kamangir/assets2/raw/main/rangin/rangin.png)](./bluer_ugv/docs/rangin) [swallow](./bluer_ugv/docs/swallow)'s ad robot. |
13
+ | [`swallow`](./bluer_ugv/docs/swallow) [![image](https://github.com/kamangir/assets2/raw/main/swallow/20250913_203635~2_1.gif?raw=true)](./bluer_ugv/docs/swallow) based on power wheels. | [`arzhang`](./bluer_ugv/docs/arzhang) [![image](https://github.com/kamangir/assets2/raw/main/arzhang/VID-20250905-WA0014_1.gif?raw=true)](./bluer_ugv/docs/arzhang) [swallow](./bluer_ugv/docs/swallow)'s little sister. | [`rangin`](./bluer_ugv/docs/rangin) [![image](https://github.com/kamangir/assets2/raw/main/rangin/concepts/11.png)](./bluer_ugv/docs/rangin) [swallow](./bluer_ugv/docs/swallow)'s ad robot. |
14
14
  | [`ravin`](./bluer_ugv/docs/ravin) [![image](https://github.com/kamangir/assets2/raw/main/ravin/20250723_095155~2_1.gif?raw=true)](./bluer_ugv/docs/ravin) remote control car kit for teenagers. | [`eagle`](./bluer_ugv/docs/eagle) [![image](https://github.com/kamangir/assets2/raw/main/eagle/file_0000000007986246b45343b0c06325dd.png?raw=true)](./bluer_ugv/docs/eagle) a remotely controlled ballon. | [`fire`](./bluer_ugv/docs/fire) [![image](https://github.com/kamangir/assets/raw/main/bluer-ugv/fire.png?raw=true)](./bluer_ugv/docs/fire) based on a used car. |
15
15
  | [`beast`](./bluer_ugv/docs/beast) [![image](https://github.com/waveshareteam/ugv_rpi/raw/main/media/UGV-Rover-details-23.jpg)](./bluer_ugv/docs/beast) based on [UGV Beast PI ROS2](https://www.waveshare.com/wiki/UGV_Beast_PI_ROS2). | | |
16
16
 
@@ -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.201.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.211.1`](https://github.com/kamangir/bluer-ugv).
39
39
 
@@ -24,7 +24,7 @@ items = README.Items(
24
24
  },
25
25
  {
26
26
  "name": "rangin",
27
- "marquee": f"{rangin_assets2}/rangin.png",
27
+ "marquee": f"{rangin_assets2}/concepts/11.png",
28
28
  "description": "[swallow](./bluer_ugv/docs/swallow)'s ad robot.",
29
29
  "url": "./bluer_ugv/docs/rangin",
30
30
  },
@@ -5,6 +5,7 @@ from bluer_ugv.README.rangin.consts import rangin_assets2
5
5
 
6
6
  items = ImageItems(
7
7
  {
8
- f"{rangin_assets2}/rangin.png": "",
8
+ f"{rangin_assets2}/concepts/11.png": "",
9
+ f"{rangin_assets2}/concepts/12.png": "",
9
10
  }
10
11
  )
@@ -4,7 +4,7 @@ ICON = "🐬"
4
4
 
5
5
  DESCRIPTION = f"{ICON} AI x UGV."
6
6
 
7
- VERSION = "7.201.1"
7
+ VERSION = "7.211.1"
8
8
 
9
9
  REPO_NAME = "bluer-ugv"
10
10
 
@@ -1,14 +1,15 @@
1
1
  from blueness import module
2
2
  import numpy as np
3
3
  import cv2
4
- from typing import List
4
+ from typing import List, Dict
5
5
 
6
6
  from bluer_options import string
7
7
  from bluer_objects import file
8
8
  from bluer_objects import objects
9
+ from bluer_objects.logger.stitch import stitch_images
9
10
  from bluer_objects.graphics.gif import generate_animated_gif
10
- from bluer_algo.socket.classes import SocketComm
11
- from bluer_algo.tracker.classes.target import Target
11
+ from bluer_algo.socket.connection import SocketConnection
12
+ from bluer_algo.socket.message import SocketMessage
12
13
 
13
14
  from bluer_ugv import NAME
14
15
  from bluer_ugv.logger import logger
@@ -31,14 +32,17 @@ def debug(
31
32
  )
32
33
  )
33
34
 
34
- socket = SocketComm.listen_on()
35
+ socket = SocketConnection.listen_on()
35
36
 
36
37
  title = "debug..."
37
38
 
38
39
  cv2.namedWindow(title)
39
40
  logger.info("Ctrl+C to exit...")
40
41
 
41
- image = np.zeros((480, 640, 3), np.uint8)
42
+ blank_image = np.zeros((480, 640, 3), np.uint8)
43
+
44
+ image = blank_image.copy()
45
+ dict_of_images: Dict[str, np.ndarray] = {}
42
46
 
43
47
  list_of_images: List[str] = []
44
48
  try:
@@ -46,10 +50,24 @@ def debug(
46
50
  cv2.imshow(title, np.flip(image, axis=2))
47
51
  cv2.waitKey(1)
48
52
 
49
- success, image = socket.receive_data(np.ndarray)
53
+ success, message = socket.receive_data(SocketMessage)
50
54
  if not success:
51
55
  break
52
56
 
57
+ assert isinstance(message, SocketMessage)
58
+
59
+ logger.info(f"message from {message.hostname}.")
60
+
61
+ if "image" not in message.payload:
62
+ logger.warning("no image.")
63
+ continue
64
+
65
+ dict_of_images[message.hostname] = message.payload["image"]
66
+
67
+ image = stitch_images(
68
+ [image for _, image in sorted(dict_of_images.items())]
69
+ )
70
+
53
71
  if save_images:
54
72
  filename = objects.path_of(
55
73
  filename="{}.png".format(string.timestamp()),
@@ -1,6 +1,6 @@
1
1
  from typing import Any
2
2
 
3
- from bluer_algo.socket.classes import SocketComm, DEV_HOST
3
+ from bluer_algo.socket.connection import SocketConnection, DEV_HOST
4
4
  from bluer_sbc.imager.camera import instance as camera
5
5
  from bluer_sbc.env import BLUER_SBC_ENV
6
6
 
@@ -33,7 +33,7 @@ class ClassicalCamera:
33
33
  camera.close(log=True)
34
34
 
35
35
  def send_debug_data(self, data: Any) -> bool:
36
- socket = SocketComm.connect_to(DEV_HOST)
36
+ socket = SocketConnection.connect_to(DEV_HOST)
37
37
  return socket.send_data(data)
38
38
 
39
39
  # multi-threaded support
@@ -10,6 +10,7 @@ from bluer_sbc.imager.camera import instance as camera
10
10
  from bluer_sbc.env import BLUER_SBC_CAMERA_WIDTH
11
11
  from bluer_algo.yolo.dataset.classes import YoloDataset
12
12
  from bluer_algo.yolo.model.predictor import YoloPredictor
13
+ from bluer_algo.socket.message import SocketMessage
13
14
 
14
15
  from bluer_ugv import env
15
16
  from bluer_ugv.swallow.session.classical.camera.generic import ClassicalCamera
@@ -145,7 +146,13 @@ class ClassicalYoloCamera(ClassicalCamera):
145
146
  return success
146
147
 
147
148
  if debug_mode:
148
- if not self.send_debug_data(metadata["annotated_image"]):
149
+ if not self.send_debug_data(
150
+ SocketMessage(
151
+ {
152
+ "image": metadata["annotated_image"],
153
+ }
154
+ )
155
+ ):
149
156
  logger.warning("failed to send debug data.")
150
157
 
151
158
  if not metadata["detections"]:
@@ -3,7 +3,7 @@ import threading
3
3
  from typing import Any, Dict
4
4
 
5
5
  from bluer_sbc.session.functions import reply_to_bash
6
- from bluer_algo.socket.classes import DEV_HOST
6
+ from bluer_algo.socket.connection import DEV_HOST
7
7
 
8
8
  from bluer_ugv.swallow.session.classical.keyboard.keys import ControlKeys
9
9
  from bluer_ugv.swallow.session.classical.leds import ClassicalLeds
@@ -9,14 +9,17 @@ class ControlKeys:
9
9
  def __init__(
10
10
  self,
11
11
  is_numpad: bool = BLUER_SBC_SWALLOW_HAS_FULL_KEYBOARD == 0,
12
+ log: bool = True,
12
13
  ):
13
14
  self.is_numpad = is_numpad
14
- logger.info(
15
- "{}: {}".format(
16
- self.__class__.__name__,
17
- "numpad" if self.is_numpad else "full",
15
+
16
+ if log:
17
+ logger.info(
18
+ "{}: {}".format(
19
+ self.__class__.__name__,
20
+ "numpad" if self.is_numpad else "full",
21
+ )
18
22
  )
19
- )
20
23
 
21
24
  self._keys: Dict[str, Tuple[str, str]] = {
22
25
  "ultrasonic off": ("n", "-"),
@@ -36,7 +39,7 @@ class ControlKeys:
36
39
 
37
40
  @staticmethod
38
41
  def as_table():
39
- keys = ControlKeys()
42
+ keys = ControlKeys(log=False)
40
43
  table = keys._keys.copy() # pylint: disable=protected-access
41
44
 
42
45
  for is_numpad in [False, True]:
@@ -2,7 +2,7 @@ from blueness import module
2
2
  import numpy as np
3
3
 
4
4
  from bluer_options.terminal import hr
5
- from bluer_algo.socket.classes import SocketComm
5
+ from bluer_algo.socket.connection import SocketConnection
6
6
  from bluer_algo.tracker.classes.target import Target
7
7
 
8
8
  from bluer_ugv import NAME
@@ -26,7 +26,7 @@ def select_target(
26
26
 
27
27
  try:
28
28
  while loop:
29
- socket = SocketComm.listen_on()
29
+ socket = SocketConnection.listen_on()
30
30
  success, image = socket.receive_data(np.ndarray)
31
31
  if not success:
32
32
  return success
@@ -38,7 +38,7 @@ def select_target(
38
38
  if not success:
39
39
  return success
40
40
 
41
- socket = SocketComm.connect_to(host)
41
+ socket = SocketConnection.connect_to(host)
42
42
  if not socket.send_data(track_window):
43
43
  return False
44
44
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.201.1
3
+ Version: 7.211.1
4
4
  Summary: 🐬 AI x UGV.
5
5
  Home-page: https://github.com/kamangir/bluer-ugv
6
6
  Author: Arash Abadpour (Kamangir)
@@ -39,7 +39,7 @@ pip install bluer_ugv
39
39
 
40
40
  | | | |
41
41
  | --- | --- | --- |
42
- | [`swallow`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow) [![image](https://github.com/kamangir/assets2/raw/main/swallow/20250913_203635~2_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow) based on power wheels. | [`arzhang`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/arzhang) [![image](https://github.com/kamangir/assets2/raw/main/arzhang/VID-20250905-WA0014_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/arzhang) [swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow)'s little sister. | [`rangin`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/rangin) [![image](https://github.com/kamangir/assets2/raw/main/rangin/rangin.png)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/rangin) [swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow)'s ad robot. |
42
+ | [`swallow`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow) [![image](https://github.com/kamangir/assets2/raw/main/swallow/20250913_203635~2_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow) based on power wheels. | [`arzhang`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/arzhang) [![image](https://github.com/kamangir/assets2/raw/main/arzhang/VID-20250905-WA0014_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/arzhang) [swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow)'s little sister. | [`rangin`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/rangin) [![image](https://github.com/kamangir/assets2/raw/main/rangin/concepts/11.png)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/rangin) [swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/swallow)'s ad robot. |
43
43
  | [`ravin`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/ravin) [![image](https://github.com/kamangir/assets2/raw/main/ravin/20250723_095155~2_1.gif?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/ravin) remote control car kit for teenagers. | [`eagle`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/eagle) [![image](https://github.com/kamangir/assets2/raw/main/eagle/file_0000000007986246b45343b0c06325dd.png?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/eagle) a remotely controlled ballon. | [`fire`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/fire) [![image](https://github.com/kamangir/assets/raw/main/bluer-ugv/fire.png?raw=true)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/fire) based on a used car. |
44
44
  | [`beast`](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/beast) [![image](https://github.com/waveshareteam/ugv_rpi/raw/main/media/UGV-Rover-details-23.jpg)](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/beast) based on [UGV Beast PI ROS2](https://www.waveshare.com/wiki/UGV_Beast_PI_ROS2). | | |
45
45
 
@@ -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.201.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.211.1`](https://github.com/kamangir/bluer-ugv).
68
68
 
69
69
 
70
70
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
File without changes
File without changes
File without changes
File without changes
File without changes