/Planning-and-Control-for-Nonholonomic-Robot-Among-Obstacles

Modified RRT*-based trajectory planning algorithm with customized heuristic function and feedback linearization controller

Primary LanguageMATLAB

Planning and Control for Nonholonomic Car-like Robot Among Onstacles

Contributers: Zhuokai Zhao, Mengdi Xu, Changxin Yan [Github]

The project proposes a modified RRT*-based trajectory planning algorithm with customized heuristic function. A feedback linearization controller is proposed to ensure EduMIP’s accurate trajectory tracking. Experiments have been performed in both MATLAB and ROS Gazebo simulation environment.

Matlab

Contains all the matlab codes for planning and simualtion in Matlab.

C_RRTStar_Final.m

Reads an image type map (Images/Simple_Map.png), does the planning on this map and outputs a trajectory mat file in the following format:

[time; desired_x; desired_y; desired_velocity_x; desired_velocity_y; desired_acceleration_x; desired_acceleration; desired_theta;]

trajectory_tracking_with_video.m and trajectory_tracking_without_video.m

Simulates the trajectory tracking. Both files read the trajectory mat file (Matlab/final_trajectory.m) generated previously by C_RRTStar_Final.m. The trajectory_tracking_with_video.m outputs a annimation of the whole tracking process and takes more time to run. The trajectory_tracking_without_video.m outputs basic inputs and tracking path result.

ROS Gazebo Simulation

This package reads the predesighed trajectory in a .txt file and simulates the trajectory tracking.

On Debian/Ubuntu, first you need to set_up_Gazebo_environment

To launch the simulation, run

$ roslaunch robot gazebo_launch.launch

To start the simulation, run

$ roslaunch robot trajectory_tracking.launch

To visulize the odometry path of the robot in RVIZ

$roslaunch robot rviz_launch.launch

Report

PDF version of the report which includes all the details about the algorithm and code.

Demo

The Gazebo simulation video can be found at link

The planning result from MATLAB with the given map (Images/Simple_Map.png) should look like

Planning trajectory

Planning trajectory with quiver