• Dan
    Post count: 974
    Dan
    January 11, 2018 at 13:09 #15253

    Uh…. they shouldn’t all move together.

    option a) Did you wire all the motors to one driver?

    option b) Maybe your setup thinks the machine is 0mm on each side and the math is failing? :S

    option c) it’s a firmware bug and I need to investigate.

    Post count: 11
    ajeromin
    January 11, 2018 at 18:38 #15256

    Good ideas! I’d guess its option B. I saw the XYZ system dimensions (in mm?) in the firmware previously. I cant find that now. Is it set using the adjustLimits() function? And what might I send over serial input manually to set for instance, my system to X:500mm Y:500mm Z:400mm ?

    thank you again!

    Post count: 11
    ajeromin
    January 11, 2018 at 19:35 #15257

    I see on line 166 of eeprom.h that we check for “MAKELANGELO_HARDWARE_VERSION” value. But that doesn’t appear to be a define elsewhere in the code, so it doesn’t look like adjustDimensions gets called.
    Should this be checking against “MACHINE_HARDWARE_VERSION” instead? Looks like the Skycam would be 6.
    Can’t try until tomorrow, but I will.
    Thanks.


    #if MAKELANGELO_HARDWARE_VERSION == 5 || MAKELANGELO_HARDWARE_VERSION == 6
    adjustDimensions(50,-50,-32.5,32.5);
    saveCalibration();
    #endif

    Post count: 11
    ajeromin
    January 11, 2018 at 20:02 #15258

    I’ve modified “loadConfig()” in hopes it sets my skycam dimensions up correctly. Will test it asap:
    (are the units in cm or mm?)

    void loadConfig() {
    char versionNumber = loadVersion();
    if( versionNumber != EEPROM_VERSION ) {
    EEPROM.write(ADDR_VERSION,EEPROM_VERSION);
    #if MAKELANGELO_HARDWARE_VERSION == 5 || MAKELANGELO_HARDWARE_VERSION == 6 || MACHINE_HARDWARE_VERSION == 6 //ACJ
    float limits[NUM_AXIES*2];
    limits[0] = 60.0;
    limits[1] = -60.0;
    limits[2] = 60.0;
    limits[3] = -60.0;
    limits[4] = 40.0;
    limits[5] = -40.0;
    //adjustDimensions(60.0,-60.0,-60.0,60.0); //how do these get set?
    adjustDimensions(limits); //ACJ
    saveCalibration();
    #endif
    }

    Post count: 11
    ajeromin
    January 12, 2018 at 06:58 #15263

    no go. hmmm. after trying the above, M102 returns:
    (-0.01, -0.01, -0.01) – (-0.01, -0.01, -0.01)

    Not sure what that means exactly, but are those the machine dimensions?
    If so, my adjustDimensions attempt did not work, nor save to eeprom

    Dan
    Post count: 974
    Dan
    January 12, 2018 at 14:26 #15274

    adjustDimensions() there would only happen once, when the EEPROM version changes, which is almost never.

    gcode M101 will adjust limits without changing the firmware.

    M101 Annn Tnnn Bnnn
    Change axis A limits to max T and min B

    axis order is XYZUVW, so to change axis X to limit from -10 to +20

    M101 A0 T20 B-10

    I hope this helps.

    Post count: 11
    ajeromin
    January 13, 2018 at 14:51 #15289

    THAT helped a lot actually! THank you! Things are moving in three axes now! Woohoo!

    There seems to be an issue with swapped motors. I’ve wired motors 0,1,2,3 properly to the arduino as in the code.

    I’ve arranged them A, B, C, D (NE, NW, SW, SE) as shown in the original sky cam post.
    Is that right still?

    Lastly, what are the units please? Mm? Cm? My guesses aren’t seeming to arrive at accurate distances or directions.

    Thanks again!

    Dan
    Post count: 974
    Dan
    January 13, 2018 at 15:30 #15290

    Everything in the makelangelo code should be in mm. I thought I had documented it better in configure.h that the standard units would be mm and kg… another issue to open in github.

    Thank you for your patience with me. I’m going as fast as I can.

    Post count: 11
    ajeromin
    January 13, 2018 at 20:19 #15291

    Dan, I’m absolutely thrilled that you help me out at all! Rare to see responses to forum inquiries these days, so thank you!
    Your site and projects and mission are awesome and inspiring.

    I hope I can contribute in useful ways to the code at some point too. Trying to get there. 🙂
    Thanks again!

    Post count: 6
    sillyString
    April 12, 2018 at 11:33 #19673

    hey dan hows it going.

    looking good your website…things have changed…

    i have now started and run some of your projects i tried the v plotter v2 of yours with ams board…

    and now i want to move up to this one….skycam for lego haha..

    in your link here https://www.marginallyclever.com/2015/02/code-inverse-kinematics-spidercam-skycam/
    you say to use the
    RUMBA controler or a RAMPS shield
    but i see you use the adafruit motor shield v1 is that what you call a ramps?no?
    can i use a cnc shield like so http://www.alselectro.com/stepper-driver-cnc-shield.html
    only cause i dont have a rumba or ramps so would need to order but i got a cnc shield so could try…

    i also read people were asking you to try running it on one arduino control board does the firmware do this or is it still a future idea?

    bassically id like to write some loops and let the skycam run and run…so i dont need a computer running the software or and sd card well unless my loop are miles long…
    so i was wondering if you could help me simplify it…to just the raw bassics?

    as is would i be able to just create a sequence of teleport commands flashed to the arduino would that be fine or is it currently only set to be controlled via your software.?

    thanks allot dan hope things your side of the world are marginally good

    Dan
    Post count: 974
    Dan
    April 12, 2018 at 11:40 #19674

    The makelangelo firmware has a skycam option.

    in configure.h,

    
    #define MACHINE_STYLE SKYCAM
    #define MOTHERBOARD BOARD_RUMBA // (or BOARD_RAMPS)
    

    Not many people have been brave enough to try this, so please report back with your tips & quirks, I will try to assist.

    • This reply was modified 8 months ago by Dan Dan.
    Post count: 6
    sillyString
    October 26, 2018 at 17:46 #21012

    well im sort of a bit further.
    could you help me with some things.

    im so far trying to start with the pen pos in the center of the center of the square.say the square is 2x2x2meters.
    how would i set the starting values without using the java software so i could run a loop function with teleport here or there?

    im unsure what this limit is ?is it the lenght in mm?could you give me an example if the i start in the center of a 2×2 cube?
    float limit_ax = 0;
    float limit_ay = 0;
    float limit_az = 0;
    is this the home i.e like you explain in the https://www.marginallyclever.com/2015/02/code-inverse-kinematics-spidercam-skycam/
    is this below c so 0,0,0 start pos?
    float homeX=0;
    float homeY=0;
    float homeZ=0;
    what would this be if again i start with a 2×2 cube?
    float posx, posy, posz;

    and is this end number mm||cm?
    motorStepArray[0] = lround( sqrt(dx*dx+dy*dy+dz*dz) / THREAD_PER_STEP );

    does this function move the skycam in 2d rather than 3d movement?
    void polargraph_line();

    thanks again.

    Dan
    Post count: 974
    Dan
    October 27, 2018 at 03:27 #21013

    There are 1000 (one thousand) mm in a meter. so each of your corners would be something like (1000,1000,2000).
    limit_a* is the position of the motor A relative to the origin.

    Dan
    Post count: 974
    Dan
    October 27, 2018 at 03:32 #21014

    THREAD_PER_STEP should be mm – the amount of belt moved on each step of each motor. Assumes all motors are the same.
    If you know the pitch of your pulley then you can say thread_per_step = pitch / actualSteps.
    at 1/16 microstepping and 400 steps per turn, with twengty-tooth GT-2 pulleys,

    pitch = 20*2; // GT-2 is 2mm per tooth.
    actualSteps = 16 * 400; // microsteps*full steps per turn
    thread_per_step = pitch / actualSteps;

    M101 will let you adjust teh limit values at run-time so you don’t have to keep rebuilding the code while you figure out the right numbers.
    movement commands like G0 and G1 understand X, Y, and Z.

    Post count: 6
    sillyString
    October 27, 2018 at 04:43 #21015

    alright thanks for the quick reply.

    im going to try tonight so ill get back to you if i get in a pickle.

    Post count: 6
    sillyString
    November 5, 2018 at 11:43 #21060

    hey dan.

    so i ended up having some more problems.

    im not trying to run the skycam from your software instead im trying to get it working with my own stepper interupt routines.

    but i tried setting it up to test lenghts and stuff like you sugested using M101 and such, but i couldn’t get any stepper movement and currently only have one adafruit motor driver.its already installed on my wall running your wall plotter.

    i tried running the software for the skycam on osx serria 10/12/6 .with no luck

    i get these errors.

    when trying to run osx_runme.sh i get this error.

    Skycam $./osx_runme.sh
    Error: Unable to access jarfile /Users/hero/Desktop/Skycam-master/src/main/java/com/marginallyclever/Skycam/DrawbotGUI.jar

    so i added the DrawbotGUI.jar to the folder.

    and then got this

    Skycam $./osx_runme.sh
    Exception in thread “main” java.lang.NoClassDefFoundError: gnu/io/SerialPortEventListener
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1009)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:545)
    at java.base/java.net.URLClassLoader.access$100(URLClassLoader.java:83)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:453)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:447)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:446)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:374)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:56)
    Caused by: java.lang.ClassNotFoundException: gnu.io.SerialPortEventListener
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:566)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
    … 14 more

    as i have never ever used java im unsure what to look for.

    i then tried running it from eclipse by importing a maven project and running.
    and i got more errors.

    Description Resource Path Location Type
    The type java.lang.Object cannot be resolved. It is indirectly referenced from required .class files SerialConnectionReadyListener.java /Skycam/src/main/java/com/marginallyclever/Skycam line 1 Java Problem

    it seems in both cases some im missing some serial files.

    so im a bit stuck.

    can you confirm that this code here
    https://github.com/MarginallyClever/Skycam
    no runs the skycam on one board and does not need two like before?

    im also still confused about the things i asked last week.

    im now trying to use the kinematics functions and create my own code to get lenghts and telport.

    but i still cant understand how to set limits without have to use software or M101.

    i have no problems recompiling everytime.

    here you say”There are 1000 (one thousand) mm in a meter. so each of your corners would be something like (1000,1000,2000).
    limit_a* is the position of the motor A relative to the origin.”

    could you please give me an example for say like before i want the star/origin to be the center of a square 2x2x2.

    would i do this for each motor?

    float limit_ax = 1000; //1000mm i.e half of 2meters?
    float limit_ay = 1000;
    float limit_az = 1000;

    or would i set this in

    float homeX=1000;
    float homeY=1000;
    float homeZ=1000;

    as id like my home to be the center of the 2x2x2 cube.

    im sorry if im repeating myself i just cant grasp setting the lengths and limits in the firmware.without software.

    here is the code i put together to test the kinematics lenghts.
    https://pastebin.com/8hiGZs88
    it runs steppers and calculates lenghts but when i change x or y pos all lenghts seem to always be equal to each other.which cant be right.

    Dan
    Post count: 974
    Dan
    November 6, 2018 at 09:55 #21070

    > The type java.lang.Object cannot be resolved.

    I would Google it and see what stackoverflow says.

    > can you confirm

    code says “Skycam – supports raprapdiscount RUMBA controller”. I don’t have hardware set up to retest it.

    All limits are relative to the origin (0,0,0). In my cube I set the home on the floor in the center at the origin. the corners are 1m away and 2m up, or
    (1000,1000,2000) for limit a,
    (1000,-1000,2000) for limit b,
    (-1000,-1000,2000) for limit c, and
    (-1000,1000,2000) for limit d.

    I hope that helps.

    Post count: 6
    sillyString
    November 13, 2018 at 10:29 #21100

    yea that helped allot dan thanks.
    my step values are now looking right.

    im away from home at the moment but will give it a try with steppers attached soon.

    thanks again

Viewing 18 posts - 26 through 43 (of 43 total)

You must be logged in to reply to this topic.

0
Save & Share Cart
Your Shopping Cart will be saved and you'll be given a link. You, or anyone with the link, can use it to retrieve your Cart at any time.
Back Save & Share Cart
Your Shopping Cart will be saved with Product pictures and information, and Cart Totals. Then send it to yourself, or a friend, with a link to retrieve it at any time.
Your cart email sent successfully :)