bluer-ugv 7.616.1__tar.gz → 7.645.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 (228) hide show
  1. {bluer_ugv-7.616.1/bluer_ugv.egg-info → bluer_ugv-7.645.1}/PKG-INFO +2 -2
  2. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/README.md +1 -1
  3. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/build.py +26 -5
  4. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/ps.py +1 -1
  5. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/range.py +1 -3
  6. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/size.py +1 -1
  7. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/ugvs/classes.py +21 -4
  8. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/ugvs/db.py +46 -5
  9. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/__init__.py +1 -1
  10. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1/bluer_ugv.egg-info}/PKG-INFO +2 -2
  11. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/LICENSE +0 -0
  12. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/MANIFEST.in +0 -0
  13. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/abcli.sh +0 -0
  14. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/actions.sh +0 -0
  15. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/aka.sh +0 -0
  16. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/alias.sh +0 -0
  17. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/bluer_ugv.sh +0 -0
  18. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/combine.sh +0 -0
  19. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/download.sh +0 -0
  20. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/edit.sh +0 -0
  21. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/list.sh +0 -0
  22. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset/upload.sh +0 -0
  23. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/dataset.sh +0 -0
  24. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/debug.sh +0 -0
  25. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/env/cp.sh +0 -0
  26. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/env/list.sh +0 -0
  27. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/env/set.sh +0 -0
  28. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/env.sh +0 -0
  29. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/git/rm_keys.sh +0 -0
  30. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/git.sh +0 -0
  31. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/keyboard/test.sh +0 -0
  32. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/keyboard.sh +0 -0
  33. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/select_target.sh +0 -0
  34. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/session.sh +0 -0
  35. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/ultrasonic/review.sh +0 -0
  36. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/ultrasonic/test.sh +0 -0
  37. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/ultrasonic.sh +0 -0
  38. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/play.sh +0 -0
  39. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist/cat.sh +0 -0
  40. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist/download.sh +0 -0
  41. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist/edit.sh +0 -0
  42. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist/upload.sh +0 -0
  43. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video/playlist.sh +0 -0
  44. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow/video.sh +0 -0
  45. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/swallow.sh +0 -0
  46. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/README.sh +0 -0
  47. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/help.sh +0 -0
  48. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine.sh +0 -0
  49. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh +0 -0
  50. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh +0 -0
  51. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh +0 -0
  52. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_edit.sh +0 -0
  53. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_dataset_list.sh +0 -0
  54. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_video_play.sh +0 -0
  55. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/swallow_video_playlist.sh +0 -0
  56. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/ultrasonic_sensor_review.sh +0 -0
  57. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/tests/version.sh +0 -0
  58. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/.abcli/ugv/git.sh +0 -0
  59. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/__init__.py +0 -0
  60. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/alias.py +0 -0
  61. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/__init__.py +0 -0
  62. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/algo.py +0 -0
  63. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/consts.py +0 -0
  64. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/design.py +0 -0
  65. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/flag.py +0 -0
  66. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/arzhang/items.py +0 -0
  67. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/beast.py +0 -0
  68. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/build.py +0 -0
  69. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/__init__.py +0 -0
  70. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/box.py +0 -0
  71. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/docs.py +0 -0
  72. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/power.py +0 -0
  73. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/schematics.py +0 -0
  74. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/__init__.py +0 -0
  75. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/docs.py +0 -0
  76. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/testing.py +0 -0
  77. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/v1.py +0 -0
  78. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/shield/v2.py +0 -0
  79. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/computer/testing.py +0 -0
  80. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/consts.py +0 -0
  81. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/eagle/__init__.py +0 -0
  82. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/eagle/consts.py +0 -0
  83. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/eagle/items.py +0 -0
  84. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/fire/__init__.py +0 -0
  85. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/fire/consts.py +0 -0
  86. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/fire/items.py +0 -0
  87. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/items.py +0 -0
  88. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/rangin/__init__.py +0 -0
  89. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/rangin/consts.py +0 -0
  90. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/rangin/items.py +0 -0
  91. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ravin/__init__.py +0 -0
  92. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ravin/consts.py +0 -0
  93. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ravin/items.py +0 -0
  94. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/releases.py +0 -0
  95. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/root.py +0 -0
  96. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/shortcuts.py +0 -0
  97. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/__init__.py +0 -0
  98. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/analog.py +0 -0
  99. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/consts.py +0 -0
  100. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/__init__.py +0 -0
  101. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/__init__.py +0 -0
  102. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/driving.py +0 -0
  103. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/navigation.py +0 -0
  104. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/tracking.py +0 -0
  105. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/algo/yolo.py +0 -0
  106. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/design/__init__.py +0 -0
  107. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/design/mechanical.py +0 -0
  108. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/design/parts.py +0 -0
  109. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py +0 -0
  110. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/swallow/items.py +0 -0
  111. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/__init__.py +0 -0
  112. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/__init__.py +0 -0
  113. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/DYI.py +0 -0
  114. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/__init__.py +0 -0
  115. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/classes.py +0 -0
  116. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/concealment.py +0 -0
  117. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/control.py +0 -0
  118. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/cost.py +0 -0
  119. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/db.py +8 -8
  120. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/payload.py +0 -0
  121. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/sanction_proof.py +0 -0
  122. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/speed.py +0 -0
  123. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/swarm.py +0 -0
  124. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/features/uv_delivery.py +0 -0
  125. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/references/__init__.py +0 -0
  126. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/references/classes.py +0 -0
  127. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/references/db.py +0 -0
  128. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/comparison/ugvs/__init__.py +0 -0
  129. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/db.py +0 -0
  130. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/README/ugvs/docs.py +0 -0
  131. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/__main__.py +0 -0
  132. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/assets/comparison.html +0 -0
  133. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/config.env +0 -0
  134. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/__init__.py +0 -0
  135. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/eagle/__init__.py +0 -0
  136. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/eagle/parts.py +0 -0
  137. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/fire/__init__.py +0 -0
  138. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/fire/parts.py +0 -0
  139. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/rangin/__init__.py +0 -0
  140. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/rangin/parts.py +0 -0
  141. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/__init__.py +0 -0
  142. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/ravin3/__init__.py +0 -0
  143. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/ravin3/parts.py +0 -0
  144. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/ravin4/__init__.py +0 -0
  145. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/designs/ravin/ravin4/parts.py +0 -0
  146. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/env.py +0 -0
  147. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/__init__.py +0 -0
  148. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/__main__.py +0 -0
  149. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/functions.py +0 -0
  150. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/git.py +0 -0
  151. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/__init__.py +0 -0
  152. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/dataset.py +0 -0
  153. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/debug.py +0 -0
  154. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/env.py +0 -0
  155. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/git.py +0 -0
  156. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/keyboard.py +0 -0
  157. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/select_target.py +0 -0
  158. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/ultrasonic_sensor.py +0 -0
  159. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/video/__init__.py +0 -0
  160. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/video/functions.py +0 -0
  161. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/help/swallow/video/playlist.py +0 -0
  162. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/host.py +0 -0
  163. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/logger.py +0 -0
  164. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/sample.env +0 -0
  165. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/__init__.py +0 -0
  166. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/__main__.py +0 -0
  167. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/dataset/__init__.py +0 -0
  168. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/dataset/__main__.py +0 -0
  169. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/dataset/combination.py +0 -0
  170. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/debug.py +0 -0
  171. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/__init__.py +0 -0
  172. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/__main__.py +0 -0
  173. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/__init__.py +0 -0
  174. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/__init__.py +0 -0
  175. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/generic.py +0 -0
  176. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/navigation.py +0 -0
  177. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/tracking.py +0 -0
  178. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/void.py +0 -0
  179. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/camera/yolo.py +0 -0
  180. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/__init__.py +0 -0
  181. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/__main__.py +0 -0
  182. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/classes.py +0 -0
  183. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/keys.py +0 -0
  184. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/keyboard/testing.py +0 -0
  185. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/leds.py +0 -0
  186. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/mode.py +0 -0
  187. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/__init__.py +0 -0
  188. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/generic.py +0 -0
  189. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/left.py +0 -0
  190. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/rear.py +0 -0
  191. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/right.py +0 -0
  192. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/motor/steering.py +0 -0
  193. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/mousepad.py +0 -0
  194. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/position.py +0 -0
  195. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/push_button.py +0 -0
  196. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/__init__.py +0 -0
  197. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/classes.py +0 -0
  198. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/__init__.py +0 -0
  199. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/__main__.py +0 -0
  200. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/engine.py +0 -0
  201. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/player.py +0 -0
  202. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/screen/video/playlist.py +0 -0
  203. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/session.py +0 -0
  204. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/setpoint/__init__.py +0 -0
  205. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/setpoint/classes.py +0 -0
  206. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/setpoint/steering.py +0 -0
  207. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__init__.py +0 -0
  208. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py +0 -0
  209. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py +0 -0
  210. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py +0 -0
  211. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py +0 -0
  212. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection_list.py +0 -0
  213. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py +0 -0
  214. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py +0 -0
  215. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py +0 -0
  216. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py +0 -0
  217. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py +0 -0
  218. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/session/functions.py +0 -0
  219. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/swallow/targeting.py +0 -0
  220. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv/urls.py +0 -0
  221. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv.egg-info/SOURCES.txt +0 -0
  222. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv.egg-info/dependency_links.txt +0 -0
  223. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv.egg-info/requires.txt +0 -0
  224. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/bluer_ugv.egg-info/top_level.txt +0 -0
  225. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/pyproject.toml +0 -0
  226. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/requirements.txt +0 -0
  227. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/setup.cfg +0 -0
  228. {bluer_ugv-7.616.1 → bluer_ugv-7.645.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.616.1
3
+ Version: 7.645.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.616.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.645.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.616.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.645.1`](https://github.com/kamangir/bluer-ugv).
39
39
 
@@ -3,7 +3,8 @@ from typing import List, Union
3
3
  from functools import reduce
4
4
 
5
5
  from blueness import module
6
- from bluer_objects import file
6
+ from bluer_objects import file, objects
7
+ from bluer_objects.README.consts import assets_url
7
8
 
8
9
  from bluer_ugv import NAME
9
10
  from bluer_ugv.README.ugvs.comparison.ugvs.db import list_of_ugvs
@@ -13,6 +14,8 @@ from bluer_ugv.logger import logger
13
14
 
14
15
  NAME = module.name(__file__, NAME)
15
16
 
17
+ OBJECT_NAME = "bluer-ugv-comparison-v1"
18
+
16
19
 
17
20
  def build(
18
21
  log: bool = True,
@@ -46,8 +49,9 @@ def build(
46
49
  + row_of(
47
50
  [
48
51
  "رديف",
52
+ "تصویر",
49
53
  "نام محصول مشابه",
50
- "مشابهت و تفاوت ها محصول شما با آنها ",
54
+ "مشابهت و تفاوت های محصول ما با آنها ",
51
55
  ],
52
56
  header=True,
53
57
  )
@@ -57,6 +61,23 @@ def build(
57
61
  row_of(
58
62
  [
59
63
  str(index + 1),
64
+ (
65
+ '<img src="{}" alt="{}" style="width: 200pt;"/>'.format(
66
+ assets_url(
67
+ suffix=f"{OBJECT_NAME}/{ugv.image}",
68
+ volume=2,
69
+ ),
70
+ ugv.name,
71
+ )
72
+ if ugv.image
73
+ else ""
74
+ )
75
+ + " ".join(
76
+ [
77
+ f'<p style="color:blue;">🔹 {line}</p>'
78
+ for line in ugv.comments
79
+ ]
80
+ ),
60
81
  ugv.description,
61
82
  reference_ugv.compare(ugv),
62
83
  ]
@@ -97,9 +118,9 @@ def build(
97
118
  )
98
119
 
99
120
  return file.save_text(
100
- file.absolute(
101
- "../../../docs/UGVs/comparison.html",
102
- reference_path=file.path(__file__),
121
+ objects.path_of(
122
+ filename="comparison.html",
123
+ object_name=OBJECT_NAME,
103
124
  ),
104
125
  contents,
105
126
  log=log,
@@ -3,6 +3,6 @@ from bluer_ugv.README.ugvs.comparison.features.classes import Feature
3
3
 
4
4
  class PSFeature(Feature):
5
5
  nickname = "ps"
6
- long_name = "سامانه‌ی مکان‌یابی محلی"
6
+ long_name = "سامانه‌ی مکان‌یابی و ارتباطی محلی"
7
7
 
8
8
  comparison_as_str = {}
@@ -2,8 +2,6 @@ from typing import Any
2
2
 
3
3
  from bluer_ugv.README.ugvs.comparison.features.classes import Feature
4
4
 
5
- unlimited_range: int = 999
6
-
7
5
 
8
6
  class RangeFeature(Feature):
9
7
  nickname = "range"
@@ -11,4 +9,4 @@ class RangeFeature(Feature):
11
9
 
12
10
  @property
13
11
  def score_as_str_(self) -> str:
14
- return f"{self.score} کیلومتر" if self.score != unlimited_range else "نامحدود"
12
+ return f"{self.score} کیلومتر"
@@ -8,7 +8,7 @@ from bluer_ugv.README.ugvs.comparison.features.classes import (
8
8
 
9
9
 
10
10
  class UGV_Size(Feature_Enum):
11
- SMALL = 100 # < 5 kg
11
+ SMALL = 100 # < 20 kg
12
12
  MEDIUM = 10 # < 50 kg
13
13
  LARGE = 1
14
14
 
@@ -15,25 +15,35 @@ class UGV:
15
15
  name: str,
16
16
  features: Dict[str, Any],
17
17
  deficiencies: List[str] = [],
18
+ image: str = "",
19
+ comments: List[str] = [],
18
20
  ):
19
21
  self.nickname = nickname
20
22
  self.name = name
21
23
 
22
24
  self.feature_list: FeatureList = FeatureList()
23
25
 
24
- for feature_name, feature_score in features.items():
26
+ for feature_name in features:
25
27
  if feature_name not in dict_of_feature_classes:
26
28
  logger.error(f"{feature_name}: feature not found.")
27
29
  assert False
28
30
 
31
+ for feature_name in dict_of_feature_classes:
32
+ if feature_name not in features:
33
+ continue
34
+
29
35
  self.feature_list.add(
30
36
  dict_of_feature_classes[feature_name](
31
- score=feature_score,
37
+ score=features[feature_name],
32
38
  )
33
39
  )
34
40
 
35
41
  self.deficiencies = deficiencies
36
42
 
43
+ self.image = image
44
+
45
+ self.comments = comments
46
+
37
47
  def compare(
38
48
  self,
39
49
  ugv: "UGV",
@@ -54,7 +64,12 @@ class UGV:
54
64
  elif comparison == Feature_Comparison.UNKNOWN:
55
65
  pass
56
66
  else:
57
- differences.append(message)
67
+ differences.append(
68
+ '<p style="color:{};">{}</p>'.format(
69
+ "green" if comparison == Feature_Comparison.HIGHER else "red",
70
+ message,
71
+ )
72
+ )
58
73
 
59
74
  return (
60
75
  [
@@ -83,7 +98,9 @@ class UGV:
83
98
  def description(self) -> List[str]:
84
99
  return (
85
100
  [
86
- '<p dir="rtl" style="text-align:right;">{}</p>'.format(self.name),
101
+ '<b><p dir="rtl" style="text-align:right;">{}</p></b>'.format(
102
+ self.name
103
+ ),
87
104
  "<ol>",
88
105
  ]
89
106
  + [
@@ -2,7 +2,6 @@ from bluer_ugv.README.ugvs.comparison.features.control import UGV_Control
2
2
  from bluer_ugv.README.ugvs.comparison.features.cost import UGV_Cost
3
3
  from bluer_ugv.README.ugvs.comparison.features.size import UGV_Size
4
4
  from bluer_ugv.README.ugvs.comparison.ugvs.classes import List_of_UGVs
5
- from bluer_ugv.README.ugvs.comparison.features.range import unlimited_range
6
5
 
7
6
  list_of_ugvs = List_of_UGVs()
8
7
 
@@ -14,7 +13,7 @@ list_of_ugvs.add(
14
13
  "control": UGV_Control.AI,
15
14
  "cost": UGV_Cost.LOW,
16
15
  "payload": 40,
17
- "range": unlimited_range,
16
+ "range": 100,
18
17
  "ps": True,
19
18
  "sanction_proof": True,
20
19
  "size": UGV_Size.SMALL,
@@ -26,12 +25,14 @@ list_of_ugvs.add(
26
25
 
27
26
  list_of_ugvs.add(
28
27
  nickname="nazir",
28
+ image="nazir.jpg",
29
29
  name="ربات موشک‌انداز نذیر",
30
30
  features={
31
31
  "control": UGV_Control.RC,
32
32
  "cost": UGV_Cost.MEDIUM,
33
33
  "payload": 700,
34
34
  "range": 4,
35
+ "sanction_proof": True,
35
36
  "size": UGV_Size.MEDIUM,
36
37
  },
37
38
  )
@@ -39,12 +40,14 @@ list_of_ugvs.add(
39
40
  list_of_ugvs.add(
40
41
  nickname="heydar",
41
42
  name="ربات حیدر",
43
+ image="heydar.jpg",
42
44
  features={
43
45
  "concealment": True,
44
46
  "control": UGV_Control.AI,
45
47
  "cost": UGV_Cost.LOW,
46
48
  "payload": 40,
47
49
  "range": 10,
50
+ "sanction_proof": True,
48
51
  "size": UGV_Size.SMALL,
49
52
  "speed": 60,
50
53
  "swarm": True,
@@ -52,15 +55,20 @@ list_of_ugvs.add(
52
55
  deficiencies=[
53
56
  "انتقال قدرت: زنجیر",
54
57
  ],
58
+ comments=[
59
+ "بیشترین تشابه",
60
+ ],
55
61
  )
56
62
 
57
63
 
58
64
  list_of_ugvs.add(
59
65
  nickname="karakal",
60
66
  name="ربات جنگجوی هوشمند کاراکال",
67
+ image="karakal.jpg",
61
68
  features={
62
69
  "control": UGV_Control.AI,
63
70
  "cost": UGV_Cost.MEDIUM,
71
+ "sanction_proof": True,
64
72
  "size": UGV_Size.MEDIUM,
65
73
  "speed": 30,
66
74
  "range": 0.5,
@@ -70,8 +78,11 @@ list_of_ugvs.add(
70
78
  list_of_ugvs.add(
71
79
  nickname="qasem",
72
80
  name="ربات قاسم",
81
+ image="qasem.jpg",
73
82
  features={
83
+ "concealment": True,
74
84
  "cost": UGV_Cost.MEDIUM,
85
+ "sanction_proof": True,
75
86
  "size": UGV_Size.MEDIUM,
76
87
  "uv_delivery": True,
77
88
  },
@@ -81,9 +92,11 @@ list_of_ugvs.add(
81
92
  list_of_ugvs.add(
82
93
  nickname="arya",
83
94
  name="ربات آریا",
95
+ image="arya.jpg",
84
96
  features={
85
97
  "control": UGV_Control.AI,
86
98
  "cost": UGV_Cost.MEDIUM,
99
+ "sanction_proof": True,
87
100
  "size": UGV_Size.MEDIUM,
88
101
  "speed": 50,
89
102
  "uv_delivery": True,
@@ -94,7 +107,9 @@ list_of_ugvs.add(
94
107
  list_of_ugvs.add(
95
108
  nickname="sepah",
96
109
  name="ربات جنگ میدانی سپاه",
97
- features={},
110
+ features={
111
+ "sanction_proof": True,
112
+ },
98
113
  deficiencies=[],
99
114
  )
100
115
 
@@ -102,9 +117,11 @@ list_of_ugvs.add(
102
117
  list_of_ugvs.add(
103
118
  nickname="raad1",
104
119
  name="متلاشی‌کننده بمب و تله انفجاری رعد ۱",
120
+ image="raad1.jpg",
105
121
  features={
106
122
  "control": UGV_Control.RC,
107
123
  "cost": UGV_Cost.MEDIUM,
124
+ "sanction_proof": True,
108
125
  "size": UGV_Size.SMALL,
109
126
  },
110
127
  deficiencies=[],
@@ -113,6 +130,7 @@ list_of_ugvs.add(
113
130
  list_of_ugvs.add(
114
131
  nickname="uran_6",
115
132
  name="Uran-6",
133
+ image="Uran-6.jpeg",
116
134
  features={
117
135
  "control": UGV_Control.AI,
118
136
  "cost": UGV_Cost.HIGH,
@@ -126,6 +144,7 @@ list_of_ugvs.add(
126
144
  list_of_ugvs.add(
127
145
  nickname="uran_9",
128
146
  name="Uran-9",
147
+ image="Uran-9.jpg",
129
148
  features={
130
149
  "control": UGV_Control.AI,
131
150
  "cost": UGV_Cost.HIGH,
@@ -139,6 +158,7 @@ list_of_ugvs.add(
139
158
  list_of_ugvs.add(
140
159
  nickname="uran_14",
141
160
  name="Uran-14",
161
+ image="Uran-14.jpg",
142
162
  features={
143
163
  "control": UGV_Control.AI,
144
164
  "cost": UGV_Cost.HIGH,
@@ -153,6 +173,7 @@ list_of_ugvs.add(
153
173
  list_of_ugvs.add(
154
174
  nickname="themis_9",
155
175
  name="THeMIS-9",
176
+ image="THeMIS-9.jpeg",
156
177
  features={
157
178
  "control": UGV_Control.AI,
158
179
  "cost": UGV_Cost.HIGH,
@@ -167,6 +188,7 @@ list_of_ugvs.add(
167
188
  list_of_ugvs.add(
168
189
  nickname="type_x",
169
190
  name="Type-X",
191
+ image="Type-X.jpg",
170
192
  features={
171
193
  "control": UGV_Control.AI,
172
194
  "cost": UGV_Cost.HIGH,
@@ -181,6 +203,7 @@ list_of_ugvs.add(
181
203
  list_of_ugvs.add(
182
204
  nickname="centaur",
183
205
  name="Centaur",
206
+ image="Centaur.jpg",
184
207
  features={
185
208
  "control": UGV_Control.RC,
186
209
  "cost": UGV_Cost.HIGH,
@@ -196,6 +219,7 @@ list_of_ugvs.add(
196
219
  list_of_ugvs.add(
197
220
  nickname="xm1219",
198
221
  name="XM1219",
222
+ image="XM1219.jpeg",
199
223
  features={
200
224
  "control": UGV_Control.RC,
201
225
  "cost": UGV_Cost.HIGH,
@@ -207,6 +231,7 @@ list_of_ugvs.add(
207
231
  list_of_ugvs.add(
208
232
  nickname="talon",
209
233
  name="Foster-Miller TALON",
234
+ image="talon.jpg",
210
235
  features={
211
236
  "control": UGV_Control.RC,
212
237
  "cost": UGV_Cost.HIGH,
@@ -219,6 +244,7 @@ list_of_ugvs.add(
219
244
  list_of_ugvs.add(
220
245
  nickname="gladiator",
221
246
  name="Gladiator TUGV",
247
+ image="Gladiator.jpg",
222
248
  features={
223
249
  "control": UGV_Control.RC,
224
250
  "cost": UGV_Cost.HIGH,
@@ -230,6 +256,7 @@ list_of_ugvs.add(
230
256
  list_of_ugvs.add(
231
257
  nickname="ukap",
232
258
  name="UKAP",
259
+ image="UKAP.jpg",
233
260
  features={
234
261
  "control": UGV_Control.RC,
235
262
  "cost": UGV_Cost.HIGH,
@@ -241,6 +268,7 @@ list_of_ugvs.add(
241
268
  list_of_ugvs.add(
242
269
  nickname="ripsaw",
243
270
  name="Ripsaw",
271
+ image="Ripsaw.jpg",
244
272
  features={
245
273
  "control": UGV_Control.AI,
246
274
  "cost": UGV_Cost.HIGH,
@@ -254,11 +282,14 @@ list_of_ugvs.add(
254
282
  list_of_ugvs.add(
255
283
  nickname="teodor",
256
284
  name="tEODor",
285
+ image="tEODor.png",
257
286
  features={
287
+ "concealment": True,
258
288
  "control": UGV_Control.RC,
259
289
  "cost": UGV_Cost.HIGH,
260
290
  "payload": 100,
261
291
  "size": UGV_Size.MEDIUM,
292
+ "uv_delivery": True,
262
293
  },
263
294
  deficiencies=[],
264
295
  )
@@ -267,6 +298,7 @@ list_of_ugvs.add(
267
298
  list_of_ugvs.add(
268
299
  nickname="black_knight",
269
300
  name="Black Knight",
301
+ image="black_knight.jpeg",
270
302
  features={
271
303
  "control": UGV_Control.AI,
272
304
  "cost": UGV_Cost.HIGH,
@@ -279,6 +311,7 @@ list_of_ugvs.add(
279
311
  list_of_ugvs.add(
280
312
  nickname="guardium",
281
313
  name="Guardium",
314
+ image="Guardium.jpg",
282
315
  features={
283
316
  "control": UGV_Control.AI,
284
317
  "cost": UGV_Cost.HIGH,
@@ -290,6 +323,7 @@ list_of_ugvs.add(
290
323
  list_of_ugvs.add(
291
324
  nickname="milica",
292
325
  name="Milos & Milica",
326
+ image="Milos.jpg",
293
327
  features={
294
328
  "control": UGV_Control.RC,
295
329
  "cost": UGV_Cost.MEDIUM,
@@ -304,6 +338,7 @@ list_of_ugvs.add(
304
338
  list_of_ugvs.add(
305
339
  nickname="taifun_m",
306
340
  name="Taifun-M",
341
+ image="Taifun-M.jpg",
307
342
  features={
308
343
  "control": UGV_Control.RC,
309
344
  "cost": UGV_Cost.HIGH,
@@ -317,6 +352,7 @@ list_of_ugvs.add(
317
352
  list_of_ugvs.add(
318
353
  nickname="jackal",
319
354
  name="Jackal",
355
+ image="Jackal.jpeg",
320
356
  features={
321
357
  "control": UGV_Control.AI,
322
358
  "cost": UGV_Cost.HIGH,
@@ -330,6 +366,7 @@ list_of_ugvs.add(
330
366
  list_of_ugvs.add(
331
367
  nickname="avantguard",
332
368
  name="AvantGuard UGCV",
369
+ image="avantguard.jpg",
333
370
  features={
334
371
  "control": UGV_Control.AI,
335
372
  "cost": UGV_Cost.HIGH,
@@ -343,6 +380,7 @@ list_of_ugvs.add(
343
380
  list_of_ugvs.add(
344
381
  nickname="sr-lambda",
345
382
  name="SIM-RACAR-Lambda",
383
+ image="SIM-RACAR-Lambda.jpg",
346
384
  features={
347
385
  "control": UGV_Control.AI,
348
386
  "cost": UGV_Cost.HIGH,
@@ -355,7 +393,8 @@ list_of_ugvs.add(
355
393
 
356
394
  list_of_ugvs.add(
357
395
  nickname="sharp_claw_1",
358
- name="Sharl Claw 1",
396
+ name="Sharp Claw 1",
397
+ image="Sharp-Claw-1.jpg",
359
398
  features={
360
399
  "control": UGV_Control.RC,
361
400
  "cost": UGV_Cost.HIGH,
@@ -369,7 +408,8 @@ list_of_ugvs.add(
369
408
 
370
409
  list_of_ugvs.add(
371
410
  nickname="sharp_claw_2",
372
- name="Sharl Claw 2",
411
+ name="Sharp Claw 2",
412
+ image="Sharp-Claw-2.jpg",
373
413
  features={
374
414
  "control": UGV_Control.RC,
375
415
  "cost": UGV_Cost.HIGH,
@@ -385,6 +425,7 @@ list_of_ugvs.add(
385
425
  list_of_ugvs.add(
386
426
  nickname="robattle",
387
427
  name="Robattle",
428
+ image="Robattle.jpeg",
388
429
  features={
389
430
  "control": UGV_Control.AI,
390
431
  "cost": UGV_Cost.HIGH,
@@ -4,7 +4,7 @@ ICON = "🐬"
4
4
 
5
5
  DESCRIPTION = f"{ICON} AI x UGV."
6
6
 
7
- VERSION = "7.616.1"
7
+ VERSION = "7.645.1"
8
8
 
9
9
  REPO_NAME = "bluer-ugv"
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.616.1
3
+ Version: 7.645.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.616.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.645.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