Smaller size Maslow

Hi. At the moment I´m a bit size constrained. I was wondering it it would be possible to build out my Maslow to a smaller scale for the time being. Maybe 1/2 size? Then later, once I have more experience and room rebuild Maslow to full size. Any advice?

2 Likes

You are far from the first to ask this, but I’m not sure Ive seen a completed smaller build. In theory it should work just fine, and the calibration process will correct for the change in size, but until someone does it it’s uncharted territory.

I say go for it and let us know!

Yes, you can build a smaller machine, you will need similar distances out from
the work area to the motors, so cutting the work area in half won’t make the
machine half the size.

rather than trying to work from the work area to the machine size, I would
suggest figuring out what size machine you can have space for, and then look at
what the effective work area of that machine would be.

if you go to http://lang.hm/maslow grab the v-plotter.py and set the motor
spacing that you can build in there, and look at what the resulting working area
looks like.

1 Like

Newb question. You say grab the python script. Once I download the python script - then what do I do? How do I execute the Script?

I’m looking to build a 5’x5’ size as I primarily use Baltic birch. Maybe I can get my September delivery bumped up if I offer to post the 5x5 build!!

:wink:
Matt

1 Like

edit the variable definitions at the top of the file to set the dimensions, and
then just python v-plotter.py will run it and draw the (approximate) area that
it will cut well

It puts grids on it so you can see the 1" and 1’ marks, you may need to change
the plot size and re-run it to see how it will end up.

David Lang
k

Thanks for the updates David! I was wondering about the python script as well. I´ll have to try and look at that this weekend.

Whomever ends up getting this all up and running, please consider writing up your experiences and observations here, in the Wiki.

thanks!

1 Like

Complete newbie here. I agree, Full size is nice but for those of us space challenged, a smaller version, say half, would be great. If someone or Maslow could create the drawings and data files to create one, it would sure help. Also, if there are adjustments to software or set up please include those as well.

Hi Dave,
I´ve setup a preliminary model in Rhino of a 4x4ft workspace that I´ll share with the group if I get it working.

In the meantime, I´ve been going over the script and I´m not a python programmer so have some doubts. I´m hoping that you can help? Please see below…my comments/questions/modifications are in CAPS…not “yelling”…just easier to see :slight_smile:
Thanks.

#!/usr/bin/env python

#created by Bill Ola Rasmussen //2e5.com/plotter/V/design/
#modified by David Lang to add grid and tweak parameters to match Maslow CNC
#the modified version is at //lang.hm/maslow/v-plotter.py

import sys,Image,ImageDraw
from math import sqrt,sin,cos,acos,atan2,degrees,fabs
#setup the constants
version=1.7
outputFile=“out.png”
#width and height are in pixels
#picked these values as creating an image that will fit on a HD screen at full resolution and fit the maslow 4’ x 8’ workspace
#WHY DO PIXELS MATTER?
#AND FOR A 4’X4’ WORKSPACE I WILL SET THE WIDTH, HEIGHT TO:
#width,height=1900,1000
WIDTH,HEIGHT=1000,1000

#border is in pixels, this is really pretty meaningless, but it was in the original code and you can’t get really close to the edges or the motors anyway, so I’ve left this in place (David Lang)
border=32
#how low and how high the tension is allowed to be, measured in terms of multiples of the pen/sled weight
#WHAT IS “PEN”?
#DO YOU MEAN PEN DIVIDED BY SLED WEIGHT IN KG?
#THE REASON I ASK IS BECAUSE I INITIALLY WISH TO TEST MASLOW WITH A MARKER (NOT A ROUTER)
#for the maslow CNC with a ~10Kg sled and motors that produce 30Kg/cm of torque, these values seem appropriate
lo,hi=.2,3.0

#max error betwen letting the length grow by 1 and the plotted position
#the maslow has 8148 pulses/rev and is trying to achieve 1/64" accuracy with a 10 tooth type 25 roller chain sprocket.
#50.9 ‘steps’ = 1/64"
#HOW DID YOU ARRIVE AT 50.9?
#IF I DEFINE THE GRID IN METRIC, DO I HAVE TO CHANGE THE VALUE?
max=50.9

#spacing in ft to create 1ftx1ft grid
#this is the first place where ‘real world’ dimensions come into play. The units here are arbitrary, they create a grid based on whatever units this spacing is in. So if you put a spacing in ft, the resulting major grids will be in ft. If you put in a dimension in hands, the resulting major grid will be in hands
#on the maslow CNC, the current spacing is defined as 9.77 ft
#I ASSUME THAT SPACING IS THE DISTANCE BETWEEN THE TWO UPPER “ARMS”?
#FOR MY 4ft x 4ft CONFIGURATION, THE ARMS ARE APPROX 5.89 FEET
#I WOULD LIKE TO USE METRIC…SO THIS IS APPROXIMATELY 179.7cm
#THUS I WILL SET THE SPACING TO:
#spacing=9.77
SPACING = 179.7

#how many subgrids per grid. For Imperial 12 inches/foot
#These subgrids are also arbitrary divisions. If the grid is in ft, then =12 would make subgrids in inches. If the grid is in meters, then 100 would be centimeters
#FOR METRIC THEN I WILL SET THE SUBGRID TO:
#subgrid=12
SUBGRID = 100

#I UNDERSTAND THAT EVERYTHING THAT FOLLOWS IS SET AS PART OF THE PROGRAM?
#scale computes how many pixels per unit of spacing
scale=(width-border)/spacing
#define offsets so that the grid is centered on the image and shift it vertically
xoff=0.5*((width-border)%int(scale)+border+(int(spacing)%2*scale))
#yoffset is manually set so that you can make a major grid line appear at the bottom of the top curve to make it easier to see how a board would fit…

1 Like

Hi Dave,
I´ve setup a preliminary model in Rhino of a 4x4ft workspace that I´ll share with the group if I get it working.

In the meantime, I´ve been going over the script and I´m not a python programmer so have some doubts. I´m hoping that you can help? Please see below…my comments/questions/modifications are in CAPS…not “yelling”…just easier to see :slight_smile:
Thanks.

#!/usr/bin/env python

#created by Bill Ola Rasmussen //2e5.com/plotter/V/design/
#modified by David Lang to add grid and tweak parameters to match Maslow CNC
#the modified version is at //lang.hm/maslow/v-plotter.py

import sys,Image,ImageDraw
from math import sqrt,sin,cos,acos,atan2,degrees,fabs
#setup the constants
version=1.7
outputFile=“out.png”
#width and height are in pixels
#picked these values as creating an image that will fit on a HD screen at full resolution and fit the maslow 4’ x 8’ workspace
#WHY DO PIXELS MATTER?

pixels matters because this creates an image, and you have to say how big an
image to calculate. This isn’t the size of the workspace, but the overall image
including the space outside the workspace up and out to the motors.

#AND FOR A 4’X4’ WORKSPACE I WILL SET THE WIDTH, HEIGHT TO:
#width,height=1900,1000
WIDTH,HEIGHT=1000,1000

#border is in pixels, this is really pretty meaningless, but it was in the original code and you can’t get really close to the edges or the motors anyway, so I’ve left this in place (David Lang)
border=32
#how low and how high the tension is allowed to be, measured in terms of multiples of the pen/sled weight
#WHAT IS “PEN”?

This was origionally written for a similar machine that drew pictures, so you
had a pen instead of a router

#DO YOU MEAN PEN DIVIDED BY SLED WEIGHT IN KG?
#THE REASON I ASK IS BECAUSE I INITIALLY WISH TO TEST MASLOW WITH A MARKER (NOT A ROUTER)

This tension is how low/hich can it be as a multiplier of the weight of the
sled. So with a 10Kg sled and motors that produce 30Kg of tension, that is a
value of 3.0

for your purposes, leave this alone.

#for the maslow CNC with a ~10Kg sled and motors that produce 30Kg/cm of torque, these values seem appropriate
lo,hi=.2,3.0

#max error betwen letting the length grow by 1 and the plotted position
#the maslow has 8148 pulses/rev and is trying to achieve 1/64" accuracy with a 10 tooth type 25 roller chain sprocket.
#50.9 ‘steps’ = 1/64"
#HOW DID YOU ARRIVE AT 50.9?
#IF I DEFINE THE GRID IN METRIC, DO I HAVE TO CHANGE THE VALUE?
max=50.9

#spacing in ft to create 1ftx1ft grid
#this is the first place where ‘real world’ dimensions come into play. The units here are arbitrary, they create a grid based on whatever units this spacing is in. So if you put a spacing in ft, the resulting major grids will be in ft. If you put in a dimension in hands, the resulting major grid will be in hands
#on the maslow CNC, the current spacing is defined as 9.77 ft
#I ASSUME THAT SPACING IS THE DISTANCE BETWEEN THE TWO UPPER “ARMS”?
#FOR MY 4ft x 4ft CONFIGURATION, THE ARMS ARE APPROX 5.89 FEET
#I WOULD LIKE TO USE METRIC…SO THIS IS APPROXIMATELY 179.7cm

it looks like your options are about right.

#THUS I WILL SET THE SPACING TO:
#spacing=9.77
SPACING = 179.7

#how many subgrids per grid. For Imperial 12 inches/foot
#These subgrids are also arbitrary divisions. If the grid is in ft, then =12 would make subgrids in inches. If the grid is in meters, then 100 would be centimeters
#FOR METRIC THEN I WILL SET THE SUBGRID TO:
#subgrid=12
SUBGRID = 100

#I UNDERSTAND THAT EVERYTHING THAT FOLLOWS IS SET AS PART OF THE PROGRAM?

yes

Hi. So, I´m a complete python newbie. As I understand it, I need to:

  1. Open python IDLE

  2. Open the “v-plotter.py” module that I downloaded

  3. Edit the variable settings as we discussed.

  4. Run the module within IDLE (F5)

  5. When I do this I get an error “Missing parentheses in call to print”

  6. The “print” command looks like this in the downloaded script:
    print “V plotter map, version”, version

  7. I changed it to:
    print (“V plotter map, version”, version)

  8. Now the script seems to compile ok, but when running I get an error:
    “Traceback (most recent call last):
    File “/Users/dp/Desktop/PYTHON/v-plotter.py”, line 7, in
    import sys,Image,ImageDraw
    ImportError: No module named ‘Image’”

  9. I have almost no idea what I´m doing, but from what I found it seems like I need to run:
    “pip install Image” ?

However, I´m getting this:
“error: could not create ‘/Library/Python/2.7/site-packages/olefile’: Permission denied”

Any ideas?

Great work getting that far!

The print issue is caused by a change in python3 vs python2, and it sounds like you fixed it correctly

The permission issue can be solved by running “sudo pip install image” on Mac/Linux or by opening the command prompt as an administrator in Windows

Hi! Thanks for getting back to me.

  1. When I run “sudo pip install image” I get the following error:
    “The directory ‘/Users/dp/Library/Caches/pip/http’ or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo’s -H flag.”

  2. So I´ve tried the following command “sudo -H pip install Image” and I get the following:
    “Requirement already satisfied: Image in /Library/Python/2.7/site-packages
    Requirement already satisfied: pillow in /Library/Python/2.7/site-packages (from Image)
    Requirement already satisfied: django in /Library/Python/2.7/site-packages (from Image)
    Requirement already satisfied: olefile in /Library/Python/2.7/site-packages (from pillow->Image)
    Requirement already satisfied: pytz in /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python (from django->Image)”

  3. I assume that it means everything is OK? But I´m still getting an error when executing v-plotter python script in IDLE (PYTHON 3.5 IDLE in macOS applications folder…though in TERMINAL, python shows to be 2.76). The error is:

=============== RESTART: /Users/dp/Desktop/PYTHON/v-plotter.py ===============
Traceback (most recent call last):
File “/Users/dp/Desktop/PYTHON/v-plotter.py”, line 7, in
import sys,Image,ImageDraw
ImportError: No module named ‘Image’

Would this work if you ran idle from a terminal window? I think that will bring up a Python 2.7 shell window for you. From there you can open the .py file and run it.

I was just running

python v-plotter.py

but yes, it was 2.7

Hi. Argh. I ran idle from the terminal, which opened the Python 2.7.6 shell. The v-plotter script is in a folder on my mac desktop.

  1. Within the Python shell, I don´t know how to reference it. (as opposed to running the python script within Terminal, I know how to navigate to the desktop and then execute the script from there)

  2. However, I´ve copied and pasted the script text into the Python shell directly. It gives me the same error as when I execute from terminal (i.e. what David says “python v-plotter.py”)…
    “ImportError: No module named Image.”

  3. Do you think it is critical to get this script running? Or will GroundControl allow me to configure the working space?

Thanks again.

I’ve tracked down the issue: the OS X install of Python gets the Image module from a library named PIL.

If you’ll edit the vplotter.py file, find the line:

import sys,Image,ImageDraw

and replace that with these two lines:

import sys
from PIL import Image,ImageDraw

Save that, and from the terminal (cd into the same directory as vplotter.py) you’ll be able to run it as David says, or run it from ‘idle vlpotter.py’ if you like.

ground control doesn’t care about this script, it’s just a way to get an idea of
how wide/high you need to move the motors to cover the size you are looking
for.

Will it still be accurate with the triangular Kinematics?

v-plotter.py uses triangular kinematics to estimate your accuracy and chain
tension, it gives you an idea of where the limits are, it’s not perfect.

The siumulator built in to Ground Control is where the kinematics type matters.

1 Like