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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions