Giter Site home page Giter Site logo

geonhee-lee / mpc_ros Goto Github PK

View Code? Open in Web Editor NEW
706.0 11.0 166.0 2.39 MB

Differential Wheeled Mobile Robot - Nonlinear Model Predictive Control based on ROS

Home Page: https://www.youtube.com/watch?v=5IqFGBmDGjU

License: Apache License 2.0

CMake 0.50% C++ 98.58% Python 0.90% Shell 0.02%
mpc ros planner unicycle simulation gazebo-simulation trajectory navigation trajectory-tracking ipopt

mpc_ros's Introduction

GitHub issues open GitHub forks GitHub stars GitHub license

Nonlinear Model Predictive Control

Abstract

The goal of this repository is to implement the path tracking algorithm of mobile robot using the Nonlinear Model Predictive Control(NMPC), one of the optimal controllers. The NMPC can provide the poweful and effective performance among existing optimal controllers since it can have the preview ability and easy to regulate constraints. This repository is based on ROS(Robot Operating System). Therefore it supports the local planner plugin and standalone node as well.

Features

  • Nonlinear Model Pridictive Control (through ipopt solver)
  • Wheeled Mobile Robot

Installation

  1. Ubuntu 18.04

  2. Install ROS Melodic.

  3. Install ROS dependencies.

    sudo apt install ros-melodic-costmap-2d \
    ros-melodic-move-base \
    ros-melodic-global-planner \
    ros-melodic-amcl
    
  4. Install Ipopt: Please refer the tutorial in "document/ipopt_install".

  5. Create your own catkin_ws and clone the repositories.

    git clone https://github.com/Geonhee-LEE/mpc_ros.git 
    
    • (optional) If you already have the urdf model, you don't need to clone below
      git clone https://github.com/CzJaewan/servingbot.git
      

    NOTE: you can also refer other models such as ackermann model, holonomic model. you can see it mpc_ros_description

  6. Build (catkin_make) and Try it.

Launch

Run Navigation algorithm with MPC in simulation:

  • It can be selected with DWA, MPC, Pure persuit according to 'controller' argument.
roslaunch mpc_ros nav_gazebo.launch

Run tracking the reference line with MPC

  • Tracking the trajectory such as infinity-shaped, epitrochoid, square using non-linear model predictive control.
roslaunch mpc_ros ref_trajectory_tracking_gazebo.launch

How to use as local planner

  • After building successfully, you should just change the base_local_planner param with mpc_ros/MPCPlannerROS.
<param name="base_local_planner" value="mpc_ros/MPCPlannerROS"/>

Youtube video


Video Label

About us

Contact: [email protected]
Date: 2020/05/02
License: Apache 2.0

Reference

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.