bluer-ugv 7.262.1__py3-none-any.whl → 7.291.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.
Files changed (34) hide show
  1. bluer_ugv/README/build.py +32 -26
  2. bluer_ugv/README/releases.py +8 -0
  3. bluer_ugv/README/ugvs/comparison/build.py +135 -0
  4. bluer_ugv/README/ugvs/comparison/features/DYI.py +8 -0
  5. bluer_ugv/README/ugvs/comparison/features/__init__.py +0 -0
  6. bluer_ugv/README/ugvs/comparison/features/classes.py +138 -0
  7. bluer_ugv/README/ugvs/comparison/features/concealment.py +8 -0
  8. bluer_ugv/README/ugvs/comparison/features/control.py +30 -0
  9. bluer_ugv/README/ugvs/comparison/features/cost.py +30 -0
  10. bluer_ugv/README/ugvs/comparison/features/db.py +36 -0
  11. bluer_ugv/README/ugvs/comparison/features/payload.py +21 -0
  12. bluer_ugv/README/ugvs/comparison/features/ps.py +8 -0
  13. bluer_ugv/README/ugvs/comparison/features/range.py +14 -0
  14. bluer_ugv/README/ugvs/comparison/features/sanction_proof.py +8 -0
  15. bluer_ugv/README/ugvs/comparison/features/size.py +32 -0
  16. bluer_ugv/README/ugvs/comparison/features/speed.py +10 -0
  17. bluer_ugv/README/ugvs/comparison/features/swarm.py +8 -0
  18. bluer_ugv/README/ugvs/comparison/features/uv_delivery.py +8 -0
  19. bluer_ugv/README/ugvs/comparison/references/__init__.py +1 -0
  20. bluer_ugv/README/ugvs/comparison/references/classes.py +27 -0
  21. bluer_ugv/README/ugvs/comparison/references/db.py +344 -0
  22. bluer_ugv/README/ugvs/comparison/ugvs/__init__.py +0 -0
  23. bluer_ugv/README/ugvs/comparison/ugvs/classes.py +118 -0
  24. bluer_ugv/README/ugvs/comparison/ugvs/db.py +411 -0
  25. bluer_ugv/__init__.py +1 -1
  26. bluer_ugv/assets/comparison.html +33 -0
  27. {bluer_ugv-7.262.1.dist-info → bluer_ugv-7.291.1.dist-info}/METADATA +2 -2
  28. {bluer_ugv-7.262.1.dist-info → bluer_ugv-7.291.1.dist-info}/RECORD +31 -10
  29. bluer_ugv/README/ugvs/comparison/db.py +0 -15
  30. bluer_ugv/README/ugvs/comparison/features.py +0 -55
  31. bluer_ugv/README/ugvs/comparison/ugvs.py +0 -43
  32. {bluer_ugv-7.262.1.dist-info → bluer_ugv-7.291.1.dist-info}/WHEEL +0 -0
  33. {bluer_ugv-7.262.1.dist-info → bluer_ugv-7.291.1.dist-info}/licenses/LICENSE +0 -0
  34. {bluer_ugv-7.262.1.dist-info → bluer_ugv-7.291.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,344 @@
1
+ from bluer_ugv.README.ugvs.comparison.references.classes import List_of_References
2
+
3
+ list_of_references = List_of_References()
4
+
5
+ list_of_references.add(
6
+ title="ربات موشک انداز نذیر",
7
+ url="https://fa.wikipedia.org/wiki/%D9%86%D8%B0%DB%8C%D8%B1_(%D8%B1%D8%A8%D8%A7%D8%AA_%D9%85%D9%88%D8%B4%DA%A9%E2%80%8C%D8%A7%D9%86%D8%AF%D8%A7%D8%B2)",
8
+ list_of_ugvs=[
9
+ "nazir",
10
+ ],
11
+ is_in_farsi=True,
12
+ )
13
+
14
+ list_of_references.add(
15
+ title="ربات ایرانی که تانک‌های دشمن را شکار می‌کند",
16
+ url="https://www.mashreghnews.ir/news/1746417/%D8%B1%D8%A8%D8%A7%D8%AA-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86%DB%8C-%DA%A9%D9%87-%D8%AA%D8%A7%D9%86%DA%A9-%D9%87%D8%A7%DB%8C-%D8%AF%D8%B4%D9%85%D9%86-%D8%B1%D8%A7-%D8%B4%DA%A9%D8%A7%D8%B1-%D9%85%DB%8C-%DA%A9%D9%86%D8%AF-%D9%81%DB%8C%D9%84%D9%85",
17
+ list_of_ugvs=[
18
+ "heydar",
19
+ ],
20
+ is_in_farsi=True,
21
+ )
22
+
23
+ list_of_references.add(
24
+ title="ربات‌هایی که بلای جان تانک‌های دشمن می‌شوند",
25
+ url="https://farsnews.ir/M_r7726/1738414889748074000/%D8%B1%D8%A8%D8%A7%D8%AA%D9%87%D8%A7%DB%8C%DB%8C-%DA%A9%D9%87-%D8%A8%D9%84%D8%A7%DB%8C-%D8%AC%D8%A7%D9%86-%D8%AA%D8%A7%D9%86%DA%A9%D9%87%D8%A7%DB%8C-%D8%AF%D8%B4%D9%85%D9%86-%D9%85%DB%8C%D8%B4%D9%88%D9%86%D8%AF",
26
+ list_of_ugvs=[
27
+ "nazir",
28
+ "heydar",
29
+ "karakal",
30
+ ],
31
+ is_in_farsi=True,
32
+ )
33
+
34
+
35
+ list_of_references.add(
36
+ title="سپاه با لشکری از «قاسم» و «یونس» به جمع ارتش‌های رباتیک جهان پیوست",
37
+ url="https://www.mashreghnews.ir/news/1275493/%D8%B3%D9%BE%D8%A7%D9%87-%D8%A8%D8%A7-%D9%84%D8%B4%DA%A9%D8%B1%DB%8C-%D8%A7%D8%B2-%D9%82%D8%A7%D8%B3%D9%85-%D9%88-%DB%8C%D9%88%D9%86%D8%B3-%D8%A8%D9%87-%D8%AC%D9%85%D8%B9-%D8%A7%D8%B1%D8%AA%D8%B4-%D9%87%D8%A7%DB%8C-%D8%B1%D8%A8%D8%A7%D8%AA%DB%8C%DA%A9-%D8%AC%D9%87%D8%A7%D9%86",
38
+ list_of_ugvs=[
39
+ "qasem",
40
+ "raad1",
41
+ ],
42
+ is_in_farsi=True,
43
+ )
44
+
45
+ list_of_references.add(
46
+ title="ربات‌های جنگی در ایران عملیاتی شدند",
47
+ url="https://snn.ir/fa/news/1249403/%D8%B1%D8%A8%D8%A7%D8%AA%E2%80%8C%D9%87%D8%A7%DB%8C-%D8%AC%D9%86%DA%AF%DB%8C-%D8%AF%D8%B1-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86-%D8%B9%D9%85%D9%84%DB%8C%D8%A7%D8%AA%DB%8C-%D8%B4%D8%AF%D9%86%D8%AF-%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%DB%B5-%D8%B1%D8%A8%D8%A7%D8%AA-%D8%AC%D9%86%DA%AF%DB%8C-%D8%B3%D8%A7%D8%AE%D8%AA-%D8%A7%DB%8C%D8%B1%D8%A7%D9%86",
48
+ list_of_ugvs=[
49
+ "karakal",
50
+ "nazir",
51
+ "qasem",
52
+ "heydar",
53
+ "sepah",
54
+ ],
55
+ is_in_farsi=True,
56
+ )
57
+
58
+ list_of_references.add(
59
+ title="با این سلاح جدید ایرانی بیشتر آشنا شوید",
60
+ url="https://www.hamshahrionline.ir/news/978710/%D9%87%D9%85%D9%87-%DA%86%DB%8C%D8%B2-%D8%AF%D8%B1%D8%A8%D8%A7%D8%B1%D9%87-%D8%A2%D8%B1%DB%8C%D8%A7-%D8%A7%D8%B2-%D8%AA%D8%B3%D9%84%DB%8C%D8%AD-%D8%A8%D9%87-%D9%85%D8%B3%D9%84%D8%B3%D9%84-%D8%AA%D8%A7-%D9%82%D8%AF%D8%B1%D8%AA-%D9%86%D8%A8%D8%B1%D8%AF-%D9%87%D9%88%D8%B4%D9%85%D9%86%D8%AF",
61
+ list_of_ugvs=[
62
+ "arya",
63
+ ],
64
+ is_in_farsi=True,
65
+ )
66
+
67
+ list_of_references.add(
68
+ title="رونمایی از ربات جنگنده آریا ",
69
+ url="https://www.ilna.ir/%D8%A8%D8%AE%D8%B4-%D8%B3%D8%A7%DB%8C%D8%B1-%D8%B1%D8%B3%D8%A7%D9%86%D9%87-%D9%87%D8%A7-10/1686715-%D8%B1%D9%88%D9%86%D9%85%D8%A7%DB%8C%DB%8C-%D8%A7%D8%B2-%D8%B1%D8%A8%D8%A7%D8%AA-%D8%AC%D9%86%DA%AF%D9%86%D8%AF%D9%87-%D8%A2%D8%B1%DB%8C%D8%A7-%D9%81%DB%8C%D9%84%D9%85",
70
+ list_of_ugvs=[
71
+ "arya",
72
+ ],
73
+ is_in_farsi=True,
74
+ )
75
+
76
+ list_of_references.add(
77
+ title="Iran Aria combat robot",
78
+ url="https://en.wikipedia.org/wiki/Iran_Aria_combat_robot",
79
+ list_of_ugvs=[
80
+ "arya",
81
+ ],
82
+ )
83
+
84
+ list_of_references.add(
85
+ title="Iran Heydar combat robot",
86
+ url="https://en.wikipedia.org/wiki/Iran_Heydar_combat_robot",
87
+ list_of_ugvs=[
88
+ "heydar",
89
+ ],
90
+ )
91
+
92
+ list_of_references.add(
93
+ title="THeMIS",
94
+ url="https://en.wikipedia.org/wiki/THeMIS",
95
+ list_of_ugvs=[
96
+ "themis_9",
97
+ ],
98
+ )
99
+
100
+ list_of_references.add(
101
+ title="Type-X (unmanned ground vehicle)",
102
+ url="https://en.wikipedia.org/wiki/Type-X_(unmanned_ground_vehicle)",
103
+ list_of_ugvs=[
104
+ "type_x",
105
+ ],
106
+ )
107
+
108
+ list_of_references.add(
109
+ title="Uran-6",
110
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/uran-6-ugv-mrtk-r",
111
+ list_of_ugvs=[
112
+ "uran_6",
113
+ ],
114
+ )
115
+
116
+ list_of_references.add(
117
+ title="Uran-9 UGV",
118
+ url="https://en.wikipedia.org/wiki/Uran-9",
119
+ list_of_ugvs=[
120
+ "uran_9",
121
+ ],
122
+ )
123
+
124
+ list_of_references.add(
125
+ title="Uran-9",
126
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/uran-9-ugcv-ugv-unmanned-ground-combat-vehicle-technical-data-sheet-specifications-pictures-video-10910163",
127
+ list_of_ugvs=[
128
+ "uran_6",
129
+ ],
130
+ )
131
+
132
+ list_of_references.add(
133
+ title="Uran-14 MRTK-P",
134
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/uran-14-mrtk-p-unmanned-robotic-mine-clearance-and-firefighting-tracked-vehicle-data-sheet-specifications-pictures-video11201166",
135
+ list_of_ugvs=[
136
+ "uran_14",
137
+ ],
138
+ )
139
+
140
+ list_of_references.add(
141
+ title="Centaur Unmanned Ground Vehicle",
142
+ url="https://www.army-technology.com/projects/centaur-unmanned-ground-vehicle/",
143
+ list_of_ugvs=[
144
+ "centaur",
145
+ ],
146
+ )
147
+
148
+ list_of_references.add(
149
+ title="XM1219 armed robotic vehicle",
150
+ url="https://en.wikipedia.org/wiki/XM1219_armed_robotic_vehicle",
151
+ list_of_ugvs=[
152
+ "xm1219",
153
+ ],
154
+ )
155
+
156
+
157
+ list_of_references.add(
158
+ title="Foster-Miller TALON",
159
+ url="https://en.wikipedia.org/wiki/Foster-Miller_TALON",
160
+ list_of_ugvs=[
161
+ "talon",
162
+ ],
163
+ )
164
+
165
+ list_of_references.add(
166
+ title="Gladiator tactical unmanned ground vehicle",
167
+ url="https://en.wikipedia.org/wiki/Gladiator_tactical_unmanned_ground_vehicle",
168
+ list_of_ugvs=[
169
+ "gladiator",
170
+ ],
171
+ )
172
+
173
+
174
+ list_of_references.add(
175
+ title="Designation: UKAP",
176
+ url="https://www.army-guide.com/eng/product5766.html",
177
+ list_of_ugvs=[
178
+ "ukap",
179
+ ],
180
+ )
181
+
182
+ list_of_references.add(
183
+ title="Ripsaw (vehicle)",
184
+ url="https://en.wikipedia.org/wiki/Ripsaw_(vehicle)",
185
+ list_of_ugvs=[
186
+ "ripsaw",
187
+ ],
188
+ )
189
+
190
+ list_of_references.add(
191
+ title="tEODor Evo",
192
+ url="https://www.avinc.com/ugv/teodor-evo",
193
+ list_of_ugvs=[
194
+ "teodor",
195
+ ],
196
+ )
197
+
198
+ list_of_references.add(
199
+ title="Black Knight (vehicle)",
200
+ url="https://en.wikipedia.org/wiki/Black_Knight_(vehicle)",
201
+ list_of_ugvs=[
202
+ "black_knight",
203
+ ],
204
+ )
205
+
206
+ list_of_references.add(
207
+ title="BAE Systems Black Knight Tank - Unmanned Combat Vehicle",
208
+ url="https://militarymachine.com/black-knight-tank/",
209
+ list_of_ugvs=[
210
+ "black_knight",
211
+ ],
212
+ )
213
+
214
+ list_of_references.add(
215
+ title="Miloš (unmanned ground vehicle)",
216
+ url="https://en.wikipedia.org/wiki/Milo%C5%A1_(unmanned_ground_vehicle)",
217
+ list_of_ugvs=[
218
+ "milica",
219
+ ],
220
+ )
221
+
222
+ list_of_references.add(
223
+ title="Milca UGV",
224
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/milca-serbia",
225
+ list_of_ugvs=[
226
+ "milica",
227
+ ],
228
+ )
229
+
230
+ list_of_references.add(
231
+ title="Taifun-M anti-commando vehicle fully operational in Russian Strategic Missile Forces TASS 11601171.",
232
+ url="https://www.armyrecognition.com/archives/archives-land-defense/2017/taifun-m-anti-commando-vehicle-fully-operational-in-russian-strategic-missile-forces-tass-11601171",
233
+ list_of_ugvs=[
234
+ "taifun_m",
235
+ ],
236
+ )
237
+
238
+ list_of_references.add(
239
+ title="Jackal: Unmanned Ground Vehicle",
240
+ url="https://clearpathrobotics.com/jackal-small-unmanned-ground-vehicle/",
241
+ list_of_ugvs=[
242
+ "jackal",
243
+ ],
244
+ )
245
+
246
+
247
+ list_of_references.add(
248
+ title="AvantGuard UGCV",
249
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/avantguard-israel-uk",
250
+ list_of_ugvs=[
251
+ "avantguard",
252
+ ],
253
+ )
254
+
255
+
256
+ list_of_references.add(
257
+ title="AvantGuard",
258
+ url="https://en.wikipedia.org/wiki/AvantGuard",
259
+ list_of_ugvs=[
260
+ "avantguard",
261
+ ],
262
+ )
263
+
264
+
265
+ list_of_references.add(
266
+ title="SIM RACAR UGV",
267
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/sim-racar-lambda-germany-uk",
268
+ list_of_ugvs=[
269
+ "sr-lambda",
270
+ ],
271
+ )
272
+
273
+
274
+ list_of_references.add(
275
+ title="SIM-RACAR-Lambda",
276
+ url="https://www.army-guide.com/eng/product5740.html",
277
+ list_of_ugvs=[
278
+ "sr-lambda",
279
+ ],
280
+ )
281
+
282
+ list_of_references.add(
283
+ title="Sharp Claw 2",
284
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/sharp-claw-2-ugv-6x6-unmanned-ground-vehicle-technical-data-sheet-specifications-pictures-video-11412165",
285
+ list_of_ugvs=[
286
+ "sharp_claw_2",
287
+ ],
288
+ )
289
+
290
+ list_of_references.add(
291
+ title="Sharp Claw 1",
292
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/sharp-claw-1-ugv-unmanned-ground-vehicle-china-data-fact-sheet",
293
+ list_of_ugvs=[
294
+ "sharp_claw_1",
295
+ ],
296
+ )
297
+
298
+ list_of_references.add(
299
+ title="Robattle",
300
+ url="https://en.wikipedia.org/wiki/Robattle",
301
+ list_of_ugvs=[
302
+ "robattle",
303
+ ],
304
+ )
305
+
306
+
307
+ list_of_references.add(
308
+ title="Guardium",
309
+ url="https://en.wikipedia.org/wiki/Guardium",
310
+ list_of_ugvs=[
311
+ "guardium",
312
+ ],
313
+ )
314
+
315
+
316
+ list_of_references.add(
317
+ title="Guardium UGV",
318
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/guardium-ugv-israel-uk",
319
+ list_of_ugvs=[
320
+ "guardium",
321
+ ],
322
+ )
323
+
324
+ list_of_references.add(
325
+ title="Guardium-LS",
326
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles/guardium-lg-israel-uk",
327
+ list_of_ugvs=[
328
+ "guardium",
329
+ ],
330
+ )
331
+
332
+ list_of_references.add(
333
+ title="Unmanned Ground Vehicles",
334
+ url="https://www.armyrecognition.com/military-products/army/unmanned-systems/unmanned-ground-vehicles",
335
+ )
336
+
337
+
338
+ list_of_references.add(
339
+ title="template",
340
+ url="template",
341
+ list_of_ugvs=[
342
+ "template",
343
+ ],
344
+ )
File without changes
@@ -0,0 +1,118 @@
1
+ from typing import List, Dict, Any, Union
2
+
3
+ from bluer_ugv.README.ugvs.comparison.features.classes import (
4
+ FeatureList,
5
+ Feature_Comparison,
6
+ )
7
+ from bluer_ugv.README.ugvs.comparison.features.db import dict_of_feature_classes
8
+ from bluer_ugv.logger import logger
9
+
10
+
11
+ class UGV:
12
+ def __init__(
13
+ self,
14
+ nickname: str,
15
+ name: str,
16
+ features: Dict[str, Any],
17
+ deficiencies: List[str] = [],
18
+ ):
19
+ self.nickname = nickname
20
+ self.name = name
21
+
22
+ self.feature_list: FeatureList = FeatureList()
23
+
24
+ for feature_name, feature_score in features.items():
25
+ if feature_name not in dict_of_feature_classes:
26
+ logger.error(f"{feature_name}: feature not found.")
27
+ assert False
28
+
29
+ self.feature_list.add(
30
+ dict_of_feature_classes[feature_name](
31
+ score=feature_score,
32
+ )
33
+ )
34
+
35
+ self.deficiencies = deficiencies
36
+
37
+ def compare(
38
+ self,
39
+ ugv: "UGV",
40
+ verbose: bool = False,
41
+ ) -> List[str]:
42
+ similarities: List[str] = []
43
+ differences: List[str] = []
44
+
45
+ for feature in self.feature_list.db:
46
+ comparison, message = feature.compare(
47
+ ugv.feature_list.get(feature.nickname),
48
+ self.name,
49
+ log=verbose,
50
+ )
51
+
52
+ if comparison == Feature_Comparison.SIMILAR:
53
+ similarities.append(message)
54
+ elif comparison == Feature_Comparison.UNKNOWN:
55
+ pass
56
+ else:
57
+ differences.append(message)
58
+
59
+ return (
60
+ [
61
+ '<p dir="rtl" style="text-align:right;">مشابهت: </p>',
62
+ "<ol>",
63
+ ]
64
+ + [
65
+ f'<li dir="rtl" style="text-align:right;">{line}</li>'
66
+ for line in similarities
67
+ ]
68
+ + [
69
+ "</ol>",
70
+ '<p dir="rtl" style="text-align:right;">تفاوت‌ها:</p>',
71
+ "<ol>",
72
+ ]
73
+ + [
74
+ f'<li dir="rtl" style="text-align:right;">{line}</li>'
75
+ for line in differences
76
+ ]
77
+ + [
78
+ "</ol>",
79
+ ]
80
+ )
81
+
82
+ @property
83
+ def description(self) -> List[str]:
84
+ return (
85
+ [
86
+ '<p dir="rtl" style="text-align:right;">{}</p>'.format(self.name),
87
+ "<ol>",
88
+ ]
89
+ + [
90
+ '<li dir="rtl" style="text-align:right;">{}</li>'.format(
91
+ feature.description
92
+ )
93
+ for feature in self.feature_list.db
94
+ ]
95
+ + ["</ol>"]
96
+ )
97
+
98
+
99
+ class List_of_UGVs:
100
+ def __init__(self):
101
+ self.db: List[UGV] = []
102
+
103
+ def add(
104
+ self,
105
+ **kw_args,
106
+ ):
107
+ ugv = UGV(**kw_args)
108
+ self.db.append(ugv)
109
+
110
+ def get(
111
+ self,
112
+ ugv_name: str,
113
+ ) -> Union[UGV, None]:
114
+ for ugv in self.db:
115
+ if ugv_name == ugv.nickname:
116
+ return ugv
117
+
118
+ return None