Code Monkey home page Code Monkey logo

groundcontrol's People

Contributors

andrewalbinger avatar andymillernz avatar barboursmith avatar barsmith avatar blurfl avatar cericl avatar cptanpanic avatar danfunk avatar davekopecek avatar davidelang avatar dependabot[bot] avatar designfrontier avatar duderdice avatar gerobh avatar iceblu3710 avatar johnbenweber avatar johnboiles avatar jwolter0 avatar krkeegan avatar madgrizzle avatar maslowcommunitygardenrobot avatar mbonneau avatar oidan avatar peteb4ker avatar reecej avatar theriflesspiral avatar thormj avatar wrh3c avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

groundcontrol's Issues

override chain lengths

We need a way to override the computed chain lengths for machines with unusual geometries.

Issue opening gcode file in Ground Control

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:

Clean up data structure

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.

Gcode reloads to 0,0

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".

Serial connection issue on Mac platform

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.

Test GroundControl with Raspberry Pi touchscreen

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.

USB Connection Lost popup should offer 'Stop' option

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.

G-code Start Location With Gravity

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.

Z axis zero on HOME or STOP button push

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.

Resolve carriage stop after "J" in gcode

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.

Indicate that the machine state is on 'Hold'

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.

Add more user settings

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

Branch '-switch-to-using-dist-between-motors' vertical control error

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.

gcode that produces burning in dogbones

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".

electronics-cover.zip

photo on 3-29-17 at 5 38 pm

openFile defaults to a directory within the groundcontrol app

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.

Empty increment size crashes GroundControl

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:

Software Settings file is missing

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.

create a machine self measurement routine

At one point @BarbourSmith described a machine calibration routine that measured the distance between the motors, it would go something like

  1. position both motors with a tooth on the gear pointing straight up.

  2. tell ground control how many teeth on the gears

  3. hook a chain across the top of one gear with the slack to the outside.

  4. 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.

  5. 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

  6. 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)

  7. 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.

Strange jogging behavior after failed Gcode

Gcode1.zip

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.

Actions tab breaks serial connection

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.

PID Control

Replace proportional control with PID control to reduce oscillations.

Add a "Quit" button to GC

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.

Separate the distance setting for Z-axis move amount from the horizontal distance setting

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.

Rasp Pi Mouse cursor click location misaligned

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… "

Rasp Pi Touchscreen screen size

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.

moveGcodeIndex in frontPage.py causes crash

The fork comes without a groundcontrol.ini, this causes crashes:

  1. The first run crashes immediately but creates an .ini file. This file has 'False' as the value for zaxis and has no value for openfile. The crash is related to:

UIElements/frontPage.py", line 131, in moveGcodeIndex
gCodeLine = self.data.gcode[self.data.gcodeIndex]
IndexError: list index out of range

  1. The second run opens successfully and many parts work as expected, but it crashes when a gcode file is chosen and 'load' is clicked. The filename chosen is not written to the .ini file and the crash shows the same error.

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.

Improved Calibration Routine

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.

To measure the distance between the motors accurately:

  1. Set both motors to have one gear tooth pointing straight up
  2. Attach last link on left chain to the top tooth on the left motor
  3. Pay out chain until it reaches the right motor, hook chain onto top tooth
  4. Reverse left motor direction to tension chain removing droop. The tension can set automatically because the motor voltage and speed of rotation are known. If we need to we can take into account chain droop but I don't think it will be significant
  5. The value of the left motor encoder will now reflect the distance between the motors

To measure the length of chains

  1. Set both motors to have one gear tooth pointed straight up
  2. Use the motors/encoders to pay out the correct length of chain. This will have to be done one chain at a time because until there is some tension on the chain the sprockets are not self tailing and can catch the chain.

Change Feedrate on the fly

"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

Hold coordinates in GC to resume after disconnect

"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."

If G90 absent, gcode preview is garbled

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.

Problem installing firmware

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.
'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.