compatibility with Python 2.7
parent
9b73084e09
commit
b1c49f987e
2
map.py
2
map.py
|
@ -1,6 +1,6 @@
|
|||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from skimage.morphology import remove_small_holes
|
||||
# from skimage.morphology import remove_small_holes
|
||||
from PIL import Image
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import numpy as np
|
||||
import math
|
||||
from map import Map
|
||||
from bresenham import bresenham
|
||||
from skimage.draw import line
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.patches as plt_patches
|
||||
from scipy.signal import savgol_filter
|
||||
|
@ -297,8 +297,8 @@ class ReferencePath:
|
|||
# Get Bresenham paths to all possible cells
|
||||
paths = []
|
||||
for t_x, t_y in zip(tn_x, tn_y):
|
||||
path = list(bresenham(wp_x, wp_y, t_x, t_y))
|
||||
paths.append(path)
|
||||
x_list, y_list = line(wp_x, wp_y, t_x, t_y)
|
||||
paths.append(zip(x_list, y_list))
|
||||
|
||||
# Compute minimum distance to border cell
|
||||
min_width = max_width
|
||||
|
@ -340,7 +340,7 @@ class ReferencePath:
|
|||
lb_p = self.map.w2m(wp.border_cells[1][0], wp.border_cells[1][1])
|
||||
|
||||
# Compute path from left border cell to right border cell
|
||||
path = list(bresenham(ub_p[0], ub_p[1], lb_p[0], lb_p[1]))
|
||||
x_list, y_list = line(ub_p[0], ub_p[1], lb_p[0], lb_p[1])
|
||||
|
||||
# Initialize upper and lower bound of drivable area to
|
||||
# upper bound of path
|
||||
|
@ -351,7 +351,7 @@ class ReferencePath:
|
|||
ub_ls, lb_ls = ub_p, ub_p
|
||||
|
||||
# Iterate over path from left border to right border
|
||||
for x, y in path:
|
||||
for x, y in zip(x_list, y_list):
|
||||
# If cell is free, update lower bound
|
||||
if self.map.data[y, x] == 1:
|
||||
lb_o = (x, y)
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
import numpy as np
|
||||
from abc import ABC, abstractmethod
|
||||
from abc import abstractmethod
|
||||
try:
|
||||
from abc import ABC
|
||||
except:
|
||||
# for Python 2.7
|
||||
from abc import ABCMeta
|
||||
class ABC(object):
|
||||
__metaclass__ = ABCMeta
|
||||
pass
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.patches as plt_patches
|
||||
import math
|
||||
|
@ -26,14 +34,16 @@ class TemporalState:
|
|||
self.y = y
|
||||
self.psi = psi
|
||||
|
||||
self.members = ['x', 'y', 'psi']
|
||||
|
||||
def __iadd__(self, other):
|
||||
"""
|
||||
Overload Sum-Add operator.
|
||||
:param other: numpy array to be added to state vector
|
||||
"""
|
||||
|
||||
for state_id, state in enumerate(vars(self).values()):
|
||||
vars(self)[list(vars(self).keys())[state_id]] += other[state_id]
|
||||
for state_id in range(len(self.members)):
|
||||
vars(self)[self.members[state_id]] += other[state_id]
|
||||
return self
|
||||
|
||||
|
||||
|
@ -48,16 +58,21 @@ class SpatialState(ABC):
|
|||
|
||||
@abstractmethod
|
||||
def __init__(self):
|
||||
self.members = None
|
||||
pass
|
||||
|
||||
def __getitem__(self, item):
|
||||
return list(vars(self).values())[item]
|
||||
if isinstance(item, int):
|
||||
members = [self.members[item]]
|
||||
else:
|
||||
members = self.members[item]
|
||||
return [vars(self)[key] for key in members]
|
||||
|
||||
def __setitem__(self, key, value):
|
||||
vars(self)[list(vars(self).keys())[key]] = value
|
||||
vars(self)[self.members[key]] = value
|
||||
|
||||
def __len__(self):
|
||||
return len(vars(self))
|
||||
return len(self.members)
|
||||
|
||||
def __iadd__(self, other):
|
||||
"""
|
||||
|
@ -65,15 +80,15 @@ class SpatialState(ABC):
|
|||
:param other: numpy array to be added to state vector
|
||||
"""
|
||||
|
||||
for state_id, state in enumerate(vars(self).values()):
|
||||
vars(self)[list(vars(self).keys())[state_id]] += other[state_id]
|
||||
for state_id in range(len(self.members)):
|
||||
vars(self)[self.members[state_id]] += other[state_id]
|
||||
return self
|
||||
|
||||
def list_states(self):
|
||||
"""
|
||||
Return list of names of all states.
|
||||
"""
|
||||
return list(vars(self).keys())
|
||||
return self.members
|
||||
|
||||
|
||||
class SimpleSpatialState(SpatialState):
|
||||
|
@ -91,6 +106,8 @@ class SimpleSpatialState(SpatialState):
|
|||
self.e_psi = e_psi
|
||||
self.t = t
|
||||
|
||||
self.members = ['e_y', 'e_psi', 't']
|
||||
|
||||
|
||||
####################################
|
||||
# Spatial Bicycle Model Base Class #
|
||||
|
|
Loading…
Reference in New Issue