Git Product home page Git Product logo

cpprobotics's Introduction

CppRobotics

This is the cpp implementation of the PythonRobotics

Requirment

  • cmake
  • opencv 3.3
  • Eigen 3
  • CppAD / IPOPT (for MPC convex optimization) install tips
  • ROS (To make the repo lightweight :). Yet, we may still need it for 3D visualization.)

Build

 $ mkdir build
 $ cd build
 $ cmake ../
 $ make -j 8

Find all the executable files in build/bin.

Table of Contents

Localization

Extended Kalman Filter Localization

  • green line: the groundtruth trajectory
  • black line: dead reckoning
  • red points: observations (e.g. GPS)
  • blue line: estimated positions

ekf

Probabilistic Robotics

Particle Filter Localization

  • green line: the groundtruth trajectory
  • black line: dead reckoning
  • red points: landmarks
  • blue line: estimated positions

pf

Probabilistic Robotics

Path Planning

Dijkstra

  • blue point: the start point
  • red point: the goal point

dijkstra

A star

  • blue point: the start point
  • red point: the goal point

a_star

RRT

  • red circle: the start point
  • blue circle: the goal point
  • black circle: obstacles

rrt

Dynamic Window Approach

  • blue circle: the target point
  • red circle: the robot

dwa

The dynamic window approach to collision avoidance

Model Predictive Trajectory Generator

This part is based on the bicycle motion model.

  • blue circle: the target point
  • red circle: the initial point

mptg

Cubic Spline Planner

csp

State Lattice Planner

  • blue circle: the target point
  • red circle: the initial point

slp

State Space Sampling of Feasible Motions for High-Performance Mobile Robot Navigation in Complex Environments

Frenet Frame Trajectory

  • black line: the planned spline path
  • red circle: the obstacle
  • blue circle: the planned trajectory
  • green circle: the real-time position of robot

frenet

Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame

Path Tracking Control

LQR Steering Control

  • black line: the planned spline path
  • red circle: the position under lqr control

lqr_steering

LQR Speed and Steering Control

  • black line: the planned spline path
  • red circle: the position under lqr control

lqr_full

MPC Speed and Steering Control

  • black line: the planned spline path
  • blue line: the passed path
  • yellow cross: the reference trajectory for MPC
    (To compile this part, you need to uncomment the related lines in CMakeLists.txt and install CppAD and IPOPT.)

mpc

cpprobotics's People

Contributors

mjyc avatar onlytailei avatar surfertas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cpprobotics's Issues

how to include the libraries eigen and opencv ?

Hi
I am using Visual studio 17. I have created a folder called lib, where i have downloaded the source files of opencv and eigen. created the build folder and tried to run the cmake ../ command. But i am always getting the following error.
CMake Error at CMakeLists.txt:16 (find_package):
Could not find a package configuration file provided by "OpenCV" with any
of the following names:

OpenCVConfig.cmake
opencv-config.cmake

I have used cmake-gui and build these two source files. Later i was able to choose a individual source file and modify its properties by providing path to the include and build folders. This let me execute the specific source file.

But i want to get it work with all the source files (various algorithms) without me modifying properties of individual files.

Can anyone help me point to right direction please. Thanks alot in advance!

A* implementation is too inefficient when the map is large

I was using your A* implementation. At line 208, you pass obsmap to verify_node function by value. This could be too inefficient with large maps, resulting in huge memory consumption and high run time. You may consider making obsmap a global variable or passing it by reference.

mpc中的solution为空

你好~
我编译通过了model_predictive_control.cpp文件通过了,两个依赖库也安装了,但是运行会显示数数组超界限,然后发现里面求解的
// solve the problem
CppAD::ipopt::solve<Dvector, FG_EVAL>(
options, vars, vars_lowerbound, vars_upperbound, constraints_lowerbound,
constraints_upperbound, fg_eval, solution);
这一步中的solution 求解出来的为空.
库应该时安装对的,你知道是哪里有问题吗?
谢谢~

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.