Home › Forums › TinyG › TinyG Support › Networking two TinyGs
Tagged: tinyg network pick place 5axis
- This topic has 39 replies, 10 voices, and was last updated 8 years, 5 months ago by Splocal.
-
AuthorPosts
-
September 19, 2014 at 12:22 am #6776jpistorinoMember
John,
I would be up for collaborating as well though most of my efforts so far have been on the vision side and I am not sure how much I can help you. Can you shoot me a note as to where you are physically located? We are working along very similar lines. Your project is awesome.
I am curious to know if you are using fiducials to align what the camera is seeing with the real world of the CNC domain. If so, how do you do it, what fiducials are you using, and how did you fabricate them?
September 19, 2014 at 2:48 am #6777JuKuMemberAssuming you asked me:-),
> Can you shoot me a note as to where you are physically located?
Tampere, Finland.
> if you are using fiducials to align what the camera is seeing with the real world of the CNC domain. If so, how do you do it, what fiducials are you using, and how did you fabricate them?
I’m using industry standard fids, a round pad with no soldermask and no hole. On CAD, those are just another SMD component, with position data, manufactured by the PCB maker. At pre-processing, I find these from the pick-and-place file. I have a jig on the table where the board goes, so I know approximately where the board origin is in cnc coordinates. I go look at the fiducials, and regognize them using AForge.NET vision library to get the exact fid positions in cnc units. Then just some math to get board offset, scale and skew, which then give me the true component locations and rotation in cnc units.
Of course, I also need to know the needle point offset from the camera, as a function of rotation. For this, I use another camera, looking up from a hole in the table.
This has nothing to do with networking TinyG’s anymore. We can start another thread or take this off-line. (There are no private messages on this forum?)
My mail is juha <at> kuusama point com.September 19, 2014 at 7:30 am #6781aldenMemberI certainly don’t mind if you continue discussion here. This is fascinating.
September 20, 2014 at 1:45 am #6783jpistorinoMemberI will take up Alden’s offer.
Juha,
I knew that you were in Finland and your project is great.
You are a few steps ahead of me.
When you say “industry standard”, can you point me to something that has details about the fids?Thanks,
JamesSeptember 20, 2014 at 6:32 am #6784JuKuMemberThis is the official standard: http://www.ssl.berkeley.edu/~dseitz/MAVENflightPCBdesignAndFab/SMEMAfiducialSpec3p1.pdf
September 20, 2014 at 12:14 pm #6785jpistorinoMemberThanks Juha.
It it interesting because those fids are both: 1) not unique (i.e., you cannot distinguish between two fids except on expected location); and 2) they are rotationally symmetric such that you need two to determine skew, etc.
I am looking at the fids used in augmented reality as an alternative.Still hoping that John is Bay Area and that we can talk.
Regards,
JamesSeptember 20, 2014 at 12:36 pm #6786jlauerMemberHey James,
I’m in Seattle, so not quite the bay area, but at least same time zone. I’m really early on in thinking through what elements are needed for the Pick and Place project. The part I’m working on right now is a laser solderer. Not sure it’s going to work though. I have the hardware built and now adding a widget to ChiliPeppr to control it. It’s got a PID to control the laser to not overcook the solder using the Melexis MLX90614 infrared heat sensor. I have a USB Microscope mounted to be able to see the process.
So far I don’t need a fiducial for recognition as I already know the location from the PCB Gcode, however I’m keen to see if the fiducial recognition can happen inside ChiliPeppr because it is a fundamental item that will be needed for a lot of things in the future. I have a lot of webcam integration built using WebRTC. The cool thing with WebRTC is you can just grab a frame and then process it as a bitmap to do things like object detection. This blog seems to give a decent rundown on object detection using WebRTC. http://techslides.com/object-detection-with-html5-getusermedia/
-John
August 13, 2015 at 9:19 am #8233jpistorinoMemberJohn,
i have a quick question on implementing a jog feature. What is the best way for me to reach you? No email address is here in this forum.
Thanks,
JamesAugust 13, 2015 at 9:32 pm #8235cmcgrath5035ModeratorMay 29, 2016 at 4:19 pm #9721vikarpeterMemberI have a similar question. I have a setup where i’m currently using all 4axis XYZA(x doubled up) and it works great, but I would like to add one more small stepper like this one: https://www.sparkfun.com/products/10551
It will do sort of an in-between job like cleaning the head, so it does not have to synchronize with the other axis.
What would be the easiest was to implement this with tinyg?
thanks, Peter
May 30, 2016 at 7:02 am #9722cmcgrath5035ModeratorIn theory, two tinyGs can be networked together.
I am not aware of anyone who has actually tried it.Other ideas:
Use 1 tinyG. Drive both X motors from one driver, Y from another, Z from another leaving A (or B or C)axis available. If X, Y and Z are heavy duty motors, could use 2 external drivers on the X axis for your X.or
Try tinyG2 running on a DUE. Use Gshield for 4 motor drivers, wire an external driver to the 5th port pins on the DUE.
or
Experiment with a 5 driver shield such as an Ultimaker shield connected to DUE running tinyG2. Would require a lot of Motate pin remapping and some customization of the Ultimaker.If you machine has heavy duty X,Y,Z motors, I’d suggest the external driver approach. None of the Shield products have very good heat sinking for the driver devices, IMHO.
May 31, 2016 at 3:58 am #9724vikarpeterMemberThanks, I already have XXYZA on the M1-M4 drives, so the DUE control could be the way to go for the extra stepper.
Is there any way to use the spindle pins(PWM, sdir, spin) to communicate to a stepper driver -like ‘big easy drive’- and add a 5-axis?
May 31, 2016 at 11:32 am #9725cmcgrath5035ModeratorI am not a dev, will guess “maybe”, depending on what exactly the ‘big easy drive’ needs, but would be a lot of reprogramming of tinyG internals, plus you would have to figure out how to feed your reprogrammed logic with a command string.
Due would seem a more straightforward path, to me anyway. There is good code build support for the G2/DUE combination.Sorry, I missed the fact you were already XXYZA.
I have seen, somewhere, shield like boards and code to drive steppers from a RazPi.
If you are a Chilipeppr user and already have a Pi, that might work for you.June 4, 2016 at 8:41 pm #9732VexMemberThis thread has gotten me thinking on a few reasons to network a TinyG together–not for a pick and place machine–with either another TinyG or some other board. My first thought would be the ability to utilize additional limit inputs (X-, Y-, and Z- min/max switches) without losing any physical limit switch functionality on the machine itself. Consider using it with a 3D touch probe in the G54-G59 coordinate system. Using a similar setup with CP already has for mapping the face of a PCB board with the Z-min limit, but expanding on it to map both the x- and y- limit of the work piece.
Another thought would be the ability to take advantage of additional TinyG outputs such as the coolant trigger: instead of having M7 and M8 function by turning on the same output allow the TinyG to set M7 for one output and M8 for the other. In similar fashion two spindles could be utilized (combined mill/lathe machine maybe?).
Those shouldn’t require synchronization as utilizing the steppers would. Would something like that be possible, or rather I should say: Would something like that produce less programming and new board production requirements than the G2?
June 8, 2016 at 7:22 am #9779cmcgrath5035ModeratorHave a look at this post:
What you are contemplating with networked tinyGs is probably possible, give or take bugs that may exist. Support for bug fixes will be hard to come by.
-
AuthorPosts
- You must be logged in to reply to this topic.