Synchronizing KUKA Robot with DKP400 Turntable

Started by luie.fr, July 03, 2024, 09:36:50 AM

Previous topic - Next topic

luie.fr

Hi everyone,

I'm currently working on a project where I need to synchronize a KUKA robot with a DKP400 turntable in Grasshopper. My goal is for the robotic arm to move with its tool always vertical, following a trajectory based on a reverse L-shaped pipe (and hopefully more complex shapes in the future). Here are the details of the setup and the problem I'm encountering:

Setup:
- The curve is an L shape:
  - Starts from (0,0,0) to (0,0,400).
  - Then from (0,0,400) to (0,400,400).
  - These two lines are joined by a fillet of 50.
- I've divided the L curve every 6 mm and created Pframes.
- Created a pipe and sectioned it with the Pframes.
- Aligned curve seams, opened the curve, and divided the open curves into smaller segments.
- Retrieved the Z value from the Pframes to create new planes.
- Aligned these new planes with the X vector, deconstructed the planes, and created new planes with the origin and Y vector only.
- Performed the linear movements that result in the command for the robotic arm and DKP400.

Goal:
- The robotic arm and turntable should follow a trajectory around the pipe from bottom to top.
- The turntable remains still for the first part.
- At the bend, the turntable rotates 90 degrees around the world Z-axis.
- The turntable tilts following the bend to end up being tilted at 90 degrees around the world Y-axis, allowing the last part to be done vertically.

Problem:
- I can currently achieve this by setting the dynamic value by vector in the external kinematics, rotary axis value, at x=0, y=1, and z=9. These values were found by trial and error (and i am not sure i really understand how it works).
- The issue is that the tool is not always vertical, and I still receive a yellow warning: "The toolpaths contain possible singularities that can lead to excessive axis speed. Proceed with care."

Question:
1. How can I achieve my goal of keeping the tool always vertical throughout the entire trajectory ?while tilting and rotating the table, and eliminate the yellow warning correctly? Please tell me  if you have a better way to do this.

Additional questions :
2. By dividing the curve as I did, I encounter a "pinch" effect at the bend. The distance between two planes is shorter on the internal angle than on the external angle. I would like to correct this and have thought about using the geodetic method with a sphere (useful for non-planar surfaces) to maintain a consistent distance between section points. How can i do this.

3. While I am currently using the DKP400, I will need to replicate this with a custom turntable. In reality, I have a custom turntable with KUKA motors. How should I approach this in Grasshopper?

Additionally, I will replicate this setup with a second curve, which is a reverse L with another 90-degree bend.

Thank you for your help!

Johannes @ Robots in Architecture

Hello,

There are a LOT of things here, I'm happy to help with the technical details but for the pathplanning you will have to be more specific.

1) A singularity is not necessarily terrible, usually the worst thing that could happen is that the robot goes into an E-stop due to excessive speed when (usually) A4 spins. I would not recommend using the Dynamic Value for a 2-axis positioner. I've attached an example (dkp_orientation.gh) that may be helpful for creating your own orientation strategy.

2) That's a very specific question that definitely needs a proper example, otherwise I would just guess what you are trying to achieve. I see what you mean with the inner and outer distances, but how to approach such a problem is very much up to your specific process. From your screenshot I'm assuming you are using additive manufacturing? So you could try to reduce the extrusion speed when the spacing is very tight.

3) An example for a custom DKP is included (customdkp_2.gh). We don't support it by default, so a scripting component is needed and you may have to adjusts the paths to the KUKA|prc libraries.

Best,
Johannes

luie.fr

Thank you very much for your answers and exemples files !
I am looking into it and will be getting back to you.

Best regards