How do we avoid singularity in PID control system?

조회 수: 14 (최근 30일)
Anne
Anne 2013년 1월 16일
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..)

채택된 답변

Arkadiy Turevskiy
Arkadiy Turevskiy 2013년 1월 29일
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

추가 답변 (1개)

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

Community Treasure Hunt

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

Start Hunting!

Translated by