maslowcnc / groundcontrol Goto Github PK
View Code? Open in Web Editor NEWThis is the Ground Control software used to control the Maslow CNC Machine
Home Page: https://www.MaslowCNC.com
License: GNU General Public License v3.0
This is the Ground Control software used to control the Maslow CNC Machine
Home Page: https://www.MaslowCNC.com
License: GNU General Public License v3.0
There is some interaction between the 'Distance to Move' setting and the distance the Z-axis motor travels for the z-in or z-out button. The relationship is not clear, and when large distances are set for horizontal traverse, the z travel will be large as well. It is possible to run the z-axis mechanism into its physical limits causing damage to the equipment.
Having a separate setting for z-axis distance would solve the issue. It would not need to be as accessible as the horizontal distance setting, perhaps it could live on the settings page rather than on the front page.
.NC files generated with GRBL Generic post processing have open paths and errors.
I don't know how to attach a .nc file? Format not supported for Github upload. I'll email you.
This gcode file is causing ground control to crash.
http://s000.tinyupload.com/index.php?file_id=35118293171267730826
hello! :) attached is the ZIPPED version of the .nc that won't open correctly yet in Ground Control :)))
untitled folder 2.zip
It would be nice if ground control could detect when a line of gcode doesn't make sense and show an error.
Using a keyboard to enter values in the settings produces double characters per keystroke. Typing a '1' produces '11'. This makes entering values impractical.
When running for the first time, or without a gcode file selected, or when the gcode file cannot be found, the 'openFile’ dialog starts within the file structure of groundcontrol itself. This can be confusing.
Instead, use the user’s home directory as the starting point. A two-line change to viewMenu would set the path to path.expanduser('~') if the gcode file is not found.
I've tested is on OS X and Windows10, but not Android.
When the 'USB Connection Lost' message appears, only 'Continue' is available. 'Stop' would be a good option as well, no?
For that matter, even the Z-axis popup would benefit from an option to stop what we're doing.
On desktop platforms you can close the program with the X in the corner, but on raspberry pi the program runs full screen so there is no option to do that.
Also fix the bug where pressing "escape" kills gc at the same time.
"Greetings all! I love my CNC mill but it is driving me up the wall with this issue about disconnects. I had hoped that the reconnect feature would solve this, it's kinda frustrating to bump the table and have an hour + of cut time go down the drain.
Is there any way at all to store the current coordinates so that when I unplug my CNC mill and plug it back in (after restarting ground control), that the most recent coordinates are saved? This must be doable in ground control, even if not in the CNC software itself."
The fork comes without a groundcontrol.ini, this causes crashes:
UIElements/frontPage.py", line 131, in moveGcodeIndex
gCodeLine = self.data.gcode[self.data.gcodeIndex]
IndexError: list index out of range
The file with full path can be entered in the Settings panel, or at /Applications/groundcontrol.app/Contents/Resources/yourapp/groundcontrol.ini with a text editor. Once a valid filename is present, all is well. If the file's name is changed or the file is moved though, groundcontrol once again crashes immediately on opening.
I am cutting projects with the final Maslow. I move the cutter to my start location and define zero. I load the Gcode and it centers on the cutter bulls eye. Great. I have had to update my Gcode, say for Cutting depth, or I put in the Material Thickness, or Speed. I press hold on the project, then stop and return to Home. I re-load the Gcode, and ground control puts it at 0,0 center, not where I defined zero. Then if I push Define Zero again, it locks up, or it puts the pattern no where neat my Zero point. Can it be revised to LOAD the Gcode to "My Zero". OR even slicker...If I hold the cut, make a change, reload the Gcode, press run and be off and cutting with the new code from where I left off? At least have it reload to "My defined zero".
At one point @BarbourSmith described a machine calibration routine that measured the distance between the motors, it would go something like
position both motors with a tooth on the gear pointing straight up.
tell ground control how many teeth on the gears
hook a chain across the top of one gear with the slack to the outside.
have the machine run the motor to take up the slack (feeding the chain out towards the center of the machine). This could either be a continuous feed as long as a button is held down, or a series of 'feed 1 foot of chain' presses.
when enough chain has been let out to hook it over the top of the second motor, hook it there and tell ground control that it's in place
ground control would then rotate both motors (feeding more chain from the first, taking up chain from the second, until you have a good wrap around the second motor, say 6=12" worth to be safe)
ground control would then instruct both motors to start pulling against each other (adding tension to the chain), until there is a good amount of tension in place.
by knowing how much chain was let out by the first motor, and then how much was pulled back when tensioning the chain, you should know exactly how much chain there is between the motors. And since each link is .25", the exact distance between the motors can be calculated.
Bonus items:
if someone is willing to count links, steps 3-6 could be replaced by "tell me how many links there are between the two that you used to go from the top of one gear to the top of the other
the extra pins on the arduino could be used for a switch to feed out the motors for step 4 instead of having to hit something on the controlling computer.
"I'd like to be able to scale the F values on the fly so I can slow down or increase the rate of advance while milling." -Tobor
The "About" button under diagnostics is currently disabled. Clicking it should open a popup which will have information about the version number.
We need a way to override the computed chain lengths for machines with unusual geometries.
If G90 (absolute positioning) command is not present in the gcode, the preview is messed up. It appears you can place it anywhere in the file, it doesn't matter where just as long as there is one somewhere and only in the first file you load.
On
Ubuntu 14.04.5 LTS trusty
Python 2.7.6
Dragon.nc loaded
not connected
Clicking "Define Origin" changes mm to inches.
I've been talking to Keith Selbo (our resident mathematician) about how to make the calibration of the machine as easy as possible and he made some EXCELLENT suggestions that I wanted to get written down.
The problem we are solving is that the machine needs to be calibrated in-order to work accurately. Because of the non-linear way in which the machine relates rotational motion of the motors to movement it is important that the machine know the distance between the motors and amount of chain paid out. These values are stored in nonvolatile memory so even if power is lost the machine won't loose it's calibration.
Measuring these dimensions with a tape measure is going to result in user error and confusion. Keith suggested that the machine has a built in measuring system which would be more accurate than a tape measure. Basically we can use the motors, encoders and chain to establish the machine's dimensions.
Here's my slightly modified version of how this could work.
On
Ubuntu 14.04.5 LTS trusty
Python 2.7.6
Dragon.nc loaded
not connected
Clicking "increment size of movement" opens with blank value, no cancel button, clicking "done" without entering anything replaces current increment with "blank". Clicking on "units" afterwards makes Ground Control crash.
File "/home/ghadmin/Maslow/GroundControl/GroundControl-master/UIElements/frontPage.py", line 94, in onUnitsSwitch
self.moveDistInput.text = str(float(self.moveDistInput.text)/25)
ValueError: could not convert string to float:
The following issue was seen when opening the Sled-QuarterInchBit.nc file. I believe that the issue is that I accidentally bundled my .ini file with the program.
[WARNING ] stderr: File “c:\python27\lib\site-packages\kivy\lang.py”, line 1557, in custom_callback
[WARNING ] stderr: exec(_kvlang.covalue, idmap)
[WARNING ] stderr: File “.\GroundControl\.\groundcontrol.kv”, line 498, in <module>
[WARNING ] stderr: on_release: root.load(filechooser.path, filechooser.selection)
[WARNING ] stderr: File “C:\Users\Bar\Git\GroundControl\UIElements\viewMenu.py”, line 53, in load
[WARNING ] stderr: File “kivy\properties.pyx”, line 408, in kivy.properties.Property._set_ (kivy\properties.c:5114)
[WARNING ] stderr: File “kivy\properties.pyx”, line 446, in kivy.properties.Property.set (kivy\properties.c:5876)
[WARNING ] stderr: File “kivy\properties.pyx”, line 501, in kivy.properties.Property.dispatch (kivy\properties.c :6557)
[WARNING ] stderr: File “kivy\event.pyx”, line 1224, in kivy.event.EventObservers.dispatch (kivy\_event.c:13497)
[WARNING ] stderr: File “kivy\event.pyx”, line 1130, in kivy.event.EventObservers.dispatch (kivy\event.c:12696)
[WARNING ] stderr: File “C:\Users\Bar\Git\GroundControl\UIElements\frontPage.py”, line 118, in onGcodeFileChange
[WARNING ] stderr: File “C:\Users\Bar\Git\GroundControl\UIElements\frontPage.py”, line 140, in moveGcodeIndex
[WARNING ] stderr: ValueError: could not convert string to float:
Replace proportional control with PID control to reduce oscillations.
Downloaded .zip of the branch and latest firmware. Ran 'cal. chain lengths' and input the values in the settings panel. Noticed that Action/Return-to-Center was low. Up-arrow sends sled down. Down-arrow sends sled down. It seems like all arrows always pay chain out on both motors.
Within data.py there is a whole category of data called "Things I want to delete". They are all holdovers from the old Tkinter version of GC which should be deleted so long as deleting them doesn't cause issues.
The following need to be added to the user settings panel and made to sync up with the machine:
-Work area width
-Work area height
-Motor offset X
-Motor offset Y
-Sled width
-Sled height
-P I and D tuning values
Can easily design a hat for a Raspberry Pi to act as a controller directly using the on-board GPIO, no need for an external computer.
If there is a chain skip or other reason one would need to STOP instead of pause the cut. I noted the bit was still engaged with the wood after I then told it to go HOME. This caused a cut across the materials. Add code to first zero the Z acid on a stop command, and then a 0.1 safety depth on HOME command.
On the Mac platform, GroundControl makes and loses connection to the Mega board. I've verified on two different machines. A windows VM, on the Mac, running Windows python-kivy-GroundControl seems to work correctly. FWIW, a Ubuntu 16.04 VM running on the Mac makes and loses connection in the same manner as the Mac.
"I'd also like to see more decimal places on the X, Y, and Z displays. This is especially helpful when working in inches." -Tobor
From: http://www.makesmithtec.com/viewtopic.php?f=51&t=216&p=1210#p1210
The Raspberry Pi platform is capable of running Kivy, and can be configured with a touch screen. This configuration is tempting for mounting on the machine sled itself.
Earlier attempts to run GroundControl have run into various issues including cursor visibility.
Assemble a test unit and determine what issues need to be addressed in order to run the machine successfully, whether it is reasonable to mount the Pi on the sled and what compromises this configuration brings.
Got the Arduino installed, now on step 3, installing firmware. Got it downloaded, but when I double-click the cnc file, it opens Arduino, but when I click upload, it gives me an error Arduino: 1.8.2 (Windows Store 1.8.2.0) (Windows 10), Board: "Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
C:\Users\LaPrade\AppData\Local\Temp\Temp1_Firmware-master (2).zip\Firmware-master\cnc_ctrl_v1\cnc_ctrl_v1.ino:16:27: fatal error: CNC_Functions.h: No such file or directory
#include "CNC_Functions.h"
^
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Mega or Mega 2560.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
'
add a units button to ground control and let someone enter the measurements in whatever units they are measured in and let the software do the conversion
When 'Hold' has been clicked, change the text of the "Run" button from "Run" to "Resume". This will show that the hold command is in effect and how to leave that state to resume cutting.
Have thought of a potential issue that would be an easy fix.
When routing around something if the gcode calls for entry anywhere below the object when the cut starts the object will fall into the bit once complete. This is not an issue with standard machines as gravity plays no role.
The solution would be to have the entry point on all closed objects to start on the coordinate with the lowest Y coordinate.
When I run MakerCam generated gcode for the Arm_Front.svg (both in attached zip) I have an issue where the sled moves beyond the 4'x8' workspace while Ground Control shows 18"+ of clearance. Upon stopping the cut the jog commands ignore or multiply the distance setting. If I set it to jog 1 inch down, it will move down and simply continue until I hit stop (16"+ and no signs of stopping.) I have to restart Ground Control to reset the job commands.
I have followed the same steps with the attached BrickHolder.nc file, and that cuts as expected and has no effect on jogging before, during or after.
The most recent few lines of text are below the viewing area when using the 'official' touch screen.
Using a mouse in GroundControl there is a blue dot for a cursor. The hot spot when the mouse is clicked is above and to the left of the cursor image.
A comment on the forum suggests that there might be "a folder that holds the image files that appear during touches and when the cursor moves… "
Upon activating the Actions tab, a call to self.connectmenu.updatePorts() found in UIElements/otherFeatures.py breaks the serial connection, at least under OSX. Commenting out the offending line is a bandaid.
I've tried the following patch with success, avoiding the use of self.data.serialPort:
'
def updatePorts(self, *args):
portsList = ["Available Ports:"]
if sys.platform.startswith('win'):
sysports = ['COM%s' % (i + 1) for i in range(256)]
elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'): # this excludes your current terminal "/dev/tty"
sysports = glob.glob('/dev/tty[A-Za-z]*')
elif sys.platform.startswith('darwin'):
sysports = glob.glob('/dev/tty.*')
else:
raise EnvironmentError('Unsupported platform')
# for port in self.data.serialPort.listSerialPorts():
for port in sysports:
portsList.append(port)
if len(portsList) == 1:
portsList.append("None")
self.COMports = portsList
'
This should probably be a patch in the main branch, but I haven't had time to test it on other platforms yet.
It looks like the script 'Resources/script' is looking for yourapp/main.py instead of cncgc.py. I don't understand much about buildozer; I found that duplicating cncgc.py and renaming it main.py allows the package to run.
Current configuration of Ground Control will pause after J commands in the g code. I was able to replicate the behavior using both the Dragon.nc and BiggerMotorMount25in.nc files found in the "gcodefortesting" folder in GroundControl-Master.
Settings are currently saves within the directory that gets replaced by a version change. Save the somewhere that will persist.
"I would like to see, changing between MM and INCHs made easier. Like buttons or switches on the main screen."
Brad
From: http://www.makesmithtec.com/viewtopic.php?f=51&t=216&p=1210#p1210
The setting switch to turn on and off the z-axis isn't showing up for some reason.
The 7" Rasp. Pi Touchscreen cuts off the lower portion of the GroundControl panels. This leaves some actions and settings unreachable and the current lines of machine feedback off screen.
somehow the file softwareSettings.py has been deleted which breaks the build. It still works on my computer because I still have the .pyc file, but it needs to be tracked down.
Unfortunately, this version was designed and cut using 3/16" bit, so I hope you have one kicking around. I still need to re-test it with the latest firmware / GC. The gcode is just one of the 3 inch by 3 inch end pieces, it's designed with a 3/16" thick radiata pine 3-ply in mind. It cuts it in a single pass but the dogbones end up burning because the bit stays near them for way longer than the normal sides.
If for some reason you don't have a 3/16" bit, I've also included the svg and if you scale it up a bit, I suspect it will work just fine with a 1/4" bit too. I believe I used a feedrate of 25, cutting the whole depth at once using a 2-flute spiral upcut endmill since it's only 3/16".
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.