Inverse Kinematics for Welding Robot

Inverse Kinematics for Welding Robot

burbaum
Contributor Contributor
1,363 Views
16 Replies
Message 1 of 17

Inverse Kinematics for Welding Robot

burbaum
Contributor
Contributor

Hi everyone,

I'm currently working on animating a welding robot using inverse kinematics. The goal is to control the tool center point (Dummy009_TCP) and the orientation of the welding nozzle (Dummy009_TCP_LookAT) independently from each other. Both should influence the robot's joint positions accordingly.

I've already tried several approaches — from animating with geometry and dummies to using bones. I’ve reset the components’ positions and orientations, restricted rotational movements, split the setup into multiple kinematic chains, etc. Unfortunately, none of these attempts have been successful.

To better illustrate the problem, I’ve attached a screenshot and included the 3ds Max model. The model is cleanly set up, and I’ve removed all previous kinematic chains to start from a neutral state.

I’m hoping someone here can help me with the correct approach or suggest a working solution.

 

Thanks in advance!

Bruno 

0 Likes
1,364 Views
16 Replies
Replies (16)
Message 2 of 17

leeminardi
Mentor
Mentor

Please post a 2025 compatible version of the Max file.

 

Keep in mind that IK solvers are constrained to a plane although the plane may be at any orientation and can be controlled by moving the reference object as a funtion of the nozzle or other object.

lee.minardi
0 Likes
Message 3 of 17

MartinBeh
Advisor
Advisor

Thanks for providing a .max file, that really helps understanding the situation.

I have not done much testing yet (and what you describe you have tried before is a bit short) but on first sight, it seems as if removing the geometry from the bone hierarchy and then creating a "HD Solver" from $Bone001_Rot_Z to $Bone007_fix_TCP and then adding a Rotation end effector seems to do "something reasonable"...

 

Edit: Sorry, I glanced over the "control the tool center point (Dummy009_TCP) and the orientation of the welding nozzle (Dummy009_TCP_LookAT) independently from each other" part in your message. Could you clarify what you mean by that?

Martin B   EESignature
→ please 'Like' posts that are helpful; if a post answers your question please click the "Accept Solution" button.
0 Likes
Message 4 of 17

burbaum
Contributor
Contributor

Hi Lee,
thank you for your response.
Attached are a few versions so that others might also be able to take a look.
Bruno

0 Likes
Message 5 of 17

MartinBeh
Advisor
Advisor

I had to fix your bone chain at the tip to make it rotate around the last axis, and also enable/disable two rotation joint axes, but other than that a HD solver seems to do a decent job.   

 

(view in My Videos)

(sorry for the lame screen capture...)

 

But maybe I am still "missing the mission statement"....?

Martin B   EESignature
→ please 'Like' posts that are helpful; if a post answers your question please click the "Accept Solution" button.
0 Likes
Message 6 of 17

burbaum
Contributor
Contributor

Hi Martin,
thank you for your response.

Believe me, I’ve been working on this for several days now. I’ve also tried following a few tutorials I found on YouTube. I didn’t want to go into all the details here, as I think it would create more confusion than clarity.

To answer your question about what I meant by wanting to control the TCP’s position and the welding nozzle’s orientation independently:
The weld seams are positioned in 3D space, and I need to maintain an approach angle of about 15–20° relative to the seam. Additionally, tilting the welding nozzle helps to prevent the robot from colliding with the workpiece.

To achieve this, I planned to move the TCP along the seam while using a dummy object on a separate path to control the tilt. The idea was to drive the nozzle’s orientation using a LookAt constraint targeting the dummy.

(However, my attempts with the LookAt constraint here have also failed so far.)

Up until now, I’ve mainly been working with hierarchies and IK within those hierarchies — but that seems outdated. Over the past few days, I’ve limited myself to using the HI solver. I haven’t yet tried the HD solver.


0 Likes
Message 7 of 17

leeminardi
Mentor
Mentor

If the HD solution @MartinBeh offered works for you that's great but keep in mind that HD solvers have " performance problems on long sequences, so ideally use it on short animation sequences. It is good for animating machines, especially ones with sliding parts."

https://help.autodesk.com/view/3DSMAX/2025/ENU/?guid=GUID-AE4A0089-95F5-4199-A853-ABB8E0DB3439

 

 

lee.minardi
0 Likes
Message 8 of 17

burbaum
Contributor
Contributor

Hi Martin,
sounds good. 
I'm looking forward to your video!

(I elaborated a bit on the task in my last message, so if anything is still unclear, please feel free to ask.)

0 Likes
Message 9 of 17

burbaum
Contributor
Contributor

Hi Martin,

I'm looking forward to your video!

 

 

(I elaborated a bit on the task in my last message, so if anything is still unclear, please feel free to ask.)

0 Likes
Message 10 of 17

MartinBeh
Advisor
Advisor

Hi, don't get me wrong - I am not dismissing this as easy, just trying to better understand what the task is. The description about the weld seams did help me, thank you.

So in the end you want the robot to follow a linear trajectory (the seam) while maintaining a certain angle between the last element of the robot and the welded objects?

Martin B   EESignature
→ please 'Like' posts that are helpful; if a post answers your question please click the "Accept Solution" button.
0 Likes
Message 11 of 17

burbaum
Contributor
Contributor

Thank You Lee;
Yes, I know this page. Since I don't have any sliding parts and am planning a larger animation, I initially didn't pursue the HD solver any further. But if i have a solution with HD I am also happy.

0 Likes
Message 12 of 17

MartinBeh
Advisor
Advisor

How is this for you?

(view in My Videos)

Created with the HD Solver setup I described above (I think I misplaced the final effector since I did not see the thin needle at the very tip - but hopefully it is close enough to prove the point)

Martin B   EESignature
→ please 'Like' posts that are helpful; if a post answers your question please click the "Accept Solution" button.
0 Likes
Message 13 of 17

burbaum
Contributor
Contributor

Yes, Martin,
thank you so much for your help and support!

I know this isn’t easy to understand. I just hope I didn’t come across as impolite or unclear — English isn’t my native language. Thanks again for your video, I really appreciate it!

Your explanation is absolutely correct for the first case:

I) The robot follows a linear trajectory (along the seam) while maintaining a certain angle to the part. (~70%)
II) The robot follows an arbitrary path (e.g. circular, rounded rectangle, or similar) and also maintains a specific angle to the part. (~28%)
III) The robot follows an arbitrary path (as above), should ideally maintain a specific angle to the part, but needs to slightly adjust this angle to avoid collisions with features like ribs on the part. (~2%)

For the first two cases, you could work with surface normal vectors. But in case III, that approach is no longer sufficient. That’s why I’d like to animate the TCP’s path and its orientation (e.g. using a LookAt constraint on a dummy object) independently.

0 Likes
Message 14 of 17

burbaum
Contributor
Contributor

Thanks, Martin!
I just saw your video now — thank you so much!

Would you mind sending me the Max file? I think that would help me best understand and follow your solution.

A few days ago, I came across the same page that Lee shared. Since I’m not using prismatic joints and will be working with longer animation paths, I decided to go with the HI solver.
But I have to  take a closer look at the HD solver as well.

0 Likes
Message 15 of 17

MartinBeh
Advisor
Advisor

Will share but no time right now, need to run.

Keep in mind that HD Solver is pretty old tech and definitely has its own set of quirks and probably bugs...

Martin B   EESignature
→ please 'Like' posts that are helpful; if a post answers your question please click the "Accept Solution" button.
0 Likes
Message 16 of 17

MartinBeh
Advisor
Advisor

Hi Bruno, I just sent you a PM with a download link.

 

Martin B   EESignature
→ please 'Like' posts that are helpful; if a post answers your question please click the "Accept Solution" button.
0 Likes
Message 17 of 17

kolunloluk
Community Visitor
Community Visitor

Pick up a copy of Niku's "Introduction to Robotics". Or do a search for homogeneous transforms. Start out with a planar case and then work your way into spatial transformations. https://100001.onl/ 

0 Likes