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

    Robotic kinematics

    Scheduled Pinned Locked Moved
    MultiAxis Printing
    22
    389
    46.9k
    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.
    • JoergS5undefined
      JoergS5 @jtimon
      last edited by JoergS5

      @jtimon said in Robotic kinematics:

      Wall painting seems like a cool use case.
      There are plenty of small projects doing

      Thank you for the links. I meant wall painting: a house wall, to save house scaffolding. But I will start in the house, a single wall. After all, most of the work is in the little nooks and crannies. These exceptions and path planning could be programmed and then executed with G-Code. A camera can control the result and repaint the locations where it is not good enough. Maybe spraying is better than painting then (a fixed orientation endpoint).

      I first thought about using an industrial robot for wall painting, but long arms are a problem for high payload. But maybe one can combine hangprinter with robot: robot for orientation and placing to the correct location, hangprinter to support payload. It will be necessary to paint around corners.

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

        I have a problem with understanding CNC 5 axis. If someone here has knowledge of CNC 5 axis, could you please tell me whether my understanding is correct? This is also valid for CoreXY 5 axis, Pentarod and Open5x.

        I've described it in
        https://docs.duet3d.com/en/User_manual/Machine_configuration/robot_5_axis_CNC
        second section called "Calculation".

        My main confusion was reading an article about G-Code based on IJK (using tool vectors in G-Code) versus AC. The article wrote, an advantage of IJK is the machine independence. But in my understanding, AC is also machine independent (with the exception of the axis direction of AC versus BC). If someone knows if this is correct, a confirmation would be very kind.

        DerAndereundefined 1 Reply Last reply Reply Quote 0
        • wieman01undefined
          wieman01
          last edited by

          Hello,

          Is there a list of compatible robots somewhere on docs.duet.com? I searched but could not find anything...

          Just curious what Duet will be capable of with the upcoming release (3.5).

          wieman01

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

            @wieman01 tested will be:

            6 axis industrial robot
            CNC 5 axis including CoreXY 5 axis
            4 axis palletized robot

            Documentation starting point is https://docs.duet3d.com/User_manual/Machine_configuration/Configuring_RepRapFirmware_for_a_Robot_printer and by the robot tag there are specialized documents for the specific types.

            Other serial chain types are possible by configuring Denavit-Hartenberg parameters. With this concept, prismatic/linear and rotary axes can be combined in any combination, as long as they are in series. The current limit is 7 axes, but this is just a fixed variable.

            wieman01undefined 1 Reply Last reply Reply Quote 1
            • wieman01undefined
              wieman01 @JoergS5
              last edited by

              @joergs5 said in Robotic kinematics:

              @wieman01 tested will be:

              6 axis industrial robot
              CNC 5 axis including CoreXY 5 axis
              4 axis palletized robot

              Documentation starting point is https://docs.duet3d.com/User_manual/Machine_configuration/Configuring_RepRapFirmware_for_a_Robot_printer and by the robot tag there are specialized documents for the specific types.

              Other serial chain types are possible by configuring Denavit-Hartenberg parameters. With this concept, prismatic/linear and rotary axes can be combined in any combination, as long as they are in series. The current limit is 7 axes, but this is just a fixed variable.

              Thank you, @JoergS5. So the supported hardware isn't restricted to certain manufacturers, but to the design of the robot. That makes sense. I'll look into it. And really big thanks for your contribution here!

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

                @wieman01 your're welcome. Don't hesitate to post your hardware setup here to discuss how to configure it, if you need help. I'll try to offer as much example configs and explanations as possible, but some questions may remain unanswered.

                1 Reply Last reply Reply Quote 1
                • JoergS5undefined JoergS5 referenced this topic
                • JoergS5undefined JoergS5 referenced this topic
                • JoergS5undefined JoergS5 referenced this topic
                • JoergS5undefined
                  JoergS5
                  last edited by

                  I am starting a new topic now in the "My Duet controlled machine" to apply the robot kinematics to robot prototypes of different kinds. You're invited to join the process of building:

                  • CNC 5 axis for abrasive drilling (with iHSV servos and 6XD) and CoreXYAC 5 axis for additive 3D printing
                  • 4 axis palletized for 3D printing (only for proof of firmware working)
                  • 6 axis industrial robot (later)

                  The next steps are:

                  • prototypes and verify robot kinematics in real life
                  • improve RobotViewer DWC plugin
                  • find or develop a free software solution to create 5 axis G-Code

                  I will concentrate on CNC. Some users plan to create CoreXY 5 axis printing, so for 3D printing, the 3D printer prototypes are mainly meant to help solving problems.

                  1 Reply Last reply Reply Quote 1
                  • JoergS5undefined JoergS5 referenced this topic
                  • DerAndereundefined
                    DerAndere @JoergS5
                    last edited by

                    @JoergS5 Re: "My main confusion was reading an article about G-Code based on IJK (using tool vectors in G-Code) versus AC. The article wrote, an advantage of IJK is the machine independence. But in my understanding, AC is also machine independent (with the exception of the axis direction of AC versus BC). If someone knows if this is correct, a confirmation would be very kind."

                    Answer:
                    AFAIK, there is no international standard beyond 3 axis CNC G-code (ANSI/EIA RS-274D, ISO 6983-1:2009)

                    XYZIJK notation is usually not interpreted by the CNC controller. It is usually used in an intermediate format of the CAM software. A post processor is used to convert it to the correct NC language for the selected machine.

                    There are two ways how G-code axis codes XYZABC can be interpreted.
                    a) direct joint control: each G-code axis is directly mapped to one joint/motor and controls only its position.
                    b) Tool center point control (TCPC): inverse kinematics are applied so that other joints compensate changes in the commanded position of the rotational axes.This way, G-code axes XYZ control the tool center point (TCP) position and axes ABC control the tool angle/orientation.

                    LinuxCNC is based on "NIST RS274NGC interpreter, Version 3". It cannot interpret the XYZIJK notation. LinuxCNC by default uses identity kinematics ("trivkins") which means direct joint control. it can (should) be configured to use kinetics that match the machine geometry, e.g. by adding this section in the config INI file:

                    [KINS]
                    KINEMATICS = xyzac-trt-kins
                    

                    Then, at startup, it applies the correct inverse kinematics to allow TCPC. You can change to direct joint control mode at runtime using a combination of M66 and M68 commands.

                    For added confusion, LinuxCNC can be configured to start in direct joint control mode at startup:

                    [KINS]
                    KINEMATICS = xyzac-trt-kins sparm=identityfirst
                    

                    Source: https://linuxcnc.org/docs/devel/html/motion/switchkins.html

                    Siemens Sinumeric controllers cannot interpret XYZIJK or XYZABC notation, only their own formats: https://www.manualslib.de/manual/134235/Siemens-Sinumerik-840Di.html?page=69#manual

                    Haas
                    direct joint control mode: G49 (default)
                    TCPC mode: G234
                    XYZIJK notation: no

                    Fanuc:
                    direct joint control mode: G49 (default)
                    TCPC mode: G43.4
                    XYZIJK notation: G43.5 (RTCP type II)

                    JoergS5undefined 2 Replies Last reply Reply Quote 0
                    • JoergS5undefined
                      JoergS5 @DerAndere
                      last edited by JoergS5

                      @DerAndere I wanted to use IJK, but then searched for alternatives, because IJ has a conflict with G2/G3 parameters. That's the reason why I changed to AC/BC and quaternions for full orientation. There is no G-Code standard for quaternions, so I use an artificial currently, until someone tells me which standard to use...

                      I am using the b) method which supports the RTCP mode mentioned and explained e.g. in the links (the beckhoff one gives the fastest overview):

                      https://www.cnclathing.com/guide/what-is-5-axis-cnc-machine-and-rtcp-function-advantages-of-5-axis-machining-cnclathing

                      https://www.cnczone.com/forums/uncategorised-cam-discussion/413638-cnc-mastercam.html

                      https://infosys.beckhoff.com/index.php?content=../content/1031/tccncprogramming/html/rotationtoolcenterpointrtcp.htm&id=

                      This method has the advantage that you can configure the robot to calibrate any inexactness of axes, e.g. between X and Y. The kinematics will calculate the true rotations and positions. The idea is to measure the endpoints and calculate back to the config parameters.

                      LinuxCNC is a great software and I'm taking it as reference sometimes how to propose parameters. It has however only experimental nurbs and bspline support, that's the next topic I want to address.

                      The Fanuc has IJK support, but they need to change modes before using it (probably because of the G2/G3 problem), so it's a proprietary solution. Fanuc has good manuals. I find only few information about 5 axis CNC, so it's a valuable additional information source.

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

                        The current status is that I changed internal calculations to skew symmetric matrices, but there were differences to the quaternion based calculations. The formulae in the internet are inexact (the rotation angle is set to 1), I've found the solution yesterday to get correct results now. Unfortunately from skew to rotation, there are also two solutions(!). As I said, orientations are a beast. I always use forward-inverse algorithms to calculate roundtrip calculation with random parameters. stackexchange and stackoverflow are very valuable information sources!

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

                          @DerAndere the different configurations of Haas and Fanuc shows imho that every manufacturer made his proprietary solution in the past. Worse, to get some advanced capabilities, one had to pay for those "options" additionally.
                          Some combinations were not possible, e.g. changing the tool length for Fanuc prohibited using some special modes afterwards. robot kinematics uses the G10 offset settting of the current tool, so tool change should be no problem.

                          The second problem is that there is no free software to support 5 axis. There are plugins in Blender and FreeCad, but to my knowledge not advanced ones. Currently I think, best would be to develop an own solution based on OpenNurbs, which is an open library developed by Rhino. Rhino itself is a bit expensive if one wants to use it noncommercial as hobby. (Hobby, non-commercial, being not a student => 1000$).

                          DerAndereundefined 1 Reply Last reply Reply Quote 0
                          • DerAndereundefined
                            DerAndere @JoergS5
                            last edited by DerAndere

                            @JoergS5 List of open source CAM software for multi axis FDM (tool path- and G-code generators). I did not test them yet:

                            • https://github.com/GuoxinFang/ReinforcedFDM (uses Rhino IIRC)
                            • https://github.com/zhangty019/MultiAxis_3DP_MotionPlanning
                            • https://github.com/Spiritdude/Slicer4RTN
                            • https://xyzdims.com/vgcodectl/ : source code release planned
                            T3P3Tonyundefined JoergS5undefined 2 Replies Last reply Reply Quote 2
                            • T3P3Tonyundefined
                              T3P3Tony administrators @DerAndere
                              last edited by

                              @DerAndere thanks for posting these here. two of them are @xyzdims work!
                              Also not sure if you saw but the zhangty019 work is been built on further:
                              https://dl.acm.org/doi/10.1145/3550454.3555516

                              www.duet3d.com

                              DerAndereundefined JoergS5undefined 2 Replies Last reply Reply Quote 0
                              • DerAndereundefined
                                DerAndere @T3P3Tony
                                last edited by

                                @T3P3Tony Hi Tony! Thanks for the update. As a reminder for my future self, here is the source code related to the publication you mentioned: https://github.com/zhangty019/S3_DeformFDM

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

                                  @DerAndere thanks for the links, I'll check them!

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

                                    @T3P3Tony this is a very promising article and slicer.
                                    robot kinematics is based on quaternions, this fits.

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

                                      I rediscovered a book about screw theory (another name is: exponential coordinates), about robotics by Lynch/Park 2017. I had refused it, because the examples are without solutions (students shall not know the solutions if a teacher uses the tasks). But after review, the rest of the book is very good. I had problems understanding the book of Murray/Li/Sastry about the same topic. Both books together, all became much clearer.

                                      Screw method is an alternative method to Denavit-Hartenberg and is faster than this method. I will change all internal methods to this new method, but let the configuration parameters at Denavit-Hartenberg as is. I will add an additional optional input method for screw parameters with the M669 R C parameter (S is unfortunately not free...).

                                      Screw method allows more precalculation of the configuration values, so calculation of specific positions is faster. The whole is based on Rodrigues formula and the screws are very similar (and can be transferred to/from) quaternions.

                                      The name screw comes from the similarity of a screw: each actuator's movement is described by a rotation and a translation, like a screw. Forces/torque calculations are also described with this method.

                                      http://hades.mech.northwestern.edu/index.php/Modern_Robotics provides information about the Lynch/Park book. The free preprint version is there also as pdf.

                                      Little update: the following books are about screw theory:

                                      • Lynch/Park 2017 as mentioned above
                                      • Murray/Li/Sastry
                                      • Peter Corke, Robotics, Vision and Control => Matlab extensions, visision analyzing code
                                      • Pardos-Gotor, Screw Theory for Robotics. An illustrated handbook. *)

                                      *) there is a book of the same author named Screw Theory in Robotis, being more expensive. It seems to be similar (I don't know for sure).

                                      I'll use the Corke book to extend the robot kinematics into two directions: improving path planning for smooth curvature (nurbs etc) and to improve quality by camera analysis with help of OpenCV.

                                      Little update Jan 3:
                                      I'll concentrate on implementing the closed form Paden-Kahan subproblems now, which allows direct algorithmic solutions instead of iterating. The subproblems are explained in the Pardos-Gotor book.

                                      I've created a documentation page about screw theory now at https://docs.duet3d.com/en/User_manual/Machine_configuration/robot_screw_theory and will fill it with content.

                                      Happy new year!

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

                                        I'm currently converting the subproblem code from Matlab of Pador's book into C++ code for the firmware, with performance optimizing.

                                        The results are very promising with respect to speed and quality (all solutions of inverse kinematics are provided), so I'll concentrate on screw theory now and will push back Denavit-Hartenberg (DH).

                                        I'll remove documentation for DH next week and reorganize documentation, so if someone needs it, please back it up. I'll try to write a converter for DH->screw parameters, but this is low priority. The screw based setup is easier than DH parameters.

                                        The first implemented robot types will be:

                                        • 6 axis industrial robot
                                        • serial scara
                                        • CNC, CoreXY, Prusa like 5 axis
                                        T3P3Tonyundefined 1 Reply Last reply Reply Quote 0
                                        • T3P3Tonyundefined
                                          T3P3Tony administrators @JoergS5
                                          last edited by

                                          @JoergS5 said in Robotic kinematics:

                                          remove documentation for DH next week

                                          rather than removing it, could you update it to say tis not currently being used. You have put a lot of useful information in there, maybe some else will need to use DH in the future.

                                          www.duet3d.com

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

                                            @T3P3Tony ok, I can do it this way, this makes sense.

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