Summary
When the trajectory optimization problem is infeasible or numerically unstable, Gurobi may return GRB_INF_OR_UNBD.
The solver then returns false, and RMADER propagates the failure without triggering any recovery mechanism. The system continues publishing the previously committed trajectory, while the UAV state and optimization constraints remain nearly unchanged.
As a result, the next planning cycle may construct essentially the same infeasible optimization problem, causing the failure to repeat indefinitely.
Relevant Code
The solver failure is returned in:
[solver_gurobi.cpp:672](https://chatgpt.com/home/dongjiaxin/workspace/RMADER_ws/src/rmader/rmader/src/solver_gurobi.cpp:672)
RMADER then directly propagates the planning failure in:
[rmader.cpp:1571](https://chatgpt.com/home/dongjiaxin/workspace/RMADER_ws/src/rmader/rmader/src/rmader.cpp:1571)
The failure is only reported through a log message similar to:
solver couldn't find optimal path
No fallback trajectory, constraint relaxation, state reset, or retry limit is applied.
Failure Flow
The current optimization constraints become infeasible
or a numerical issue occurs
↓
Gurobi returns GRB_INF_OR_UNBD
↓
The solver returns false
↓
RMADER only reports:
"solver couldn't find optimal path"
↓
ROS continues publishing the previous trajectory
↓
The UAV position and planning constraints remain nearly unchanged
↓
The next planning cycle constructs an equivalent
or nearly identical infeasible optimization problem
↓
Gurobi returns GRB_INF_OR_UNBD again
↓
The failure repeats indefinitely
Observed Behavior
Once the optimizer enters this failure condition:
- no new feasible trajectory is generated;
- the previously committed trajectory continues to be published;
- the UAV may remain stationary after reaching the end of that trajectory;
- subsequent planning cycles repeatedly solve nearly identical infeasible problems;
- the system does not transition to an emergency, recovery, or fallback state.
This can cause the UAV to remain indefinitely stuck in repeated planning failures until the experiment or mission times out.
Expected Behavior
When Gurobi reports an infeasible or unbounded optimization problem, RMADER should detect the persistent failure and invoke an explicit recovery strategy instead of repeatedly reconstructing the same problem.
Possible recovery actions include:
- distinguishing
GRB_INFEASIBLE, GRB_UNBOUNDED, and GRB_INF_OR_UNBD;
- retrying with dual reductions disabled to identify the actual solver status;
- relaxing or rebuilding conflicting constraints;
- switching to a fallback or emergency-stop trajectory;
- resetting the local planning problem;
- introducing a bounded retry counter;
- transitioning to a dedicated recovery state after repeated failures.
Impact
This issue can cause a planning livelock in which RMADER remains active but makes no progress. The UAV repeatedly fails to generate a new trajectory while continuing to publish stale trajectory information, potentially resulting in mission timeout, prolonged obstruction, or unsafe behavior in dynamic multi-UAV scenarios.
Summary
When the trajectory optimization problem is infeasible or numerically unstable, Gurobi may return
GRB_INF_OR_UNBD.The solver then returns
false, and RMADER propagates the failure without triggering any recovery mechanism. The system continues publishing the previously committed trajectory, while the UAV state and optimization constraints remain nearly unchanged.As a result, the next planning cycle may construct essentially the same infeasible optimization problem, causing the failure to repeat indefinitely.
Relevant Code
The solver failure is returned in:
[solver_gurobi.cpp:672](https://chatgpt.com/home/dongjiaxin/workspace/RMADER_ws/src/rmader/rmader/src/solver_gurobi.cpp:672)RMADER then directly propagates the planning failure in:
[rmader.cpp:1571](https://chatgpt.com/home/dongjiaxin/workspace/RMADER_ws/src/rmader/rmader/src/rmader.cpp:1571)The failure is only reported through a log message similar to:
No fallback trajectory, constraint relaxation, state reset, or retry limit is applied.
Failure Flow
Observed Behavior
Once the optimizer enters this failure condition:
This can cause the UAV to remain indefinitely stuck in repeated planning failures until the experiment or mission times out.
Expected Behavior
When Gurobi reports an infeasible or unbounded optimization problem, RMADER should detect the persistent failure and invoke an explicit recovery strategy instead of repeatedly reconstructing the same problem.
Possible recovery actions include:
GRB_INFEASIBLE,GRB_UNBOUNDED, andGRB_INF_OR_UNBD;Impact
This issue can cause a planning livelock in which RMADER remains active but makes no progress. The UAV repeatedly fails to generate a new trajectory while continuing to publish stale trajectory information, potentially resulting in mission timeout, prolonged obstruction, or unsafe behavior in dynamic multi-UAV scenarios.