Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Implementing a new kinematic

    Scheduled Pinned Locked Moved
    Firmware developers
    2
    10
    1.5k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • fmaundefined
      fma
      last edited by

      Hi!

      As said in another thread, I'm working on a 2 axes extension for a CoreXY printer, to be able to print on a sphere.

      My first question is: how do I get the center bed coordinates from xxxKinematics.yyy classes? They depends on the bed size, and the X/Y offset of origin…

      Thanks,

      Frédéric

      1 Reply Last reply Reply Quote 0
      • dc42undefined
        dc42 administrators
        last edited by

        You choose where on the bed you want X0 Y0 to be, and write your kinematics to implement that.

        Duet WiFi hardware designer and firmware engineer
        Please do not ask me for Duet support via PM or email, use the forum
        http://www.escher3d.com, https://miscsolutions.wordpress.com

        1 Reply Last reply Reply Quote 0
        • fmaundefined
          fma
          last edited by

          Right! This is much more simple… As I will use optical endstops, it will be possible to accurately calibrate the origin, so the (0, 0) position.

          Thanks!

          Frédéric

          1 Reply Last reply Reply Quote 0
          • dc42undefined
            dc42 administrators
            last edited by

            For Cartesian and CoreXY kinematics, location of the head when the endstop is triggered is given by the min/max axis values specified in the M208 commands. For SCARA kinematics, the arm angle limits are specified in the M669 command and stored in the ScaraKinematics class, and when an endstop is triggered the corresponding arm angle limit is taken to be the angle of that arm.

            The mechanism for doing all of this has changed since the beta 11 release, so I suggest you postpone implementing homing until I have released beta 12.

            Duet WiFi hardware designer and firmware engineer
            Please do not ask me for Duet support via PM or email, use the forum
            http://www.escher3d.com, https://miscsolutions.wordpress.com

            1 Reply Last reply Reply Quote 0
            • fmaundefined
              fma
              last edited by

              Ok! For now, I won't bother with X0 Y0, and consider it to be at the center of the bed, from kinematic point of view. OR, to be more precise, X0 Y0 is the point where the spherical bed is horizontal at U0 V0.

              Frédéric

              1 Reply Last reply Reply Quote 0
              • fmaundefined
                fma
                last edited by

                David, can you tell me when Kinematics.CartesianToMotorSteps() and Kinematics.MotorStepsToCartesian() methods are called? Is it for each start/stop segments, so after pathplanner (lookahead) has done its job?

                Frédéric

                1 Reply Last reply Reply Quote 0
                • dc42undefined
                  dc42 administrators
                  last edited by

                  CartesianToMotorSteps is called to calculate the endpoint of each move before lookahead is done, and also when you execute G92. MotorStepsToCartesian is called less often, for example after every G1 D1 or G1 S2 move.

                  Duet WiFi hardware designer and firmware engineer
                  Please do not ask me for Duet support via PM or email, use the forum
                  http://www.escher3d.com, https://miscsolutions.wordpress.com

                  1 Reply Last reply Reply Quote 0
                  • fmaundefined
                    fma
                    last edited by

                    So, when you have to split segments, it is done on steps values, not on distances?

                    Frédéric

                    1 Reply Last reply Reply Quote 0
                    • dc42undefined
                      dc42 administrators
                      last edited by

                      No, it's done on distances. If a move has to be segmented, CartesianToMotorSteps will be called for each segment.

                      Duet WiFi hardware designer and firmware engineer
                      Please do not ask me for Duet support via PM or email, use the forum
                      http://www.escher3d.com, https://miscsolutions.wordpress.com

                      1 Reply Last reply Reply Quote 0
                      • fmaundefined
                        fma
                        last edited by

                        Ok, thanks.

                        Frédéric

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Unless otherwise noted, all forum content is licensed under CC-BY-SA