Skip to content

Spirit plans but does not track in Adaptive mode (Solve Time stays NaN) #450

@ubbanban

Description

@ubbanban

Hi, thank you for open-sourcing this fantastic work!I am trying to reproduce the experiments from your paper (Adaptive Complexity MPC) in ROS Noetic. I am running into a specific issue when using the Adaptive complexity configuration.

Environment:

  • Robot: Spirit (Gazebo + quad_plan with ac:=true)

Steps to Reproduce

  1. Launch Gazebo: roslaunch quad_utils quad_gazebo.launch world:=flat gui:=false robot_type:=spirit
  2. Trigger standing mode: rostopic pub /robot_1/control/mode std_msgs/UInt8 "data: 1" -1
  3. Launch the planner with adaptive complexity enabled: roslaunch quad_utils quad_plan.launch reference:=gbpl logging:=true ac:=true

Actual Behavior
The global path is generated and the robot stands, but it does not execute tracking (no stepping / no motion along the plan).
To debug, I record NMPC diagnostics from /robot_1/local_plan. Under Adaptive mode, diagnostics.compute_time (Solve Time) stays NaN in my logs. My understanding is that when the NMPC solve fails, no new local_plan is published, so my logger never receives updated diagnostics and keeps the initial NaN. So I interpret this as the NMPC likely failing to solve repeatedly in Adaptive mode, rather than the solver returning NaN itself.

Questions

  1. Does a lack of successful local_plan publications (and thus NaN in our recorded Solve Time) indeed indicate that the IPOPT solver is failing to find a feasible solution for the current horizon when the complexity schedule is used?
  2. The paper mentions that introducing complexity in the interior of the horizon can degrade OCP initialization. Could this be related to warm-start or initial-guess behavior when the complexity schedule changes every control step (e.g. uninitialized or inconsistent initial guess after update_structure())?
  3. Are there recommended parameter changes (e.g. IPOPT tolerances, NMPC weights, or fixed_complex_head / fixed_complex_tail) to get Adaptive mode working reliably for Spirit with reference:=gbpl?

Thank you for your time!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions