bluer-ugv 7.671.1__py3-none-any.whl → 7.680.1__py3-none-any.whl

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.
@@ -51,6 +51,9 @@ dict_of_ugvs = {
51
51
  f"{rangin_assets2}/20251222_160737.jpg",
52
52
  f"{rangin_assets2}/20251222_165829.jpg",
53
53
  f"{rangin_assets2}/20251222_173509.jpg",
54
+ f"{rangin_assets2}/IMG-20251223-WA0001.jpg",
55
+ f"{rangin_assets2}/IMG-20251223-WA0009.jpg",
56
+ f"{rangin_assets2}/IMG-20251223-WA0010.jpg",
54
57
  ],
55
58
  },
56
59
  }
bluer_ugv/__init__.py CHANGED
@@ -4,7 +4,7 @@ ICON = "🐬"
4
4
 
5
5
  DESCRIPTION = f"{ICON} AI x UGV."
6
6
 
7
- VERSION = "7.671.1"
7
+ VERSION = "7.680.1"
8
8
 
9
9
  REPO_NAME = "bluer-ugv"
10
10
 
bluer_ugv/config.env CHANGED
@@ -31,4 +31,9 @@ BLUER_UGV_ULTRASONIC_SENSOR_LOG=0
31
31
 
32
32
  RANGIN_VIDEO_LIST_OBJECT=rangin-video-list-1
33
33
 
34
- BLUER_UGV_RELEASE_2=release-two-2025-12-01-12-50-03-1hyrts
34
+ BLUER_UGV_RELEASE_2=release-two-2025-12-01-12-50-03-1hyrts
35
+
36
+ BLUER_UGV_AUDIO_LANGUAGE=fa
37
+ BLUER_UGV_AUDIO_CHANNELS=1
38
+ BLUER_UGV_AUDIO_RATE=48000
39
+ BLUER_UGV_AUDIO_LENGTH=30
bluer_ugv/env.py CHANGED
@@ -4,18 +4,30 @@ from bluer_options.env import load_config, load_env, get_env
4
4
  load_env(__name__)
5
5
  load_config(__name__)
6
6
 
7
+ BLUER_UGV_MOUSEPAD_ENABLED = get_env(
8
+ "BLUER_UGV_MOUSEPAD_ENABLED",
9
+ 0,
10
+ )
7
11
 
8
12
  BLUER_UGV_BEAST_MODEL = get_env(
9
13
  "BLUER_UGV_BEAST_MODEL",
10
14
  )
11
15
 
16
+ BLUER_UGV_CAMERA_ACTION_PERIOD = get_env(
17
+ "BLUER_UGV_CAMERA_ACTION_PERIOD",
18
+ 1.5,
19
+ )
12
20
  BLUER_UGV_CAMERA_TRAINING_PERIOD = get_env(
13
21
  "BLUER_UGV_CAMERA_TRAINING_PERIOD",
14
22
  3.0,
15
23
  )
16
- BLUER_UGV_CAMERA_ACTION_PERIOD = get_env(
17
- "BLUER_UGV_CAMERA_ACTION_PERIOD",
18
- 1.5,
24
+
25
+ BLUER_UGV_SWALLOW_NAVIGATION_DATASET_LIST = get_env(
26
+ "BLUER_UGV_SWALLOW_NAVIGATION_DATASET_LIST"
27
+ )
28
+
29
+ BLUER_UGV_SWALLOW_NAVIGATION_MODEL = get_env(
30
+ "BLUER_UGV_SWALLOW_NAVIGATION_MODEL",
19
31
  )
20
32
 
21
33
  BLUER_UGV_SWALLOW_STEERING_SETPOINT = get_env(
@@ -28,38 +40,25 @@ BLUER_UGV_SWALLOW_STEERING_YOLO_EXPIRY = get_env(
28
40
  0.1,
29
41
  )
30
42
 
31
- BLUER_UGV_MOUSEPAD_ENABLED = get_env(
32
- "BLUER_UGV_MOUSEPAD_ENABLED",
33
- 0,
34
- )
35
-
36
- BLUER_UGV_SWALLOW_NAVIGATION_DATASET_LIST = get_env(
37
- "BLUER_UGV_SWALLOW_NAVIGATION_DATASET_LIST"
38
- )
39
-
40
- BLUER_UGV_SWALLOW_NAVIGATION_MODEL = get_env(
41
- "BLUER_UGV_SWALLOW_NAVIGATION_MODEL",
43
+ BLUER_UGV_SWALLOW_YOLO_DATASET_LIST = get_env(
44
+ "BLUER_UGV_SWALLOW_YOLO_DATASET_LIST",
42
45
  )
43
46
 
44
47
  BLUER_UGV_SWALLOW_YOLO_MODEL = get_env(
45
48
  "BLUER_UGV_SWALLOW_YOLO_MODEL",
46
49
  )
47
50
 
48
- BLUER_UGV_SWALLOW_YOLO_DATASET_LIST = get_env(
49
- "BLUER_UGV_SWALLOW_YOLO_DATASET_LIST",
50
- )
51
-
52
- BLUER_UGV_ULTRASONIC_SENSOR_TEST_OBJECT = get_env(
53
- "BLUER_UGV_ULTRASONIC_SENSOR_TEST_OBJECT"
51
+ BLUER_UGV_ULTRASONIC_SENSOR_DANGER_THRESHOLD = get_env(
52
+ "BLUER_UGV_ULTRASONIC_SENSOR_DANGER_THRESHOLD",
53
+ 500.0,
54
54
  )
55
-
56
55
  BLUER_UGV_ULTRASONIC_SENSOR_WARNING_THRESHOLD = get_env(
57
56
  "BLUER_UGV_ULTRASONIC_SENSOR_WARNING_THRESHOLD",
58
57
  800.0,
59
58
  )
60
- BLUER_UGV_ULTRASONIC_SENSOR_DANGER_THRESHOLD = get_env(
61
- "BLUER_UGV_ULTRASONIC_SENSOR_DANGER_THRESHOLD",
62
- 500.0,
59
+
60
+ BLUER_UGV_ULTRASONIC_SENSOR_TEST_OBJECT = get_env(
61
+ "BLUER_UGV_ULTRASONIC_SENSOR_TEST_OBJECT"
63
62
  )
64
63
 
65
64
  BLUER_UGV_ULTRASONIC_SENSOR_ENABLED = get_env(
@@ -82,6 +81,27 @@ BLUER_UGV_ULTRASONIC_SENSOR_LOG = get_env(
82
81
  1,
83
82
  )
84
83
 
85
- RANGIN_VIDEO_LIST_OBJECT = get_env("RANGIN_VIDEO_LIST_OBJECT")
84
+ RANGIN_VIDEO_LIST_OBJECT = get_env(
85
+ "RANGIN_VIDEO_LIST_OBJECT",
86
+ )
86
87
 
87
- BLUER_UGV_RELEASE_2 = get_env("BLUER_UGV_RELEASE_2")
88
+ BLUER_UGV_RELEASE_2 = get_env(
89
+ "BLUER_UGV_RELEASE_2",
90
+ )
91
+
92
+ BLUER_UGV_AUDIO_LANGUAGE = get_env(
93
+ "BLUER_UGV_AUDIO_LANGUAGE",
94
+ "fa",
95
+ )
96
+ BLUER_UGV_AUDIO_CHANNELS = get_env(
97
+ "BLUER_UGV_AUDIO_CHANNELS",
98
+ 1,
99
+ )
100
+ BLUER_UGV_AUDIO_RATE = get_env(
101
+ "BLUER_UGV_AUDIO_RATE",
102
+ 48000,
103
+ )
104
+ BLUER_UGV_AUDIO_LENGTH = get_env(
105
+ "BLUER_UGV_AUDIO_LENGTH",
106
+ 30,
107
+ )
@@ -77,6 +77,7 @@ class VideoEngine(Enum):
77
77
  "cvlc",
78
78
  "--fullscreen",
79
79
  "--no-video-title-show",
80
+ "--no-audio-capture",
80
81
  "--video-on-top",
81
82
  "--no-osd",
82
83
  "--loop" if loop else "",
@@ -29,7 +29,7 @@ from bluer_ugv.swallow.session.classical.screen.classes import ClassicalScreen
29
29
  from bluer_ugv.swallow.session.classical.ultrasonic_sensor.classes import (
30
30
  ClassicalUltrasonicSensor,
31
31
  )
32
- from bluer_ugv.swallow.session.classical.audio import ClassicalAudio
32
+ from bluer_ugv.swallow.session.classical.audio.classes import ClassicalAudio
33
33
  from bluer_ugv.env import BLUER_UGV_MOUSEPAD_ENABLED
34
34
  from bluer_ugv.logger import logger
35
35
 
@@ -45,7 +45,9 @@ class ClassicalSession:
45
45
 
46
46
  self.leds = ClassicalLeds()
47
47
 
48
- self.audio = ClassicalAudio()
48
+ self.audio = ClassicalAudio(
49
+ leds=self.leds,
50
+ )
49
51
 
50
52
  self.setpoint = ClassicalSetPoint(
51
53
  leds=self.leds,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_ugv
3
- Version: 7.671.1
3
+ Version: 7.680.1
4
4
  Summary: 🐬 AI x UGV.
5
5
  Home-page: https://github.com/kamangir/bluer-ugv
6
6
  Author: Arash Abadpour (Kamangir)
@@ -12,6 +12,7 @@ Classifier: Operating System :: OS Independent
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
14
  Requires-Dist: bluer_ai
15
+ Requires-Dist: bluer_agent
15
16
  Requires-Dist: bluer_algo
16
17
  Requires-Dist: bluer_sbc
17
18
  Requires-Dist: keyboard
@@ -65,7 +66,7 @@ pip install bluer_ugv
65
66
 
66
67
  [![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)
67
68
 
68
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.671.1`](https://github.com/kamangir/bluer-ugv).
69
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🐬 [`bluer_ugv-7.680.1`](https://github.com/kamangir/bluer-ugv).
69
70
 
70
71
 
71
72
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -1,7 +1,7 @@
1
- bluer_ugv/__init__.py,sha256=4ja1M5mZgmOGV8HyACZ99j2pOYryKeMm6v9c_egv_XE,288
1
+ bluer_ugv/__init__.py,sha256=5qvv35UgoPOS_J8l9turyHWoRql9IEcp5AD2onDsOgQ,288
2
2
  bluer_ugv/__main__.py,sha256=77TquqyMca7qHk0XtCixGVyzfW3_9ywnl5oXEPERlls,374
3
- bluer_ugv/config.env,sha256=I718Cfy1GaGqVI80vb7iYsoJ0P7SKLW8USaBYb2sub4,1055
4
- bluer_ugv/env.py,sha256=oEJiyKf1cCJ9kgZqgwnWemT0U_cO2RmCN3MRSS2vitY,1875
3
+ bluer_ugv/config.env,sha256=TODRtdZqUAYbVudsJgwu24IIJzOdd78FkYB59xjQNSo,1164
4
+ bluer_ugv/env.py,sha256=f5Wb4Fb6136bZBkUkZJGxnwtA9NIGyORZCsjV0I1hTg,2193
5
5
  bluer_ugv/host.py,sha256=DpdJCvBpUfP9LkZgcH4BcdLGD-WZUvbTsjvMfPtS8uY,292
6
6
  bluer_ugv/logger.py,sha256=faY6GL6xfZAzlZ1aJ-MEHuPRJZNx8PYS4jMyY3xuxMw,98
7
7
  bluer_ugv/sample.env,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -112,7 +112,7 @@ bluer_ugv/README/swallow/digital/design/mechanical.py,sha256=OwgMrFIpRA-RR9CwurX
112
112
  bluer_ugv/README/swallow/digital/design/parts.py,sha256=R_CePkG5zF3qn1X4hvQyd8Iunc0u6yfWXyJJZi3fWBw,549
113
113
  bluer_ugv/README/swallow/digital/design/ultrasonic_sensor.py,sha256=VefIdTUXnsxVj3rmjsguV7N2BD9tPRiiaHjjRl84QUM,1517
114
114
  bluer_ugv/README/ugvs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
- bluer_ugv/README/ugvs/db.py,sha256=TnHRjwXPmr9_-biF7EYgX717dtkDBABpDNRuU_DNZDM,1891
115
+ bluer_ugv/README/ugvs/db.py,sha256=_8e-WwPcu30DwwE7lRL0vrMj0Sc246J5aI0GaXYYCOY,2062
116
116
  bluer_ugv/README/ugvs/docs.py,sha256=ZtX6abCe1PEIhAWXenH6jNqXcYzbn7QuK8m0LlQS17E,1952
117
117
  bluer_ugv/README/ugvs/comparison/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
118
  bluer_ugv/README/ugvs/comparison/build.py,sha256=Dj86jYV0gGHZQrTRH0wZ_Q8eh3yREBx5bgQ1Sw2bahA,4634
@@ -176,13 +176,12 @@ bluer_ugv/swallow/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
176
176
  bluer_ugv/swallow/session/__main__.py,sha256=QFOnflCI6tB_qoG0S4Dpy-L0pW20tFffPPOb96LtypM,636
177
177
  bluer_ugv/swallow/session/functions.py,sha256=Jfv7Ab6TEhZMtVv348imNg7JVgPNezFcuovq5r65rAo,666
178
178
  bluer_ugv/swallow/session/classical/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
179
- bluer_ugv/swallow/session/classical/audio.py,sha256=O7TKiOWEmHBDIJ97Q6C9XcKL7JBLXRwTZz-EeOrk7TI,984
180
179
  bluer_ugv/swallow/session/classical/leds.py,sha256=ElhE08rm-KLbQ59lJzStLWeNsfoO7tV2fPBMBXCKX_E,2241
181
180
  bluer_ugv/swallow/session/classical/mode.py,sha256=6rFe1IIpfijuI7Xd-wcGKhYQ7EdQxG4mYGVliTjS118,117
182
181
  bluer_ugv/swallow/session/classical/mousepad.py,sha256=LI7yvmtrZZaGUgPGpxNU7zcPkW8D5ykHlY_O-4H2STs,1871
183
182
  bluer_ugv/swallow/session/classical/position.py,sha256=gNeNzNpUG8zkDrcwibxaYStPNKUN1_DV5RjHu_pHMIg,913
184
183
  bluer_ugv/swallow/session/classical/push_button.py,sha256=s8sPart_dECjLK-gfsJi0UorRYcFYf3ofLqjmG8PoA8,2397
185
- bluer_ugv/swallow/session/classical/session.py,sha256=iQRBOUhqQVRdGqE1vZVkrdQhGkSPOk6aDjvRJ70r-pM,5992
184
+ bluer_ugv/swallow/session/classical/session.py,sha256=TqOcVzqVkGwuv2VKX6jPbG_K2yKO5JhxDXvjjghktY8,6037
186
185
  bluer_ugv/swallow/session/classical/camera/__init__.py,sha256=2GchuT19_Ns0uYRS5aUMz4pBwbK3y5XoFxoAlAnJKh8,464
187
186
  bluer_ugv/swallow/session/classical/camera/generic.py,sha256=tW7bQMzmBi9MV28cTlKlDhFdtnB-9mkpBzjaWzEJNec,1220
188
187
  bluer_ugv/swallow/session/classical/camera/navigation.py,sha256=HoeTlifGEfnedb6o8P-O0TcP1bNDRJ0M7vWupQh1pL4,6790
@@ -204,7 +203,7 @@ bluer_ugv/swallow/session/classical/screen/__init__.py,sha256=47DEQpj8HBSa-_TImW
204
203
  bluer_ugv/swallow/session/classical/screen/classes.py,sha256=EzMJOcI5b153pHYAzTeNKU82CHc9AKyNS5ZfudoBvTo,1311
205
204
  bluer_ugv/swallow/session/classical/screen/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
205
  bluer_ugv/swallow/session/classical/screen/video/__main__.py,sha256=2uyKoxnZ9LwYWlEP_KDEyvIrwRL31SjK7I-xvM-eZpI,2190
207
- bluer_ugv/swallow/session/classical/screen/video/engine.py,sha256=-P_VSdqBjP2KBooMzcc-izWP-GMfl4q07t4Fyc6CQH4,3752
206
+ bluer_ugv/swallow/session/classical/screen/video/engine.py,sha256=XDKGcR2SQyFM5FSXCXoyVWvYjanM-9OuGs-lQoCRzo0,3794
208
207
  bluer_ugv/swallow/session/classical/screen/video/player.py,sha256=XLXYVHqseZKKD-CmyW2NXzuGarf91BJGSNP7t1nMJzM,3353
209
208
  bluer_ugv/swallow/session/classical/screen/video/playlist.py,sha256=OAqPz_eOlBdWKlYDmqtD3FaO9duAbA94kr02jSbSFIo,2934
210
209
  bluer_ugv/swallow/session/classical/setpoint/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -221,8 +220,8 @@ bluer_ugv/swallow/session/classical/ultrasonic_sensor/pack.py,sha256=bVcG8V0P6Sl
221
220
  bluer_ugv/swallow/session/classical/ultrasonic_sensor/review.py,sha256=_iQmec2VSq-ORkTVpXSNJg08hrSz2M1O8LzNZEtoT9U,959
222
221
  bluer_ugv/swallow/session/classical/ultrasonic_sensor/sensor.py,sha256=En-J8BRTiR8k9p2CBbW0cOUuw8nctD5DOXDm5uhCNO4,3987
223
222
  bluer_ugv/swallow/session/classical/ultrasonic_sensor/testing.py,sha256=yj2MY_Jo1FzeXnR_JoFAXsb9eHEVhicDiHEsUa8z03U,1525
224
- bluer_ugv-7.671.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
225
- bluer_ugv-7.671.1.dist-info/METADATA,sha256=Cgir3dAauQVkH_LmkURwr1fypq4QoMEO-sroimgWFfg,5677
226
- bluer_ugv-7.671.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
227
- bluer_ugv-7.671.1.dist-info/top_level.txt,sha256=_MlDhFvIPpher9Zs7xyJTHgO2xJJTbfR1dzncz3LQnk,10
228
- bluer_ugv-7.671.1.dist-info/RECORD,,
223
+ bluer_ugv-7.680.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
224
+ bluer_ugv-7.680.1.dist-info/METADATA,sha256=UQBXSt0LKzeLjxlKnGQ1KjnBXgyab2xmgkft64xyRVY,5704
225
+ bluer_ugv-7.680.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
226
+ bluer_ugv-7.680.1.dist-info/top_level.txt,sha256=_MlDhFvIPpher9Zs7xyJTHgO2xJJTbfR1dzncz3LQnk,10
227
+ bluer_ugv-7.680.1.dist-info/RECORD,,
@@ -1,45 +0,0 @@
1
- import threading
2
- import time
3
-
4
-
5
- from bluer_sbc.env import BLUER_SBC_AUDIO_ENABLED
6
-
7
- from bluer_ugv.logger import logger
8
-
9
-
10
- class ClassicalAudio:
11
- def __init__(
12
- self,
13
- ):
14
- self.enabled = BLUER_SBC_AUDIO_ENABLED == 1
15
- logger.info(
16
- "{}: {}".format(
17
- self.__class__.__name__,
18
- ("enabled" if self.enabled else "disabled"),
19
- )
20
- )
21
-
22
- self.running = False
23
-
24
- if not self.enabled:
25
- return
26
-
27
- self.running = True
28
- self.thread = threading.Thread(target=self.loop, daemon=True)
29
- self.thread.start()
30
-
31
- def stop(self):
32
- if not self.enabled:
33
- return
34
-
35
- self.running = False
36
- self.thread.join()
37
-
38
- logger.info(f"{self.__class__.__name__}.stopped.")
39
-
40
- def loop(self):
41
- logger.info(f"{self.__class__.__name__}.loop started.")
42
-
43
- while self.running:
44
- time.sleep(5)
45
- logger.info("audio loop 🪄")