Skip to content
This repository has been archived by the owner on Apr 13, 2024. It is now read-only.

Motion planning and Navigation of AGV/AMR:ROS planner plugin implementation of A*, JPS, D*, LPA*, D* Lite, Theta*, RRT, RRT*, RRT-Connect, Informed RRT*, ACO, PSO, Voronoi, PID, LQR, MPC, DWA, APF, Pure Pursuit etc.

License

Notifications You must be signed in to change notification settings

FaZeTitans/projet-robotique

 
 

Repository files navigation

ubuntu ROS

ROS Motion Planning

Robot Motion planning is a computational problem that involves finding a sequence of valid configurations to move the robot from the source to the destination. Generally, it includes Path Searching and Trajectory Optimization.

  • Path Searching: Based on path constraints, such as obstacles, to find the optimal sequence for the robot to travel from the source to the destination without any collisions.

  • Trajectory Planning: Based on kinematics, dynamics and obstacles, it optimizes the trajectory of the motion state from the source to the destination according to the path.

This repository provides the implementation of common Motion Planning algorithms. The theory analysis can be found at motion-planning. Furthermore, we provide Python and MATLAB version.

This fork add a custom world and launch file for the 302's 3IL room

302_gazebo.png 302_rviz.png

Contents

0. Quick Start within 3 Minutes

Tested on ubuntu 20.04 LTS with ROS Noetic.

  1. Install ROS (Desktop-Full suggested).

  2. Install git.

    sudo apt install git
  3. Install dependence

    • OSQP
    git clone -b release-0.6.3 --recursive https://github.com/oxfordcontrol/osqp
    cd osqp && mkdir build && cd build
    cmake .. -DBUILD_SHARED_LIBS=ON
    make -j6
    sudo make install
    sudo cp /usr/local/include/osqp/* /usr/local/include
    • OSQP-Eigen
    git clone https://github.com/robotology/osqp-eigen.git
    cd osqp-eigen && mkdir build && cd build
    cmake ..
    make
    sudo make install
    • Other dependence.
    sudo apt install python-is-python3 \
    ros-noetic-amcl \
    ros-noetic-base-local-planner \
    ros-noetic-map-server \
    ros-noetic-move-base \
    ros-noetic-navfn
  4. Clone the reposity.

    git clone https://github.com/FaZeTitans/projet-robotique/
  5. Compile the code.

    NOTE: Please refer to #48 if you meet libignition dependency error.

    cd ros_motion_planning/
    catkin_make
    # or catkin build
    # you may need to install it by: sudo apt install python-catkin-tools
  6. Import the world in your workspace (/workspace/turtlebot3_envs/world)

  7. Import the launch file in your workspace (/workspace/turtlebot3_envs/launch)

  8. Create map with SLAM

    export TURTLEBOT3_MODEL=burger 
    roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
    
    export TURTLEBOT3_MODEL=burger
    roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
    
    rviz

    Now you need to explore the map with the terminal teleop

  9. Save the map

    rosrun map_server map_saver -f ˜/map
  10. Launch the world

    export TURTLEBOT3_MODEL=burger 
    roslaunch turtlebot3_gazebo turtlebot3_world.launch 
  11. Execute the code.

    cd scripts/
    ./main.sh

    NOTE: Modifying launch files may not have any effect, because they are regenerated by a Python script based on src/user_config/user_config.yaml when you run main.sh. Therefore, you should modify configurations in user_config.yaml instead of launch files.

  12. Use 2D Nav Goal in RViz to select the goal.

  13. Moving!

  14. You can use the other script to shutdown them rapidly. bash ./killpro.sh

1. Document

The overall file structure is shown below.

ros_motion_planner
├── assets
├── launch                  # launch file for the custom world (302)
├── scripts
├── worlds                  # worlds to import (302)
└── src
    ├── core
    │   ├── global_planner
    │   ├── local_planner
    │   ├── curve_generation
    │   └── utils
    ├── sim_env             # simulation environment
    │   ├── config
    │   ├── launch
    │   ├── maps
    │   ├── meshes
    │   ├── models
    │   ├── rviz
    │   ├── urdf
    │   └── worlds
    ├── third_party
    │   ├── dynamic_rviz_config
    │   ├── dynamic_xml_config
    │   ├── gazebo_plugins
    │   └── rviz_plugins
    └── user_config         # user configure file

2. Version

Global Planner

Planner Version Animation Result
Dijkstra Status dijkstra_ros.gif dijkstra_result.png
A* Status a_star_ros.gif astar_result.png
RRT Status rrt_ros.gif rrt_result.png

3. License

The source code is released under GPLv3 license.

About

Motion planning and Navigation of AGV/AMR:ROS planner plugin implementation of A*, JPS, D*, LPA*, D* Lite, Theta*, RRT, RRT*, RRT-Connect, Informed RRT*, ACO, PSO, Voronoi, PID, LQR, MPC, DWA, APF, Pure Pursuit etc.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.5%
  • CMake 1.5%
  • Other 1.0%