rosotacom-dev 2.5.dev75__py3-none-any.whl → 2.5.dev77__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.
@@ -169,3 +169,150 @@ profiles:
169
169
  # camera stream - a source-side case. Deliberately unshaped: play the case
170
170
  # bag with `--profile none` to see that the link is not the cause.
171
171
  field-20260817-case6-source-gap: {}
172
+
173
+ # ---- fragment-law tilt (B1): three loss processes, one delay model -------
174
+ # The field fit says message loss follows 1-(1-p)^ceil(size/F) and the field
175
+ # residual is systematic in size: the smallest class loses about half of what
176
+ # the fit predicts and the largest about 2.9x more. The campaign cannot
177
+ # separate an accounting artefact from a property of the link. These three
178
+ # can: the delay model is the drive's own table in all of them, and the only
179
+ # thing that moves is how the loss is distributed over packets.
180
+ #
181
+ # The rate is raised to ~1% per packet in every arm so a 240 s run at 10 Hz
182
+ # resolves the small end; the law's *form* is what is under test, and it does
183
+ # not depend on the level.
184
+
185
+ # A -- independent per packet. The law is exact by construction here, so this
186
+ # arm measures the measurement chain and nothing else.
187
+ tilt-iid:
188
+ uplink:
189
+ delay: 25ms
190
+ jitter: 18ms
191
+ distribution: field-20260817
192
+ distribution_file: dist/field-20260817.dist
193
+ loss: 1%
194
+ downlink: { delay: 7ms, jitter: 5ms }
195
+
196
+ # B -- the drive's own two-state process, scaled to the same mean. Clustering
197
+ # correlates the fragments of one message, so large messages should lose
198
+ # *less* than the independent law predicts -- the opposite sign to the field.
199
+ # p and r are the drive's, so the runs and gaps keep their measured lengths.
200
+ tilt-bursty:
201
+ uplink:
202
+ delay: 25ms
203
+ jitter: 18ms
204
+ distribution: field-20260817
205
+ distribution_file: dist/field-20260817.dist
206
+ loss_gemodel: { p: 0.102%, r: 2.5%, loss_bad: 13.5%, loss_good: 0.49% }
207
+ downlink: { delay: 7ms, jitter: 5ms }
208
+
209
+ # C -- A plus a queue a burst can fill. 4 Mbit/s is above the largest class's
210
+ # mean offered rate (38 kB at 10 Hz is ~3.0 Mbit/s of payload) and below its
211
+ # instantaneous one, so a 38-fragment message meets a queue and a 1-fragment
212
+ # message does not. That is the burst-tilt candidate, isolated.
213
+ tilt-iid-queued:
214
+ uplink:
215
+ rate: 4mbit
216
+ delay: 25ms
217
+ jitter: 18ms
218
+ distribution: field-20260817
219
+ distribution_file: dist/field-20260817.dist
220
+ loss: 1%
221
+ downlink: { delay: 7ms, jitter: 5ms }
222
+
223
+ # B2 -- the boundary of the design rule. Same delay model, two per-fragment
224
+ # rates: the one the rule is applied at, and one twice as bad. The rule says
225
+ # what the size distribution does; it does not say what the link will be.
226
+ tilt-iid-worse:
227
+ uplink:
228
+ delay: 25ms
229
+ jitter: 18ms
230
+ distribution: field-20260817
231
+ distribution_file: dist/field-20260817.dist
232
+ loss: 2%
233
+ downlink: { delay: 7ms, jitter: 5ms }
234
+
235
+ # B4 -- a serialisation constraint tight enough that a burst cannot fit in
236
+ # its own send interval, which is the shape an EN-DC uplink on a TDD carrier
237
+ # would present from above: a small probe survives what a 38-fragment burst
238
+ # does not.
239
+ tilt-iid-tight:
240
+ uplink:
241
+ rate: 1.5mbit
242
+ delay: 25ms
243
+ jitter: 18ms
244
+ distribution: field-20260817
245
+ distribution_file: dist/field-20260817.dist
246
+ loss: 1%
247
+ downlink: { delay: 7ms, jitter: 5ms }
248
+
249
+ # B1-prime -- the two-state process with its chain rescaled per cell.
250
+ #
251
+ # netem advances a Gilbert-Elliott chain once per *packet*, so the fitted p
252
+ # and r describe a process in packets and not in time. At the drive's own
253
+ # 380 fragments/s they mean a bad run of about 105 ms; on a size ladder at a
254
+ # fixed 10 Hz the packet rate is N x 10, so the same p and r stretch the bad
255
+ # run by 380/(N x 10) and every cell meets a different link. Forcing the
256
+ # packet rate constant instead was tried and measured the wrong thing: the
257
+ # pipeline serves messages, not packets, and at 60 messages/s the depth-1 OTA
258
+ # queue overwrites its own backlog -- both loss processes then reported
259
+ # 10.7 % to two digits.
260
+ #
261
+ # So the chain is rescaled instead: p and r are multiplied by 380/(N x 10) in
262
+ # each cell, which leaves the stationary bad fraction at 3.92 % and the mean
263
+ # loss at 1 % while making the bad run 105 ms of wall clock everywhere. The
264
+ # comparison against `tilt-iid` is then a comparison of one thing.
265
+
266
+ bp-frag-one:
267
+ uplink:
268
+ delay: 25ms
269
+ jitter: 18ms
270
+ distribution: field-20260817
271
+ distribution_file: dist/field-20260817.dist
272
+ loss_gemodel: { p: 3.876%, r: 95%, loss_bad: 13.5%, loss_good: 0.49% }
273
+ downlink: { delay: 7ms, jitter: 5ms }
274
+
275
+ bp-frag-two:
276
+ uplink:
277
+ delay: 25ms
278
+ jitter: 18ms
279
+ distribution: field-20260817
280
+ distribution_file: dist/field-20260817.dist
281
+ loss_gemodel: { p: 1.938%, r: 47.5%, loss_bad: 13.5%, loss_good: 0.49% }
282
+ downlink: { delay: 7ms, jitter: 5ms }
283
+
284
+ bp-frag-four:
285
+ uplink:
286
+ delay: 25ms
287
+ jitter: 18ms
288
+ distribution: field-20260817
289
+ distribution_file: dist/field-20260817.dist
290
+ loss_gemodel: { p: 0.969%, r: 23.75%, loss_bad: 13.5%, loss_good: 0.49% }
291
+ downlink: { delay: 7ms, jitter: 5ms }
292
+
293
+ bp-frag-six:
294
+ uplink:
295
+ delay: 25ms
296
+ jitter: 18ms
297
+ distribution: field-20260817
298
+ distribution_file: dist/field-20260817.dist
299
+ loss_gemodel: { p: 0.646%, r: 15.83%, loss_bad: 13.5%, loss_good: 0.49% }
300
+ downlink: { delay: 7ms, jitter: 5ms }
301
+
302
+ bp-frag-twelve:
303
+ uplink:
304
+ delay: 25ms
305
+ jitter: 18ms
306
+ distribution: field-20260817
307
+ distribution_file: dist/field-20260817.dist
308
+ loss_gemodel: { p: 0.323%, r: 7.917%, loss_bad: 13.5%, loss_good: 0.49% }
309
+ downlink: { delay: 7ms, jitter: 5ms }
310
+
311
+ bp-frag-thirtyeight:
312
+ uplink:
313
+ delay: 25ms
314
+ jitter: 18ms
315
+ distribution: field-20260817
316
+ distribution_file: dist/field-20260817.dist
317
+ loss_gemodel: { p: 0.102%, r: 2.5%, loss_bad: 13.5%, loss_good: 0.49% }
318
+ downlink: { delay: 7ms, jitter: 5ms }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rosotacom-dev
3
- Version: 2.5.dev75
3
+ Version: 2.5.dev77
4
4
  Summary: Host CLI for ROS OTA communication sessions.
5
5
  Author: develNor
6
6
  License-Expression: BSD-3-Clause
@@ -31,7 +31,7 @@ rosotacom/resources/examples/.gitignore,sha256=9FFIV42CR379XRSDOC9UdXsfJP8cGACLj
31
31
  rosotacom/resources/examples/README.md,sha256=sKq1r0NubxweJjAvoPDFDQcEk4uBbskHJW6AAfnZy-E,6629
32
32
  rosotacom/resources/examples/__init__.py,sha256=IKLiqdO5jeBX3rMkWyb_Uc3SrQZp5vkJtqoTD_NZ90E,52
33
33
  rosotacom/resources/examples/deployment.example.yaml,sha256=E3HMJhv-Ft5mA6PC8d7yVZz1uwG3OQhCD_MBnhxtvAg,450
34
- rosotacom/resources/examples/profiles.yaml,sha256=NDcDgdvIdI6Hn71mQCCWaqc2LhTpmAdepS7kuu_l1hc,7362
34
+ rosotacom/resources/examples/profiles.yaml,sha256=LdlaJghhXF-KICJ6ujuWNDE26bzfS-2WgDDP8YlvGPI,13136
35
35
  rosotacom/resources/examples/ros2docker.json,sha256=Gd_g1P_OA-_7-nM8-KmTTX2cRUyoNCpaPj9MCgxld3M,2499
36
36
  rosotacom/resources/examples/ros2docker.lyrical.json,sha256=fE5Hlx6O6q7gRyHdFXGdClFyFxN-uxPGICkYbJ42xG4,1775
37
37
  rosotacom/resources/examples/rosotacom.yaml,sha256=lpFnRNJv9kjS3Pd6dJAG1PXF-UP-YbSOK8dNcUe68hY,351
@@ -205,9 +205,9 @@ rosotacom/resources/ws/session/creation/generate_session_files.py,sha256=3Sx4xTS
205
205
  rosotacom/resources/ws/session/creation/run_session.py,sha256=G2hJhrmLp11gm3JZ6_C-zZcqu_reXlE_wmobB7BiCfU,16849
206
206
  rosotacom/resources/ws/session/creation/run_session_in_external_terminal.py,sha256=Ub_5f-ttUUc-rAPrZmg_Op34s8Z4C91hTyEn8fgyt-E,2633
207
207
  rosotacom/resources/ws/session/creation/strip_ansi.py,sha256=vNjpemcq4xHr0VG4x0bZqvgwEBEfOgN-b4PzbrM5nfM,851
208
- rosotacom_dev-2.5.dev75.dist-info/licenses/LICENSE.txt,sha256=FDB3-fao3lqZ94wsJHKAH7U88kAnfvZhZC8Hm5rN__g,1459
209
- rosotacom_dev-2.5.dev75.dist-info/METADATA,sha256=cLNp2U1eq-i_1EDopfNHgojPjInLExP5-4I7957dmS4,58884
210
- rosotacom_dev-2.5.dev75.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
211
- rosotacom_dev-2.5.dev75.dist-info/entry_points.txt,sha256=im11ZWqBbgjQUBz2Ik2RNfMu54wlMwgiVpsBKeI7dCI,49
212
- rosotacom_dev-2.5.dev75.dist-info/top_level.txt,sha256=BZrtQcIVDWn_pQZR3Mlssqy5SaRXHjOa6B-1D9Fy4Ao,10
213
- rosotacom_dev-2.5.dev75.dist-info/RECORD,,
208
+ rosotacom_dev-2.5.dev77.dist-info/licenses/LICENSE.txt,sha256=FDB3-fao3lqZ94wsJHKAH7U88kAnfvZhZC8Hm5rN__g,1459
209
+ rosotacom_dev-2.5.dev77.dist-info/METADATA,sha256=z4J9DpBaWOe8CkIr_PzKl_NoF5sTmfMFsEu9awq4XwE,58884
210
+ rosotacom_dev-2.5.dev77.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
211
+ rosotacom_dev-2.5.dev77.dist-info/entry_points.txt,sha256=im11ZWqBbgjQUBz2Ik2RNfMu54wlMwgiVpsBKeI7dCI,49
212
+ rosotacom_dev-2.5.dev77.dist-info/top_level.txt,sha256=BZrtQcIVDWn_pQZR3Mlssqy5SaRXHjOa6B-1D9Fy4Ao,10
213
+ rosotacom_dev-2.5.dev77.dist-info/RECORD,,