bluer-ugv 7.790.1__tar.gz → 7.821.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 (263) hide show
  1. {bluer_ugv-7.790.1/bluer_ugv.egg-info → bluer_ugv-7.821.1}/PKG-INFO +4 -5
  2. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/README.md +3 -4
  3. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/alias.sh +0 -2
  4. bluer_ugv-7.821.1/bluer_ugv/.abcli/swallow/ethernet/test.sh +12 -0
  5. bluer_ugv-7.821.1/bluer_ugv/.abcli/swallow/ethernet.sh +15 -0
  6. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/help.sh +2 -0
  7. bluer_ugv-7.821.1/bluer_ugv/README/aliases.py +23 -0
  8. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/docs.py +2 -2
  9. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/root.py +4 -0
  10. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/design/__init__.py +2 -0
  11. bluer_ugv-7.821.1/bluer_ugv/README/swallow/digital/design/ethernet.py +5 -0
  12. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/__main__.py +0 -7
  13. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/db.py +1 -1
  14. bluer_ugv-7.821.1/bluer_ugv/README/ugvs/ethernet.py +55 -0
  15. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/get.py +0 -4
  16. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/__init__.py +1 -1
  17. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/config.env +5 -1
  18. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/env.py +7 -0
  19. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/get.py +1 -6
  20. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/__init__.py +2 -0
  21. bluer_ugv-7.821.1/bluer_ugv/help/swallow/ethernet.py +34 -0
  22. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/camera/yolo.py +7 -0
  23. bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/ethernet/__main__.py +42 -0
  24. bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/ethernet/classes.py +52 -0
  25. bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/ethernet/client.py +278 -0
  26. bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/ethernet/command.py +22 -0
  27. bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/ethernet/testing.py +52 -0
  28. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/keyboard/classes.py +19 -0
  29. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/session.py +6 -0
  30. bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__init__.py +0 -0
  31. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1/bluer_ugv.egg-info}/PKG-INFO +4 -5
  32. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv.egg-info/SOURCES.txt +12 -1
  33. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/setup.py +1 -0
  34. bluer_ugv-7.790.1/bluer_ugv/README/alias.py +0 -10
  35. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/LICENSE +0 -0
  36. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/MANIFEST.in +0 -0
  37. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/abcli.sh +0 -0
  38. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/actions.sh +0 -0
  39. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/aka.sh +0 -0
  40. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/bluer_ugv.sh +0 -0
  41. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/dataset/combine.sh +0 -0
  42. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/dataset/download.sh +0 -0
  43. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/dataset/edit.sh +0 -0
  44. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/dataset/list.sh +0 -0
  45. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/dataset/upload.sh +0 -0
  46. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/dataset.sh +0 -0
  47. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/debug.sh +0 -0
  48. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/env/cp.sh +0 -0
  49. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/env/list.sh +0 -0
  50. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/env/set.sh +0 -0
  51. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/env.sh +0 -0
  52. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/git/rm_keys.sh +0 -0
  53. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/git.sh +0 -0
  54. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/keyboard/test.sh +0 -0
  55. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/keyboard.sh +0 -0
  56. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/select_target.sh +0 -0
  57. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/session.sh +0 -0
  58. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/ultrasonic/review.sh +0 -0
  59. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/ultrasonic/test.sh +0 -0
  60. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/ultrasonic.sh +0 -0
  61. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/video/play.sh +0 -0
  62. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/video/playlist/cat.sh +0 -0
  63. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/video/playlist/download.sh +0 -0
  64. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/video/playlist/edit.sh +0 -0
  65. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/video/playlist/upload.sh +0 -0
  66. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/video/playlist.sh +0 -0
  67. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow/video.sh +0 -0
  68. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/swallow.sh +0 -0
  69. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/README.sh +0 -0
  70. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine.sh +0 -0
  71. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_explicit.sh +0 -0
  72. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/swallow_dataset_combine_sequence.sh +0 -0
  73. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/swallow_dataset_download_upload.sh +0 -0
  74. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/swallow_dataset_edit.sh +0 -0
  75. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/swallow_dataset_list.sh +0 -0
  76. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/swallow_video_play.sh +0 -0
  77. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/swallow_video_playlist.sh +0 -0
  78. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/ugv_get.sh +0 -0
  79. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/ultrasonic_sensor_review.sh +0 -0
  80. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/tests/version.sh +0 -0
  81. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/ugv/get.sh +0 -0
  82. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/ugv/git.sh +0 -0
  83. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/ugv/ssh.sh +0 -0
  84. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/.abcli/ugv/watch.sh +0 -0
  85. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/__init__.py +0 -0
  86. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/arzhang/__init__.py +0 -0
  87. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/arzhang/algo.py +0 -0
  88. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/arzhang/consts.py +0 -0
  89. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/arzhang/design.py +0 -0
  90. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/arzhang/docs.py +0 -0
  91. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/arzhang/flag.py +0 -0
  92. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/arzhang/items.py +0 -0
  93. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/beast.py +0 -0
  94. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/build.py +0 -0
  95. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/__init__.py +0 -0
  96. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/box.py +0 -0
  97. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/docs.py +0 -0
  98. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/power.py +0 -0
  99. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/schematics.py +0 -0
  100. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/shield/__init__.py +0 -0
  101. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/shield/docs.py +0 -0
  102. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/shield/parts.py +0 -0
  103. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/shield/testing.py +0 -0
  104. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/shield/v1.py +0 -0
  105. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/shield/v2.py +0 -0
  106. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/computer/testing.py +0 -0
  107. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/consts.py +0 -0
  108. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/eagle/__init__.py +0 -0
  109. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/eagle/consts.py +0 -0
  110. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/eagle/docs.py +0 -0
  111. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/eagle/items.py +0 -0
  112. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/fire/__init__.py +0 -0
  113. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/fire/consts.py +0 -0
  114. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/fire/docs.py +0 -0
  115. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/fire/items.py +0 -0
  116. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/items.py +0 -0
  117. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/__init__.py +0 -0
  118. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/consts.py +0 -0
  119. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/docs.py +0 -0
  120. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/items.py +0 -0
  121. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/mechanical.py +0 -0
  122. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/parts.py +0 -0
  123. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/power.py +0 -0
  124. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/root.py +0 -0
  125. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/schematics.py +0 -0
  126. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/specs.py +0 -0
  127. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/rangin/terraform.py +0 -0
  128. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ravin/__init__.py +0 -0
  129. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ravin/consts.py +0 -0
  130. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ravin/docs.py +0 -0
  131. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ravin/items.py +0 -0
  132. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/releases.py +0 -0
  133. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/shortcuts.py +0 -0
  134. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/__init__.py +0 -0
  135. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/analog.py +0 -0
  136. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/consts.py +0 -0
  137. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/__init__.py +0 -0
  138. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/algo/__init__.py +0 -0
  139. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/algo/driving.py +0 -0
  140. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/algo/navigation.py +0 -0
  141. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/algo/tracking.py +0 -0
  142. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/algo/yolo.py +0 -0
  143. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/design/mechanical.py +0 -0
  144. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/design/parts.py +0 -0
  145. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py +0 -0
  146. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/swallow/items.py +0 -0
  147. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/__init__.py +0 -0
  148. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/__init__.py +0 -0
  149. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/build.py +0 -0
  150. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/DYI.py +0 -0
  151. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/__init__.py +0 -0
  152. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/classes.py +0 -0
  153. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/concealment.py +0 -0
  154. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/control.py +0 -0
  155. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/cost.py +0 -0
  156. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/db.py +0 -0
  157. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/payload.py +0 -0
  158. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/ps.py +0 -0
  159. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/range.py +0 -0
  160. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/sanction_proof.py +0 -0
  161. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/size.py +0 -0
  162. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/speed.py +0 -0
  163. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/swarm.py +0 -0
  164. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/features/uv_delivery.py +0 -0
  165. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/references/__init__.py +0 -0
  166. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/references/classes.py +0 -0
  167. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/references/db.py +0 -0
  168. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/ugvs/__init__.py +0 -0
  169. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/ugvs/classes.py +0 -0
  170. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/comparison/ugvs/db.py +0 -0
  171. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/README/ugvs/docs.py +0 -0
  172. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/__main__.py +0 -0
  173. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/assets/comparison.html +0 -0
  174. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/__init__.py +0 -0
  175. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/eagle/__init__.py +0 -0
  176. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/eagle/parts.py +0 -0
  177. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/fire/__init__.py +0 -0
  178. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/fire/parts.py +0 -0
  179. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/rangin/__init__.py +0 -0
  180. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/rangin/parts.py +0 -0
  181. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/ravin/__init__.py +0 -0
  182. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/ravin/ravin3/__init__.py +0 -0
  183. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/ravin/ravin3/parts.py +0 -0
  184. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/ravin/ravin4/__init__.py +0 -0
  185. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/designs/ravin/ravin4/parts.py +0 -0
  186. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/__init__.py +0 -0
  187. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/__main__.py +0 -0
  188. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/functions.py +0 -0
  189. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/git.py +0 -0
  190. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/ssh.py +0 -0
  191. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/dataset.py +0 -0
  192. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/debug.py +0 -0
  193. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/env.py +0 -0
  194. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/git.py +0 -0
  195. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/keyboard.py +0 -0
  196. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/select_target.py +0 -0
  197. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/ultrasonic_sensor.py +0 -0
  198. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/video/__init__.py +0 -0
  199. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/video/functions.py +0 -0
  200. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/swallow/video/playlist.py +0 -0
  201. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/help/watch.py +0 -0
  202. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/host.py +0 -0
  203. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/logger.py +0 -0
  204. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/sample.env +0 -0
  205. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/__init__.py +0 -0
  206. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/__main__.py +0 -0
  207. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/dataset/__init__.py +0 -0
  208. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/dataset/__main__.py +0 -0
  209. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/dataset/combination.py +0 -0
  210. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/debug.py +0 -0
  211. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/__init__.py +0 -0
  212. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/__main__.py +0 -0
  213. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/__init__.py +0 -0
  214. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/camera/__init__.py +0 -0
  215. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/camera/generic.py +0 -0
  216. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/camera/navigation.py +0 -0
  217. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/camera/tracking.py +0 -0
  218. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/camera/void.py +0 -0
  219. {bluer_ugv-7.790.1/bluer_ugv/swallow/session/classical/keyboard → bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/ethernet}/__init__.py +0 -0
  220. {bluer_ugv-7.790.1/bluer_ugv/swallow/session/classical/screen → bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/keyboard}/__init__.py +0 -0
  221. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/keyboard/__main__.py +0 -0
  222. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/keyboard/keys.py +0 -0
  223. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/keyboard/testing.py +0 -0
  224. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/leds.py +0 -0
  225. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/mode.py +0 -0
  226. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/motor/__init__.py +0 -0
  227. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/motor/generic.py +0 -0
  228. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/motor/left.py +0 -0
  229. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/motor/rear.py +0 -0
  230. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/motor/right.py +0 -0
  231. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/motor/steering.py +0 -0
  232. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/mousepad.py +0 -0
  233. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/position.py +0 -0
  234. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/push_button.py +0 -0
  235. {bluer_ugv-7.790.1/bluer_ugv/swallow/session/classical/screen/video → bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/screen}/__init__.py +0 -0
  236. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/screen/classes.py +0 -0
  237. {bluer_ugv-7.790.1/bluer_ugv/swallow/session/classical/setpoint → bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/screen/video}/__init__.py +0 -0
  238. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/screen/video/__main__.py +0 -0
  239. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/screen/video/engine.py +0 -0
  240. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/screen/video/player.py +0 -0
  241. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/screen/video/playlist.py +0 -0
  242. {bluer_ugv-7.790.1/bluer_ugv/swallow/session/classical/ultrasonic_sensor → bluer_ugv-7.821.1/bluer_ugv/swallow/session/classical/setpoint}/__init__.py +0 -0
  243. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/setpoint/classes.py +0 -0
  244. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/setpoint/steering.py +0 -0
  245. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/__main__.py +0 -0
  246. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/classes.py +0 -0
  247. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/consts.py +0 -0
  248. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection.py +0 -0
  249. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/detection_list.py +0 -0
  250. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/log.py +0 -0
  251. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py +0 -0
  252. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py +0 -0
  253. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py +0 -0
  254. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py +0 -0
  255. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/session/functions.py +0 -0
  256. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/swallow/targeting.py +0 -0
  257. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv/urls.py +0 -0
  258. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv.egg-info/dependency_links.txt +0 -0
  259. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv.egg-info/requires.txt +0 -0
  260. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/bluer_ugv.egg-info/top_level.txt +0 -0
  261. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/pyproject.toml +0 -0
  262. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/requirements.txt +0 -0
  263. {bluer_ugv-7.790.1 → bluer_ugv-7.821.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.790.1
3
+ Version: 7.821.1
4
4
  Summary: 🐬 AI x UGV.
5
5
  Home-page: https://github.com/kamangir/bluer-ugv
6
6
  Author: Arash Abadpour (Kamangir)
@@ -53,9 +53,8 @@ pip install bluer_ugv
53
53
 
54
54
  ## aliases
55
55
 
56
- [@rangin](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/aliases/rangin.md),
57
- [@swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/aliases/swallow.md),
58
- [@ugv](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/aliases/ugv.md).
56
+ [@swallow](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/aliases/swallow.md)
57
+ [@ugv](https://github.com/kamangir/bluer-ugv/blob/main/bluer_ugv/docs/aliases/ugv.md)
59
58
 
60
59
  ---
61
60
 
@@ -66,7 +65,7 @@ pip install bluer_ugv
66
65
 
67
66
  [![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)
68
67
 
69
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.790.1`](https://github.com/kamangir/bluer-ugv).
68
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.821.1`](https://github.com/kamangir/bluer-ugv).
70
69
 
71
70
 
72
71
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -23,9 +23,8 @@ pip install bluer_ugv
23
23
 
24
24
  ## aliases
25
25
 
26
- [@rangin](./bluer_ugv/docs/aliases/rangin.md),
27
- [@swallow](./bluer_ugv/docs/aliases/swallow.md),
28
- [@ugv](./bluer_ugv/docs/aliases/ugv.md).
26
+ [@swallow](./bluer_ugv/docs/aliases/swallow.md)
27
+ [@ugv](./bluer_ugv/docs/aliases/ugv.md)
29
28
 
30
29
  ---
31
30
 
@@ -36,5 +35,5 @@ pip install bluer_ugv
36
35
 
37
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)
38
37
 
39
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.790.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.821.1`](https://github.com/kamangir/bluer-ugv).
40
39
 
@@ -1,7 +1,5 @@
1
1
  #! /usr/bin/env bash
2
2
 
3
- alias @rangin=bluer_ugv_rangin
4
-
5
3
  alias @swallow=bluer_ugv_swallow
6
4
 
7
5
  alias @ugv=bluer_ugv
@@ -0,0 +1,12 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_ugv_swallow_ethernet_test() {
4
+ local options=$1
5
+
6
+ bluer_ai_eval ,$options \
7
+ sudo -E \
8
+ $(which python3) \
9
+ -m bluer_ugv.swallow.session.classical.ethernet \
10
+ test \
11
+ "${@:2}"
12
+ }
@@ -0,0 +1,15 @@
1
+ #! /usr/bin/env bash
2
+
3
+ function bluer_ugv_swallow_ethernet() {
4
+ local task=$1
5
+
6
+ local function_name=bluer_ugv_swallow_ethernet_$task
7
+ if [[ $(type -t $function_name) == "function" ]]; then
8
+ $function_name "${@:2}"
9
+ return
10
+ fi
11
+
12
+ python3 -m bluer_ugv.swallow.session.classical.ethernet "$@"
13
+ }
14
+
15
+ bluer_ai_source_caller_suffix_path /ethernet
@@ -20,6 +20,8 @@ function test_bluer_ugv_help() {
20
20
  "@swallow env list" \
21
21
  "@swallow env set" \
22
22
  \
23
+ "@swallow ethernet" \
24
+ \
23
25
  "@swallow git" \
24
26
  "@swallow git rm_keys" \
25
27
  \
@@ -0,0 +1,23 @@
1
+ from bluer_objects.README.alias import list_of_aliases
2
+
3
+ from bluer_ugv import NAME
4
+
5
+ docs = [
6
+ {
7
+ "path": "../docs/aliases",
8
+ "macros": {
9
+ "aliases:::": list_of_aliases(
10
+ NAME,
11
+ itemized=True,
12
+ ),
13
+ },
14
+ }
15
+ ] + [
16
+ {
17
+ "path": f"../docs/aliases/{alias_name}.md",
18
+ }
19
+ for alias_name in list_of_aliases(
20
+ NAME,
21
+ as_markdown=False,
22
+ )
23
+ ]
@@ -4,7 +4,7 @@ from bluer_ugv.README.fire import docs as fire_docs
4
4
  from bluer_ugv.README.rangin import docs as rangin_docs
5
5
  from bluer_ugv.README.ravin import docs as ravin_docs
6
6
  from bluer_ugv.README import (
7
- alias,
7
+ aliases,
8
8
  beast,
9
9
  root,
10
10
  releases,
@@ -16,7 +16,7 @@ from bluer_ugv.README.validations import docs as validations
16
16
 
17
17
  docs = (
18
18
  root.docs
19
- + alias.docs
19
+ + aliases.docs
20
20
  + arzhang_docs.docs
21
21
  + beast.docs
22
22
  + eagle_docs.docs
@@ -1,3 +1,6 @@
1
+ from bluer_objects.README.alias import list_of_aliases
2
+
3
+ from bluer_ugv import NAME
1
4
  from bluer_ugv.README.items import items
2
5
  from bluer_ugv.README.shortcuts import items as shortcuts_items
3
6
 
@@ -8,6 +11,7 @@ docs = [
8
11
  "items": items,
9
12
  "macros": {
10
13
  "shortcuts:::": shortcuts_items,
14
+ "aliases:::": list_of_aliases(NAME),
11
15
  },
12
16
  },
13
17
  {
@@ -5,6 +5,7 @@ from bluer_ugv.README.swallow.consts import (
5
5
  swallow_electrical_designs,
6
6
  )
7
7
  from bluer_ugv.README.swallow.digital.design import (
8
+ ethernet,
8
9
  mechanical,
9
10
  parts,
10
11
  ultrasonic_sensor,
@@ -61,6 +62,7 @@ docs = (
61
62
  ),
62
63
  },
63
64
  ]
65
+ + ethernet.docs
64
66
  + mechanical.docs
65
67
  + parts.docs
66
68
  + ultrasonic_sensor.docs
@@ -0,0 +1,5 @@
1
+ docs = [
2
+ {
3
+ "path": "../docs/swallow/digital/design/ethernet.md",
4
+ },
5
+ ]
@@ -23,12 +23,6 @@ parser.add_argument(
23
23
  "--what",
24
24
  type=str,
25
25
  )
26
- parser.add_argument(
27
- "--include_comments",
28
- type=int,
29
- default=0,
30
- help="0 | 1",
31
- )
32
26
  args = parser.parse_args()
33
27
 
34
28
  success = False
@@ -38,7 +32,6 @@ if args.task == "get":
38
32
  get(
39
33
  ugv_name=args.ugv_name,
40
34
  what=args.what,
41
- include_comments=args.include_comments == 1,
42
35
  )
43
36
  )
44
37
  else:
@@ -19,7 +19,7 @@ dict_of_ugvs = {
19
19
  "tagline": "the first one.",
20
20
  "class": "swallow",
21
21
  "computers": {
22
- "front": "swallow2 (`swallow` was used for Ubuntu experiments)",
22
+ "front": "swallow2", # `swallow` was used for Ubuntu experiments
23
23
  },
24
24
  },
25
25
  "arzhang": {
@@ -0,0 +1,55 @@
1
+ from typing import Tuple
2
+
3
+ from bluer_ugv.README.ugvs.db import dict_of_ugvs
4
+ from bluer_ugv.logger import logger
5
+
6
+
7
+ def find_server(
8
+ hostname: str,
9
+ ) -> Tuple[
10
+ bool, # success
11
+ bool, # is_server
12
+ str, # "0.0.0.0" if is_server else f"{server_name}.local"
13
+ ]:
14
+ for ugv_name, info in dict_of_ugvs.items():
15
+ found: bool = False
16
+ dict_of_computers = info.get("computers", {})
17
+ assert isinstance(dict_of_computers, dict)
18
+
19
+ for location, hostname_ in dict_of_computers.items():
20
+ if hostname != hostname_:
21
+ continue
22
+
23
+ logger.info(f"{hostname} == {ugv_name}.{location}")
24
+ found = True
25
+
26
+ if location == "front":
27
+ return True, True, "0.0.0.0"
28
+
29
+ if not found:
30
+ continue
31
+
32
+ list_of_server_names = [
33
+ hostname_
34
+ for location, hostname_ in dict_of_computers.items()
35
+ if location == "front"
36
+ ]
37
+ if not list_of_server_names:
38
+ logger.error(f"no server (.front) onboard {ugv_name}.")
39
+ return False, False, ""
40
+
41
+ if len(list_of_server_names) > 1:
42
+ logger.warning(
43
+ "{} servers (.front) onboard {}".format(
44
+ len(list_of_server_names),
45
+ ugv_name,
46
+ )
47
+ )
48
+
49
+ server_name = list_of_server_names[0]
50
+ logger.info(f"{hostname}: server_name={server_name}")
51
+
52
+ return True, False, f"{server_name}.local"
53
+
54
+ logger.error(f"cannot find hostname: {hostname}.")
55
+ return False, False, ""
@@ -4,7 +4,6 @@ from bluer_ugv.README.ugvs.db import dict_of_ugvs
4
4
  def get(
5
5
  ugv_name: str,
6
6
  what: str,
7
- include_comments: bool = False,
8
7
  ) -> str:
9
8
  list_of_what = what.split(".")
10
9
  info = dict_of_ugvs.get(ugv_name, {})
@@ -17,7 +16,4 @@ def get(
17
16
  if not info:
18
17
  info = "not-found"
19
18
 
20
- if not include_comments and info:
21
- info = info.split(" ")[0]
22
-
23
19
  return str(info)
@@ -4,7 +4,7 @@ ICON = "🐬"
4
4
 
5
5
  DESCRIPTION = f"{ICON} AI x UGV."
6
6
 
7
- VERSION = "7.790.1"
7
+ VERSION = "7.821.1"
8
8
 
9
9
  REPO_NAME = "bluer-ugv"
10
10
 
@@ -36,4 +36,8 @@ BLUER_UGV_RELEASE_2=release-two-2025-12-01-12-50-03-1hyrts
36
36
  BLUER_UGV_AUDIO_LANGUAGE=fa
37
37
  BLUER_UGV_AUDIO_CHANNELS=1
38
38
  BLUER_UGV_AUDIO_RATE=48000
39
- BLUER_UGV_AUDIO_LENGTH=30
39
+ BLUER_UGV_AUDIO_LENGTH=30
40
+
41
+ BLUER_UGV_ETHERNET_PORT=5050
42
+
43
+ BLUER_UGV_SWALLOW_YOLO_SPEED_SETPOINT=20
@@ -40,6 +40,11 @@ BLUER_UGV_SWALLOW_STEERING_YOLO_EXPIRY = get_env(
40
40
  0.1,
41
41
  )
42
42
 
43
+ BLUER_UGV_SWALLOW_YOLO_SPEED_SETPOINT = get_env(
44
+ "BLUER_UGV_SWALLOW_YOLO_SPEED_SETPOINT",
45
+ 20,
46
+ )
47
+
43
48
  BLUER_UGV_SWALLOW_YOLO_DATASET_LIST = get_env(
44
49
  "BLUER_UGV_SWALLOW_YOLO_DATASET_LIST",
45
50
  )
@@ -105,3 +110,5 @@ BLUER_UGV_AUDIO_LENGTH = get_env(
105
110
  "BLUER_UGV_AUDIO_LENGTH",
106
111
  30,
107
112
  )
113
+
114
+ BLUER_UGV_ETHERNET_PORT = get_env("BLUER_UGV_ETHERNET_PORT", 5050)
@@ -7,18 +7,13 @@ def help_get(
7
7
  tokens: List[str],
8
8
  mono: bool,
9
9
  ) -> str:
10
- args = [
11
- "[--include_comments 1]",
12
- ]
13
-
14
10
  return show_usage(
15
11
  [
16
12
  "@ugv",
17
13
  "get",
18
14
  "<ugv-name>",
19
15
  "computers.back | computers.front | computers.top | <what>",
20
- ]
21
- + args,
16
+ ],
22
17
  "get ugv info.",
23
18
  mono=mono,
24
19
  )
@@ -1,6 +1,7 @@
1
1
  from bluer_ugv.help.swallow.dataset import help_functions as help_dataset
2
2
  from bluer_ugv.help.swallow.debug import help_debug
3
3
  from bluer_ugv.help.swallow.env import help_functions as help_env
4
+ from bluer_ugv.help.swallow.ethernet import help_functions as help_ethernet
4
5
  from bluer_ugv.help.swallow.git import help_functions as help_git
5
6
  from bluer_ugv.help.swallow.keyboard import help_functions as help_keyboard
6
7
  from bluer_ugv.help.swallow.select_target import help_select_target
@@ -13,6 +14,7 @@ help_functions = {
13
14
  "dataset": help_dataset,
14
15
  "debug": help_debug,
15
16
  "env": help_env,
17
+ "ethernet": help_ethernet,
16
18
  "git": help_git,
17
19
  "keyboard": help_keyboard,
18
20
  "select_target": help_select_target,
@@ -0,0 +1,34 @@
1
+ from typing import List
2
+
3
+ from bluer_options.terminal import show_usage, xtra
4
+
5
+ from bluer_ugv import env
6
+
7
+
8
+ def help_test(
9
+ tokens: List[str],
10
+ mono: bool,
11
+ ) -> str:
12
+ options = xtra("dryrun", mono=mono)
13
+
14
+ args = [
15
+ "[--is_server 0 | 1]",
16
+ "[--server_name 0.0.0.0 | <server_name>.local]",
17
+ ]
18
+
19
+ return show_usage(
20
+ [
21
+ "@swallow",
22
+ "ethernet",
23
+ "test",
24
+ f"[{options}]",
25
+ ]
26
+ + args,
27
+ "test ethernet.",
28
+ mono=mono,
29
+ )
30
+
31
+
32
+ help_functions = {
33
+ "test": help_test,
34
+ }
@@ -156,6 +156,7 @@ class ClassicalYoloCamera(ClassicalCamera):
156
156
  logger.warning("failed to send debug data.")
157
157
 
158
158
  if not metadata["detections"]:
159
+ self.setpoint.stop()
159
160
  logger.info("no detections.")
160
161
  return True
161
162
 
@@ -177,6 +178,12 @@ class ClassicalYoloCamera(ClassicalCamera):
177
178
  steering_expires_in=env.BLUER_UGV_SWALLOW_STEERING_YOLO_EXPIRY,
178
179
  )
179
180
 
181
+ self.setpoint.put(
182
+ what="speed",
183
+ value=env.BLUER_UGV_SWALLOW_YOLO_SPEED_SETPOINT,
184
+ log=True,
185
+ )
186
+
180
187
  return True
181
188
 
182
189
  def loop_training(self) -> bool:
@@ -0,0 +1,42 @@
1
+ import argparse
2
+
3
+ from blueness import module
4
+ from blueness.argparse.generic import sys_exit
5
+
6
+ from bluer_ugv import env
7
+ from bluer_ugv import NAME
8
+ from bluer_ugv.swallow.session.classical.ethernet.testing import test
9
+ from bluer_ugv.logger import logger
10
+
11
+ NAME = module.name(__file__, NAME)
12
+
13
+ parser = argparse.ArgumentParser(NAME)
14
+ parser.add_argument(
15
+ "task",
16
+ type=str,
17
+ help="test",
18
+ )
19
+ parser.add_argument(
20
+ "--is_server",
21
+ type=int,
22
+ default=1,
23
+ help="0 | 1",
24
+ )
25
+ parser.add_argument(
26
+ "--server_name",
27
+ type=str,
28
+ default="0.0.0.0",
29
+ help="0.0.0.0 | <server_name>.local",
30
+ )
31
+ args = parser.parse_args()
32
+
33
+ success = False
34
+ if args.task == "test":
35
+ success = test(
36
+ server_name=args.server_name,
37
+ is_server=args.is_server == 1,
38
+ )
39
+ else:
40
+ success = None
41
+
42
+ sys_exit(logger, NAME, args.task, success)
@@ -0,0 +1,52 @@
1
+ import threading
2
+
3
+ from bluer_options.env import abcli_hostname
4
+
5
+ from bluer_ugv import env
6
+ from bluer_ugv.swallow.session.classical.ethernet.client import EthernetClient
7
+ from bluer_ugv.README.ugvs.ethernet import find_server
8
+ from bluer_ugv.logger import logger
9
+
10
+
11
+ class ClassicalEthernet:
12
+ def __init__(
13
+ self,
14
+ ):
15
+ self.enabled: bool = True
16
+
17
+ logger.info(f"creating {self.__class__.__name__}...")
18
+
19
+ self.running = False
20
+
21
+ self.enabled, is_server, server_name = find_server(hostname=abcli_hostname)
22
+ if not self.enabled:
23
+ return
24
+
25
+ self.client = EthernetClient(
26
+ host=server_name,
27
+ port=env.BLUER_UGV_ETHERNET_PORT,
28
+ is_server=is_server,
29
+ )
30
+
31
+ self.running = True
32
+ self.thread = threading.Thread(target=self.loop, daemon=True)
33
+ self.thread.start()
34
+
35
+ def stop(self):
36
+ if not self.enabled:
37
+ return
38
+
39
+ self.running = False
40
+ self.thread.join()
41
+
42
+ self.client.close()
43
+ logger.info(f"{self.__class__.__name__}.stopped.")
44
+
45
+ def loop(self):
46
+ logger.info(f"{self.__class__.__name__}.loop started.")
47
+
48
+ while self.running:
49
+ self.client.process()
50
+
51
+ def update(self):
52
+ return not self.client.stop_received