Hey I won't be much help but I would love to see how you did a break press
gui!

On Sat, 23 Apr 2022, 03:26 Ted, <laser...@gmail.com> wrote:

> Good morning!
>
> I've been working on converting an old Cordax CMM to more current
> technologies and am wanting to start building out the user interface.
> (The basic items like changing out for glass scales, reworking the air
> bearing controls, tramming and getting a digital probe on the end,
> initial interfacing to LCNC are already done and functional; it's now
> time to get to the math taken care of).
>
> The TL-DR version of my goal is to create some version of a manual CMM
> interface like MCOSMOS(tm) in function, (that software is one of many
> popular commercial CMM control packages currently available today). I'm
> not wanting this to necessarily become the next open-source CMM
> alternative - just something that can be functional and extend the
> knowledge-base with LCNC. Thus, it's a hobby project, not a commercial one.
>
> Note that this is NOT a probing-routine challenge; this is not meant to
> retrofit a cartesian machine with the existing hole-probing under
> machine control. In fact, I do not want it to be forced to be "CNC" (or
> DCC for us old folks) - which is why I want to concentrate on the manual
> math first. When it eventually becomes DCC, that's fine, but to try that
> first would actually be a path that would involve a little cheating as
> well as constrain possibilities.
>
> To that end, I'm looking for some assistance in a) where to get some
> LCNC realtime variable data, b) how to deal with some certain variable
> types in c (in a halcomp) and c) some thoughts on best practices for
> that same programming. I'm quite familiar with John's gtk tutorial
> (https://www.gnipsel.com/linuxcnc/gui/index.html) and have referenced it
> many times (thank you!) while creating custom guis (such as for press
> brakes and punches) and also like some of the info from (Presei's?)
> qtdragon work
> (
> https://linuxcnc.org/docs/devel/html/gui/qtvcp.html#_handler_file_in_detail
> ).
>
> The first big math challenge I would like to solve, and something that
> even MCOSMOS is a little lax on is vector-defined probing offsets. I
> don't have a good name for that, but it's what I'm going to call it. In
> a traditional in-spindle probing scenario, say a round hole, you set up
> your probe with an assumed-diameter precision tip (ie ruby sphere),
> calibrate using a ring gauge or similar artifact, then make a single
> radial or a single length offset for that tip. In most cases, it gets
> distilled down to an averaged radial offset and a single length offset -
> since that is the base structure of how tools are handled, and a spindle
> probe has to be fit into that construct. This does work ok for probing
> to +/- a couple thou, and since that is often a good capability of
> cutting, the results match up acceptably. On a CMM, we are not
> constrained to a single vertical probe shaft, nor orthogonal probing
> approaches, nor tolerances that can be averaged out to a single offset.
>
> For example, my CMM now has micron scales. The stylus has more than 1
> micron runout, and since it is not being spun, there is no averaging.
> (Note: don't spin your probes in the spindle under power. I didn't mean
> to infer that.) More so, I can approach a feature from any physically
> available angle, which means I really do need to calibrate on multiple
> points. This is known practice already, and if I were using MCOSMOS, I
> could set up my stylus offsets for anywhere from 6 to over 30 (? - don't
> know I've never done that many) approach offsets. I would like to do the
> same in LCNC. As a side note, I don't think even MCOSMOS takes
> vector-based touches into approach, I think it just runs a lot of
> best-fit math because you can really confuse it if you try to measure an
> inside bore when you specified an outside feature...
>
> So to get to the point (no pun intended) I am comfortable with the math
> to infer radius and sphere centers from surface points (even though I
> don't like matrix math) - but I need to find two more pieces of
> information:
>
> a) if from a python (or c-ish) script get the current vector of travel
> in 3d space? I am not sure if there is such a data value available, so
> would I have to create some form of time-domain capture loop (say on 0.1
> second intervals) as you need 2 coordinates to infer a vector component.
> Are there velocity variables exposed I could access, and if so, are
> there any best practices on capturing that information? I think if there
> has been any work done on profile probing that might be a reference? I'm
> not sure if I've seen any hal components doing polar conversion math yet...
>
> b) how can I pass on multi-dimensional arrays through a hal component?
> I'm not even sure what the workflow for this data is yet, but if I had
> to make an example, a struct of a 4-component XYZQ vector (thus 4
> doubles or floats,the "q" is just a 4th future coordinate) that then had
> 4 instances of that struct (to give 4 touch coordinates, or future
> thinking, perhaps more) - how could those be programmed and passed to a
> hal component? I have examples for single arrays (using the dotted
> notation) but my first pass on doing multi-dim arrays using that type
> (and simply by double dotting) was not successful. (I am comfortable in
> c++, my python and ansi C is less refined...so variable typing knowledge
> is google-fu dependent)
>
> For b) the intent is to be able to create smaller fast-run components
> such as:
>
>      "cmm-sphereo-from-4-points" - which takes in 4 coordinates and
> returns center plus radius - note there is no approach vector info on
> this one, it's 4-xyz's in, and 1 radius, 1 xyz out.
>
>      "cmm-spherotouch-center" - which takes current machine coordinates,
> known center reference coordinate, known radius (from above), the
> approach vector coordinates and returns a difference which becomes an
> offset for the calibration table.
>
>      "cmm-coord-vector-offset" - which might take the approach vector,
> the tool/stylus number, have to lookup a tool/offset table for
> calibration data and then returns a single corrected xyz coordinate
>
>      "cmm-3pt-inbore" - which might take 3 xyz corrected from above and
> calculate an inner bore radius and center
>
>      "cmm-6pt-inbore" - which might do same as above but finds an
> evolving tolerance band based upon iterating through elements 1,3,5 then
> 2,4,6 -(possibly more combinations) etc.... returning same as above but
> largest fitting result and smallest fitting result.
>
> -and so on, which would also then permit creation of wizard-based
> programming in the gui to create measuring recipes which could be saved,
> edited, recalled, run, data output, etc. The important thing to notice
> is the requirement for many multi-dimensional data values....
>
> The functional result would be to:
>
>      a) first use a probe of zero-size - not physically possible, but
> lets substitute "really pointy". We can then calibrate the system to a
> known sphere, eg a precision tooling ball, and those first captured
> coordinates can then be fed into the sphere map to give us a confidence
> on the size of the ball and its position. This is not really part of the
> calibration procedure, but just to ensure that our basic programing
> understanding is correct, and that we can actually figure out where the
> center of a sphere is. We are restricted to points on the sphere the
> probe can reasonably access, but hitting 40% on top is quite feasible,
> assuming a vertically mounted probe.
>
>      b) confirming the sphere properties, now we have a known/accepted
> center position and radius, which we can now move to a non-zero-size
> stylus (real probe ball) and using that known sphere data plus the
> approach vectors, back-calculate the offset and stuff it into a
> calibration table (note that this also takes into consideration the
> probe actuation offset since it is unique to the approach vector). We
> have made an assumption that the tooling ball is precise, and that is an
> acceptable assumption. We are not assuming the ball is mounted in a
> particular symmetric location, which is what a single radial offset does.
>
>      c) now with approach vectors and a "Triggered current machine
> coordinate" we can now forward-calculate a feature coordinate. I don't
> need to know right now if it is inside a bore or outside a boss, it's
> just the "real" world coordinate of some physical transition from void
> to part, but we also happen to know the travel vector from void to
> contact as a side-effect, so we could infer inside or outside based upon
> if multiple approach vectors would intersect on an internal or external
> virtual sphere....
>
>      d) now we have datasets to work with, whether that next step is
> setting up a virtual work plane, or actually getting coordinates to
> define a hole.
>
> There are other math items like what is the best fit for an approach
> vector that is close but not exactly as calibrated? That is important
> too, but baby steps, right?
>
> Thoughts and opinions appreciated,
>
>
> Thanks,
>
> Ted.
>
>
> --
> This email has been checked for viruses by Avast antivirus software.
> https://www.avast.com/antivirus
>
>
>
> _______________________________________________
> Emc-users mailing list
> Emc-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/emc-users
>

_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to