How can we use generalized inverse kinematics solver in MATLAB to generate multiple solutions for a desired end effector poses for a 6dof arm?

For reaching a desired position, there may be multiple ways in the sense that multiple joint angle combinations are possible to reach a desired position. So how can we use Gik solver in matlab to generate multiple solutions for a desired end effector pose??. Also i tried using analytical inverse kinematics which offers the possibility of generating multiple solutions but for my 6dof arm, it showed no valid kinematic groups exist. Does that mean closed loop kinematic solution does not exist. could any of you please help me out here....

1 Comment

Hi Vighnesh,
Is it possible for you to share details of your rigidBodyTree object here or with our Technical Support (https://www.mathworks.com/support/contact_us.html) team? This will help us resolve your query in a timely manner.
Best,
Karsh

Sign in to comment.

Answers (2)

% Link Lengths
L1 = 0.11;
L2 = 0.11;
L3 = 0.11;
L4 = 0.11;
L5 = 0.11;
L6 = 0.11;
L7 = 0.11;
body1 = rigidBody('link1');
joint = rigidBodyJoint('fix1', 'fixed');
setFixedTransform(joint,trvec2tform([0 0 0]));
body1.Joint = joint;
addBody(robot, body1, 'base');
body2 = rigidBody('link2');
joint = rigidBodyJoint('joint1','revolute');
setFixedTransform(joint, trvec2tform([L1,0,0]));
joint.JointAxis = [0 0 1];
body2.Joint = joint;
addBody(robot, body2, 'link1');
body3 = rigidBody('link3');
joint = rigidBodyJoint('joint2','revolute');
setFixedTransform(joint, trvec2tform([L2, 0, 0]));
body3.Joint = joint;
addBody(robot, body3, 'link2');
body4 = rigidBody('link4');
joint = rigidBodyJoint('joint3','revolute');
setFixedTransform(joint, trvec2tform([L3, 0, 0]));
body4.Joint = joint;
addBody(robot, body4, 'link3');
body5 = rigidBody('link5');
joint = rigidBodyJoint('joint4','revolute');
setFixedTransform(joint, trvec2tform([L4, 0, 0]));
body5.Joint = joint;
addBody(robot, body5, 'link4');
body6 = rigidBody('link6');
joint = rigidBodyJoint('joint5','revolute');
setFixedTransform(joint, trvec2tform([L5, 0, 0]));
body6.Joint = joint;
addBody(robot, body6, 'link5');
body7 = rigidBody('link7');
joint = rigidBodyJoint('joint6','revolute');
setFixedTransform(joint, trvec2tform([L6, 0, 0]));
body7.Joint = joint;
addBody(robot, body7, 'link6');
body8 = rigidBody('end_effector');
joint = rigidBodyJoint('fix2','fixed');
setFixedTransform(joint, trvec2tform([L7, 0, 0]));
body7.Joint = joint;
addBody(robot, body8, 'link7');
here link 1 is considered fixed with respect to the base joint and only 6 links are movung since it is a 6 dof arm
how can we make this rigid body tree model suitable to be used for analytical inverse kinematics. I tried but its showing no valid kinematic groups exist. is there something wrong in the way i gave labellings for base and end effector. Kindly look into this as we well. Thank you

1 Comment

So did they resolve the issue my friend ? I am also using a robot I imported from SolidWorks and would like to know if it's possible to show the multiple solutions.

Sign in to comment.

Categories

Find more on Mathematics and Optimization in Help Center and File Exchange

Asked:

on 10 Feb 2022

Commented:

on 27 Feb 2024

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!