Moribots Motion Planning Save

Motion Planning Library to accompany turtlebot3_from_scratch repository. Deployed PRM, Grid Map, A*, Theta*, LPA*, D* Lite*, Potential Field, and MPPI.

Project README

Motion Planning Library with ROS

Self-directed independent study.

Installation Guide:

  • Make a ROS Workspace: mkdir -p ws/src
  • Go to src and clone my repo: cd ws/src/ git clone [email protected]:moribots/motion_planning.git
  • Go back to the workspace root: cd ..
  • Initialize nuturtle.rosinstall to get my rigid2d library and other utilities: wstool init src src/motion_planning/nuturtle.rosinstall
  • Build the workspace: catkin_make and source: source devel/setup.bash

OSQP and OSQP-Eigen installation

OSQP OSQP-Eigen (C++ wrapper) - Do the manual install.

Notes for OSQP-Eigen:

  • Choose /usr/local in cmake -DCMAKE_INSTALL_PREFIX:PATH=<custom-folder> ../
  • Do sudo ln -s /usr/include/eigen3/Eigen /usr/local/include/Eigen to make a symbolic link for the Eigen header files so that OSQP-Eigen knows where to find them.

In this Repo:

  • The map package: roslaunch map viz_map.launch

    • Probabilistic Roadmap:
    PRM
    • Tunable-resolution Grid Map
    GRID
  • The global_planner package:

    • A* (green) on PRM:
    ASTAR
    • Theta* (green) on PRM (A* in red for comparison): roslaunch global_planner astar.launch
    ASTAR
    • A* (green) on Grid
    ASTARG
    • LPA* with Simulated Grid Updates [re-evaluated cells in orange]: roslaunch global_planner incremental.launch lpa:=True LPASTAR

    • D* Lite on Grid [re-evaluated cells in orange]: roslaunch global_planner incremental.launch DSL

    • Naive Potential Field (Local Minimum Escape TBD): roslaunch global_planner potential_field.launch PFN

  • Trajectory Optimization:

    • Model Predictive Path Integral Control on a parallel parking task: roslaunch control mppi_pentagon.launch parallel:=True PFN

    • The associated states and controls for the above demo: PFN

    NOTE: To launch waypoint following method, simply don't include the parallel argument.

    In a separate terminal, do:

    rosservice call /set_pose "x: 0.0 y: 0.0 theta: 0.0"

    To start the node.

Open Source Agenda is not affiliated with "Moribots Motion Planning" Project. README Source: moribots/motion_planning

Open Source Agenda Badge

Open Source Agenda Rating