This repository provides a complete VSCode docker environment for running MPC planner mpc_planner
(see https://github.com/tud-amr/mpc_planner) and global guidance planner guidance_planner
(see https://github.com/tud-amr/guidance_planner) that together make up Topology-Driven MPC (T-MPC++).
T-MPC computes multiple distinct trajectories in parallel, each passing dynamic obstacles differently. For a brief overview of the method, see the paper website. It also includes a simulation environment for a mobile robot navigating among pedestrians. The code is associated with the following publications:
Journal Paper: O. de Groot, L. Ferranti, D. M. Gavrila, and J. Alonso-Mora, Topology-Driven Parallel Trajectory Optimization in Dynamic Environments. IEEE Transactions on Robotics (T-RO) 2024. Available: https://doi.org/10.1109/TRO.2024.3475047
Conference Paper: O. de Groot, L. Ferranti, D. M. Gavrila, and J. Alonso-Mora, Globally Guided Trajectory Optimization in Dynamic Environments. IEEE International Conference on Robotics and Automation (ICRA) 2023. Available: https://doi.org/10.1109/ICRA48891.2023.10160379
Jackal Simulator | ROS Navigation Stack |
---|---|
For features of the base planner, see https://github.com/tud-amr/mpc_planner
. This repository combines other repositories for:
- Motion planning in 2D dynamic environments (
mpc_planner
) - Global guidance planning in 2D dynamic environments (
guidance_planner
) - Simulating pedestrians with Social Forces (
pedestrian_simulator
) - Defining reference paths (
roadmap
) - Simulating the Clearpath Jackal (
jackal_simulator
)
In VSCode install these extensions:
- https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers
- https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker
Clone this repository. In VSCode: open_folder
-> open mpc_planner_ws
. It will show a pop-up: click Reopen in container
. It will build the container. This will take some time.
Note: For colleagues from CoR at the TU Delft using the Vicon, please uncomment in
setup.sh
the linevcs import < lab.repos src --recursive
to clone lab packages for the Vicon system.
Then, in the VSCode terminal run:
chmod +x setup.sh
chmod +x build.sh
./setup.sh
Required repositories and dependencies will be installed.
The open-source Acados solver (https://docs.acados.org/) is installed by default. Dependencies of the solver generation are installed automatically with poetry in setup.sh
. You will be prompted to install poetry
.
For the licensed Forces Pro solver (https://www.embotech.com/softwareproducts/forcespro/overview/) used in the papers, installation instructions are included below.
Note: To use Forces Pro in the containerized environment, both a floating and regular license is required. If you only have a regular license, you cannot use it in the containerized environment. Instead, you can try to install the planner outside of the container (see https://github.com/tud-amr/mpc_planner).
Regular Solver: Go to my.embotech.com, log in to your account. Assign a regular license to your computer. Then download the client to ~/forces_pro_client/
outside of the container. If you have the solver in a different location, add its path to PYTHONPATH
.
Floating Solver:
Go to my.embotech.com, log in to your account. Click on a license -> Download Floating Licenses Proxy Standalone (Linux 64-bit) - FORCES PRO v5.1.0 onwards
outside of the container -> unzip. In the downloaded folder, chmod +x forcespro_floating_licenses_proxy
. Then to start the solver proxy (necessary to run it), execute:
./forcespro_floating_licenses_proxy
.
To use the floating license, set solver_settings/floating_license
in mpc_planner_<your_system>/config/settings.yaml
to true
.
With the Forces Pro solver set up, you have to generate a solver from outside the VSCode container. First you will need to set up the poetry environment from outside of the container.
With the poetry environment set up, a solver can be generated with:
poetry run python mpc_planner_jackalsimulator/scripts/generate_jackalsimulator_solver.py true
VSCode tasks are available for common tasks. In VSCode, press Ctrl + Shift + B
, the main tasks include:
JackalSimulator: Build
- Buildmpc_planner
forJackalSimulator
JackalSimulator: Build and Generate Solver
(only usable withacados
) - Generate an Acados solver and buildmpc_planner
forJackalSimulator
JackalSimulator: Run Simulator
- Run theJackalSimulator
Similar commands are available for other systems. For more detail see .vscode/tasks.json
.
Task: JackalSimulator: Run Simulator
The following example features Topology-driven MPC (T-MPC++) [1] with a reference tracking cost and dynamic obstacle avoidance (using ellipsoidal obstacles)
Applied to the Clearpath Jackal mobile robot (mpc_planner_jackalsimulator
) in an environment with pedestrians.
Task: ROSNavigation: Run Simulator
Navigation with static and dynamic obstacles. This example features
- Topology-Driven MPC for dynamic obstacle avoidance [1]
- Curvature-Aware MPC for reference tracking (https://ieeexplore.ieee.org/document/10161177)
- Decomp Util for static obstacle avoidance (https://arxiv.org/pdf/2406.11506)
This project is licensed under the Apache 2.0 license - see the LICENSE file for details.
This repository was developed at the Cognitive Robotics group of Delft University of Technology by Oscar de Groot in partial collaboration with Dennis Benders and Thijs Niesten and under supervision of Dr. Laura Ferranti, Dr. Javier Alonso-Mora and Prof. Dariu Gavrila.
If you found this repository useful, please cite our paper:
- [1] Journal Paper: O. de Groot, L. Ferranti, D. M. Gavrila, and J. Alonso-Mora, Topology-Driven Parallel Trajectory Optimization in Dynamic Environments. IEEE Transactions on Robotics (T-RO) 2024. Available: https://doi.org/10.1109/TRO.2024.3475047