Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

incorrect input pin state after glitch #470

Open
lllars opened this issue Jun 18, 2020 · 23 comments
Open

incorrect input pin state after glitch #470

lllars opened this issue Jun 18, 2020 · 23 comments

Comments

@lllars
Copy link

lllars commented Jun 18, 2020

I found a bug in the input pin debounce / lockout code. If an input pin changes, and then changes back before the lockout time has expired, then it's state is never updated to reflect that it changed back.

As an example, on my machine, I have hall effect limit switches which are normally high. I first power up g2core by connecting it to my PC. Then, when I power on the machine, the switch state very briefly goes low, only for a few ms, and then returns to high. g2core correctly detects that that the switches go low, but then never updates that they have gone back to high: $in continues to display the incorrect state. Because of this g2core then fails to detect the next time the switches go low, but it does then update to the correct state when the switch goes back to high. This bug causes my machine to crash when homing.

I've worked around this issue by changing pin_changed() in gpio.cpp. I moved the code to record the pin state change up, so that the state change is recorded even if the pin is locked out. The lockout check is still there and prevents any actions from occurring during lockout even though the state has changed.

I am on firmware version 0.99, build 101.3. Target board is an Arduino Due with no shield. This is a 3 axis mill with independent stepper drivers.

Here is my re-ordering of the relevant section of gpio.cpp:

    void pin_changed() {
        if (D_IN_CHANNELS < ext_pin_number) { return; }

        d_in_t *in = &d_in[ext_pin_number-1];

        // return if input is disabled (not supposed to happen)
        if (in->mode == IO_MODE_DISABLED) {
            in->state = INPUT_DISABLED;
            return;
        }

	// return if no change in state
        bool pin_value = (bool)input_pin;
        int8_t pin_value_corrected = (pin_value ^ ((int)in->mode ^ 1));    // correct for NO or NC mode
        if (in->state == (ioState)pin_value_corrected) {
            return;
        }

	// record the changed state (we know it changed or we would have exited beforehand)
        in->state = (ioState)pin_value_corrected;
        if (pin_value_corrected == INPUT_ACTIVE) {
            in->edge = INPUT_EDGE_LEADING;
        } else {
            in->edge = INPUT_EDGE_TRAILING;
        }

        // return if the input is in lockout period (take no action)
        if (in->lockout_timer.isSet() && !in->lockout_timer.isPast()) {
            return;
        }

        // lockout the pin for lockout_ms
        in->lockout_timer.set(in->lockout_ms);

        // perform homing operations if in homing mode
        ...
@justinclift
Copy link
Member

Interesting. The latest development code (in the edge-preview branch) has some substantial changes in parts. Not sure if any of the gpio code was touched though. It might be worth seeing if that has the same problem or not. 😄

@giseburt Thoughts?

@giseburt
Copy link
Member

giseburt commented Jun 19, 2020 via email

@justinclift
Copy link
Member

Awesome. 😄

@lllars Any interest in compiling in the edge-preview branch, and seeing how that goes? It should work fine with the Arduino Due. 😄

@mhlong10
Copy link
Contributor

I hate to say I ran into this same problem a few months ago but didn't bother to address it. I simply manually touched the touch plate to the z-probe if I saw that it was out of sync (which got it back in sync) and then probed again.

Looking at the change my concerns are that in->state is actually bouncing around following the actual state of the pin. gpio_read_input() and io_get_input() asynchronously read in->state and thus could get a "random" value depending on when called. I think this is probably benign for io_get_input, and it looks like gpio_read_input is only called when the machine is in a static state. So for current uses this change could be okay. However, the probing, homing, and subsequent actions will still miss reacting to very short pin transitions and fail to take appropriate action. This is probably no worse that what is happening today.

I do like the simplicity of the fix. I had a more elaborate / complete fix in mind but didn't get to it.

The plan I had was to start a retriggerable asynchronous timer for lockout_timer period of time whenever the pin state changes and once it expires call pin_changed() again to get the final resting state. This has the affect of stretching a pin transition for at least lockout_timer period of time, thus locking out other changes during that time. I've used this technique many times to debounce gpio pins on other projects. Unfortunately I'm not aware of any interrupt driven timer within the code so this wasn't straightforward to implement and I had to move on to my real but less fun job.

@lllars
Copy link
Author

lllars commented Jun 19, 2020

I'm happy to test out edge-preview. Is there a summary anywhere of what changes it incorporates?

@mhlong10 I was also thinking that checking the state of the pin after the lockout_timer expired would be a good solution. I just couldn't figure out an easy way to do that.

@lllars
Copy link
Author

lllars commented Jun 21, 2020

I'm getting a lot of errors when trying to compile edge-preview. I'll post the output I'm seeing. Let me know if there's anything I can try on my end to fix things. I'm compiling with:

make PLATFORM=DUE BOARD=gShield SETTINGS_FILE="settings_dynamyte_4000.h"

and the output is:

"Found that we're in Linux"
Compiling c ../Motate/MotateProject/motate/cmsis/TARGET_Atmel/sam3x/source/templates/exceptions.c
    -> build/gShield/motate/cmsis/TARGET_Atmel/sam3x/source/templates/exceptions.o 
Compiling c ../Motate/MotateProject/motate/cmsis/TARGET_Atmel/sam3x/source/templates/system_sam3x.c
    -> build/gShield/motate/cmsis/TARGET_Atmel/sam3x/source/templates/system_sam3x.o 
Compiling c ../Motate/MotateProject/motate/cmsis/TARGET_Atmel/sam3x/source/templates/gcc/startup_sam3x.c
    -> build/gShield/motate/cmsis/TARGET_Atmel/sam3x/source/templates/gcc/startup_sam3x.o 
Compiling c ../Motate/MotateProject/motate/platform/atmel_sam/cortex_handlers.c
    -> build/gShield/motate/platform/atmel_sam/cortex_handlers.o 
Compiling c ../Motate/MotateProject/motate/platform/atmel_sam/hooks.c
    -> build/gShield/motate/platform/atmel_sam/hooks.o 
Compiling cpp ../Motate/MotateProject/motate/MotateUtilities.cpp
    -> build/gShield/motate/MotateUtilities.o 
Compiling cpp ../Motate/MotateProject/motate/main.cpp
    -> build/gShield/motate/main.o 
Compiling cpp ../Motate/MotateProject/motate/Atmel_sam_common/SamDMA.cpp
    -> build/gShield/motate/Atmel_sam_common/SamDMA.o 
Compiling cpp ../Motate/MotateProject/motate/Atmel_sam_common/SamPins.cpp
    -> build/gShield/motate/Atmel_sam_common/SamPins.o 
Compiling cpp ../Motate/MotateProject/motate/Atmel_sam_common/SamPower.cpp
    -> build/gShield/motate/Atmel_sam_common/SamPower.o 
Compiling cpp ../Motate/MotateProject/motate/Atmel_sam_common/SamServiceCall.cpp
    -> build/gShield/motate/Atmel_sam_common/SamServiceCall.o 
Compiling cpp ../Motate/MotateProject/motate/Atmel_sam_common/SamSPI.cpp
    -> build/gShield/motate/Atmel_sam_common/SamSPI.o 
Compiling cpp ../Motate/MotateProject/motate/Atmel_sam_common/SamTimers.cpp
    -> build/gShield/motate/Atmel_sam_common/SamTimers.o 
Compiling cpp ../Motate/MotateProject/motate/Atmel_sam_common/SamUART.cpp
    -> build/gShield/motate/Atmel_sam_common/SamUART.o 
Compiling cpp ../Motate/MotateProject/motate/Atmel_sam_common/SamUniqueID.cpp
    -> build/gShield/motate/Atmel_sam_common/SamUniqueID.o 
Compiling cpp ../Motate/MotateProject/motate/Atmel_sam3x/SamUSB.cpp
    -> build/gShield/motate/Atmel_sam3x/SamUSB.o 
Compiling cpp ../Motate/MotateProject/motate/platform/atmel_sam/syscalls.cpp
    -> build/gShield/motate/platform/atmel_sam/syscalls.o 
Compiling cpp ./alarm.cpp
    -> build/gShield/./alarm.o 
In file included from ./g2core.h:62:0,
                 from ./alarm.cpp:29:
./board/ArduinoDue/hardware.h:47:5: warning: "HAS_HOBBY_SERVO_MOTOR" is not defined [-Wundef]
 #if HAS_HOBBY_SERVO_MOTOR
     ^
In file included from ./board/ArduinoDue/hardware.h:32:0,
                 from ./g2core.h:62,
                 from ./alarm.cpp:29:
./config.h:341:38: error: declaration of 'operator[]' as non-function
     const cfgItem_t& operator[](std::size_t idx) const;
                                      ^
./config.h:341:31: error: expected ';' at end of member declaration
     const cfgItem_t& operator[](std::size_t idx) const;
                               ^
./config.h:341:45: error: expected ')' before 'idx'
     const cfgItem_t& operator[](std::size_t idx) const;
                                             ^
./config.h:349:46: error: 'get' declared as a 'virtual' field
     virtual const cfgItem_t * const get(std::size_t idx) const;
                                              ^
./config.h:349:37: error: expected ';' at end of member declaration
     virtual const cfgItem_t * const get(std::size_t idx) const;
                                     ^
./config.h:349:53: error: expected ')' before 'idx'
     virtual const cfgItem_t * const get(std::size_t idx) const;
                                                     ^
./config.h: In constructor 'constexpr configSubtable::configSubtable(size_t)':
./config.h:352:15: error: uninitialized const member in 'const struct cfgItem_t* const' [-fpermissive]
     constexpr configSubtable(const size_t l) : length{l} {};
               ^
./config.h:349:46: note: 'const cfgItem_t* const configSubtable::get' should be initialized
     virtual const cfgItem_t * const get(std::size_t idx) const;
                                              ^
./config.h:352:59: error: member 'configSubtable::get' must be initialized by mem-initializer in 'constexpr' constructor
     constexpr configSubtable(const size_t l) : length{l} {};
                                                           ^
./config.h:349:46: note: declared here
     virtual const cfgItem_t * const get(std::size_t idx) const;
                                              ^
./config.h: At global scope:
./config.h:367:29: error: expected ';' at end of member declaration
     const cfgItem_t * const get(std::size_t idx) const override {
                             ^
./config.h:367:45: error: expected ')' before 'idx'
     const cfgItem_t * const get(std::size_t idx) const override {
                                             ^
./config.h: In constructor 'constexpr cfgSubtableFromStaticArray::cfgSubtableFromStaticArray()':
./config.h:365:15: error: uninitialized const member in 'const struct cfgItem_t* const' [-fpermissive]
     constexpr cfgSubtableFromStaticArray() : configSubtable{0}, items{} {};
               ^
./config.h:367:38: note: 'const cfgItem_t* const cfgSubtableFromStaticArray::get' should be initialized
     const cfgItem_t * const get(std::size_t idx) const override {
                                      ^
./config.h:365:74: error: member 'cfgSubtableFromStaticArray::get' must be initialized by mem-initializer in 'constexpr' constructor
     constexpr cfgSubtableFromStaticArray() : configSubtable{0}, items{} {};
                                                                          ^
./config.h:367:38: note: declared here
     const cfgItem_t * const get(std::size_t idx) const override {
                                      ^
./config.h: In member function 'virtual index_t cfgSubtableFromStaticArray::find(const char*) const':
./config.h:372:9: error: 'size_t' is not a member of 'std'
         std::size_t idx = 0;
         ^
./config.h:372:9: note: suggested alternative:
In file included from /home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/sys/cdefs.h:45:0,
                 from /home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/ctype.h:5,
                 from ./g2core.h:29,
                 from ./alarm.cpp:29:
/home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/lib/gcc/arm-none-eabi/5.4.1/include/stddef.h:216:23: note:   'size_t'
 typedef __SIZE_TYPE__ size_t;
                       ^
In file included from ./board/ArduinoDue/hardware.h:32:0,
                 from ./g2core.h:62,
                 from ./alarm.cpp:29:
./config.h:374:16: error: 'idx' was not declared in this scope
         while (idx < length) {
                ^
In file included from ./safety_manager.h:35:0,
                 from ./alarm.cpp:33:
./planner.h: At global scope:
./planner.h:568:24: error: expected initializer before 'HOT_DATA'
 extern mpPlanner_t *mp HOT_DATA;                 // currently active planner (global variable)
                        ^
./planner.h:569:24: error: expected initializer before 'HOT_DATA'
 extern mpPlanner_t mp1 HOT_DATA;                 // primary planning context
                        ^
./planner.h:570:24: error: expected initializer before 'HOT_DATA'
 extern mpPlanner_t mp2 HOT_DATA;                 // secondary planning context
                        ^
./planner.h:572:31: error: expected initializer before 'HOT_DATA'
 extern mpPlannerRuntime_t *mr HOT_DATA;          // context for block runtime
                               ^
./planner.h:573:31: error: expected initializer before 'HOT_DATA'
 extern mpPlannerRuntime_t mr1 HOT_DATA;          // primary planner runtime context
                               ^
./planner.h:574:31: error: expected initializer before 'HOT_DATA'
 extern mpPlannerRuntime_t mr2 HOT_DATA;          // secondary planner runtime context
                               ^
./planner.h:576:46: error: expected initializer before 'HOT_DATA'
 extern mpBuf_t mp1_queue[PLANNER_QUEUE_SIZE] HOT_DATA;   // storage allocation for primary planner queue buffers
                                              ^
./planner.h:594:56: error: expected initializer before 'HOT_FUNC'
 stat_t mp_set_target_steps(const float target_steps[]) HOT_FUNC;
                                                        ^
./planner.h:595:162: error: expected initializer before 'HOT_FUNC'
 t_t mp_set_target_steps(const float target_steps[MOTORS], const float start_velocities[MOTORS], const float end_velocities[MOTORS], const float segment_time) HOT_FUNC;
                                                                                                                                                               ^
./planner.h:634:38: error: expected initializer before 'HOT_FUNC'
 mpBuf_t * mp_get_write_buffer(void)  HOT_FUNC;
                                      ^
./planner.h:635:58: error: expected initializer before 'HOT_FUNC'
 void mp_commit_write_buffer(const blockType block_type)  HOT_FUNC;
                                                          ^
./planner.h:636:36: error: expected initializer before 'HOT_FUNC'
 mpBuf_t * mp_get_run_buffer(void)  HOT_FUNC;
                                    ^
./planner.h:637:32: error: expected initializer before 'HOT_FUNC'
 bool mp_free_run_buffer(void)  HOT_FUNC;
                                ^
In file included from ./safety_manager.h:36:0,
                 from ./alarm.cpp:33:
./gpio.h: In member function 'float ValueHistory<sample_count>::get_std_dev()':
./gpio.h:1100:16: error: 'sqrt' is not a member of 'std'
         return std::sqrt(std::abs(variance));
                ^
./gpio.h:1100:16: note: suggested alternative:
In file included from ./g2core.h:35:0,
                 from ./alarm.cpp:29:
/home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/math.h:135:15: note:   'sqrt'
 extern double sqrt _PARAMS((double));
               ^
In file included from ./safety_manager.h:36:0,
                 from ./alarm.cpp:33:
./gpio.h:1100:43: error: call of overloaded 'abs(float&)' is ambiguous
         return std::sqrt(std::abs(variance));
                                           ^
In file included from /home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/ctype.h:4:0,
                 from ./g2core.h:29,
                 from ./alarm.cpp:29:
/home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/stdlib.h:66:5: note: candidate: int abs(int)
 int _EXFUN(abs,(int));
     ^
In file included from /home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/c++/5.4.1/bits/stl_algo.h:59:0,
                 from /home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/c++/5.4.1/algorithm:62,
                 from ../Motate/MotateProject/motate/MotatePins.h:34,
                 from ./board/ArduinoDue/hardware.h:76,
                 from ./g2core.h:62,
                 from ./alarm.cpp:29:
/home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/c++/5.4.1/cstdlib:166:3: note: candidate: long int std::abs(long int)
   abs(long __i) { return __builtin_labs(__i); }
   ^
/home/lars/dynamyte/g2/Motate/Tools/linux/gcc-arm-none-eabi-5_4-2016q2/arm-none-eabi/include/c++/5.4.1/cstdlib:174:3: note: candidate: long long int std::abs(long long int)
   abs(long long __x) { return __builtin_llabs (__x); }
   ^
make: *** [../Motate/MotateProject/motate/Motate.mk:471: build/gShield/./alarm.o] Error 1

@justinclift
Copy link
Member

It's probably caused by something in the settings_dynamyte_4000.h file. 👼

When I hit stuff like that, I generally first try to find a settings file that compiles ok or start with the default one (settings_default.h, used as a fallback when no other settings file is specified).

So, try without giving any settings file on the command line, and see if that compiles successfully:

$ make PLATFORM=DUE BOARD=gShield 

That should compile ok, and use the above mentioned default settings. 😄

If it does so, and the settings_dynamyte_4000.h file has the right pieces you actually want... the next step is figuring out what's wrong in the dynamyte settings file. I'd do that by making it just a direct copy of the default settings one, and then making a few changes to it at a time to figure out what breaks. It shouldn't take more than a few compile attempts to determine the culprit.

In theory. 😄

@lllars
Copy link
Author

lllars commented Jun 21, 2020

Thanks, good suggestion, but it didn't work. Output was identical.

$ make PLATFORM=DUE BOARD=gShield SETTINGS_FILE="settings_dynamyte_4000.h" clean
"Found that we're in Linux"
rm -fR build/gShield
rm -fR bin/gShield
rm -fR gShield.elf gShield.map gShield.hex gShield.bin
rm -fR compile_commands.json ../Motate/MotateProject/motate/compile_commands.json
$ make PLATFORM=DUE BOARD=gShield

@justinclift
Copy link
Member

Yep, you're right. Just tried it here, and same error.

@giseburt Looks like edge-preview has become busted. Something about HAS_HOBBY_SERVO_MOTOR maybe?

@giseburt
Copy link
Member

giseburt commented Jun 21, 2020 via email

@giseburt
Copy link
Member

giseburt commented Jun 21, 2020 via email

@lllars
Copy link
Author

lllars commented Jun 21, 2020

I still have many many errors, even trying the same "make CONFIG=MiniMillgShield" line.

The bit about HAS_HOBBY_SERVO_MOTOR is resolved, but I'm still seeing all the config.h, planner.h, and gpio.h errors.

@lllars
Copy link
Author

lllars commented Jun 22, 2020

Adding #include <iostream> fixes config.h, and #include <cmath> fixes gpio.h

I'm still stumped on the planner.h errors though.

@justinclift
Copy link
Member

Just tried now, and for me it worked.

@lllars Did you run a git clean -dffx in the root of the repository directory, to get rid of any files from previous compile attempts?

eg:

$ git clean -dffx
$ git pull
$ git submodule update
$ make CONFIG=MiniMillgShield
...
Linking bin/MiniMillgShield-gShield/g2core.elf 
Using linker script: ../Motate/MotateProject/motate/cmsis/TARGET_Atmel/linker_scripts/sam3x/sam3x8/gcc/flash.ld 
--- SIZE INFO ---
   text    data     bss     dec     hex filename
 205556       0   27900  233456   38ff0 bin/MiniMillgShield-gShield/g2core.elf
Making binary bin/MiniMillgShield-gShield/g2core.bin 
Exporting symbols bin/MiniMillgShield-gShield/g2core.elf.txt 
Build 101.03 101.03-533-g490e

@lllars
Copy link
Author

lllars commented Jun 22, 2020

@justinclift Thanks, that worked.

Note that I did still run into a couple errors involving settings_default.h when I compiled with BOARD=gShield instead of CONFIG=MiniMillgShield. SPINDLE_ACTIVE_HIGH was undeclared and I need to define SPINDLE_SPEED_CHANGE_PER_MS

It's probably too late for today, but I will try this out on my machine tomorrow.

@lllars
Copy link
Author

lllars commented Jun 22, 2020

I've now tried out edge-preview on my machine and am happy to report that the input pin state remains correct following a glitch. I was able to home the machine without problems.

@justinclift
Copy link
Member

Whoo Hooo!

Sounds like good progress. 😄

@willmackey2nd
Copy link

Current HEAD didn't compile with gShield. Not with default settings nor MiniMillgShield. Took commit 490eb6c based on dates in this discussion and it did compile with MiniMill.

Modified default settings with my machines parameters and taking missing stuff from MiniMill until it compiled.

Tested probing with CNCjs + kreso autolevel. Single probing worked fine. Autolevel on the other hand crashes in different ways after 1 or 3 probes. Sometimes it just hangs with feeder> (AL: probing point 19) {"sr":{"vel":0,"posz":-1,"mpoz":-1.065}} in console. Sometimes it crashes Z against bed and continues to push down few seconds, misses some probing point commands during this then continues from some point suddenly.
I also get some {"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}} messages.

Using DUE.

@willmackey2nd
Copy link

Linking some comments about the issue and recent changes here to help anyone googling themselves here.
#237 (comment)
#237 (comment)

@willmackey2nd
Copy link

Did some digging but the source as a whole just looks too complicated to get a quick understanding what happens and where. I was planning to fix this by making sure input state is updated after lockout but no idea where I should be polling that / where's the callback or...

This is a real bummer. I switched from a crappy Chinese controller to G2 in hope of getting auto leveling for PCB milling and kinda took it for granted that stuff like this surely works in G2 and thought a lot of people are using if for this. Reading that this isn't fixable with simple HW filtering, I guess my quick options are to go with GRBL or buy PlanetCNC controller + SW.

@giseburt
Copy link
Member

I am using probing heavily as I use it at least once for every job. Bantam tools and ShopBot are also using it regularly, as they're the ones that collectively found most of the bugs I've mentioned recently.

The only part of that that I don't use and can't say works well is CNCjs with an auto
-leveling extension. I know we've tested CNCjs and there are people that use it with g2, but in this exact case I can't say how well it works or if the problem exists somewhere in how it's communicating with g2.

If you have a log file or something with a few notes about what's happening at what points along the log we can maybe help sort it out.

@justinclift
Copy link
Member

@willmackey2nd That kreso autolevel extension for CNCjs looks nifty. If we can get it working decently well with g2, that'd be useful. 😄

@willmackey2nd
Copy link

willmackey2nd commented Oct 18, 2020

@justinclift yeah it's simple and works and also only alternative for me for now AFAIK. I don't know any better alternatives to use with G2 besides CNCjs. Feel free to slap me in face and point me to a better gcode feeder.

@giseburt Kreso AL works so that it sends the whole measurement task at once to CNCjs which then starts to execute the gcode. AL then just waits for probe status data, taking notes. Just means that AL itself shouldn't have anything todo with the motion control during probing.

Single probing commands haven't failed once for me but grid probing with AL seems unreliable. I've done now ~30 tests and

  • some times it works fine all the way to the end
  • sometimes it's fine except that I can hear maybe 1 skipped step when it's hitting the PCB
  • some times it crashes Z hard and does awkward skip of several gcode lines and proceeds, some times it just stops there with probe against the PCB, my multimeter reading 0V at input (= probe tripped), machine not trying to push down, but no errors whatsoever in console. CNCjs just hangs too thinking the job is still being executed.

I don't know if this helps in any way but here's the whole console capture from AL cycle, probing 40x40 area with 7.5mm between probes. This was the kind of fail where it actually told something in console. Somewhere in the middle it crashed Z, continued pushing down and then suddenly proceeded skipping several probe points.
@giseburt I'm happy to dig more info or test other stuff if you want / if it helps you. I did give up for now and ordered MK3Eco as I need to get some stuff done for Christmas but I'd probably have use for g2 anyway later and also I hate giving up / am poor loser.

CNCjs Console log

{"r":{},"f":[1,0,24]}
feeder> (AL: probing point 7)
feeder> G90 G0 X0.250 Y8.405 Z1
{"qr":46}
feeder> G38.2 Z-1 F50
{"r":{},"f":[1,0,14]}
feeder> G0 Z1
feeder> (AL: probing point 8)
{"qr":45}
feeder> G90 G0 X8.100 Y8.405 Z1
{"sr":{"stat":5,"vel":640.26,"momo":0,"posz":0.90518,"mpoz":-9.81504}}
{"qr":46}
feeder> G38.2 Z-1 F50
{"sr":{"vel":1896.35,"posx":1.04479,"posz":1,"mpox":1.04479,"mpoz":-9.72023}}
{"sr":{"vel":2990.2,"posx":5.90479,"mpox":5.90479}}
{"qr":47}
feeder> G0 Z1
{"sr":{"vel":0.17,"posx":8.10001,"mpox":8.10001}}
{"qr":48}
feeder> (AL: probing point 9)
{"qr":46}
feeder> G90 G0 X15.950 Y8.405 Z1
{"sr":{"stat":7,"vel":50,"feed":50,"momo":1,"posz":0.91901,"mpoz":-9.80122}}
{"sr":{"posz":0.83402,"mpoz":-9.88621}}
{"sr":{"posz":0.74904,"mpoz":-9.97286}}
{"sr":{"posz":0.66405,"mpoz":-10.05618}}
{"sr":{"posz":0.57907,"mpoz":-10.14283}}
{"sr":{"posz":0.49408,"mpoz":-10.22615}}
{"sr":{"posz":0.40909,"mpoz":-10.3128}}
{"sr":{"posz":0.32411,"mpoz":-10.39612}}
{"sr":{"posz":0.23913,"mpoz":-10.48277}}
{"sr":{"posz":0.15414,"mpoz":-10.56609}}
{"sr":{"vel":49.2,"posz":0.06837,"mpoz":-10.65186}}
{"qr":47}
feeder> G38.2 Z-1 F50
{"qr":46}
feeder> G0 Z1
{"sr":{"vel":0.93,"posz":0.0666,"mpoz":-10.65363}}
{"qr":47}
feeder> (AL: probing point 10)
{"qr":48}
feeder> G90 G0 X23.801 Y8.405 Z1
{"prb":{"e":1,"x":8.10000,"y":0.25000,"z":-10.64523,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
feeder> G38.2 Z-1 F50
feeder> G0 Z1
{"qr":46}
feeder> (AL: probing point 11)
{"r":{},"f":[1,0,22]}
feeder> G90 G0 X31.651 Y8.405 Z1
feeder> G38.2 Z-1 F50
{"qr":47}
feeder> G0 Z1
{"r":{},"f":[1,0,25]}
feeder> (AL: probing point 12)
feeder> G90 G0 X39.501 Y8.405 Z1
{"qr":46}
feeder> G38.2 Z-1 F50
{"r":{},"f":[1,0,14]}
feeder> G0 Z1
feeder> (AL: probing point 13)
{"qr":45}
feeder> G90 G0 X0.250 Y16.560 Z1
{"sr":{"stat":5,"vel":175.74,"momo":0,"posz":0.98864,"mpoz":-9.73159}}
{"qr":46}
feeder> G38.2 Z-1 F50
{"sr":{"vel":2630.28,"posx":9.5356,"posz":1,"mpox":9.62588,"mpoz":-9.72023}}
{"sr":{"vel":2743.24,"posx":14.51441,"mpox":14.60281}}
{"qr":47}
feeder> G0 Z1
{"qr":48}
feeder> (AL: probing point 14)
{"qr":46}
feeder> G90 G0 X8.100 Y16.560 Z1
{"sr":{"stat":7,"vel":0,"momo":1,"posx":15.95,"posz":-1,"mpox":15.95,"mpoz":-11.72023}}
{"sr":{"vel":50,"posz":0.91901,"mpoz":-9.80122}}
{"sr":{"posz":0.83402,"mpoz":-9.88621}}
{"sr":{"posz":0.74904,"mpoz":-9.97286}}
{"sr":{"posz":0.66405,"mpoz":-10.05618}}
{"sr":{"posz":0.57907,"mpoz":-10.14283}}
{"sr":{"posz":0.49408,"mpoz":-10.22615}}
{"sr":{"posz":0.40909,"mpoz":-10.3128}}
{"sr":{"posz":0.32411,"mpoz":-10.39612}}
{"sr":{"posz":0.23913,"mpoz":-10.48277}}
{"sr":{"posz":0.15414,"mpoz":-10.56609}}
{"sr":{"posz":0.06915,"mpoz":-10.65274}}
{"qr":47}
feeder> G38.2 Z-1 F50
{"sr":{"vel":0,"posz":0.0425,"mpoz":-10.67773}}
{"qr":46}
feeder> G0 Z1
{"qr":47}
feeder> (AL: probing point 15)
{"qr":48}
feeder> G90 G0 X15.950 Y16.560 Z1
{"prb":{"e":1,"x":15.95000,"y":0.25000,"z":-10.67773,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
feeder> G38.2 Z-1 F50
feeder> G0 Z1
{"qr":46}
feeder> (AL: probing point 16)
{"r":{},"f":[1,0,22]}
feeder> G90 G0 X23.801 Y16.560 Z1
feeder> G38.2 Z-1 F50
{"qr":47}
feeder> G0 Z1
{"r":{},"f":[1,0,25]}
feeder> (AL: probing point 17)
feeder> G90 G0 X31.651 Y16.560 Z1
{"qr":46}
feeder> G38.2 Z-1 F50
{"r":{},"f":[1,0,14]}
feeder> G0 Z1
feeder> (AL: probing point 18)
{"qr":45}
feeder> G90 G0 X39.501 Y16.560 Z1
{"sr":{"stat":5,"vel":208.85,"momo":0,"posz":0.98473,"mpoz":-9.73549}}
{"qr":46}
feeder> G38.2 Z-1 F50
{"sr":{"vel":2565.89,"posx":17.2972,"posz":1,"mpox":17.3856,"mpoz":-9.72023}}
{"sr":{"vel":2791.56,"posx":22.27513,"mpox":22.36541}}
{"qr":47}
feeder> G0 Z1
{"qr":48}
feeder> (AL: probing point 19)
{"qr":46}
feeder> G90 G0 X0.250 Y24.715 Z1
{"sr":{"stat":7,"vel":0,"momo":1,"posx":23.801,"posz":-1,"mpox":23.801,"mpoz":-11.72023}}
{"sr":{"vel":50,"posz":0.91901,"mpoz":-9.80122}}
{"sr":{"posz":0.83402,"mpoz":-9.88621}}
{"sr":{"posz":0.74904,"mpoz":-9.97286}}
{"sr":{"posz":0.66405,"mpoz":-10.05618}}
{"sr":{"posz":0.57907,"mpoz":-10.14283}}
{"sr":{"posz":0.49408,"mpoz":-10.22615}}
{"sr":{"posz":0.40909,"mpoz":-10.3128}}
{"sr":{"posz":0.32411,"mpoz":-10.39612}}
{"sr":{"posz":0.23913,"mpoz":-10.48277}}
{"sr":{"posz":0.15414,"mpoz":-10.56609}}
{"sr":{"posz":0.06915,"mpoz":-10.65274}}
{"qr":47}
feeder> G38.2 Z-1 F50
{"sr":{"vel":0,"posz":0.05,"mpoz":-10.67023}}
{"qr":46}
feeder> G0 Z1
{"qr":47}
feeder> (AL: probing point 20)
{"qr":48}
feeder> G90 G0 X8.100 Y24.715 Z1
{"prb":{"e":1,"x":23.80100,"y":0.25000,"z":-10.67023,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
feeder> G38.2 Z-1 F50
feeder> G0 Z1
{"qr":46}
feeder> (AL: probing point 21)
{"r":{},"f":[1,0,22]}
feeder> G90 G0 X15.950 Y24.715 Z1
feeder> G38.2 Z-1 F50
{"qr":47}
feeder> G0 Z1
{"r":{},"f":[1,0,25]}
feeder> (AL: probing point 22)
feeder> G90 G0 X23.801 Y24.715 Z1
{"qr":46}
feeder> G38.2 Z-1 F50
{"r":{},"f":[1,0,14]}
feeder> G0 Z1
feeder> (AL: probing point 23)
{"qr":45}
feeder> G90 G0 X31.651 Y24.715 Z1
{"sr":{"stat":5,"vel":223.59,"momo":0,"posz":0.98833,"mpoz":-9.7319}}
{"qr":46}
feeder> G38.2 Z-1 F50
{"sr":{"vel":2565.89,"posx":25.1482,"posz":1,"mpox":25.1482,"mpoz":-9.72023}}
{"sr":{"vel":2791.56,"posx":30.12513,"mpox":30.12513}}
{"qr":47}
feeder> G0 Z1
{"qr":46}
feeder> (AL: probing point 24)
{"sr":{"stat":7,"vel":49.2,"momo":1,"posx":31.65101,"posz":0.99399,"mpox":31.65101,"mpoz":-9.72623}}
{"sr":{"vel":50,"posz":0.90901,"mpoz":-9.81288}}
{"sr":{"posz":0.82402,"mpoz":-9.8962}}
{"sr":{"posz":0.73904,"mpoz":-9.98285}}
{"sr":{"posz":0.65405,"mpoz":-10.06617}}
{"sr":{"posz":0.56907,"mpoz":-10.15283}}
{"sr":{"posz":0.48408,"mpoz":-10.23614}}
{"sr":{"posz":0.39743,"mpoz":-10.3228}}
{"sr":{"posz":0.31411,"mpoz":-10.40611}}
{"sr":{"posz":0.22913,"mpoz":-10.49277}}
{"sr":{"posz":0.14414,"mpoz":-10.57608}}
{"sr":{"posz":0.05916,"mpoz":-10.66274}}
{"qr":47}
feeder> G90 G0 X39.501 Y24.715 Z1
{"sr":{"vel":0,"posz":0,"mpoz":-10.72023}}
{"qr":46}
feeder> G38.2 Z-1 F50
{"qr":47}
feeder> G0 Z1
{"qr":48}
feeder> (AL: probing point 25)
{"prb":{"e":1,"x":31.65100,"y":0.25000,"z":-10.72023,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
feeder> G90 G0 X0.250 Y32.870 Z1
feeder> G38.2 Z-1 F50
{"qr":46}
feeder> G0 Z1
{"r":{},"f":[1,0,22]}
feeder> (AL: probing point 26)
feeder> G90 G0 X8.100 Y32.870 Z1
{"qr":47}
feeder> G38.2 Z-1 F50
{"r":{},"f":[1,0,25]}
feeder> G0 Z1
feeder> (AL: probing point 27)
{"qr":46}
feeder> G90 G0 X15.950 Y32.870 Z1
{"r":{},"f":[1,0,14]}
feeder> G38.2 Z-1 F50
feeder> G0 Z1
{"qr":45}
feeder> (AL: probing point 28)
{"sr":{"stat":5,"vel":214.99,"momo":0,"posz":0.98405,"mpoz":-9.73617}}
{"qr":46}
feeder> G90 G0 X23.801 Y32.870 Z1
{"sr":{"vel":2496.49,"posx":32.9982,"posz":1,"mpox":32.9982,"mpoz":-9.72023}}
{"sr":{"vel":2834.36,"posx":37.97513,"mpox":37.97513}}
{"qr":47}
feeder> G38.2 Z-1 F50
{"qr":46}
feeder> G0 Z1
{"sr":{"stat":7,"vel":44.82,"momo":1,"posx":39.50101,"posz":0.99548,"mpox":39.50101,"mpoz":-9.72474}}
{"sr":{"vel":50,"posz":0.91067,"mpoz":-9.80955}}
{"sr":{"posz":0.82569,"mpoz":-9.8962}}
{"sr":{"posz":0.7407,"mpoz":-9.97952}}
{"sr":{"posz":0.65572,"mpoz":-10.06617}}
{"sr":{"posz":0.57073,"mpoz":-10.14949}}
{"sr":{"posz":0.48575,"mpoz":-10.23614}}
{"sr":{"posz":0.40076,"mpoz":-10.31946}}
{"sr":{"posz":0.31578,"mpoz":-10.40611}}
{"sr":{"posz":0.23079,"mpoz":-10.48943}}
{"qr":47}
feeder> (AL: probing point 29)
{"qr":46}
feeder> G90 G0 X31.651 Y32.870 Z1
{"qr":47}
feeder> G38.2 Z-1 F50
{"qr":48}
feeder> G0 Z1
{"prb":{"e":1,"x":39.50100,"y":0.25000,"z":-10.53773,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
feeder> (AL: probing point 30)
feeder> G90 G0 X39.501 Y32.870 Z1
{"qr":46}
feeder> G38.2 Z-1 F50
{"r":{},"f":[1,0,22]}
feeder> G0 Z1
feeder> (AL: probing point 31)
{"qr":47}
feeder> G90 G0 X0.250 Y41.025 Z1
{"r":{},"f":[1,0,24]}
feeder> G38.2 Z-1 F50
feeder> G0 Z1
{"qr":46}
feeder> (AL: probing point 32)
{"r":{},"f":[1,0,14]}
feeder> G90 G0 X8.100 Y41.025 Z1
feeder> G38.2 Z-1 F50
{"qr":45}
feeder> G0 Z1
{"sr":{"stat":5,"vel":101.56,"momo":0,"posz":0.99543,"mpoz":-9.72282}}
{"qr":46}
feeder> (AL: probing point 33)
{"sr":{"vel":2801.83,"posx":37.88315,"posy":0.58613,"posz":1,"mpox":37.88315,"mpoy":0.58613,"mpoz":-9.72023}}
{"sr":{"vel":3064.07,"posx":32.81297,"posy":1.63954,"mpox":32.71306,"mpoy":1.6603}}
{"sr":{"posx":27.71791,"posy":2.69812,"mpox":27.71791,"mpoy":2.69812}}
{"sr":{"posx":22.62285,"posy":3.77745,"mpox":22.52294,"mpoy":3.77745}}
{"sr":{"posx":17.52778,"posy":4.81528,"mpox":17.52778,"mpoy":4.81528}}
{"sr":{"posx":12.43272,"posy":5.87385,"mpox":12.43272,"mpoy":5.87385}}
{"sr":{"posx":7.33766,"posy":6.93243,"mpox":7.33766,"mpoy":6.93243}}
{"sr":{"vel":3014.88,"posx":2.24909,"posy":7.98966,"mpox":2.24909,"mpoy":7.98966}}
{"qr":47}
feeder> G90 G0 X15.950 Y41.025 Z1
{"qr":48}
feeder> G38.2 Z-1 F50
{"qr":46}
feeder> G0 Z1
{"sr":{"stat":7,"vel":0,"momo":1,"posx":0.25,"posy":8.405,"posz":-1,"mpox":0.25,"mpoy":8.405,"mpoz":-11.72023}}
{"sr":{"vel":50,"posx":0.25001,"posz":0.91901,"mpox":0.25001,"mpoz":-9.80122}}
{"sr":{"posz":0.83402,"mpoz":-9.88621}}
{"sr":{"posz":0.74904,"mpoz":-9.97286}}
{"sr":{"posz":0.66405,"mpoz":-10.05618}}
{"sr":{"posz":0.57907,"mpoz":-10.14283}}
{"sr":{"posz":0.49408,"mpoz":-10.22615}}
{"sr":{"posz":0.40909,"mpoz":-10.3128}}
{"sr":{"posz":0.32411,"mpoz":-10.39612}}
{"sr":{"posz":0.23913,"mpoz":-10.48277}}
{"sr":{"posz":0.15414,"mpoz":-10.56609}}
{"sr":{"posz":0.06915,"mpoz":-10.65274}}
{"qr":47}
feeder> (AL: probing point 34)
{"sr":{"vel":0,"posx":0.25,"posz":0.0225,"mpox":0.25,"mpoz":-10.69773}}
{"qr":46}
feeder> G90 G0 X23.801 Y41.025 Z1
{"qr":47}
feeder> G38.2 Z-1 F50
{"qr":48}
feeder> G0 Z1
{"prb":{"e":1,"x":0.25000,"y":8.40500,"z":-10.69773,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
feeder> (AL: probing point 35)
feeder> G90 G0 X31.651 Y41.025 Z1
{"qr":46}
feeder> G38.2 Z-1 F50
{"r":{},"f":[1,0,22]}
feeder> G0 Z1
feeder> (AL: probing point 36)
{"qr":47}
feeder> G90 G0 X39.501 Y41.025 Z1
{"r":{},"f":[1,0,24]}
feeder> G38.2 Z-1 F50
feeder> G0 Z1
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":211.75,"momo":0,"posz":0.98441,"mpoz":-9.73581}}
{"qr":46}
{"sr":{"vel":2565.89,"posx":1.59719,"posz":1,"mpox":1.59719,"mpoz":-9.72023}}
{"sr":{"vel":2791.56,"posx":6.57412,"mpox":6.57412}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":0,"momo":1,"posx":8.1,"posz":-1,"mpox":8.1,"mpoz":-11.72023}}
{"sr":{"vel":50,"posz":0.91901,"mpoz":-9.80122}}
{"sr":{"posz":0.83402,"mpoz":-9.88621}}
{"sr":{"posz":0.74904,"mpoz":-9.97286}}
{"sr":{"posz":0.66405,"mpoz":-10.05618}}
{"sr":{"posz":0.57907,"mpoz":-10.14283}}
{"sr":{"posz":0.49408,"mpoz":-10.22615}}
{"sr":{"posz":0.40909,"mpoz":-10.3128}}
{"sr":{"posz":0.32411,"mpoz":-10.39612}}
{"sr":{"posz":0.23913,"mpoz":-10.48277}}
{"sr":{"posz":0.15414,"mpoz":-10.56609}}
{"sr":{"posz":0.06915,"mpoz":-10.65274}}
{"sr":{"posz":-0.01583,"mpoz":-10.73606}}
{"sr":{"posz":-0.10082,"mpoz":-10.82271}}
{"sr":{"posz":-0.1858,"mpoz":-10.90603}}
{"sr":{"posz":-0.27079,"mpoz":-10.99268}}
{"qr":47}
{"qr":46}
{"sr":{"vel":1.46,"posz":-0.28163,"mpoz":-11.00186}}
{"qr":47}
{"prb":{"e":1,"x":8.10000,"y":8.40500,"z":-11.00023,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,22]}
{"qr":47}
{"r":{},"f":[1,0,25]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":591.97,"momo":0,"posz":0.92506,"mpoz":-9.79517}}
{"qr":46}
{"sr":{"vel":1991.66,"posx":8.96555,"posz":1,"mpox":8.96555,"mpoz":-9.72023}}
{"sr":{"vel":2981.4,"posx":13.85317,"mpox":13.85317}}
{"qr":47}
{"sr":{"vel":0.17,"posx":15.95,"mpox":15.95}}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posz":0.91901,"mpoz":-9.80122}}
{"sr":{"posz":0.83402,"mpoz":-9.88621}}
{"sr":{"posz":0.74904,"mpoz":-9.97286}}
{"sr":{"posz":0.66405,"mpoz":-10.05618}}
{"sr":{"posz":0.57907,"mpoz":-10.14283}}
{"sr":{"posz":0.49408,"mpoz":-10.22615}}
{"sr":{"posz":0.40909,"mpoz":-10.31113}}
{"sr":{"posz":0.32411,"mpoz":-10.39612}}
{"sr":{"posz":0.23913,"mpoz":-10.48277}}
{"sr":{"posz":0.15414,"mpoz":-10.56609}}
{"sr":{"posz":0.06915,"mpoz":-10.65274}}
{"sr":{"posz":-0.01583,"mpoz":-10.73606}}
{"sr":{"posz":-0.10082,"mpoz":-10.82271}}
{"sr":{"posz":-0.1858,"mpoz":-10.90603}}
{"qr":47}
{"sr":{"vel":0,"posz":-0.225,"mpoz":-10.94523}}
{"qr":46}
{"qr":47}
{"qr":48}
{"prb":{"e":1,"x":15.95000,"y":8.40500,"z":-10.94523,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,25]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":485.6,"momo":0,"posz":0.93621,"mpoz":-9.78402}}
{"qr":46}
{"sr":{"vel":2174.38,"posx":16.88926,"posz":1,"mpox":16.88926,"mpoz":-9.72023}}
{"sr":{"vel":2951.84,"posx":21.89886,"mpox":21.89886}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":0,"momo":1,"posx":23.801,"posz":-1,"mpox":23.801,"mpoz":-11.72023}}
{"sr":{"vel":50,"posz":0.91901,"mpoz":-9.80122}}
{"sr":{"posz":0.83402,"mpoz":-9.88621}}
{"sr":{"posz":0.74904,"mpoz":-9.97286}}
{"sr":{"posz":0.66405,"mpoz":-10.05618}}
{"sr":{"posz":0.57907,"mpoz":-10.14283}}
{"sr":{"posz":0.49408,"mpoz":-10.22615}}
{"sr":{"posz":0.40909,"mpoz":-10.3128}}
{"sr":{"posz":0.32411,"mpoz":-10.39612}}
{"sr":{"posz":0.23913,"mpoz":-10.48277}}
{"sr":{"posz":0.15414,"mpoz":-10.56609}}
{"sr":{"posz":0.06915,"mpoz":-10.65107}}
{"sr":{"posz":-0.01583,"mpoz":-10.73606}}
{"sr":{"posz":-0.10082,"mpoz":-10.82271}}
{"sr":{"posz":-0.1858,"mpoz":-10.90603}}
{"sr":{"posz":-0.27079,"mpoz":-10.99268}}
{"sr":{"posz":-0.35577,"mpoz":-11.076}}
{"sr":{"posz":-0.44076,"mpoz":-11.16265}}
{"sr":{"posz":-0.52574,"mpoz":-11.24597}}
{"sr":{"posz":-0.61073,"mpoz":-11.33262}}
{"sr":{"posz":-0.69571,"mpoz":-11.41594}}
{"sr":{"posz":-0.7807,"mpoz":-11.50259}}
{"sr":{"posz":-0.86568,"mpoz":-11.58591}}
{"sr":{"posz":-0.95067,"mpoz":-11.67256}}
{"qr":47}
{"qr":48}
{"er":{"fb":101.06,"st":250,"msg":"Probe cycle failed - probing failed"}}
{"prb":{"e":0,"x":23.80100,"y":8.40500,"z":-11.72023,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"sr":{"stat":6,"vel":0.23,"momo":0,"posz":-0.99996,"mpoz":-11.72019}}
{"qr":47}
{"sr":{"vel":1266.14,"posz":0.61333,"mpoz":-10.1069}}
{"er":{"fb":101.06,"st":207,"msg":"Kill job - Job killed by ^d"}}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,204,25]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,25]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,25]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,25]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,26]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,26]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,26]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,26]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,25]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,25]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,26]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,26]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,26]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,26]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,204,25]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,14]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,204,6]}
{"err":{"code":204,"msg":"Command rejected by ALARM [$clear to reset]"}}
{"r":{},"f":[1,0,23]}
{"r":{},"f":[1,0,25]}
{"sr":{"stat":5,"vel":0,"posx":8.1,"posy":32.87,"posz":1,"mpox":8.1,"mpoy":32.87,"mpoz":-9.72023}}
{"qr":47}
{"r":{},"f":[1,0,14]}
{"qr":46}
{"sr":{"vel":3542.58,"posx":22.26502,"posy":10.79834,"posz":0.9998,"mpox":22.26502,"mpoy":10.79834,"mpoz":-9.72043}}
{"sr":{"vel":3564.67,"posx":18.99592,"posy":15.89218,"posz":0.99984,"mpox":18.99592,"mpoy":15.89218,"mpoz":-9.72038}}
{"sr":{"posx":15.7261,"posy":20.98715,"posz":0.99989,"mpox":15.7261,"mpoy":20.98715,"mpoz":-9.72034}}
{"sr":{"posx":12.45628,"posy":26.08213,"posz":0.99994,"mpox":12.45628,"mpoy":26.08213,"mpoz":-9.72029}}
{"sr":{"vel":3412.17,"posx":9.1983,"posy":31.15865,"posz":0.99998,"mpox":9.1983,"mpoy":31.15865,"mpoz":-9.72024}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":0,"momo":1,"posx":8.1,"posy":32.87,"posz":-1,"mpox":8.1,"mpoy":32.87,"mpoz":-11.72023}}
{"sr":{"vel":50,"posz":0.91901,"mpoz":-9.80122}}
{"sr":{"posz":0.83402,"mpoz":-9.88621}}
{"sr":{"posz":0.74904,"mpoz":-9.97286}}
{"sr":{"posz":0.66405,"mpoz":-10.05618}}
{"sr":{"posz":0.57907,"mpoz":-10.14283}}
{"sr":{"posz":0.49408,"mpoz":-10.22615}}
{"sr":{"posz":0.40909,"mpoz":-10.3128}}
{"sr":{"posz":0.32411,"mpoz":-10.39612}}
{"sr":{"posz":0.23913,"mpoz":-10.48277}}
{"sr":{"posz":0.15414,"mpoz":-10.56609}}
{"sr":{"posz":0.06915,"mpoz":-10.65274}}
{"sr":{"posz":-0.01583,"mpoz":-10.73606}}
{"sr":{"posz":-0.10082,"mpoz":-10.82271}}
{"sr":{"posz":-0.1858,"mpoz":-10.90603}}
{"sr":{"posz":-0.27079,"mpoz":-10.99268}}
{"sr":{"posz":-0.35577,"mpoz":-11.076}}
{"sr":{"posz":-0.44076,"mpoz":-11.16265}}
{"sr":{"posz":-0.52574,"mpoz":-11.24597}}
{"sr":{"posz":-0.61073,"mpoz":-11.33262}}
{"sr":{"posz":-0.69571,"mpoz":-11.41594}}
{"sr":{"posz":-0.7807,"mpoz":-11.50259}}
{"sr":{"vel":0.8,"posz":-0.85836,"mpoz":-11.57858}}
{"qr":47}
{"sr":{"vel":0,"posz":-0.85523,"mpoz":-11.57545}}
{"qr":46}
{"qr":47}
{"prb":{"e":1,"x":8.10000,"y":32.87000,"z":-11.57545,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,26]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":1137.11,"momo":0,"posz":0.69039,"mpoz":-10.02983}}
{"qr":46}
{"sr":{"vel":1200.96,"posx":8.44345,"posz":1,"mpox":8.44345,"mpoz":-9.72023}}
{"sr":{"vel":3000,"posx":13.05965,"mpox":13.05965}}
{"sr":{"vel":69.79,"posx":15.94703,"mpox":15.94835}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":15.95,"posz":0.959,"mpox":15.95,"mpoz":-9.76123}}
{"sr":{"posz":0.87401,"mpoz":-9.84621}}
{"sr":{"posz":0.78903,"mpoz":-9.9312}}
{"sr":{"posz":0.70404,"mpoz":-10.01618}}
{"sr":{"posz":0.61906,"mpoz":-10.10117}}
{"sr":{"posz":0.53407,"mpoz":-10.18615}}
{"sr":{"posz":0.44909,"mpoz":-10.27114}}
{"sr":{"posz":0.3641,"mpoz":-10.35612}}
{"sr":{"posz":0.27912,"mpoz":-10.44111}}
{"sr":{"posz":0.19413,"mpoz":-10.52609}}
{"sr":{"posz":0.10915,"mpoz":-10.61108}}
{"sr":{"posz":0.02416,"mpoz":-10.69606}}
{"sr":{"posz":-0.06082,"mpoz":-10.78105}}
{"sr":{"posz":-0.14581,"mpoz":-10.86603}}
{"sr":{"posz":-0.23079,"mpoz":-10.95102}}
{"sr":{"posz":-0.31578,"mpoz":-11.036}}
{"sr":{"posz":-0.40076,"mpoz":-11.12099}}
{"sr":{"posz":-0.48575,"mpoz":-11.20597}}
{"sr":{"posz":-0.57073,"mpoz":-11.29096}}
{"sr":{"posz":-0.65572,"mpoz":-11.37594}}
{"sr":{"posz":-0.7407,"mpoz":-11.46093}}
{"qr":47}
{"qr":46}
{"sr":{"vel":0.96,"posz":-0.77993,"mpoz":-11.50015}}
{"qr":47}
{"qr":48}
{"prb":{"e":1,"x":15.95000,"y":32.87000,"z":-11.49545,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,26]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":1049.14,"momo":0,"posz":0.73696,"mpoz":-9.98326}}
{"qr":46}
{"sr":{"vel":1299.79,"posx":16.33831,"posz":1,"mpox":16.3865,"mpoz":-9.72023}}
{"sr":{"vel":3000,"posx":20.91061,"mpox":21.00919}}
{"sr":{"vel":48.16,"posx":23.79935,"mpox":23.79935}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":23.801,"posz":0.95733,"mpox":23.801,"mpoz":-9.76289}}
{"sr":{"posz":0.87235,"mpoz":-9.84788}}
{"sr":{"posz":0.78736,"mpoz":-9.93286}}
{"sr":{"posz":0.70238,"mpoz":-10.01785}}
{"sr":{"posz":0.61739,"mpoz":-10.10283}}
{"sr":{"posz":0.53241,"mpoz":-10.18782}}
{"sr":{"posz":0.44742,"mpoz":-10.2728}}
{"sr":{"posz":0.36244,"mpoz":-10.35779}}
{"sr":{"posz":0.27745,"mpoz":-10.44277}}
{"sr":{"posz":0.19247,"mpoz":-10.52776}}
{"sr":{"posz":0.10748,"mpoz":-10.61275}}
{"sr":{"posz":0.0225,"mpoz":-10.69773}}
{"sr":{"posz":-0.06249,"mpoz":-10.78271}}
{"sr":{"posz":-0.14747,"mpoz":-10.8677}}
{"sr":{"posz":-0.23246,"mpoz":-10.95269}}
{"sr":{"posz":-0.31744,"mpoz":-11.03767}}
{"sr":{"posz":-0.40243,"mpoz":-11.12266}}
{"sr":{"posz":-0.48741,"mpoz":-11.20764}}
{"sr":{"posz":-0.5724,"mpoz":-11.29263}}
{"sr":{"posz":-0.65738,"mpoz":-11.37761}}
{"sr":{"vel":5.18,"posz":-0.73837,"mpoz":-11.45859}}
{"qr":47}
{"qr":46}
{"qr":47}
{"qr":48}
{"prb":{"e":1,"x":23.80100,"y":32.87000,"z":-11.44795,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,26]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":1009.51,"momo":0,"posz":0.75623,"mpoz":-9.96399}}
{"qr":46}
{"sr":{"vel":1299.79,"posx":24.2375,"posz":1,"mpox":24.2375,"mpoz":-9.72023}}
{"sr":{"vel":3000,"posx":28.85919,"mpox":28.85919}}
{"sr":{"vel":48.16,"posx":31.64935,"mpox":31.64935}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":31.651,"posz":0.95733,"mpox":31.651,"mpoz":-9.76289}}
{"sr":{"posz":0.87235,"mpoz":-9.84788}}
{"sr":{"posz":0.78736,"mpoz":-9.93286}}
{"sr":{"posz":0.70238,"mpoz":-10.01785}}
{"sr":{"posz":0.61739,"mpoz":-10.10283}}
{"sr":{"posz":0.53241,"mpoz":-10.18782}}
{"sr":{"posz":0.44742,"mpoz":-10.2728}}
{"sr":{"posz":0.36244,"mpoz":-10.35779}}
{"sr":{"posz":0.27745,"mpoz":-10.44277}}
{"sr":{"posz":0.19247,"mpoz":-10.52776}}
{"sr":{"posz":0.10748,"mpoz":-10.61275}}
{"sr":{"posz":0.0225,"mpoz":-10.69773}}
{"sr":{"posz":-0.06249,"mpoz":-10.78271}}
{"sr":{"posz":-0.14747,"mpoz":-10.8677}}
{"sr":{"posz":-0.23246,"mpoz":-10.95269}}
{"sr":{"posz":-0.31744,"mpoz":-11.03767}}
{"sr":{"posz":-0.40243,"mpoz":-11.12266}}
{"sr":{"posz":-0.48741,"mpoz":-11.20764}}
{"sr":{"posz":-0.5724,"mpoz":-11.29263}}
{"sr":{"posz":-0.65738,"mpoz":-11.37761}}
{"sr":{"posz":-0.74237,"mpoz":-11.4626}}
{"qr":47}
{"qr":48}
{"qr":46}
{"qr":47}
{"qr":48}
{"prb":{"e":1,"x":31.65100,"y":32.87000,"z":-11.48045,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,26]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":1043.22,"momo":0,"posz":0.73918,"mpoz":-9.98104}}
{"qr":46}
{"sr":{"vel":1399.64,"posx":32.0875,"posz":1,"mpox":32.0875,"mpoz":-9.72023}}
{"sr":{"vel":3000,"posx":36.70918,"mpox":36.70918}}
{"sr":{"vel":31.23,"posx":39.50017,"mpox":39.50017}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":39.501,"posz":0.95567,"mpox":39.501,"mpoz":-9.76456}}
{"sr":{"posz":0.87068,"mpoz":-9.84955}}
{"sr":{"posz":0.7857,"mpoz":-9.93453}}
{"sr":{"posz":0.70071,"mpoz":-10.01951}}
{"sr":{"posz":0.61573,"mpoz":-10.1045}}
{"sr":{"posz":0.53074,"mpoz":-10.18949}}
{"sr":{"posz":0.44576,"mpoz":-10.27447}}
{"sr":{"posz":0.36077,"mpoz":-10.35946}}
{"sr":{"posz":0.27579,"mpoz":-10.44444}}
{"sr":{"posz":0.1908,"mpoz":-10.52943}}
{"sr":{"posz":0.10581,"mpoz":-10.61441}}
{"sr":{"posz":0.02083,"mpoz":-10.6994}}
{"sr":{"posz":-0.06416,"mpoz":-10.78438}}
{"sr":{"posz":-0.14914,"mpoz":-10.86937}}
{"sr":{"posz":-0.23413,"mpoz":-10.95435}}
{"sr":{"posz":-0.31911,"mpoz":-11.03934}}
{"sr":{"posz":-0.4041,"mpoz":-11.12432}}
{"sr":{"posz":-0.48908,"mpoz":-11.20931}}
{"sr":{"posz":-0.57407,"mpoz":-11.29429}}
{"sr":{"posz":-0.65905,"mpoz":-11.37928}}
{"qr":47}
{"qr":46}
{"qr":47}
{"qr":48}
{"prb":{"e":1,"x":39.50100,"y":32.87000,"z":-11.45045,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,25]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":1010.48,"momo":0,"posz":0.75588,"mpoz":-9.96435}}
{"qr":46}
{"sr":{"vel":1429.53,"posx":39.0645,"posy":32.96069,"posz":1,"mpox":39.0645,"mpoy":32.96069,"mpoz":-9.72023}}
{"sr":{"vel":3064.07,"posx":34.41141,"posy":33.92744,"mpox":34.31151,"mpoy":33.9482}}
{"sr":{"posx":29.31635,"posy":34.98602,"mpox":29.31635,"mpoy":34.98602}}
{"sr":{"posx":24.22129,"posy":36.0446,"mpox":24.12139,"mpoy":36.06536}}
{"sr":{"posx":19.12623,"posy":37.10318,"mpox":19.12623,"mpoy":37.10318}}
{"sr":{"posx":14.03116,"posy":38.16176,"mpox":13.93126,"mpoy":38.18251}}
{"sr":{"posx":8.9361,"posy":39.22034,"mpox":8.9361,"mpoy":39.22034}}
{"sr":{"posx":3.84104,"posy":40.27891,"mpox":3.74114,"mpoy":40.29967}}
{"sr":{"vel":317.18,"posx":0.28026,"posy":41.01871,"mpox":0.28026,"mpoy":41.01871}}
{"qr":47}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":0.25,"posy":41.025,"posz":0.94234,"mpox":0.25,"mpoy":41.025,"mpoz":-9.77789}}
{"sr":{"posz":0.85902,"mpoz":-9.86121}}
{"sr":{"posz":0.77403,"mpoz":-9.94619}}
{"sr":{"posz":0.68905,"mpoz":-10.03118}}
{"sr":{"posz":0.60406,"mpoz":-10.11616}}
{"sr":{"posz":0.51908,"mpoz":-10.20115}}
{"sr":{"posz":0.43409,"mpoz":-10.28614}}
{"sr":{"posz":0.34911,"mpoz":-10.37112}}
{"sr":{"posz":0.26412,"mpoz":-10.45611}}
{"sr":{"posz":0.17914,"mpoz":-10.54109}}
{"sr":{"posz":0.09415,"mpoz":-10.62608}}
{"sr":{"posz":0.00916,"mpoz":-10.71106}}
{"sr":{"posz":-0.07582,"mpoz":-10.79605}}
{"sr":{"posz":-0.1608,"mpoz":-10.88103}}
{"sr":{"posz":-0.24579,"mpoz":-10.96602}}
{"sr":{"posz":-0.33078,"mpoz":-11.051}}
{"sr":{"posz":-0.41576,"mpoz":-11.13599}}
{"sr":{"posz":-0.50075,"mpoz":-11.22097}}
{"sr":{"posz":-0.58573,"mpoz":-11.30596}}
{"sr":{"posz":-0.67072,"mpoz":-11.39094}}
{"sr":{"vel":44.82,"posz":-0.75482,"mpoz":-11.47505}}
{"sr":{"vel":0,"posz":-0.74773,"mpoz":-11.46795}}
{"qr":46}
{"qr":47}
{"qr":48}
{"prb":{"e":1,"x":0.25000,"y":41.02500,"z":-11.46795,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,25]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"qr":46}
{"sr":{"stat":5,"vel":1299.79,"momo":0,"posx":0.63832,"posz":1,"mpox":0.6865,"mpoz":-9.72023}}
{"sr":{"vel":3000,"posx":5.20965,"mpox":5.30819}}
{"sr":{"vel":48.16,"posx":8.09835,"mpox":8.09835}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":8.1,"posz":0.95733,"mpox":8.1,"mpoz":-9.76289}}
{"sr":{"posz":0.87235,"mpoz":-9.84788}}
{"sr":{"posz":0.78736,"mpoz":-9.93286}}
{"sr":{"posz":0.70238,"mpoz":-10.01785}}
{"sr":{"posz":0.61739,"mpoz":-10.10283}}
{"sr":{"posz":0.53241,"mpoz":-10.18782}}
{"sr":{"posz":0.44742,"mpoz":-10.2728}}
{"sr":{"posz":0.36244,"mpoz":-10.35779}}
{"sr":{"posz":0.27745,"mpoz":-10.44277}}
{"sr":{"posz":0.19247,"mpoz":-10.52776}}
{"sr":{"posz":0.10748,"mpoz":-10.61275}}
{"sr":{"posz":0.0225,"mpoz":-10.69773}}
{"sr":{"posz":-0.06249,"mpoz":-10.78271}}
{"sr":{"posz":-0.14747,"mpoz":-10.8677}}
{"sr":{"posz":-0.23246,"mpoz":-10.95269}}
{"sr":{"posz":-0.31744,"mpoz":-11.03767}}
{"sr":{"posz":-0.40243,"mpoz":-11.12266}}
{"sr":{"posz":-0.48741,"mpoz":-11.20764}}
{"sr":{"posz":-0.5724,"mpoz":-11.29263}}
{"sr":{"posz":-0.65738,"mpoz":-11.37761}}
{"qr":47}
{"qr":46}
{"qr":47}
{"qr":48}
{"prb":{"e":1,"x":8.10000,"y":41.02500,"z":-11.44295,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,26]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":1007.56,"momo":0,"posz":0.75694,"mpoz":-9.96329}}
{"qr":46}
{"sr":{"vel":1299.79,"posx":8.5365,"posz":1,"mpox":8.5365,"mpoz":-9.72023}}
{"sr":{"vel":3000,"posx":13.15819,"mpox":13.15819}}
{"sr":{"vel":48.16,"posx":15.94835,"mpox":15.94835}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":15.95,"posz":0.95733,"mpox":15.95,"mpoz":-9.76289}}
{"sr":{"posz":0.87235,"mpoz":-9.84788}}
{"sr":{"posz":0.78736,"mpoz":-9.93286}}
{"sr":{"posz":0.70238,"mpoz":-10.01785}}
{"sr":{"posz":0.61739,"mpoz":-10.10283}}
{"sr":{"posz":0.53241,"mpoz":-10.18782}}
{"sr":{"posz":0.44742,"mpoz":-10.2728}}
{"sr":{"posz":0.36244,"mpoz":-10.35779}}
{"sr":{"posz":0.27745,"mpoz":-10.44277}}
{"sr":{"posz":0.19247,"mpoz":-10.52776}}
{"sr":{"posz":0.10748,"mpoz":-10.61275}}
{"sr":{"posz":0.0225,"mpoz":-10.69773}}
{"sr":{"posz":-0.06249,"mpoz":-10.78271}}
{"sr":{"posz":-0.14747,"mpoz":-10.8677}}
{"sr":{"posz":-0.23246,"mpoz":-10.95269}}
{"sr":{"posz":-0.31744,"mpoz":-11.03767}}
{"sr":{"posz":-0.40243,"mpoz":-11.12266}}
{"sr":{"posz":-0.48741,"mpoz":-11.20764}}
{"sr":{"posz":-0.5724,"mpoz":-11.29263}}
{"sr":{"posz":-0.65738,"mpoz":-11.37761}}
{"qr":48}
{"qr":46}
{"sr":{"vel":0,"posz":-0.71523,"mpoz":-11.43545}}
{"qr":47}
{"prb":{"e":1,"x":15.95000,"y":41.02500,"z":-11.43545,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,26]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":1004.61,"momo":0,"posz":0.75801,"mpoz":-9.96222}}
{"qr":46}
{"sr":{"vel":1399.64,"posx":16.3865,"posz":1,"mpox":16.3865,"mpoz":-9.72023}}
{"sr":{"vel":3000,"posx":21.00919,"mpox":21.00919}}
{"sr":{"vel":31.22,"posx":23.80018,"mpox":23.80018}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":23.80101,"posz":0.95567,"mpox":23.80101,"mpoz":-9.76456}}
{"sr":{"posz":0.87068,"mpoz":-9.84955}}
{"sr":{"posz":0.7857,"mpoz":-9.93453}}
{"sr":{"posz":0.70071,"mpoz":-10.01951}}
{"sr":{"posz":0.61573,"mpoz":-10.1045}}
{"sr":{"posz":0.53074,"mpoz":-10.18949}}
{"sr":{"posz":0.44576,"mpoz":-10.27447}}
{"sr":{"posz":0.36077,"mpoz":-10.35946}}
{"sr":{"posz":0.27579,"mpoz":-10.44444}}
{"sr":{"posz":0.1908,"mpoz":-10.52943}}
{"sr":{"posz":0.10581,"mpoz":-10.61441}}
{"sr":{"posz":0.02083,"mpoz":-10.6994}}
{"sr":{"posz":-0.06416,"mpoz":-10.78438}}
{"sr":{"posz":-0.14914,"mpoz":-10.86937}}
{"sr":{"posz":-0.23413,"mpoz":-10.95435}}
{"sr":{"posz":-0.31911,"mpoz":-11.03934}}
{"sr":{"posz":-0.4041,"mpoz":-11.12432}}
{"sr":{"posz":-0.48908,"mpoz":-11.20931}}
{"sr":{"posz":-0.57407,"mpoz":-11.29429}}
{"sr":{"posz":-0.65905,"mpoz":-11.37928}}
{"sr":{"posz":-0.74404,"mpoz":-11.46426}}
{"qr":47}
{"qr":46}
{"sr":{"vel":1.07,"posz":-0.77324,"mpoz":-11.49347}}
{"qr":47}
{"prb":{"e":1,"x":23.80100,"y":41.02500,"z":-11.48795,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,26]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":1046.24,"momo":0,"posz":0.73805,"mpoz":-9.98217}}
{"qr":46}
{"sr":{"vel":1299.79,"posx":24.2375,"posz":1,"mpox":24.2375,"mpoz":-9.72023}}
{"sr":{"vel":3000,"posx":28.85919,"mpox":28.85919}}
{"sr":{"vel":48.16,"posx":31.64935,"mpox":31.64935}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":31.65101,"posz":0.95733,"mpox":31.65101,"mpoz":-9.76289}}
{"sr":{"posz":0.87235,"mpoz":-9.84788}}
{"sr":{"posz":0.78736,"mpoz":-9.93286}}
{"sr":{"posz":0.70238,"mpoz":-10.01785}}
{"sr":{"posz":0.61739,"mpoz":-10.10283}}
{"sr":{"posz":0.53241,"mpoz":-10.18782}}
{"sr":{"posz":0.44742,"mpoz":-10.2728}}
{"sr":{"posz":0.36244,"mpoz":-10.35779}}
{"sr":{"posz":0.27745,"mpoz":-10.44277}}
{"sr":{"posz":0.19247,"mpoz":-10.52776}}
{"sr":{"posz":0.10748,"mpoz":-10.61275}}
{"sr":{"posz":0.0225,"mpoz":-10.69773}}
{"sr":{"posz":-0.06249,"mpoz":-10.78271}}
{"sr":{"posz":-0.14747,"mpoz":-10.8677}}
{"sr":{"posz":-0.23246,"mpoz":-10.95269}}
{"sr":{"posz":-0.31744,"mpoz":-11.03767}}
{"sr":{"posz":-0.40243,"mpoz":-11.12266}}
{"sr":{"posz":-0.48741,"mpoz":-11.20764}}
{"sr":{"posz":-0.5724,"mpoz":-11.29263}}
{"sr":{"posz":-0.65738,"mpoz":-11.37761}}
{"qr":47}
{"sr":{"vel":0,"posz":-0.68023,"mpoz":-11.40045}}
{"qr":46}
{"qr":47}
{"qr":48}
{"prb":{"e":1,"x":31.65100,"y":41.02500,"z":-11.40045,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"r":{},"f":[1,0,23]}
{"qr":47}
{"r":{},"f":[1,0,26]}
{"qr":46}
{"r":{},"f":[1,0,14]}
{"qr":45}
{"sr":{"stat":5,"vel":990.92,"momo":0,"posz":0.7925,"mpoz":-9.92773}}
{"qr":46}
{"sr":{"vel":1399.64,"posx":32.13903,"posz":1,"mpox":32.13903,"mpoz":-9.72023}}
{"sr":{"vel":3000,"posx":36.80889,"mpox":36.80889}}
{"sr":{"vel":31.23,"posx":39.50018,"mpox":39.50018}}
{"qr":47}
{"qr":48}
{"qr":46}
{"sr":{"stat":7,"vel":50,"momo":1,"posx":39.501,"posz":0.95567,"mpox":39.501,"mpoz":-9.76456}}
{"sr":{"posz":0.87068,"mpoz":-9.84955}}
{"sr":{"posz":0.7857,"mpoz":-9.93453}}
{"sr":{"posz":0.70071,"mpoz":-10.01951}}
{"sr":{"posz":0.61573,"mpoz":-10.1045}}
{"sr":{"posz":0.53074,"mpoz":-10.18949}}
{"sr":{"posz":0.44576,"mpoz":-10.27447}}
{"sr":{"posz":0.36077,"mpoz":-10.35946}}
{"sr":{"posz":0.27579,"mpoz":-10.44444}}
{"sr":{"posz":0.1908,"mpoz":-10.52943}}
{"sr":{"posz":0.10581,"mpoz":-10.61441}}
{"sr":{"posz":0.02083,"mpoz":-10.6994}}
{"sr":{"posz":-0.06416,"mpoz":-10.78438}}
{"sr":{"posz":-0.14914,"mpoz":-10.86937}}
{"sr":{"posz":-0.23413,"mpoz":-10.95435}}
{"sr":{"posz":-0.31911,"mpoz":-11.03934}}
{"sr":{"posz":-0.4041,"mpoz":-11.12432}}
{"sr":{"posz":-0.48908,"mpoz":-11.20931}}
{"sr":{"posz":-0.57407,"mpoz":-11.29429}}
{"sr":{"posz":-0.65905,"mpoz":-11.37928}}
{"qr":47}
{"sr":{"vel":0,"posz":-0.69273,"mpoz":-11.41295}}
{"qr":46}
{"qr":47}
{"qr":48}
{"prb":{"e":1,"x":39.50100,"y":41.02500,"z":-11.41295,"a":0.00000,"b":0.00000,"c":0.00000}}
{"r":{},"f":[1,0,6]}
{"qr":46}
{"sr":{"stat":5,"vel":0.24,"momo":0,"posz":-0.69269,"mpoz":-11.41291}}
{"qr":47}
{"sr":{"vel":995.83,"posz":0.79095,"mpoz":-9.92927}}
{"qr":48}
{"sr":{"stat":3,"vel":0,"posz":1,"mpoz":-9.72023}}
>

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants