Skip to content

Commit 3021b9b

Browse files
committed
Finish migrating oink
1 parent 2056e66 commit 3021b9b

11 files changed

Lines changed: 140 additions & 57 deletions

File tree

.docker/ros/Dockerfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ FROM ros:${ROS_DISTRO} AS roboplan_ros
55
ARG ROS_DISTRO
66

77
ENV PIP_BREAK_SYSTEM_PACKAGES=1
8-
# See https://github.com/tier4/osqp_vendor/issues/26
9-
ENV CMAKE_POLICY_VERSION_MINIMUM=3.5
108
SHELL ["/bin/bash", "-c"]
119

1210
# Install core dependencies.

.docker/ubuntu/Dockerfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ FROM ubuntu:${UBUNTU_VERSION} AS roboplan_ubuntu
44

55
ARG PINOCCHIO_VERSION=4.1.0
66
ENV PIP_BREAK_SYSTEM_PACKAGES=1
7-
# See https://github.com/tier4/osqp_vendor/issues/26
8-
ENV CMAKE_POLICY_VERSION_MINIMUM=3.5
97
SHELL ["/bin/bash", "-c"]
108

119
# Install core dependencies.

docs/source/design/architecture.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Colors indicate the implementation language of each component: C++ only, Python
3535
subgraph EXT["External libraries"]
3636
PIN["Pinocchio"]
3737
COAL["Coal"]
38-
OSQP["OSQP"]
38+
PROXSUITE["ProxSuite"]
3939
TOPPRALIB["toppra"]
4040
DYNO["dynotree"]
4141
VISER["Viser"]
@@ -55,7 +55,7 @@ Colors indicate the implementation language of each component: C++ only, Python
5555
CART --> CORE
5656
SHORT --> SCENE
5757

58-
OINK --> OSQP
58+
OINK --> PROXSUITE
5959
RRT --> DYNO
6060
TOPPRA --> TOPPRALIB
6161
SCENE --> PIN
@@ -76,7 +76,7 @@ Colors indicate the implementation language of each component: C++ only, Python
7676
classDef both fill:#6fce89,stroke:#1b5e20,color:#111111
7777
classDef neutral fill:#ffffff,stroke:#666666,color:#111111
7878

79-
class LCPP,OSQP,TOPPRALIB,DYNO cpp
79+
class LCPP,PROXSUITE,TOPPRALIB,DYNO cpp
8080
class LPY,VIZ,INTERP,VISER,MPL python
8181
class LBOTH,CART,SINK,OINK,RRT,TOPPRA,SCENE,TYPES,SHORT,PIN,COAL both
8282
class USER neutral
@@ -142,7 +142,7 @@ Algorithm packages
142142
Each algorithm package builds on the core package, bringing in its own external solver where needed:
143143

144144
- **SimpleIK** iterates a damped least-squares update using Jacobians from the ``Scene``.
145-
- **OInK** formulates IK as a quadratic program over tasks, constraints, and control barrier functions, and solves it with `OSQP <https://osqp.org/>`_ (through `osqp-eigen <https://github.com/gbionics/osqp-eigen>`_).
145+
- **OInK** formulates IK as a quadratic program over tasks, constraints, and control barrier functions, and solves it with `ProxSuite <https://github.com/Simple-Robotics/proxsuite>`_.
146146
- **RRT** grows search trees in configuration space, using the ``Scene`` for sampling and collision checks and the vendored `dynotree <https://github.com/quimortiz/dynotree>`_ k-d tree for nearest-neighbor lookups.
147147
- **TOPP-RA** wraps the `toppra <https://github.com/hungpham2511/toppra>`_ library to time-parameterize joint paths subject to the velocity and acceleration limits stored in the ``Scene``.
148148
- **CartesianPathPlanner** is the main integration point: it tracks a task-space path with an internal OInK solver and times the result either with a trapezoidal velocity profile or with TOPP-RA.

packaging/python/cmake/roboplan_python_packaging.cmake

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,6 @@ function(roboplan_configure_unified_python_wheel)
126126
endforeach()
127127

128128
foreach(library IN ITEMS
129-
OsqpEigen
130129
boost_atomic
131130
boost_filesystem
132131
boost_serialization
@@ -137,11 +136,11 @@ function(roboplan_configure_unified_python_wheel)
137136
gz-utils
138137
octomap
139138
octomath
140-
osqp
141139
pinocchio_collision
142140
pinocchio_default
143141
pinocchio_extra
144142
pinocchio_parsers
143+
proxsuite
145144
qdldl
146145
qhull_r
147146
sdformat

pixi.lock

Lines changed: 98 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pixi.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,11 +225,10 @@ sccache = ">=0.10.0,<0.11"
225225
yaml-cpp = ">=0.8.0,<0.9"
226226

227227
# Core dependencies
228-
# Note: the OInK QP solver (proxsuite/ProxQP, header-only) is fetched at a pinned version
229-
# via CMake FetchContent in roboplan_oink, so it is intentionally not listed here.
230228
eigen = ">=3.4.0"
231229
libtoppra = ">=0.6.4,<0.7"
232230
pinocchio = ">=4.1.0,<5"
231+
proxsuite = ">=0.7.3,<0.8"
233232

234233
# Python bindings dependencies
235234
python = ">=3.11,<3.12"

roboplan_oink/CMakeLists.txt

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -22,29 +22,31 @@ find_package(roboplan REQUIRED)
2222
# issues with symlink installs.
2323
find_package(ament_cmake QUIET)
2424

25-
# OInK uses ProxQP from proxsuite (header-only) as its QP solver. It is always fetched at
26-
# a pinned version so every platform builds against the same solver version, instead of
27-
# whatever a system/distro package would provide. proxsuite is kept out of the public
28-
# headers and the exported link interface, so downstream consumers do not need it.
29-
# Offline builds can pre-seed the sources via -DFETCHCONTENT_SOURCE_DIR_PROXSUITE=<path>.
30-
message(STATUS "Fetching proxsuite from GitHub...")
31-
32-
# Disable proxsuite vectorization support (would require Simde) and tests.
33-
set(BUILD_WITH_VECTORIZATION_SUPPORT OFF CACHE INTERNAL "Disable proxsuite vectorization")
34-
set(BUILD_TESTING OFF)
35-
36-
FetchContent_Declare(
37-
proxsuite
38-
URL https://github.com/Simple-Robotics/proxsuite/archive/refs/tags/v0.7.3.tar.gz
39-
URL_HASH SHA256=e634babff534c8812c6dbc6b022b1d01f9a2a4a9a73cf87a6dc299a4de996904
40-
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
41-
)
42-
FetchContent_MakeAvailable(proxsuite)
43-
44-
# proxsuite creates a non-namespaced target when built via FetchContent.
45-
# Create a namespaced alias to match the installed package.
46-
if(TARGET proxsuite AND NOT TARGET proxsuite::proxsuite)
47-
add_library(proxsuite::proxsuite ALIAS proxsuite)
25+
# OInK uses ProxQP from proxsuite (header-only) as its QP solver.
26+
find_package(proxsuite QUIET)
27+
28+
if(proxsuite_FOUND)
29+
message(STATUS "Found installed proxsuite ${proxsuite_VERSION}.")
30+
else()
31+
message(STATUS "proxsuite not found. Fetching from GitHub...")
32+
33+
# Disable proxsuite vectorization support (would require Simde) and tests.
34+
set(BUILD_WITH_VECTORIZATION_SUPPORT OFF CACHE INTERNAL "Disable proxsuite vectorization")
35+
set(BUILD_TESTING OFF)
36+
37+
FetchContent_Declare(
38+
proxsuite
39+
URL https://github.com/Simple-Robotics/proxsuite/archive/refs/tags/v0.7.3.tar.gz
40+
URL_HASH SHA256=e634babff534c8812c6dbc6b022b1d01f9a2a4a9a73cf87a6dc299a4de996904
41+
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
42+
)
43+
FetchContent_MakeAvailable(proxsuite)
44+
45+
# proxsuite creates a non-namespaced target when built via FetchContent.
46+
# Create a namespaced alias to match the installed package.
47+
if(TARGET proxsuite AND NOT TARGET proxsuite::proxsuite)
48+
add_library(proxsuite::proxsuite ALIAS proxsuite)
49+
endif()
4850
endif()
4951

5052
# Add libraries

roboplan_oink/package.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@
1515
<build_depend>python3-dev</build_depend>
1616

1717
<depend>roboplan</depend>
18-
<!-- See https://github.com/tier4/osqp_vendor/issues/26 -->
19-
<depend condition="$ROS_DISTRO != lyrical">osqp_vendor</depend>
18+
<depend>proxsuite</depend>
2019

2120
<test_depend>ament_cmake_gmock</test_depend>
2221
<test_depend>libgmock-dev</test_depend>

0 commit comments

Comments
 (0)