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

    Robotic kinematics

    Scheduled Pinned Locked Moved
    MultiAxis Printing
    22
    389
    46.6k
    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
      last edited by JoergS5

      Some time since last update, so I want to give some update information. Had Covid and recovered, hope you are all well too.

      Robot kinematics will be included in RRF 3.5, after talking with David and Tony. I have agreed to have a working version end of August, so the integration will start after this date.

      I am currently working on

      • performance optimizing and testing
      • implementing additional kinematics like CNC 5 axis and 4 axis palletizing robots which are built like ABB IRB 460
      • documentation. Starting point is https://docs.duet3d.com/User_manual/Machine_configuration/Configuring_RepRapFirmware_for_a_Robot_printer and I tagged the documents with robot tag, currently 4 documents. Detailed descriptions e.g. of orientation, RobotViewer, Config. Please ignore misspelling, but if you find logical errors, please tell me to correct it
      • still working on a good prototype, but this takes eternal
      o_lampeundefined 1 Reply Last reply Reply Quote 3
      • o_lampeundefined
        o_lampe @JoergS5
        last edited by

        @joergs5 said in Robotic kinematics:

        still working on a good prototype, but this takes eternal

        Good to hear you're well again!
        I didn't read the whole thread, but I'm curious to know where to get all the stuff required to build one? Differential screws, optical encoders and lenses, all have to fit together...
        I hope you'll add a BOM to your prototype 😳

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

          @o_lampe I'll make a BOM for sure. Nor for every screw, but for all main parts.

          The main time it takes is for building harmonic drives, where I take two paths: one to 3D print the flexspline and circular spline, and one to use steel and drill the teeth. The 3D printed is meant to be that everyone can clone it, the steel one for a robot which can have higher payloads.

          o_lampeundefined 1 Reply Last reply Reply Quote 0
          • o_lampeundefined
            o_lampe @JoergS5
            last edited by

            @joergs5 said in Robotic kinematics:

            The main time it takes is for building harmonic drives,

            I was pretty impressed by the cycloidal drive I made for a direct drive extruder. It would be even easier to scale it up for a robot.
            Have you ever considered those?
            2016-06-28 13.21.16.jpg 2016-06-28 13.20.35.jpg

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

              @o_lampe that's a very nice looking one!

              Yes, another user recommended using cycloidal gears in this thread somewhere above. It is an alternative. I've decided to go with harmonic drive, but there is no reason to consider cycloidal also. I love the cycloidal drives from Nabtesco like the RV500-N, which are used in Fanuc and ABB robots, but they have similar price ranges like the harmonic drives.

              I standardize / modularize the components for myself, like the dimensions of the gears, so it will be possible to exchange harmonic drive, cycloidal or belt-based gears. I take dimensions of commercial ones as a guideline.

              jtimonundefined 1 Reply Last reply Reply Quote 0
              • jtimonundefined
                jtimon @JoergS5
                last edited by jtimon

                @joergs5 Is this work still active?
                I wanted to take a look at the code to see what you're doing with the extra degrees of freedom, because I'm myself working on a modified hangprinter-like kynematics with 6 degrees of freedom. I only needed 6 steppers instead of 4 for the extra degrees of freedom, but I'm using 8 because I wanted to keep things squared and hopefully be able to get more speed with 8 motors, certainly I will have more torque.

                Anyway, the links to the code at the beginning of the thread are broken and I can't find it in your github account. Sorry I haven't read the whole read, but it's kind of long. Can you point me to the code?

                Thanks in advance.

                https://github.com/jtimon/reprope

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

                  @jtimon I'm currently integrating it into RRF 3.5 locally and test, then will make a fork on github later this week. I removed my old fork. Hangprinter is also interesting, I would like to use it for wall painting (no joke), based on wires.

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

                    Before it's too late and the robot kinematics goes into the official RRF, I split the A parameter into A and D, because it was very difficult to keep overview of 10 parameters in one setting. Instead of one A parameter for DH and angle parameters, I define D for DH parameters and A for angles now.

                    Old eg:
                    A1:200.0:0.0:0.0:0.0:70.0:90.0:-180.0:0.0:180.0

                    New eg:
                    D1:200.0:0.0:70.0:90.0
                    A1:-180.0:180.0:0.0

                    I have to change firmware code, documentation and RobotViewer DWC plugin, which I do before making a RRF fork.

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

                      @jtimon sorry, it will take a few days more to deploy a RRF 3.5 version of the robot kinematics. I found a way to manage the different flavours of CNC 5 axis to be programmed, so I want to integrate it first.

                      Regarding hangprinter, do you know the site https://stadtfabrikanten.org/display/TH ?
                      The page "RepRapFirmware and calculations" is e.g. interesting regarding kinematics.

                      jtimonundefined 1 Reply Last reply Reply Quote 0
                      • jtimonundefined
                        jtimon @JoergS5
                        last edited by

                        @joergs5 Wall painting seems like a cool use case.
                        There are plenty of small projects doing that (or something similar):

                        https://www.youtube.com/watch?v=_mTvSju3d6o
                        https://www.youtube.com/watch?v=T0jwdrgVBBc

                        here's a CNC
                        https://www.youtube.com/watch?v=y60q6U7NjTQ

                        I'm currently working on adapting the hangprinter to allow more anchors in this PR:

                        https://github.com/Duet3D/RepRapFirmware/pull/585

                        But perhaps it would make sense to go lower than 4 anchors for some use cases too?

                        Thanks for the trikarus link, cool stuff.
                        Regarding your code, I'm not in a hurry. I'm not ready for working on the extra 3 rotational ABC axes since I still didn't get the basic xyz axes to work, and that is the part I want to read more, to see what you have done. Whenever you can share it, it would be awesome to have a look.
                        Thanks.

                        jtimon opened this pull request in Duet3D/RepRapFirmware

                        open 3.4 WIP: Allow up to 9 anchors/motors to be configured in hangprinter kinematics. #585

                        https://github.com/jtimon/reprope

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

                          @jtimon if you need help to understand firmware or how to address additional axes, I can help you, I have some experience now. I've created some documents about robot, starting is at https://docs.duet3d.com/User_manual/Machine_configuration/Configuring_RepRapFirmware_for_a_Robot_printer and made a tag "robot". The documents firmware and CNC 5 axis may be interesting for you about orientation.

                          I am constantly updating the documentation pages, when I think I have new knowledge to add.

                          Hangprinter may be a closed chain system, then robot kinematics will not help you much. You can check FiveBarScara, which is in the official RRF and uses closed kinematics, for additional code. I've used circle intersection in this kinematics to calculate the position of two arms without knowing the angles, this may help with wire based kinematics. Because you know the arm length (wire length), but not the angles.

                          1 Reply Last reply Reply Quote 0
                          • 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
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA