Scara support ?



  • Hello,
    I work on a 3d scara printer open source
    This version: https://forum.labsud.org/viewtopic.php?t=248#p755

    What type of scara version supports your development firmware ?

    Actual version http://www.openhardware.eu/tmp/VID_20170619_162554.mp4
    Run on Smoothieware actually, but more vibrate on small circle
    I want to test with duetwifi…

    Sorry for my brooken English (google translate help me...)
    Regards
    François

    Upgrade...
    Actual Version: https://youtu.be/mBF5cO8vGhI



  • Are you using 3mm filament?


  • administrators

    Firmware 1.16 beta 6 supports SCARA kinematics, although homing isn't implemented yet and I don't think it's been tested on a real SCARA printer. The SCARA kinematics support is designed to accommodate most single-arm SCARA designs. See https://duet3d.com/wiki/G-code#M669:_Set_kinematics_type_and_kinematics_parameters for the configuration parameters.



  • Thank you for your reply 🙂
    It is planned to add homing and offsets homing ?


  • administrators

    Yes I plan to add homing. What do you mean by offsets homing?



  • On my Scara end-stop homing is non X0 Y0
    exemple on smoothieware to recalculate after homing X0 Y0 i use ==> M206 X18.00 Y-40.00

    Order homing is adjustable ? but for me is Z/X/Y

    Ok I order a DuetWifi + PanelDue to test: 🙂


  • administrators

    I have been assuming that each arm joint will have a homing switch at one of its limits. The arm angle limits are already configurable.



  • I ordered
    Impatient to test 🙂


  • administrators

    Thanks for choosing the Duet. Preliminary information on configuring SCARA kinematics is at https://duet3d.com/wiki/Configuring_RepRapFirmware_for_a_SCARA_printer although some of it is likely to change. The easiest approach is probably to use configtool to generate a config file for a Cartesian printer, then add the M669 command to select SCARA kinematics.



  • Received order this morning fast delivery thank you 🙂



  • Hello,

    What type of cinematics Scara supports Duet, "Helios" has its 2 motors offset.

    The kinematics that I use is different from the model "Helios"
    The engine of the second arm is fixed on the first arm the math is different

    You support my kinematics, if yes how to select it?


  • administrators

    @frafa:

    Hello,

    What type of cinematics Scara supports Duet, "Helios" has its 2 motors offset.

    The kinematics that I use is different from the model "Helios"
    The engine of the second arm is fixed on the first arm the math is different

    You support my kinematics, if yes how to select it?

    See https://duet3d.com/wiki/Configuring_RepRapFirmware_for_a_SCARA_printer.



  • Hello,

    I come to you for help if possible …

    My configuration:
    Firmware Name: RepRapFirmware for Duet WiFi
    Firmware Electronics: Duet WiFi 1.0
    Firmware Version: 1.19beta8 (2017-06-30)
    WiFi Server Version: 1.19beta8
    Web Interface Version: 1.16

    If i do a g28 z0
    Position returns after homing
    X400 y0 z398
    Why x400 ???

    If i do
    G1 S2 X10 ==> ok
    G1 S2 X-10 ==> ok
    G1 S2 y10 ==> ok
    G1 S2 y-10 ==> ok

    After all the movements X/Y do not correspond to anything moving …

    Setting C0: 0: 0 is good or bad for my scara configuration?
    M669 K4 P200 D200 A-90:90 B-135:135 C0:0:0 S200; ,???

    I can not use it ==> G92 X0 Y0
    Return ==> Erreur: SyntaxError: JSON.parse: unexpected keyword at line 1 column 65 of the JSON data

    –-------------------------------------------------------
    ;My file homez.g
    G91 ; use relative positioning
    G1 S1 X700 Y700 Z700 F250 ; move all carriages up 700mm, stopping at the endstops
    G90 ; back to absolute positioning

    –------------------------------------------------------
    ;My file config.g

    ; Configuration file for Duet WiFi (firmware version 1.17)
    ; executed by the firmware on start-up

    ; General preferences
    ;M111 S0 ; Debugging off
    M111 S1 ; Debugging on
    G21 ; Work in millimetres
    G90 ; Send absolute coordinates…
    M83 ; ...but relative extruder moves
    M555 P2 ; Set firmware compatibility to look like Marlin
    M208 X0 Y0 Z0 S1 ; Set axis minima
    M208 X300 Y300 Z398 S0 ; Set axis maxima

    ; Endstops
    M574 X1 Y1 S0 ; Define active low and unused microswitches
    M574 Z2 S0 ; Define active high microswitches

    ; Drives - Axis and motor configuration
    M569 P0 S0 ; Drive 0 (X) goes forwards
    M569 P1 S1 ; Drive 1 (Y) goes forwards
    M569 P2 S0 ; Drive 2 (Z) goes forwards
    M569 P3 S0 ; Drive 3 (E0) goes forwards
    M350 X16 Y16 Z16 E16 I1 ; Configure microstepping with interpolation
    ;Calcul Step/mm X/Y (Réduction 80/16) ==> 40016(80/16)/360=88,888888888888888888888888888889
    ;Calcul Step/mm Z (Réduction 51/1) ==> 2001651/2.0/20=4080
    M92 X88.8888888888889 Y88.8888888888889 Z4080 E550 ; Set steps per mm
    M566 X900 Y900 Z12 E120 ; Set maximum instantaneous speed changes (mm/min)
    M203 X6000 Y6000 Z300 E2700 ; Set maximum speeds (mm/min)
    M201 X500 Y500 Z250 E250 ; Set accelerations (mm/s^2)
    M906 X1400 Y1400 Z1400 E1400 I60 ; Set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout
    M669 K4 P200 D200 A-90:90 B-135:135 C0:0:0 S200; set SCARA kinematics parameters [TODO what are bb and cc for the Helios?]

    ; Heaters Buse & Bed
    M143 S260 ; Set maximum heater temperature to 260C
    M305 P0 T100000 B4725 C7.060000e-8 R4700 ; Set thermistor + ADC parameters for heater 0
    M305 P1 T100000 B4725 C7.060000e-8 R4700 ; Set thermistor + ADC parameters for heater 1

    ; Tools
    M563 P0 D0 H1 ; Define tool 0
    G10 P0 X0 Y0 Z0 ; Set tool 0 axis offsets
    G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C

    ; Network
    M550 PScara ; Set machine name
    M552 S1 ; Enable network
    ; Access point is configured manually via M587 by the user
    M586 P0 S1 ; Enable HTTP
    M586 P1 S0 ; Disable FTP
    M586 P2 S0 ; Disable Telnet

    ; Fans
    M106 P0 S0.3 I0 F500 H-1 ; Set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
    M106 P1 S1 I0 F500 H1 T45 ; Set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on
    M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on
    –------------------------------------------------------


  • administrators

    As explained on the page I linked to:

    aaa is the amount by which the X motor (whose primary function is to control the proximal arm) affects the angle between the distal arm and the X axis. For example, if movement of the proximal motor does not affect the proximal-to-distal joint angle, then an X motor movement that causes one degree of proximal arm movement also changes the angle between the distal arm and the X axis by one degree, and the crosstalk factor is 1.

    the C parameter for your geometry should be 1:0:0. Caution: in a future firmware release I may change the meaning of the C parameter and you may need to use C0:0:0 instead.



  • Thank you for your prompt response 🙂

    Modified ==> M669 K4 P200 D200 A-90:90 B-135:135 1:0:0 S200

    The command "G92 X0 Y0" is apparently bugger ….
    Return ==> Erreur: SyntaxError: JSON.parse: unexpected keyword at line 1 column 65 of the JSON data

    All gcode are inverted X/Y The arms move backwards

    ok ==> Homing
    ok ==> G1 S2 X10 should rotate the proximal arm 10 degrees anticlockwise
    ok ==> G1 S2 X-10 should rotate the proximal arm 10 degrees clockwise.
    ok ==> G1 S2 y10 should rotate the proximal arm 10 degrees anticlockwise
    ok ==> G1 S2 y-10 should rotate the proximal arm 10 degrees clockwise.


  • administrators

    I think the problem is that X0 Y0 is not an accessible point on any SCARA printer, so the arm joint position calculation returns "nan" instead of a number, and that causes the JSON parsing error. Try extending both arms in the +X direction before you start or reset the Duet.



  • Same error on duet web control if change position

    On Pronterface X+ RETURN/

    [[language]]
    [ERROR] Traceback (most recent call last):
      File "printrun\printcore.pyc", line 241, in _readline
      File "printrun\pronterface.pyc", line 1713, in recvcb
      File "printrun\pronterface.pyc", line 1669, in update_pos
    ValueError: could not convert string to float: 
    
    ```G92 X0 Y0
    return no error on Pronterface but after cmd duet bugged not move …

  • administrators

    Try placing the print head somewhere it can reach easily. For example, X300 Y0. Then send G92 with those coordinates.

    If that doesn't work, I'll simulate your printer later today and see if I can reproduce the problem.

    In the next beta firmware release, I'll add error handling for attempts to set unreachable positions with G92.



  • Hi
    G92 X0 Y0 ==> ko
    G92 X300 Y0 ==>ok

    Test…
    move manualy arm on x300 y0
    send G92 x300 y0

    move with ptonterface button
    x+ 100 ok (Approximately to the eye)
    After +100 blocking no longer moves to x +

    on position x100 y300
    test move y-100 (result move Approximately to the eye on y250 x10)
    Y does not move correctly, Appears y move diagonally

    on Pronterface all mouvement return:

    [[language]]
    [ERROR] Traceback (most recent call last):
      File "printrun\printcore.pyc", line 241, in _readline
      File "printrun\pronterface.pyc", line 1713, in recvcb
      File "printrun\pronterface.pyc", line 1669, in update_pos
    ValueError: could not convert string to float: 
    
    

    –-------------------------------------------------
    Edit Upgrade ....

    Just for info...
    On Smoothieware i have modified
    https://github.com/Smoothieware/Smoothieware/blob/edge/src/modules/robot/arm_solutions/MorganSCARASolution.cpp

    Comment:
    //actuator_mm[BETA_STEPPER ] = to_degrees(SCARA_theta + SCARA_psi); // Morgan kinematics (dual arm)
    Uncomment:
    actuator_mm[BETA_STEPPER ] = to_degrees(SCARA_psi); // real scara
    and removed ==> * this->morgan_scaling_x on:
    SCARA_pos[X_AXIS] = (cartesian_mm[X_AXIS] - this->morgan_offset_x) * this->morgan_scaling_x; //Translate cartesian to tower centric SCARA X Y AND apply scaling factor from this offset.
    SCARA_pos[Y_AXIS] = (cartesian_mm[Y_AXIS] * this->morgan_scaling_y - this->morgan_offset_y); // morgan_offset not to be confused with home offset. This makes the SCARA math work.

    After support real scara its ok
    Impatient to test with Duet 🙂



  • To operate a Scara kinematics it must specify to him where is its zero in the space before making a G92, no?
    Example in Smoothie I have 2 parameters to say where is zero in space with compared to the main axis of the first arm

    morgan_offset_x 150 #my X offset
    morgan_offset_y -68 #my Y offset
    http://smoothieware.org/configuration-options

    I'm not good at math, but it seems to me that it lacks these parameters.


 

Looks like your connection to Duet3D was lost, please wait while we try to reconnect.