Skip to content

Instantly share code, notes, and snippets.

State lattice-based planning

tl;dr

The kinodynamics constraints of the robot are encoded in the state lattice graph and any path in this graph is feasible. After constructing the graph, any graph search algorithm can be used for planning.

Algorithm

A robot's configuration space is usually discretized to reduce computational complexity of planning at the expense of completeness. However, it is difficult to search this space while satisfying the robot's differential constraints. State lattices are a special way of discretization of robot state space that ensures (by construction) that any path in the graph complies with the robot's constraints, thereby eliminating the need to consider them explicitly during planning.

@tejus-gupta
tejus-gupta / summary.md
Last active December 12, 2019 15:51
Google Summer of Code - 2017

Project Abstract

I proposed to

  1. Add a package for image segmentation as part of JuliaImages with several algorithms -
  • Thresholding - Otsu’s method and Adaptive thresholding
  • K-means clustering
  • Mean shift segmentation
  • Watershed segmentation
  • Felzenszwalb's efficient region merging algorithm
  • Shi and Malik’s normalized graph-cut based segmentation
if message_type == 'user_read':
key,_ = data.split('|')
highest_version = -1
highest_version_value = ''
#nodes = random.sample([(hash(key)+i)%N for i in range(R)], Q_r)
#nodes = random.sample(get_next_live_inc(hash(key), R), Q_r)
nodes = get_next_live_inc(hash(key), R)
@tejus-gupta
tejus-gupta / example.launch
Created March 29, 2019 10:40
Planner Files
<launch>
<!--
NOTE: You'll need to bring up something that publishes sensor data (see
rosstage), something that publishes a map (see map_server), and something to
visualize a costmap (see nav_view), to see things work.
Also, on a real robot, you'd want to set the "use_sim_time" parameter to false, or just not set it.
-->
<param name="/use_sim_time" value="true"/>
to_remove = []
for class_idx in selected_classes:
if np.sum(y_train[:, class_idx] < 0.5) < 5 or np.sum(y_train[:, class_idx] > 0.5) < 5:
to_remove.append(class_idx)
for class_idx in to_remove:
selected_classes.remove(class_idx)
print('Removed classes with too few examples')
import os
import sys
import yaml
import time
import shutil
import torch
import random
import argparse
import datetime
import numpy as np
import os
import sys
import yaml
import time
import shutil
import torch
import random
import argparse
import datetime
import numpy as np
@tejus-gupta
tejus-gupta / setup.sh
Last active October 10, 2018 17:37
Download dataset and training code for tensorpad
mkdir train_set
cd train_set
wget https://gist.githubusercontent.com/tejus-gupta/3d4564e624cad79691706a5c1303f4c6/raw/3cafe4877f981e3f3c481727d0a90db519a4e95b/download.py
python download.py
unzip -qq masks.zip
unzip -qq train_data.zip
cd ..
git clone https://github.com/tejus-gupta/Segmentation
cd Segmentation
git checkout modelD