This repository presents a project on heuristic search on the topic of motion planning of the manipulator with different degrees of freedom in 3d.
This task could be formally defined as follows: it is required to find sequence of manipulator states that
init state is
While solving the problem, we decided to make the following assumptions:
- each joint is defined by angle - the angle between the arms connected at this joint
- there is an additional degree of freedom that rotates the entire structure parallel to the ground. It is also defined by angle.
- all manipulators arms are in the same plane that is perpendicular to the ground
To solve problem we applied following algorithms:
-
$A^*$ [1], baseline algorithm -
$RRT$ [2] - K-PIECE [3]
We used a bunch of non-standard python libraries, so to install libraries, please, run following command:
pip install -r requirements.txt
The main research is presented in the notebook manipulator-milestone2
python notebook.
gif makes cuts the quality a lot, so it is preferable to check example in html format or in .mov in examples directory
Work examples are in examples directory.
All visualisations are in HTML format for interactivity;
the easiest way to view them is to open project in VsCode and Open with Live Server
HTML file.
In visualisation notebook there is descriptions how visualisation and test generator work with examples.
-
Main research - main notebook
-
Visualisation tutorial - notebook with visualisation example
-
Manipulator - class that represents manipulator model:
joint_num
: number of joints of manipulatorangle_delta
: difference of joint angles in one stepjoint_angles
: angles of joints of manipulatorarm_len
: arms length of manipulator
-
Obstacle - interface that represents obstacle. The only function that needs to be implemented for this interface is the functions that check intersection with given manipulator.
-
Map - describes map
-
obstacles
- list of obstacles on the map -
finish
- goal point -
finish_size
- acceptable error ($\varepsilon$ from Description)
-
-
Node - describes node in heuristic search
-
astar -
$A^*$ algorithm -
rrt -
$RRT$ algorithm -
k-piece - K-PIECE algorithm
-
animate - tool for manipulator motion animation
-
generate_test - tool for test generation
A*
and RRT
becomes too slow on fairly small tests. KPIECE
is significantly faster and we can do the following observations for it:
- with a fixed number of obstacles, as number of joints increases, the running time grows exponentially
- with a fixed number of joints, as number of obstacles increases, the running time grows linearly
- [1] Peter E. Hart, Bertram Raphael: A Formal Basis for the Heuristic Determination of Minimum Cost Paths Paper
- [2] LaValle, Steven M., Rapidly-exploring random trees: A new tool for path planning. Technical Report. Computer Science Department, Iowa State University Paper
- [3] Ioan A. S¸ucan1 and Lydia E. Kavraki: Kinodynamic Motion Planning by Interior-Exterior Cell Exploration Paper
- [4] Caelan Reed Garrett: Heuristic Search for Manipulation Planning
Yakovlev Konstantin Sergeevich
- Ivan Volkov
- Sergey Khargelia
- Daniil Pavlenko