Inverse kinematics of hybrid robot

Typically: "How do I... ", "How can I... " questions
gloria
Posts: 14
Joined: 27 Jan 2016, 08:34

Inverse kinematics of hybrid robot

Post by gloria »

Hello,

I'm figuring out a problem of inverse kinematics of a hybrid robot. It has five degrees of freedom, among which three for translation and two for rotation. Also, its topology is hybrid, which means there are both parallel and serial chains, just similar to the robot shown in the user manual-Inverse Kinematics.
http://www.coppeliarobotics.com/helpFil ... Module.htm
Now I have already made connection between links and joints. Also, I've made three tip-target links for loop closures and one tip-target link for my task( I intend to let the tip of the robot move to any positions and orientations in its work space or follow a path.)
I've read http://www.coppeliarobotics.com/helpFil ... ements.htmBut I don't know how to set ik groups if I want to do IK rather than FK. Should it be in the same ik group or not? I tried both, but ik all failed. There are always some tips not following their target. So I figure that if there would be necessary steps that I ignored?

Thank you!

gloria

coppelia
Site Admin
Posts: 10339
Joined: 14 Dec 2012, 00:25

Re: Inverse kinematics of hybrid robot

Post by coppelia »

Hello Gloria,

when doing FK for a parallel kinematic machine, you basically still do IK, but you will set the motor joint into passive mode, so that they stay fixed during ik calculation.
But what you are trying to achieve is pretty difficult. Have a look how things were done in the demo model Models/robots/non-mobile/ABB IRB 360.ttm

Basically, if you just need IK for your PKM, then it is pretty straightforward, since you simply have IK branches that need to follow the platform (the tip or end-effector).
But if you also need FK for your PKM, then you need to rethink the how hierarchy of your model, since loop closures need to by done at the base of the robot, not on a moving item.

Cheers

gloria
Posts: 14
Joined: 27 Jan 2016, 08:34

Re: Inverse kinematics of hybrid robot

Post by gloria »

Hi,

Thanks for your reply!

I just want to do IK. Now, if I use Pseudo method, by the time simulation begin, the robot collapse, while when I use DLS method, the tip follows the target well. However, value of sim_ikresult_fail is true during the whole simulation. Does it mean ik fails all the time? Why does this happen?

Gloria

coppelia
Site Admin
Posts: 10339
Joined: 14 Dec 2012, 00:25

Re: Inverse kinematics of hybrid robot

Post by coppelia »

The reason is probably that your ik chains are over-constrained. This is also the reason my only a damped resolution method is stable. You will have to carefully look at each kinematic chain and analyze what constraints can be activated and what constraints cannot be activated (e.g. you cannot constraint a 2 DoF kinematic chain to a 3D position).

Cheers

gloria
Posts: 14
Joined: 27 Jan 2016, 08:34

Re: Inverse kinematics of hybrid robot

Post by gloria »

Hello coppelia,

Thanks for your reply!

I figure out the reason why my ik fails: the uncorrected kinematic chains and over-constrained tip-target links! And now I think I've made it right and things get better. When I use Pseudo method, the robot tip follows the target well in some area without collapse. It seems stable. However, there is still some problems:
1. The tip does not always follow the target well even though it is within the work space. And by the time it's not following well, ik result is even success ( ik report message isn't popping out)! Why does it happen?
2. I make two ik groups: one for task (a serial chain) and one for overlap constraints of other parallel chains. If I intend to make IK, is it a right configuration? If so, why it's not performing well?

In order to make it clear, I post the scene. Would you please help me find what's wrong?
https://pan.baidu.com/s/1kVE53Un

Thank you!

coppelia
Site Admin
Posts: 10339
Joined: 14 Dec 2012, 00:25

Re: Inverse kinematics of hybrid robot

Post by coppelia »

What happens is following: the first IK group gets successfully solved, but then the second IK group moves the tip of the first IK group: this is because each IK group gets executed sequentially.

So you have two options:
  • You put all the IK elements into the same IK group, so that all IK elements get solved simultaneously
  • You define your 2 IK groups differently. The first IK group should basically be the central branch of your robot, the second IK group should then only handle the auxiliary branches of your robot (i.e. closing the loop)
The second option is actually the better one.

Cheers

gloria
Posts: 14
Joined: 27 Jan 2016, 08:34

Re: Inverse kinematics of hybrid robot

Post by gloria »

Hi, coppelia,

I took your second advice, and things got right. It seems that thinking about which chain is for the main task and which chain is for closing the loop is really important in dealing with a complex mechanism.

But now I am still confused about the ik_result_fail. My IK groups are all performing well (tips are following targets well), even be stable in Pseudo method. But my ik-failed-report (defined in the child script by myself) is always on.
Is that possible? And is there any introduction about ik_result_fail in detail? If so, please post it.

Thank you!

Gloria

coppelia
Site Admin
Posts: 10339
Joined: 14 Dec 2012, 00:25

Re: Inverse kinematics of hybrid robot

Post by coppelia »

Can you post an updated version of your scene?

Cheers

gloria
Posts: 14
Joined: 27 Jan 2016, 08:34

Re: Inverse kinematics of hybrid robot

Post by gloria »

OK! Here is my updated scene.
http://pan.baidu.com/s/1bBQgzk

Gloria

coppelia
Site Admin
Posts: 10339
Joined: 14 Dec 2012, 00:25

Re: Inverse kinematics of hybrid robot

Post by coppelia »

If you look closely, you will notice that only IK_Group_Parallel_1 and IK_Group_Parallel_2 fail. Those two IK groups should be same as the IK_Group_Parallel_3, but they are not (for instance the constaints are not the same).

I would build those parallel chains like:

Code: Select all

joint1(rev) --> joint2(prism) --> tipDummy1 <--> targetDummy1
joint3(rev) --> joint4(prism) --> tipDummy2 <--> targetDummy2
joint5(rev) --> joint6(rev) --> joint7(prism) --> tipDummy3 <--> targetDummy3
i.e. you don't need those final revolute joints at the end of your chains.

Cheers

Post Reply