Skip to content

feat(autoware_path_optimizer): new path optimizer#11479

Open
PanConChicharron wants to merge 14 commits intoautowarefoundation:mainfrom
PanConChicharron:arjun.ram/T4DEV-9960
Open

feat(autoware_path_optimizer): new path optimizer#11479
PanConChicharron wants to merge 14 commits intoautowarefoundation:mainfrom
PanConChicharron:arjun.ram/T4DEV-9960

Conversation

@PanConChicharron
Copy link
Contributor

@PanConChicharron PanConChicharron commented Oct 10, 2025

@github-actions github-actions bot added the component:planning Route planning, decision-making, and navigation. (auto-assigned) label Oct 10, 2025
@github-actions
Copy link

github-actions bot commented Oct 10, 2025

Thank you for contributing to the Autoware project!

🚧 If your pull request is in progress, switch it to draft mode.

Please ensure:

@PanConChicharron PanConChicharron force-pushed the arjun.ram/T4DEV-9960 branch 2 times, most recently from 1613a9f to cc8f343 Compare October 17, 2025 05:19
@PanConChicharron PanConChicharron force-pushed the arjun.ram/T4DEV-9960 branch 3 times, most recently from 7bd5baa to 0e85f57 Compare October 31, 2025 08:11
@PanConChicharron PanConChicharron force-pushed the arjun.ram/T4DEV-9960 branch 2 times, most recently from 3b86328 to 9657ca6 Compare November 10, 2025 09:24
@PanConChicharron PanConChicharron force-pushed the arjun.ram/T4DEV-9960 branch 2 times, most recently from d5bad89 to e3cd1c9 Compare November 18, 2025 08:14
@github-actions github-actions bot added the component:launch Launch files, scripts and initialization tools. (auto-assigned) label Nov 18, 2025
@PanConChicharron PanConChicharron force-pushed the arjun.ram/T4DEV-9960 branch 2 times, most recently from 2b99c1b to f0a30ae Compare November 19, 2025 02:38
@github-actions github-actions bot added the component:perception Advanced sensor data processing and environment understanding. (auto-assigned) label Nov 19, 2025
@PanConChicharron PanConChicharron force-pushed the arjun.ram/T4DEV-9960 branch 3 times, most recently from 6f23d49 to 261bed3 Compare December 2, 2025 07:27
@github-actions github-actions bot removed the component:perception Advanced sensor data processing and environment understanding. (auto-assigned) label Dec 2, 2025
@PanConChicharron PanConChicharron force-pushed the arjun.ram/T4DEV-9960 branch 6 times, most recently from e713b67 to c0c73ce Compare December 8, 2025 07:59
@PanConChicharron PanConChicharron force-pushed the arjun.ram/T4DEV-9960 branch 2 times, most recently from ac5963c to 3f03750 Compare December 10, 2025 02:50
Signed-off-by: Arjun Jagdish Ram <arjun.ram@tier4.jp>
Signed-off-by: Arjun Jagdish Ram <arjun.ram@tier4.jp>
Signed-off-by: Arjun Jagdish Ram <arjun.ram@tier4.jp>
@xmfcx xmfcx force-pushed the arjun.ram/T4DEV-9960 branch from 8006537 to a768ae0 Compare February 19, 2026 07:29
xmfcx and others added 2 commits February 19, 2026 10:45
Signed-off-by: Mete Fatih Cırıt <mfc@autoware.org>
Signed-off-by: Arjun Jagdish Ram <arjun.ram@tier4.jp>
@mitsudome-r
Copy link
Member

mitsudome-r commented Feb 20, 2026

minutes from meeting

Potential solutions to install acados library:

  • Option1: create a acados_vendor as a ROS package and depend on the package
    • cons: we have to maintain the vendor package ourselves
  • Option 2 install ansible as library to the system. refer to the library from colcon
  • Option 3: push acados generated code instead of original python build script
    • we will have a README with instructions to explain how people can build scripts through virtual environment generation
    • cons: We also plan to create other packages that depend on acados. We don't want to have many packages that has complex way of building

General notes:

  • we still need build steps described in CMakeLitsts.txt
  • Since it requires some external python libraries, we need to use virtual environment
    • it fails to install casadi from rosdep without PIP_BREAK_SYSTEM_PACKAGES=1 in Ubuntu 24.04
    • example: we could create a virtual environment in ansible, then refer to it from CMakeLitsts.txt
      • we can install it under ~/autoware_venvs/acados
      • we could add an argument to ansilble scripts to select which directory to install the virtual environment

Conclusion:

  • Remove rust role from ansible
  • Remove acados and tera_renderer from autoware.repos file
  • Create a new role for acados
    • clone acados into /opt/acados/src (or maybe /opt/autoware/acados)
    • build acados
      • install it under /opt/acados/install
    • install tera_renderer binary from release page
      • system level binary directory (TBD)
      • ansible should be able to install different binaries for target cpu architecture (arm64/amd64)
    • could create a virtual environment for acados under /opt/acados/.venv
      • create venv, install all python dependencies including casadi
      • add an argument to ansilble scripts to select which directory to install the virtual environment
  • update CMakeLitst.txt PR
    • Load venv
    • find acados workspace in /opt/acados/ and environment variables

In the long term, we should make updates to acados to become more portable

Signed-off-by: Arjun Jagdish Ram <arjun.ram@tier4.jp>
Copy link
Contributor

@xmfcx xmfcx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made very large scale simplifications to both cmakelists files.

It compiles for me.

Please apply and let's keep discussing over them.

Summary of my changes on the CMakeLists.txt files

This diff refactors the CMake build system to simplify how acados is integrated into the autoware_path_optimizer package.

Before

  • Located acados via relative workspace paths (../../../external/acados)
  • Built acados from source if no pre-built version was found
  • Built t_renderer from Rust source via cargo
  • Manually declared all imported static libraries (acados, blasfeo, hpipm, qpoases)
  • Installed all acados headers and libraries for downstream packages

After

  • Assumes acados is pre-installed at /opt/acados (via Ansible playbook setup_acados)
  • Uses standard find_package(acados) to locate the dependency
  • Uses acados's bundled .venv Python interpreter for MPC code generation
  • Links only against the top-level acados target — transitive deps (blasfeo, hpipm, qpoases) are handled by the installed package
  • No manual header/library installation

Effect

A cleaner "assume the dependency is pre-installed" approach, replacing a complex "build/find everything ourselves" approach.


Line Count Reduction

File Before After Reduction
CMakeLists.txt (root) 128 lines 42 lines ~67%
src/acados_mpc/CMakeLists.txt 218 lines 75 lines ~66%
Combined 346 lines 117 lines ~66%

Roughly two-thirds of the CMake code was removed.

Signed-off-by: Arjun Jagdish Ram <arjun.ram@tier4.jp>
@github-actions github-actions bot removed the type:ci Continuous Integration (CI) processes and testing. (auto-assigned) label Feb 24, 2026
PanConChicharron and others added 2 commits February 24, 2026 18:57
Co-authored-by: Mete Fatih Cırıt <mfc@autoware.org>
Signed-off-by: Arjun Jagdish Ram <arjun.ram@tier4.jp>
@PanConChicharron
Copy link
Contributor Author

I made very large scale simplifications to both cmakelists files.

It compiles for me.

Please apply and let's keep discussing over them.

Summary of my changes on the CMakeLists.txt files

This diff refactors the CMake build system to simplify how acados is integrated into the autoware_path_optimizer package.

Before

  • Located acados via relative workspace paths (../../../external/acados)
  • Built acados from source if no pre-built version was found
  • Built t_renderer from Rust source via cargo
  • Manually declared all imported static libraries (acados, blasfeo, hpipm, qpoases)
  • Installed all acados headers and libraries for downstream packages

After

  • Assumes acados is pre-installed at /opt/acados (via Ansible playbook setup_acados)
  • Uses standard find_package(acados) to locate the dependency
  • Uses acados's bundled .venv Python interpreter for MPC code generation
  • Links only against the top-level acados target — transitive deps (blasfeo, hpipm, qpoases) are handled by the installed package
  • No manual header/library installation

Effect

A cleaner "assume the dependency is pre-installed" approach, replacing a complex "build/find everything ourselves" approach.

Line Count Reduction

File Before After Reduction
CMakeLists.txt (root) 128 lines 42 lines ~67%
src/acados_mpc/CMakeLists.txt 218 lines 75 lines ~66%
Combined 346 lines 117 lines ~66%
Roughly two-thirds of the CMake code was removed.

Thanks! The changes are very welcome!

Signed-off-by: Arjun Jagdish Ram <arjun.ram@tier4.jp>
@xmfcx
Copy link
Contributor

xmfcx commented Feb 24, 2026

Once https://github.com/autowarefoundation/autoware/actions/runs/22347469425/job/64665710677 is finished, the CI will start using the new images that has acados.

The dependency installation and cmakelists side of things look alright now 👍

I'll leave the actual code review to the original code owners.

@PanConChicharron
Copy link
Contributor Author

Some checks were not successful

3 failing, 1 in progress, 6 skipped, 1 expected, 15 successful checks

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

component:planning Route planning, decision-making, and navigation. (auto-assigned) run:build-and-test-differential Mark to enable build-and-test-differential workflow. (used-by-ci)

Projects

Status: To Triage

Development

Successfully merging this pull request may close these issues.

5 participants