Skip to content

kart1802/DYNAMO

Repository files navigation

MICE: Mobile Manipulation for Indoor Cluttered Environment (PDM Project Group 23)

Description

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.

Installation

  • 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 DYNAMO folder. This script will create a conda env named pdm_env and also install acados in the DYNAMO folder.
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 in DYNAMO folder)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"<acados_root>/lib"
export ACADOS_SOURCE_DIR="<acados_root>"

Running the Environmments

The current code contains 3 environments Supermarket, Home and Random Boxes. Each having different table obstacle configurations.

Home Supermarket Maze
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 use
    • rrt_mpc - BIT* for Base and only MPC for Arm
    • rrt_rrt - BIT* for Base and only BIT* for Arm
    • rrt_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 is BITstar
  • --base_solver - Selecting the sampling based planner for base [RRT,RRTstar,BITstar]. By default it is BITstar
  • 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).

Explanation of Stacks

.
├── 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

About

This project involves the classical motion planning for mobile manipulator in indoor environments for Planning and Decision Making Course (RO47005)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors