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

    CoreXY with rotating bed

    Scheduled Pinned Locked Moved Unsolved
    Tuning and tweaking
    4
    16
    615
    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.
    • Ghaziundefined
      Ghazi
      last edited by

      I'm trying to understand the command M669 and how to set the correct kinematic.
      I'm working on adding two rotational axes to a fixed printing bed in a coreXY printer, which is similar to a robot 5-axis cnc in table mode
      https://docs.duet3d.com/en/User_manual/Machine_configuration/robot_5_axis_CNC#bc-tabletable-example
      but X and Y axes are coreXY instead of Cartesian axes. I'm not sure if there is a way to implement a coreXY to any defined two axes.
      Also, is there any clarification about the M669 command used in the above link? is it M669 K13 or something else?

      o_lampeundefined T3P3Tonyundefined 2 Replies Last reply Reply Quote 0
      • o_lampeundefined
        o_lampe @Ghazi
        last edited by

        @ghazi
        I'd use M669 K1 for CoreXY but then add your own matrix (as shown in the examples) for all axes.

        Ghaziundefined 1 Reply Last reply Reply Quote 0
        • T3P3Tonyundefined
          T3P3Tony administrators @Ghazi
          last edited by

          @ghazi are you doing the kinematics in your toolpath generation workflow or expecting the firmware to handle the kinematics for the two rotary axis?

          @JoergS5 has a fork of RRF where he is working on adding Kinematics for this sort of machine to RRF.

          If you are doing the kinematics yourself (like, e.g. @Freddiester's Open5X in Grasshopper) then you can just define a corexy printer and then add two rotary axis and send the XYZ position you want + the absolute rotations of A and B

          www.duet3d.com

          Ghaziundefined 1 Reply Last reply Reply Quote 0
          • JoergS5undefined
            JoergS5
            last edited by

            I'll build CoreXY support into robot kinematics. CoreXY is a closed chain, because two steppers are connected, but not too complicated. Then rotary axes AC, BC or AB can be added to it. The man who invented CoreXY had a great idea, guiding the gantry from two sides and only needing 3 motors for 3 coordinates.

            Ghaziundefined 1 Reply Last reply Reply Quote 0
            • Ghaziundefined
              Ghazi @o_lampe
              last edited by

              @o_lampe It is my first time using duet board and I will try adding my own matrix for all axes

              1 Reply Last reply Reply Quote 0
              • Ghaziundefined
                Ghazi @T3P3Tony
                last edited by

                @t3p3tony my slicing code is going to produce only gcode file. One solution I thought about is coordinate rotation G68 for rotational axes, but then I have to figure out how to run multiple motors at the same time. This morning, I thought all that can be resolved if I switch to relative coordinates instead of global

                1 Reply Last reply Reply Quote 0
                • Ghaziundefined
                  Ghazi @JoergS5
                  last edited by

                  @joergs5 Adding that would make thing easier and would appreciate. @T3P3Tony mentioned you have a fork of RRF but I cannot find it

                  JoergS5undefined 1 Reply Last reply Reply Quote 0
                  • JoergS5undefined
                    JoergS5 @Ghazi
                    last edited by JoergS5

                    @ghazi said in CoreXY with rotating bed:

                    I cannot find it

                    I have removed it, because I'm currently building a new fork based on RRF 3.5. I am currently testing a lot, then I will publish. I've added CoreXY to the documentation and add it to the first release. I will not be able to completely test it, because I have no CoreXY, so it would be nice if you can do it.

                    https://docs.duet3d.com/User_manual/Machine_configuration/Configuring_RepRapFirmware_for_a_Robot_printer a new B parameter.

                    I've also added a chapter to the CNC 5 axis specific page:
                    https://docs.duet3d.com/en/User_manual/Machine_configuration/robot_5_axis_CNC
                    where I will add an example configuration.

                    Ghaziundefined 1 Reply Last reply Reply Quote 0
                    • Ghaziundefined
                      Ghazi @JoergS5
                      last edited by

                      @joergs5 My guess is that the next update RRF 3.5 will take awhile. Is there a way to modify the matrix of the CoreXY for the table mode? I read the paper cited in the doc "Transformation of CAM Data for 5-Axis CNC Machine Spinner U5-620", and the only difference is the equation (7) T^t_0 = CoreXY instead of Cartesian matrix. However, I see the given example of a modified CoreXY kinematics in the doc does not have any change in printing bed orientation nor X, Y, or Z offset distance.

                      JoergS5undefined 4 Replies Last reply Reply Quote 0
                      • JoergS5undefined
                        JoergS5 @Ghazi
                        last edited by JoergS5

                        @ghazi I have the code ready and will post it the next days (maybe weekend). An open point is the Denavit-Hartenberg configuration, which is complicated for AC. I was not able to configure it correctly today and will proceed tomorrow. Rotating the coordination systems makes one dizzy...

                        Having the configuration tested is necessary because I provide templates called B"robotType=..." which makes the task easier for users. The CoreXY part works well and as expected. I will provide binaries, for which hardware do you need binaries? I will create Mini 5+ for me (7 axes together with the Mini 2 addon) first.

                        I will place the binaries into https://github.com/JoergS5/RRFRobotBinaries
                        and for compiling yourself, the code will be in the 3.5-dev branch of the RRF fork https://github.com/JoergS5/RepRapFirmware

                        1 Reply Last reply Reply Quote 0
                        • JoergS5undefined
                          JoergS5 @Ghazi
                          last edited by

                          @ghazi said in CoreXY with rotating bed:

                          only difference is the equation (7) T^t_0 = CoreXY instead of Cartesian matrix.

                          to answer this question, this transformation must be split into two: one for the Y axis and the other for the X axis, and the actuators must be split into 1/2(A+B) and 1/2(A-B), i. e. delay calculation until both angles are calculated. The Jacobian is calculated separately for stepper A and B. But this is all in the code already.

                          1 Reply Last reply Reply Quote 0
                          • JoergS5undefined
                            JoergS5 @Ghazi
                            last edited by

                            This post is deleted!
                            1 Reply Last reply Reply Quote 0
                            • JoergS5undefined
                              JoergS5 @Ghazi
                              last edited by JoergS5

                              This post is deleted!
                              1 Reply Last reply Reply Quote 0
                              • JoergS5undefined
                                JoergS5
                                last edited by

                                I made much testing last weekend, and must confess that I found bugs, among them one serious one. It's a warning for me to test more. I started to unit test all methods and I am nearly finished. Sorry for the delay.

                                Ghaziundefined 1 Reply Last reply Reply Quote 1
                                • Ghaziundefined
                                  Ghazi @JoergS5
                                  last edited by

                                  @joergs5 Thanks, please keep me updated

                                  1 Reply Last reply Reply Quote 0
                                  • JoergS5undefined
                                    JoergS5
                                    last edited by JoergS5

                                    @Ghazi I've tested alot lot now.

                                    The errors I had were from random angles and trying to move there. This is not possible always, as source and targets are in different work modes. When I don't try to change work modes, it works as expected.

                                    (explanation work modes, for users who do not know it: every position and orientation on a 6 axis robot can be reached by different robot arm positions, up to about 8 possibilities. They can be only crossed by explicit robot angle changes).

                                    I'll proceed with creating the firmware now. I currently can work at weekends, so my goal is to finish it next weekend.

                                    When building the CoreXY 5 axis, please be aware that the A axis has a critical angle of 0 degrees where a singularity can happen, because the C axis can be parallel to the Z axis. This should be avoided, e.g. by staying in the positive or negative A angle. Mechanical construction so that A can stay in negative or positive, I mean maximizing this range, would IMHO be the best solution. If think, if the goal of the 5 axis is to print overhangs, the maximum tilting needed would be a parameter.

                                    The singularity can be crossed by setting C axis rotation to 0 (the firmware can do this), but the result is a movement which is not correct. I'll probably add a new flag in configuration to turn on or off the possibility to run in singularity or not. If not, outputting an error message to the console and stop printing. (to allow finding this in simulation mode)

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