From 35124740f60cafa3d9b5841417fc66934ea99254 Mon Sep 17 00:00:00 2001 From: Jake Read <jakerobertread@gmail.com> Date: Thu, 22 Aug 2024 13:26:45 -0400 Subject: [PATCH] she done --- .../sketchy_machine_motion.cpython-312.pyc | Bin 9443 -> 9264 bytes .../python/modules/sketchy_machine_motion.py | 4 +- .../__pycache__/netrunner.cpython-312.pyc | Bin 9536 -> 11982 bytes .../netrunner_atomics.cpython-312.pyc | Bin 11947 -> 11947 bytes new_shit/python/osap/discovery/netrunner.py | 52 +++++++++++++++++- new_shit/python/sketchy.py | 5 ++ .../svg/__pycache__/svg_tools.cpython-312.pyc | Bin 5610 -> 5610 bytes 7 files changed, 58 insertions(+), 3 deletions(-) diff --git a/new_shit/python/modules/__pycache__/sketchy_machine_motion.cpython-312.pyc b/new_shit/python/modules/__pycache__/sketchy_machine_motion.cpython-312.pyc index c050e9984643295899d81ccd19222b753ca0f7d3..7b0ec9a15f2607c2387b0ee53f37bbd5438c34a2 100644 GIT binary patch delta 266 zcmaFtxxs_?G%qg~0|Ns?N6GQDgpIrhxS7^5Z9dP<$23`&Pn=P4@<LwW$?Jq9l}hA6 zsz5k}b2TG~W?*1sC{c#67#OltCJV9%GjpwGoV;F0iqD*(N7tO8hkY$`Iin``<g0wM zCeP)cqtBX@nx2_=i#@TpGA}tZ{}yX;PHJkwO2#5{1_p*=kg*CymJAFGMZpXV3{_H- z8`woB*9vekvQ6#~IKm>qz{xi`ThPLgm4Q?3#{&+<U&Sg63=B;!imsxJN0b>|1zC=$ zsJn_X9_40q6=pfg!v<mtGrEdyekHh`l`&-UEb%<X(9N6@f4LZgC$lS0VGP+kN7<bb E0M-veuK)l5 delta 395 zcmdns@z|61G%qg~0|Ns?eA4l>n2o##xS5!kH=pO`W8x`M1c`%imeOQF7GY-2)r^xT zN=opQ$b$qyIE8ESWnM)_)yWHag(v?OlvF~J;$F=NQo_K%$bexI55%O&{}ovIqs$q4 z^vxN1IM*_lGivfqZseP#tL~eaoROKAs-Umnl$xHIXQdFHm|2pUm#&bOU!>rilb@Vj ztf!}^P$bU4z%W^gf36mLVsT|&a%TQ5*5aJh)Ph^ANg#bI8H>yr7#NB{E>S45WME(@ z3Z49rUxiV1GMm5=c@YLqz6*TjS2!&0@QL>4cIM7-yv!$eokQ*dhuj?w-pS_#EZjL6 zIOTsl;86YXfJ5<Du^9scLz9b)t3BfpIYw7YmLu{yuJ(*axfxxpS&s6kgV@H5uC^>k wP1rzeYeo=h%jjyq*<5fvD`W8F=VEz`A)CX*|8g;gP7YC;!Wg{yrII@%0DG8cod5s; diff --git a/new_shit/python/modules/sketchy_machine_motion.py b/new_shit/python/modules/sketchy_machine_motion.py index 979c149..f2d4ab2 100644 --- a/new_shit/python/modules/sketchy_machine_motion.py +++ b/new_shit/python/modules/sketchy_machine_motion.py @@ -106,8 +106,8 @@ class SketchyMachineMotion: print_point_transmits = False ), self.queue_planner) - print("Machine / Begin: Waiting for Clocks... ") - await asyncio.sleep(3) + # print("Machine / Begin: Waiting for Clocks... ") + # await asyncio.sleep(3) print("Machine / Begin: Startup MAXL... ") await self._maxl_core.begin() print("Machine / Begin: ... done ") diff --git a/new_shit/python/osap/discovery/__pycache__/netrunner.cpython-312.pyc b/new_shit/python/osap/discovery/__pycache__/netrunner.cpython-312.pyc index 88bfedf68eb77387609d05b1c05334d640bc93d0..2b06e7c3319397c53337764e82055f0607a4b799 100644 GIT binary patch delta 3985 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 delta 1686 zcmX>Xd%%nDG%qg~0|NttOV|E128D@y67@`s3=Gp5QW#Pga~N_NqZk=MY^EHhT;?d| zT$U&nFrPVxHJ2@lEtfrtosl7hC51JIBbPIZ6U=7I;mYNX;s&$Xb9i!jqj+=qqWBmY zQaDmLbNF)wq6BgUqXct>qJ(mVql6h5Qdx@FQdm;Bazt`Pqv}N&8B!UU7~C0BxLX)f zcvdrkoX5bh8bUEdi9uy~TNqOKFl5D{vivO!DFPU>5@2%$TNqM=U~*BCU@_qqh7=Ky z7(d9KD5*+OO|h3C=41y(KSsvM{fyF^k1}3kWD{UuU?}37ypTD8O9aFO5qy)mS=`u^ z!Q9EdtR|DYS(43VL0mZyArB(hK!gGV1H&!m%)F8!B@h>^Lj}ZAgAr1bRauoFMyXBq zW!-FqW{fsSA;=hX6LdimAVO)f5t}j>*k}+pd7_}`<PtU?Mw!V6*=)5n8T~YwicCO? zWf&M3G?{O)6sP8-Aw-Iq85kH86cmb7CTp@QGHOruW|w4C-ki$r#S{e6c8j&32;>1t zkP%`aLL5X$fqcf9npc{eT9jClS_Cru7H3IiL27(nVs7d!_RQk={DRcHB59C97Lb@G zdy&~>MlOA6a0pm2Ffdf{2UixCq~`i27U+R((Vy(i_1*{M7r&K^ZkilLXraLZvKkZv zMIf&hnS;0>gU|!V7$gBAv?jN4>p6l9ECO+pK`{)&(1gbD8RYiq45<uJj42FJOeriW zj4dot%qgrXOf8I2ES1cfY?J?TuVUn%yn@G68Dz{Y=G?>rO{O9<kTsqR3=G8}vp``8 z5-^{{E6!*=S%TMwQF(JH?`|#@Q3eKv$@~(^lg%Zr=&FO%Xn+V!5TON%6@?-%P%!bQ zr<TO$=BJeAq{e6FrR5iiPPUMA%m91X2Bg>yq>8;PwWv5VKd%TJCE$o)ODrfz%}Xh= z1}Or0r^pt>Vh0gUAU(_=Sx`vb;sV)GR01;o7EefKZfbsMiEB|&eo+z6<cE^}W}uX* zDOBVS(#4JJ7H5!Qpx7*O1hGK2++r&#iO)?eC~}&dCgsfrN-jlalebHmuz{mEXYxlW zZN|XOveGOp0(u}#`XIspL>Nvsl#j3X1~F4W1jubgppvPG8^jd^5uh+BiUYC09*G69 zz&-?pXAw9Y!9f@Uk^m<NaIk_x^cHJTera9`IMR!JLGnHz4@u-E7R0Ay7ANPIr507j zPv%$PWdlcI_GBdmWpl8fI7?D<3*vJ!^RkP;ZZ-gEWXvpb0GW~rB62_k*t5AHR^H?q z1qnu#$x{_n8J#xoRyfI256W|(bWtP(Qs4@TVpjCD3{JciAbGU1!5t(9B0ynM%*(*Q z(8BPUiIr9L3ttf<t5Fd+HG|~+G^KBGrzDmnCg&s;7pE2%fwJ-~wvx)pk-DLiH|q-5 zgTs;s<N?9F)RLmoyu8$+_{5U@+|1<SB0i8kpyICxT*iTe9N}niq5~xcNLB+S`y!B~ zXj$zShYci=*cCM}FfcHJGD8~!1H%VqMn*>dy9|o=8Px7G7~N%1zRO@SIb1J;zlxF3 L=o15o1p5R4we(Ke diff --git a/new_shit/python/osap/discovery/__pycache__/netrunner_atomics.cpython-312.pyc b/new_shit/python/osap/discovery/__pycache__/netrunner_atomics.cpython-312.pyc index 34b271659caa5f2882355794d712590f0b51359e..f1cd9586d00161a3f627c4c706ae274c90d31e1d 100644 GIT binary patch delta 20 bcmZ1-yE>NpG%qg~0|Ns?Zp!hE+za#oLVpG= delta 20 bcmZ1-yE>NpG%qg~0|NttOV|F5+za#oLL3Gn diff --git a/new_shit/python/osap/discovery/netrunner.py b/new_shit/python/osap/discovery/netrunner.py index 00f4f12..9c23b01 100644 --- a/new_shit/python/osap/discovery/netrunner.py +++ b/new_shit/python/osap/discovery/netrunner.py @@ -1,8 +1,9 @@ +import asyncio from dataclasses import dataclass from typing import List, TYPE_CHECKING from osap.packets.routes import Route, route_build from ..utils.keys import PacketKeys -from ..utils.time_utils import get_millisecond_timestamp +from ..utils.time_utils import get_millisecond_timestamp, get_microsecond_timestamp from ..utils.random_gen import random_four_byte_write_new, random_four_byte_check_match from .netrunner_atomics import LinkGatewayInfoResponse, NetRunnerAtomics, PortInfoResponse, RTInfoResponse @@ -178,3 +179,52 @@ class NetRunner: finally: self.map_discovery_is_running = False + + # end update_map + + # properly, this would add a metric for clock stability as well... + async def await_time_settle(self, print_updates = False, await_spread_epsilon_us = 1000): + skew_alpha = 0.95 # fw default is 0.95 + p_gain = 0.000001 # fw default is 0.000001, minimum gain is 0.0000003 + + if self.map_completion_time == 0 or len(self.map.runtimes) == 1: + return + + # initialize settings for each device... + for d, device in enumerate(self.map.runtimes): + if device.protocol_build == 'Python': + continue + + # basically get everyone on-time and with 1.0 skew to start even keeled, + now = get_microsecond_timestamp() + await self.atomics.set_time_config(device.route, now, 1.0, skew_alpha, p_gain, True) + + ok_cycle_count = 0 + ok_cycle_pass = 3 + + # now run a loop where we poll each, get a grouping... and post it ? + while True: + clock_errors = [] + rtts = [] + for d, device in enumerate(self.map.runtimes): + if device.protocol_build == 'Python': + continue + + our_time = get_microsecond_timestamp() + time_stats = await self.atomics.get_time_config(device.route) + device_time = time_stats.system_time - time_stats.rtt / 2 + clock_errors.append(our_time - device_time) + rtts.append(time_stats.rtt) + + print(F"ERRS: {[int(err) for err in clock_errors]}, \tRTT: {[int(rtt) for rtt in rtts]}") + + if all(abs(err) < await_spread_epsilon_us for err in clock_errors): + ok_cycle_count += 1 + else: + ok_cycle_count = 0 + + if ok_cycle_count >= ok_cycle_pass: + print("CLOCKS OK...") + return + else: + await asyncio.sleep(0.25) \ No newline at end of file diff --git a/new_shit/python/sketchy.py b/new_shit/python/sketchy.py index 0166911..ed810e4 100644 --- a/new_shit/python/sketchy.py +++ b/new_shit/python/sketchy.py @@ -47,9 +47,14 @@ async def main(): # ... clip 21500, seems like where the fuckups start... # parser = GCodeParser("test_files/3DBenchy_Top.gcode") + print("---------------------------------- collect system ...") + system_map = await osap.netrunner.update_map() system_map.print() + print("---------------------------------- wait for clocks to settle ...") + await osap.netrunner.await_time_settle(print_updates=True) + print("---------------------------------- machine setup ...") machine = SketchyMachineMotion(osap, system_interpolation_interval, system_twin_to_real_ms, extents = machine_extents) await machine.begin() diff --git a/new_shit/python/svg/__pycache__/svg_tools.cpython-312.pyc b/new_shit/python/svg/__pycache__/svg_tools.cpython-312.pyc index e3602598f511f236206844cba7ef9fe04ed31b45..d046940946d8c5a0a97924032433152b4569930f 100644 GIT binary patch delta 39 vcmaE*{YsnnG%qg~0|NttY4Y(j@r}F@!i;R2(}cB{SmhWcJ~&ODDjEs^*mw$y delta 39 vcmaE*{YsnnG%qg~0|Ns?bmH+e%Z<Dd!i-#-(}cB{SQQv0KDbSuDjEs^-*gJw -- GitLab