bluer-ugv 7.163.1__tar.gz → 7.176.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 (158) hide show
  1. {bluer_ugv-7.163.1/bluer_ugv.egg-info → bluer_ugv-7.176.1}/PKG-INFO +2 -2
  2. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/README.md +1 -1
  3. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/arzhang/items.py +1 -0
  4. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/__init__.py +1 -1
  5. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/config.env +1 -0
  6. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/env.py +5 -0
  7. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/camera/yolo.py +11 -5
  8. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/keyboard.py +1 -5
  9. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/setpoint/classes.py +47 -2
  10. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1/bluer_ugv.egg-info}/PKG-INFO +2 -2
  11. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/LICENSE +0 -0
  12. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/MANIFEST.in +0 -0
  13. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/abcli.sh +0 -0
  14. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/actions.sh +0 -0
  15. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/aka.sh +0 -0
  16. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/alias.sh +0 -0
  17. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/bluer_ugv.sh +0 -0
  18. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/dataset/combine.sh +0 -0
  19. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/dataset/download.sh +0 -0
  20. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/dataset/edit.sh +0 -0
  21. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/dataset/list.sh +0 -0
  22. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/dataset/upload.sh +0 -0
  23. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/dataset.sh +0 -0
  24. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/debug.sh +0 -0
  25. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/env/cp.sh +0 -0
  26. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/env/list.sh +0 -0
  27. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/env/set.sh +0 -0
  28. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/env.sh +0 -0
  29. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/select_target.sh +0 -0
  30. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/session.sh +0 -0
  31. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/ultrasonic/review.sh +0 -0
  32. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/ultrasonic/test.sh +0 -0
  33. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow/ultrasonic.sh +0 -0
  34. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/swallow.sh +0 -0
  35. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/README.sh +0 -0
  36. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/help.sh +0 -0
  37. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine.sh +0 -0
  38. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh +0 -0
  39. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh +0 -0
  40. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh +0 -0
  41. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/swallow_dataset_edit.sh +0 -0
  42. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/swallow_dataset_list.sh +0 -0
  43. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/ultrasonic_sensor_review.sh +0 -0
  44. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/tests/version.sh +0 -0
  45. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/.abcli/ugv/git.sh +0 -0
  46. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/UGVs.py +0 -0
  47. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/__init__.py +0 -0
  48. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/alias.py +0 -0
  49. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/arzhang/__init__.py +0 -0
  50. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/arzhang/algo.py +0 -0
  51. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/arzhang/consts.py +0 -0
  52. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/arzhang/design.py +0 -0
  53. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/arzhang/flag.py +0 -0
  54. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/beast.py +0 -0
  55. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/build.py +0 -0
  56. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/consts.py +0 -0
  57. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/eagle/__init__.py +0 -0
  58. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/eagle/consts.py +0 -0
  59. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/eagle/items.py +0 -0
  60. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/fire/__init__.py +0 -0
  61. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/fire/consts.py +0 -0
  62. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/fire/items.py +0 -0
  63. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/items.py +0 -0
  64. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/rangin/__init__.py +0 -0
  65. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/rangin/consts.py +0 -0
  66. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/rangin/items.py +0 -0
  67. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/ravin/__init__.py +0 -0
  68. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/ravin/consts.py +0 -0
  69. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/ravin/items.py +0 -0
  70. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/root.py +0 -0
  71. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/shield.py +0 -0
  72. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/shortcuts.py +0 -0
  73. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/__init__.py +0 -0
  74. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/analog.py +0 -0
  75. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/consts.py +0 -0
  76. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/digital/__init__.py +0 -0
  77. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/digital/algo/__init__.py +0 -0
  78. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/digital/algo/navigation.py +0 -0
  79. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/digital/algo/yolo.py +0 -0
  80. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/digital/design/__init__.py +0 -0
  81. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/digital/design/mechanical.py +0 -0
  82. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py +0 -0
  83. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/README/swallow/items.py +0 -0
  84. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/__main__.py +0 -0
  85. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/__init__.py +0 -0
  86. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/arzhang/__init__.py +0 -0
  87. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/arzhang/parts.py +0 -0
  88. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/eagle/__init__.py +0 -0
  89. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/eagle/parts.py +0 -0
  90. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/fire/__init__.py +0 -0
  91. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/fire/parts.py +0 -0
  92. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/rangin/__init__.py +0 -0
  93. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/rangin/parts.py +0 -0
  94. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/ravin/__init__.py +0 -0
  95. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/ravin/ravin3/__init__.py +0 -0
  96. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/ravin/ravin3/parts.py +0 -0
  97. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/ravin/ravin4/__init__.py +0 -0
  98. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/designs/ravin/ravin4/parts.py +0 -0
  99. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/__init__.py +0 -0
  100. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/__main__.py +0 -0
  101. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/functions.py +0 -0
  102. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/git.py +0 -0
  103. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/swallow/__init__.py +0 -0
  104. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/swallow/dataset.py +0 -0
  105. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/swallow/debug.py +0 -0
  106. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/swallow/env.py +0 -0
  107. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/swallow/select_target.py +0 -0
  108. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/help/swallow/ultrasonic_sensor.py +0 -0
  109. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/host.py +0 -0
  110. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/logger.py +0 -0
  111. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/sample.env +0 -0
  112. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/__init__.py +0 -0
  113. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/__main__.py +0 -0
  114. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/dataset/__init__.py +0 -0
  115. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/dataset/__main__.py +0 -0
  116. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/dataset/combination.py +0 -0
  117. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/debug.py +0 -0
  118. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/__init__.py +0 -0
  119. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/__main__.py +0 -0
  120. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/__init__.py +0 -0
  121. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/camera/__init__.py +0 -0
  122. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/camera/generic.py +0 -0
  123. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/camera/navigation.py +0 -0
  124. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/camera/tracking.py +0 -0
  125. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/leds.py +0 -0
  126. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/mode.py +0 -0
  127. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/motor/__init__.py +0 -0
  128. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/motor/generic.py +0 -0
  129. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/motor/left.py +0 -0
  130. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/motor/rear.py +0 -0
  131. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/motor/right.py +0 -0
  132. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/motor/steering.py +0 -0
  133. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/mousepad.py +0 -0
  134. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/push_button.py +0 -0
  135. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/session.py +0 -0
  136. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/setpoint/__init__.py +0 -0
  137. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/setpoint/steering.py +0 -0
  138. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__init__.py +0 -0
  139. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py +0 -0
  140. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py +0 -0
  141. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py +0 -0
  142. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py +0 -0
  143. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py +0 -0
  144. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py +0 -0
  145. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py +0 -0
  146. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py +0 -0
  147. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py +0 -0
  148. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/session/functions.py +0 -0
  149. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/swallow/targeting.py +0 -0
  150. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv/urls.py +0 -0
  151. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv.egg-info/SOURCES.txt +0 -0
  152. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv.egg-info/dependency_links.txt +0 -0
  153. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv.egg-info/requires.txt +0 -0
  154. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/bluer_ugv.egg-info/top_level.txt +0 -0
  155. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/pyproject.toml +0 -0
  156. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/requirements.txt +0 -0
  157. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/setup.cfg +0 -0
  158. {bluer_ugv-7.163.1 → bluer_ugv-7.176.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.163.1
3
+ Version: 7.176.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.163.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.176.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.163.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.176.1`](https://github.com/kamangir/bluer-ugv).
39
39
 
@@ -24,5 +24,6 @@ items = ImageItems(
24
24
  f"{arzhang_assets2}/20251005_112250.jpg": "",
25
25
  f"{arzhang_assets2}/20251005_112332.jpg": "",
26
26
  f"{arzhang_assets2}/20251005_112530.jpg": "",
27
+ f"{arzhang_assets2}/20251018_213230.jpg": "",
27
28
  }
28
29
  )
@@ -4,7 +4,7 @@ ICON = "🐬"
4
4
 
5
5
  DESCRIPTION = f"{ICON} AI x UGV."
6
6
 
7
- VERSION = "7.163.1"
7
+ VERSION = "7.176.1"
8
8
 
9
9
  REPO_NAME = "bluer-ugv"
10
10
 
@@ -4,6 +4,7 @@ BLUER_UGV_CAMERA_TRAINING_PERIOD=3.0
4
4
  BLUER_UGV_CAMERA_ACTION_PERIOD=0.5
5
5
 
6
6
  BLUER_UGV_SWALLOW_STEERING_SETPOINT=50
7
+ BLUER_UGV_SWALLOW_STEERING_YOLO_EXPIRY=0.1
7
8
 
8
9
  BLUER_UGV_MOUSEPAD_ENABLED=0
9
10
 
@@ -23,6 +23,11 @@ BLUER_UGV_SWALLOW_STEERING_SETPOINT = get_env(
23
23
  50,
24
24
  )
25
25
 
26
+ BLUER_UGV_SWALLOW_STEERING_YOLO_EXPIRY = get_env(
27
+ "BLUER_UGV_SWALLOW_STEERING_YOLO_EXPIRY",
28
+ 0.1,
29
+ )
30
+
26
31
  BLUER_UGV_MOUSEPAD_ENABLED = get_env(
27
32
  "BLUER_UGV_MOUSEPAD_ENABLED",
28
33
  0,
@@ -48,15 +48,18 @@ class ClassicalYoloCamera(ClassicalCamera):
48
48
 
49
49
  assert super().initialize()
50
50
 
51
- assert storage.download(
51
+ if not storage.download(
52
52
  env.BLUER_UGV_SWALLOW_YOLO_MODEL,
53
53
  policy=DownloadPolicy.DOESNT_EXIST,
54
- )
54
+ ):
55
+ logger.error("cannot download the model.")
56
+
55
57
  success, self.predictor = YoloPredictor.load(
56
58
  object_name=env.BLUER_UGV_SWALLOW_YOLO_MODEL,
57
59
  image_size=BLUER_SBC_CAMERA_WIDTH,
58
60
  )
59
- assert success
61
+ if not success:
62
+ logger.error("cannot create the predictor.")
60
63
 
61
64
  self.running = True
62
65
  self.thread = threading.Thread(target=self.loop, daemon=True)
@@ -78,9 +81,10 @@ class ClassicalYoloCamera(ClassicalCamera):
78
81
 
79
82
  super().cleanup()
80
83
 
81
- assert self.dataset.save(
84
+ if not self.dataset.save(
82
85
  verbose=True,
83
- )
86
+ ):
87
+ logger.error("cannot save the dataset.")
84
88
 
85
89
  if self.dataset.empty:
86
90
  return
@@ -156,12 +160,14 @@ class ClassicalYoloCamera(ClassicalCamera):
156
160
  what="steering",
157
161
  value=env.BLUER_UGV_SWALLOW_STEERING_SETPOINT,
158
162
  log=True,
163
+ steering_expires_in=env.BLUER_UGV_SWALLOW_STEERING_YOLO_EXPIRY,
159
164
  )
160
165
  else:
161
166
  self.setpoint.put(
162
167
  what="steering",
163
168
  value=-env.BLUER_UGV_SWALLOW_STEERING_SETPOINT,
164
169
  log=True,
170
+ steering_expires_in=env.BLUER_UGV_SWALLOW_STEERING_YOLO_EXPIRY,
165
171
  )
166
172
 
167
173
  return True
@@ -100,11 +100,7 @@ class ClassicalKeyboard:
100
100
  value=-env.BLUER_UGV_SWALLOW_STEERING_SETPOINT,
101
101
  )
102
102
  else:
103
- self.setpoint.put(
104
- what="steering",
105
- value=0,
106
- log=False,
107
- )
103
+ self.setpoint.check_steering_expiry()
108
104
 
109
105
  # debug mode
110
106
  if keyboard.is_pressed("b"):
@@ -1,5 +1,8 @@
1
1
  import threading
2
2
  from typing import Union, Dict
3
+ import time
4
+
5
+ from bluer_options import string
3
6
 
4
7
  from bluer_ugv.swallow.session.classical.leds import ClassicalLeds
5
8
  from bluer_ugv.swallow.session.classical.setpoint.steering import (
@@ -15,6 +18,9 @@ class ClassicalSetPoint:
15
18
  ):
16
19
  self.speed = 0
17
20
  self.steering = 0
21
+
22
+ self.steering_expiry = time.time()
23
+
18
24
  self.started = False
19
25
 
20
26
  self.leds = leds
@@ -51,17 +57,49 @@ class ClassicalSetPoint:
51
57
  logger.error(f"{self.__class__.__name__}.get: {what} not found.")
52
58
  return 0
53
59
 
60
+ def check_steering_expiry(
61
+ self,
62
+ log: bool = True,
63
+ ):
64
+ with self._lock:
65
+ if self.steering == 0:
66
+ return
67
+
68
+ if self.steering_expiry > time.time():
69
+ if log:
70
+ logger.info(
71
+ "setpoint will expire in {}.".format(
72
+ string.pretty_duration(
73
+ self.steering_expiry - time.time(),
74
+ largest=True,
75
+ short=True,
76
+ include_ms=True,
77
+ )
78
+ )
79
+ )
80
+ return
81
+
82
+ if log:
83
+ logger.info("setpoint expired.")
84
+
85
+ self.put(
86
+ what="steering",
87
+ value=0,
88
+ )
89
+
54
90
  def put(
55
91
  self,
56
92
  value: Union[int, bool, Dict[str, Union[int, bool]]],
57
93
  what: str = "all",
58
- log: bool = False,
94
+ log: bool = True,
95
+ steering_expires_in: float = 0,
59
96
  ):
60
97
  with self._lock:
61
98
  if what == "all":
62
99
  self.speed = min(100, max(-100, int(value["speed"])))
63
100
  self.started = bool(value["started"])
64
101
  self.steering = min(100, max(-100, int(value["steering"])))
102
+ self.steering_expiry = time.time() + steering_expires_in
65
103
  return
66
104
 
67
105
  if what == "speed":
@@ -88,11 +126,18 @@ class ClassicalSetPoint:
88
126
 
89
127
  if what == "steering":
90
128
  self.steering = min(100, max(-100, int(value)))
129
+ self.steering_expiry = time.time() + steering_expires_in
91
130
  if log:
92
131
  logger.info(
93
- "{}.put: steering={}".format(
132
+ "{}.put: steering={}, expires in {}".format(
94
133
  self.__class__.__name__,
95
134
  self.steering,
135
+ string.pretty_duration(
136
+ steering_expires_in,
137
+ largest=True,
138
+ short=True,
139
+ include_ms=True,
140
+ ),
96
141
  )
97
142
  )
98
143
  return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.163.1
3
+ Version: 7.176.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.163.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.176.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