How do we avoid singularity in PID control system?

9 views (last 30 days)
Working on a simple PID control system for a 2 robot system with 4 degrees of freedom on each robot. We know we have a singularity when both robots are at [0 0 0 0]. No matter what values are going into our Drone Plant it seems to be outputting [0 0 0 0] every time. We tried including initial conditions but after the first iteration, it goes back to the Drone Plant output of [0 0 0 0]. We are looking for any advice, solutions, or troubleshooting techniques...anything. Thank you for your time.
The error:
The error message we are receiving is- Derivative input 1 of 'TwoDroneMathworks/Drone 1 Plant/transfer Fcn' at time 0.05 is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances) We have tried utilizing resources provided by MathWorks for troubleshooting this specific error without any luck.
Break down of the script:
We have a trajectory signal that is generating our desired trajectory for the cluster which goes into our PID controller. We have an inverse jacobian that converts commanded cluster space velocity into individual robot velocities commands. We plug that into a simple first order plant and integrate to get position. Then our kinematic block converts the individual robot positions into a position of the cluster. We have tested both Matlab scripts (Inverse Jacobian and Forward Kinematics) independently multiple times and believe they are functioning as expected.
Here is a link to the Simulink file (Using Matlab 2012b) http://dl.dropbox.com/u/16665340/TwoDroneMathworks.mdl (right click, save link as..)

Accepted Answer

Arkadiy Turevskiy
Arkadiy Turevskiy on 29 Jan 2013
Instead of using Initial Condition on the signal, supply the initial conditions for the integrators in your Drone 1 Plant and Drone 2 Plant subsystems. For example, go to Drone 1 Plant, open the Integrator block dialog for X and set Initial Condition field there to 1. Do that for all initial conditions. When I did that, I was able to run your model to 10 secs.
Arkadiy

More Answers (1)

anna yue
anna yue on 1 May 2013
hello,does anyone know how to use pid to model inverse kinematic(2 DoF robot arm) in matlab simulink ?

Products

Community Treasure Hunt

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

Start Hunting!