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
![]() |
![]() |
---|
Tested on ubuntu 20.04 LTS with ROS Noetic.
-
Install ROS (Desktop-Full suggested).
-
Install git.
sudo apt install git
-
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
-
Clone the reposity.
git clone https://github.com/FaZeTitans/projet-robotique/
-
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
-
Import the world in your workspace
(/workspace/turtlebot3_envs/world)
-
Import the launch file in your workspace
(/workspace/turtlebot3_envs/launch)
-
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
-
Save the map
rosrun map_server map_saver -f ˜/map
-
Launch the world
export TURTLEBOT3_MODEL=burger roslaunch turtlebot3_gazebo turtlebot3_world.launch
-
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 runmain.sh
. Therefore, you should modify configurations inuser_config.yaml
instead of launch files. -
Use 2D Nav Goal in RViz to select the goal.
-
Moving!
-
You can use the other script to shutdown them rapidly.
bash ./killpro.sh
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
Planner | Version | Animation | Result |
---|---|---|---|
Dijkstra | ![]() |
![]() |
|
A* | ![]() |
![]() |
|
RRT | ![]() |
![]() |
The source code is released under GPLv3 license.