Skip to content

migrate to OSQP v1.0 C API for rolling-resolute buildfarm release #3786

Description

@nbbrooks

Why

A proper rolling-resolute buildfarm release of moveit_core is currently blocked. The chain:

  • CMake 4 (Ubuntu Resolute default) removed the pre-3.5 policy compatibility layer.
  • osqp_vendor 0.2.0 (in rosdistro rolling) still vendors OSQP v0.6.x, whose cmake_minimum_required(3.2) trips that removal.
  • moveit2#3760 works around it in CI by setting CMAKE_POLICY_VERSION_MINIMUM=3.5 as a container env var (propagates into the ExternalProject_Add sub-build; the -D form doesn't).
  • The ROS buildfarm doesn't inherit our DOCKER_RUN_OPTS, so that workaround is CI-only. A bloom release of moveit_core on resolute would fail at the same CMake-policy check the CI env-var papers over.

The unblocking upstream change ([tier4/osqp_vendor#25](https://github.com/tier4/osqp_vendor/pull/25), sea-bass fork) bumps the vendored OSQP to v1.0 — that version's CMake is naturally CMake-4-clean, no env-var hack needed. But OSQP v1.0 also redesigned the C API, and moveit_core::online_signal_smoothing::AccelerationFilter uses that API directly. So bumping the vendor version alone breaks moveit_core's compilation (verified — pushed the swap onto #3760 and CI immediately failed on OSQPWorkspace* and c_int symbols).

That leaves one route to a buildfarm-releasable rolling-resolute moveit_core: migrate the OSQP call sites to the v1.0 API in lockstep with the osqp_vendor version bump.

How

Proposed plan:

  1. Track the upstream tier4/osqp_vendor#25 PR. Do not start the moveit_core migration until it's merged and released in rosdistro, or work against a local pin.
  2. Port AccelerationFilter to the OSQP v1.0 C API. If keeping compatibility with humble/jazzy/kilted (which still ship osqp_vendor 0.2.0) matters, gate the two implementations behind a version macro on either osqp_vendor or an OSQP-provided version header — same shape as the AMENT_INDEX_CPP_VERSION_GTE guard used in resolute: complete ament_index_cpp::get_package_share_path migration #3705.
  3. Validate against MoveIt's existing online-signal-smoothing regression tests (behavioural equivalence, not just build-clean).
  4. Once merged: drop the osqp_vendor entry from moveit2_rolling.repos and the CMAKE_POLICY_VERSION_MINIMUM=3.5 line from the rolling-resolute CI matrix — the CI-only workaround becomes redundant.

The follow-up PR's commit message will carry the concrete API-diff (function renames, type renames, setup/solve signature changes) — leaving this issue focused on the release path.

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