====== Lab10 - Data Collection Planning ((D)TSPN) ======
^ Motivations and Goals ^
| Become familiar with approaches for for TSPN and (D)TSP |
| Be able to implement Noon-Bean transformation |
^ Tasks ([[courses:b4m36uir:internal:instructions:lab10|teacher]]) ^
| Familiarize with the provided codes and implement any version of a decoupled approach. |
^ Resources ^
| {{:courses:b4m36uir:labs:lab10-tspn.zip|Lab10-Maze}} TSPN in an environment with obstacles |
| {{:courses:b4m36uir:labs:lab10-dtsp-v2.zip|Lab10-Dubins}} Dubins TSP |
===== Neighborhoods in maze scenario =====
- **Decoupled approach**
- First, find the goal sequence by the ETSP. Then, find the final trajectory.
- First, find the goal sequence by the TSP utilizing the found shortest paths between centres of the given regions. Then, find the final trajectory.
- **Sampling-based approach**
- Create samples in the goal neighborhoods and all shortest paths. Then, transform the problem to the ATSP by the Noon-Bean transformation
{{:courses:b4m36uir:labs:noon_bean2.png?300|}}
=== Noon-Bean transformation ===
{{:courses:b4m36uir:labs:noon-bean.png?500|}}
===== Data Collection Planning with Curvature-Constrained Vehicles =====
[[https://github.com/AndrewWalker/pydubins]]
[[https://packaging.python.org/tutorials/installing-packages/| Here,]] you can find how to install a specific package into python.
Installation on school computers (without root):
# download script for pip installation
wget https://bootstrap.pypa.io/get-pip.py
# install pip into your home directory
python2 get-pip.py --user
rm get-pip.py
# set PATH in system
echo "PATH=\$PATH:~/.local/bin" >> ~/.bashrc
# use modified .bashrc file
source ~/.bashrc
# install dubins library into your home directory
pip install dubins --user
Installation on your own computers (using root):
# install pip for installing Python packages
sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv
# install the dubins library
sudo pip install dubins
The following methods are available. For more information, see [[https://github.com/AndrewWalker/pydubins/blob/master/dubins/dubins.pyx]]
LSL = 0
LSR = 1
RSL = 2
RSR = 3
RLR = 4
LRL = 5
def path_type(q0, q1, rho):
'''Identify which type of path is produced between configurations ... '''
def path_length(q0, q1, rho):
'''Return the total length of a Dubins path ... '''
def path_sample(q0, q1, rho, step_size):
'''Sample a Dubins' path at a fixed step interval .... '''