How to work around Jacobian Manipulator singular Matrix

2018-08-13 17:32:42

I have a robot and I'm trying to convert a desired linear end effector velocity to a corresponding representation as Joint Speeds.

I'm having the arm being controlled by a controller and as the user moves the joysticks it will give a value between (-1 to 1) that is scaled by a maximum speed of .1m/s.

However whenever I try and calculate the determinant of my jacobian matrix It's approximately 0 and I get a singularity. At least that's what I believe is causing my problem. I think it's due to the nature of what I want to do since I'm constantly receiving values form a controller those values change by a slight amount and this small difference makes it so I can't invert the Jacobian.

Is there a way to work around this issue?

Here is my code

def JaaaaKobe(self, J, V):

#J: Joint position values in radians

#V: desired linear velocity of end effector

J = J *(180/np.pi) #converted to degrees

q0 = J[0]

q1 = J[1]

q2 = J[2]

q3 = J[3]

q4 = J[4]

q5 = J[5]

sin = np.