Alternatives to fsolve for solving systems of nonlinear equations with boundaries

11 Ansichten (letzte 30 Tage)
I’m solving an inverse kinematic problem for a four joint robotic arm. Essentially I have 3 equations (X, Y, Z) and four unknowns (Joint 1 – Joint4) so there are multiple possible solutions for each joint angle. It is a system of nonlinear equations.
fsolve is doing a wonderful job of solving the system for me, but in order to be able to apply my program to actual robot control I need to be able to add constraints to the possible range of the joint angles. They must be between 0 and pi radians.
I’ve tried lsqnonlin with boundaries but run into the problem that I have 3 equations and 4 unknowns.
Are there alternative functions that allow boundary inputs that will solve systems of nonlinear equations? Alternativly, is there a way to use/modify fsolve to force solutions into a range? I'm on R2012b.
Any thoughts would be much appreciated as I'm out of ideas and my google-fu is failing me.
  2 Kommentare
Matt J
Matt J am 23 Mär. 2013
I’ve tried lsqnonlin with boundaries but run into the problem that I have 3 equations and 4 unknowns.
How is that a problem? If you didn't care which of many solutions FSOLVE gave you, why do you care with LSQNONLIN?
Orion
Orion am 23 Mär. 2013
Sorry, what I meant was that the algorithm that LSQNONLIN uses to solve systems with boundary conditions won’t accept more unknowns than equations. Without the conditions, LSQNONLIN gives the same results as FSOLVE, which are often negative angles or > pi.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Orion
Orion am 25 Mär. 2013
I ended up doing a little trig to find a fourth equation, giving me 4 equations and 4 unknowns. Now I can use LSQNONLIN to put upper and lower bounds on my problem and solve it. Works great!

Weitere Antworten (0)

Kategorien

Mehr zu Robotics finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by