| Student Name | Student Number |
|---|---|
| Abhijith Prakash | 6406785 |
| Karthik Swaminathan | 6410995 |
| Tejas Stanley | 6204538 |
| Mohammed Saad Hashmi | 6405126 |
In this project, we develop a planning framework for a mobile manipulator robot named Albert, operating in cluttered indoor environments, to enable reliable pick-and-place tasks while avoiding collisions with obstacles. Albert consists of a differential-drive mobile base equipped with a 7-degree-of-freedom Franka Emika robotic arm.
- First clone the repository recursively. If you already have the repository skip this command.
git clone https://github.com/kart1802/DYNAMO.git --recurse-submodules- The main libraries used in our code are pybullet, Acados and OMPL. You can install all the necessary dependencies by executing the following script below in the
DYNAMOfolder. This script will create a conda env namedpdm_envand also install acados in theDYNAMOfolder.
sudo chmod +x ./sim_setup.sh
./sim_setup.sh- After this export the path using the command below when using acados anytime else, where
<acados_root>is the location it is installed (in the acados folder inDYNAMOfolder)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"<acados_root>/lib"
export ACADOS_SOURCE_DIR="<acados_root>"The current code contains 3 environments Supermarket, Home and Random Boxes. Each having different table obstacle configurations.
| Home | Supermarket | Maze |
|---|---|---|
![]() |
![]() |
![]() |
The main.py scripts has parameters:
--env- We can define the environments here which can be [home,supermarket,maze]--config- We can define what planners we want to userrt_mpc- BIT* for Base and only MPC for Armrrt_rrt- BIT* for Base and only BIT* for Armrrt_rrt_mpc- BIT* for Base and BIT* as global, MPC as local planner for Arm
--arm_solver- Selecting the sampling based planner for base [RRT,RRTstar,RRTConnect,BITstar]. By default it isBITstar--base_solver- Selecting the sampling based planner for base [RRT,RRTstar,BITstar]. By default it isBITstar- Example Command
python main.py --env home --config rrt_rrt_mpc- This workflow launches the home environment, selecting a random starting position from a set of valid configurations. The robot first gets the table position and plans a path for its base to reach the table using a sampling-based planner. Once the base reaches the table, the robot computes the arm’s goal position relative to the base. It then plans a path for the manipulator to reach the final pick position using a sampling-based planner and executes the trajectory using Model Predictive Control (MPC).
.
├── acados
├── environment.yml
├── gym_envs_urdf
├── main.py # Executes the FSM logic calling albert_mpc.py and combined.py
├── mpc
│ ├── albert_mpc.py # Sets up the acados solvers and casadi symbolic representations
│ ├── arm_model.py # script contains the Casadi representation of the manipulator
│ ├── panda_fk.py
│ └── utils.py
├── RRT_stack
│ ├── combined.py # Initiates the planners
│ ├── pb_ompl_full.py # Contains the class for planners and execution
│ ├── robot.py # Contains the classes for setting states and initializing the robot in the env
│ └── utils.py # Contains functions mainly for collision detection between bodies
├── setup_env.py # Script for setting up the environment and spawning the robot and initializing its states
├── env.py # Script containing the environment data and urdfs

