- Cannot resolve: nlobj.
Algebraic state in algebraic loop containing ... computed at time 0.0 is Inf or NaN.
26 views (last 30 days)
Show older comments
Hello,
I am making a collision avoidance application such that an ego vehicle must avoid collision with another vehicle using responsibilty sensative safety by mobileye, controlling the ego vehicle with an mpc to get to point A to point B, and changing the optimal control with a Barrier Certificate Enforcement to avoid other vehicles.
I've attached a compressed file of the matlab codes and simulink model. I believe its necessary that I attach it all because this error is coming from a matrix multiplier. Please run "initialize_constants" matlab script before running simulink model.
The error I recieve is...
An error occurred while running the simulation and the simulation was terminated
Caused by:
- Algebraic state in algebraic loop containing 'feedbackmpcCBFv3/Barrier certificate enforcement/Barrier Certificate Enforcement/Barrier Certificate Constraint/Product1' computed at time 0.0 is Inf or NaN. There may be a singularity in the solution. If the model is correct, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances) or tweak the initial guess of algebraic loop variable values.
In my barrier function I divide by a parameter called LODSDSD(Longitudinal opposite direction/same direction safe distance). This value is calculated by using the longitudinal velocity data of the non-ego vehicle from the scenario reader.
When I log the signal of the non-ego vehicle's longitudinal velocity it comes out as 0 which would cause that barrier function to be a non-real number which is why I believe im getting this error from. I've verified that the scenario is inputted properly by making a feedfoward system with the same scenario to just log the data. and the initial condition of the non-ego vehicle is correct but when I turn it back to a feedback loop the intial longitudinal velocity of the non-ego vehicle is 0.
I've tried to change to a stiffer solver (ode15s(stiff/NDF)) and tighten my error tolerance.
I believe my model is correct as im use a model from Rajesh Rajamani - Vehicle Dynamics and Control Second Edition book.
Thank you in advance for anyone that can assist me with this error,
Marshall Botta
4 Comments
Daniel
on 2 Oct 2024
Hi Marshall,
In retrospect that file probably should have been more obvious to me. :)
Anyway, I get another error now. It looks like I'm missing "deaccelerationtestscript".
Accepted Answer
Daniel
on 3 Oct 2024
I'm having some difficulty seeing exactly where the error is coming from---simulations that fail at the first time step can be a bit tricky to figure out---but here are some general recommendations:
- To break an algebraic loop artificially, you might consider introducing an artificial delay, with a sample time smaller than the dynamics of the system are changing. I attached Unit Delay blocks to the inputs to Vehicle dynamics at the top level, with a sample time of 0.01, and the simulation at least runs... though I don't know anything about your system, so I can't say if it's running correctly or not. :)
- Sometimes you can handle 0 values specially in this sort of situation. For instance, you could check if LODSDSD is 0, and then perform some different calculation that produces a finite result in that case.
More Answers (0)
See Also
Categories
Find more on Applications in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!