mirror of
https://github.com/Mobile-Robotics-W20-Team-9/polex.git
synced 2025-08-26 00:52:44 +00:00
Fix Errors & Parameterize File Paths
- Update gitignore to exclude vscode files - Parameterize hardcoded file paths - Comment out references to pgf image and latex dependency - Allow pickle in numpy.load - Add TODO comments for where settings need to be changed - Explicitly set visualization to False - Change pytorch device from cuda to cpu
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -1,3 +1,6 @@
|
|||||||
|
# Ignore vscode settings
|
||||||
|
.vscode
|
||||||
|
|
||||||
# Byte-compiled / optimized / DLL files
|
# Byte-compiled / optimized / DLL files
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.py[cod]
|
*.py[cod]
|
||||||
|
@@ -21,13 +21,17 @@ import particlefilter
|
|||||||
import poles
|
import poles
|
||||||
import pynclt
|
import pynclt
|
||||||
import util
|
import util
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
plt.rcParams['text.latex.preamble']=[r'\usepackage{lmodern}']
|
# plt.rcParams['text.latex.preamble']=[r'\usepackage{lmodern}']
|
||||||
params = {'text.usetex': True,
|
# params = {'text.usetex': True,
|
||||||
'font.size': 16,
|
# 'font.size': 16,
|
||||||
'font.family': 'lmodern',
|
# 'font.family': 'lmodern',
|
||||||
'text.latex.unicode': True}
|
# 'text.latex.unicode': True}
|
||||||
|
|
||||||
|
# TODO: UPDATE THIS!
|
||||||
|
localization_name_start = 'localization_3_6_7_2020-04'
|
||||||
|
|
||||||
mapextent = np.array([30.0, 30.0, 5.0])
|
mapextent = np.array([30.0, 30.0, 5.0])
|
||||||
mapsize = np.full(3, 0.2)
|
mapsize = np.full(3, 0.2)
|
||||||
@@ -151,7 +155,7 @@ def save_global_map():
|
|||||||
poleparams[ci, :-1], axis=0, weights=poleparams[ci, -1])])
|
poleparams[ci, :-1], axis=0, weights=poleparams[ci, -1])])
|
||||||
scores.append(np.mean(poleparams[ci, -1]))
|
scores.append(np.mean(poleparams[ci, -1]))
|
||||||
clustermeans = np.hstack([clustermeans, np.array(scores).reshape([-1, 1])])
|
clustermeans = np.hstack([clustermeans, np.array(scores).reshape([-1, 1])])
|
||||||
globalmapfile = os.path.join('nclt', get_globalmapname() + '.npz')
|
globalmapfile = os.path.join(pynclt.resultdir, get_globalmapname() + '.npz')
|
||||||
np.savez(globalmapfile,
|
np.savez(globalmapfile,
|
||||||
polemeans=clustermeans, mapfactors=mapfactors, mappos=globalmappos)
|
polemeans=clustermeans, mapfactors=mapfactors, mappos=globalmappos)
|
||||||
plot_global_map(globalmapfile)
|
plot_global_map(globalmapfile)
|
||||||
@@ -161,12 +165,12 @@ def plot_global_map(globalmapfile):
|
|||||||
data = np.load(globalmapfile)
|
data = np.load(globalmapfile)
|
||||||
x, y = data['polemeans'][:, :2].T
|
x, y = data['polemeans'][:, :2].T
|
||||||
plt.clf()
|
plt.clf()
|
||||||
plt.rcParams.update(params)
|
# plt.rcParams.update(params)
|
||||||
plt.scatter(x, y, s=1, c='b', marker='.')
|
plt.scatter(x, y, s=1, c='b', marker='.')
|
||||||
plt.xlabel('x [m]')
|
plt.xlabel('x [m]')
|
||||||
plt.ylabel('y [m]')
|
plt.ylabel('y [m]')
|
||||||
plt.savefig(globalmapfile[:-4] + '.svg')
|
plt.savefig(globalmapfile[:-4] + '.svg')
|
||||||
plt.savefig(globalmapfile[:-4] + '.pgf')
|
# plt.savefig(globalmapfile[:-4] + '.pgf')
|
||||||
print(data['mapfactors'])
|
print(data['mapfactors'])
|
||||||
|
|
||||||
|
|
||||||
@@ -222,7 +226,7 @@ def save_local_maps(sessionname, visualize=False):
|
|||||||
|
|
||||||
|
|
||||||
def view_local_maps(sessionname):
|
def view_local_maps(sessionname):
|
||||||
sessiondir = os.path.join('nclt', sessionname)
|
sessiondir = os.path.join(pynclt.resultdir, sessionname)
|
||||||
session = pynclt.session(sessionname)
|
session = pynclt.session(sessionname)
|
||||||
maps = np.load(os.path.join(sessiondir, get_localmapfile()))['maps']
|
maps = np.load(os.path.join(sessiondir, get_localmapfile()))['maps']
|
||||||
for i, map in enumerate(maps):
|
for i, map in enumerate(maps):
|
||||||
@@ -254,14 +258,14 @@ def view_local_maps(sessionname):
|
|||||||
|
|
||||||
|
|
||||||
def evaluate_matches():
|
def evaluate_matches():
|
||||||
mapdata = np.load(os.path.join('nclt', get_globalmapname() + '.npz'))
|
mapdata = np.load(os.path.join(pynclt.resultdir, get_globalmapname() + '.npz'))
|
||||||
polemap = mapdata['polemeans'][:, :2]
|
polemap = mapdata['polemeans'][:, :2]
|
||||||
kdtree = scipy.spatial.cKDTree(polemap[:, :2], leafsize=10)
|
kdtree = scipy.spatial.cKDTree(polemap[:, :2], leafsize=10)
|
||||||
maxdist = 0.5
|
maxdist = 0.5
|
||||||
n_matches = np.zeros(len(pynclt.sessions))
|
n_matches = np.zeros(len(pynclt.sessions))
|
||||||
n_all = np.zeros(len(pynclt.sessions))
|
n_all = np.zeros(len(pynclt.sessions))
|
||||||
for i, sessionname in enumerate(pynclt.sessions):
|
for i, sessionname in enumerate(pynclt.sessions):
|
||||||
sessiondir = os.path.join('nclt', sessionname)
|
sessiondir = os.path.join(pynclt.resultdir, sessionname)
|
||||||
session = pynclt.session(sessionname)
|
session = pynclt.session(sessionname)
|
||||||
maps = np.load(os.path.join(sessiondir, get_localmapfile()))['maps']
|
maps = np.load(os.path.join(sessiondir, get_localmapfile()))['maps']
|
||||||
for map in maps:
|
for map in maps:
|
||||||
@@ -285,11 +289,11 @@ def evaluate_matches():
|
|||||||
|
|
||||||
def localize(sessionname, visualize=False):
|
def localize(sessionname, visualize=False):
|
||||||
print(sessionname)
|
print(sessionname)
|
||||||
mapdata = np.load(os.path.join('nclt', get_globalmapname() + '.npz'))
|
mapdata = np.load(os.path.join(pynclt.resultdir, get_globalmapname() + '.npz'))
|
||||||
polemap = mapdata['polemeans'][:, :2]
|
polemap = mapdata['polemeans'][:, :2]
|
||||||
polevar = 1.50
|
polevar = 1.50
|
||||||
session = pynclt.session(sessionname)
|
session = pynclt.session(sessionname)
|
||||||
locdata = np.load(os.path.join(session.dir, get_localmapfile()))['maps']
|
locdata = np.load(os.path.join(session.dir, get_localmapfile()), allow_pickle=True)['maps']
|
||||||
polepos_m = []
|
polepos_m = []
|
||||||
polepos_w = []
|
polepos_w = []
|
||||||
for i in range(len(locdata)):
|
for i in range(len(locdata)):
|
||||||
@@ -419,18 +423,18 @@ def plot_trajectories():
|
|||||||
trajectorydir = os.path.join(
|
trajectorydir = os.path.join(
|
||||||
pynclt.resultdir, 'trajectories_est_{:.0f}_{:.0f}_{:.0f}'.format(
|
pynclt.resultdir, 'trajectories_est_{:.0f}_{:.0f}_{:.0f}'.format(
|
||||||
n_mapdetections, 10 * poles.minscore, poles.polesides[-1]))
|
n_mapdetections, 10 * poles.minscore, poles.polesides[-1]))
|
||||||
pgfdir = os.path.join(trajectorydir, 'pgf')
|
# pgfdir = os.path.join(trajectorydir, 'pgf')
|
||||||
util.makedirs(trajectorydir)
|
util.makedirs(trajectorydir)
|
||||||
util.makedirs(pgfdir)
|
# util.makedirs(pgfdir)
|
||||||
mapdata = np.load(os.path.join('nclt', get_globalmapname() + '.npz'))
|
mapdata = np.load(os.path.join(pynclt.resultdir, get_globalmapname() + '.npz'))
|
||||||
polemap = mapdata['polemeans']
|
polemap = mapdata['polemeans']
|
||||||
plt.rcParams.update(params)
|
# plt.rcParams.update(params)
|
||||||
for sessionname in pynclt.sessions:
|
for sessionname in pynclt.sessions:
|
||||||
try:
|
try:
|
||||||
session = pynclt.session(sessionname)
|
session = pynclt.session(sessionname)
|
||||||
files = [file for file \
|
files = [file for file \
|
||||||
in os.listdir(os.path.join(pynclt.resultdir, sessionname)) \
|
in os.listdir(os.path.join(pynclt.resultdir, sessionname)) \
|
||||||
if file.startswith('localization_3_6_7_2019-07')]
|
if file.startswith(localization_name_start)]
|
||||||
# if file.startswith(get_locfileprefix())]
|
# if file.startswith(get_locfileprefix())]
|
||||||
for file in files:
|
for file in files:
|
||||||
T_w_r_est = np.load(os.path.join(
|
T_w_r_est = np.load(os.path.join(
|
||||||
@@ -447,7 +451,7 @@ def plot_trajectories():
|
|||||||
bottom=0.13, top=0.98, left=0.145, right=0.98)
|
bottom=0.13, top=0.98, left=0.145, right=0.98)
|
||||||
filename = sessionname + file[18:-4]
|
filename = sessionname + file[18:-4]
|
||||||
plt.savefig(os.path.join(trajectorydir, filename + '.svg'))
|
plt.savefig(os.path.join(trajectorydir, filename + '.svg'))
|
||||||
plt.savefig(os.path.join(pgfdir, filename + '.pgf'))
|
# plt.savefig(os.path.join(pgfdir, filename + '.pgf'))
|
||||||
except:
|
except:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -457,7 +461,7 @@ def evaluate():
|
|||||||
for sessionname in pynclt.sessions:
|
for sessionname in pynclt.sessions:
|
||||||
files = [file for file \
|
files = [file for file \
|
||||||
in os.listdir(os.path.join(pynclt.resultdir, sessionname)) \
|
in os.listdir(os.path.join(pynclt.resultdir, sessionname)) \
|
||||||
if file.startswith('localization_3_6_7_2019-07')]
|
if file.startswith(localization_name_start)]
|
||||||
# if file.startswith(get_locfileprefix())]
|
# if file.startswith(get_locfileprefix())]
|
||||||
files.sort()
|
files.sort()
|
||||||
session = pynclt.session(sessionname)
|
session = pynclt.session(sessionname)
|
||||||
@@ -497,7 +501,7 @@ def evaluate():
|
|||||||
'angerror': angerror, 'angrmse': angrmse, 'T_gt_est': T_gt_est})
|
'angerror': angerror, 'angrmse': angrmse, 'T_gt_est': T_gt_est})
|
||||||
np.savez(os.path.join(pynclt.resultdir, get_evalfile()), stats=stats)
|
np.savez(os.path.join(pynclt.resultdir, get_evalfile()), stats=stats)
|
||||||
|
|
||||||
mapdata = np.load(os.path.join('nclt', get_globalmapname() + '.npz'))
|
mapdata = np.load(os.path.join(pynclt.resultdir, get_globalmapname() + '.npz'))
|
||||||
print('session \t f\te_pos \trmse_pos \te_ang \te_rmse')
|
print('session \t f\te_pos \trmse_pos \te_ang \te_rmse')
|
||||||
row = '{session} \t{f} \t{poserror} \t{posrmse} \t{angerror} \t{angrmse}'
|
row = '{session} \t{f} \t{poserror} \t{posrmse} \t{angerror} \t{angrmse}'
|
||||||
for i, stat in enumerate(stats):
|
for i, stat in enumerate(stats):
|
||||||
@@ -514,8 +518,11 @@ if __name__ == '__main__':
|
|||||||
poles.minscore = 0.6
|
poles.minscore = 0.6
|
||||||
poles.polesides = range(1, 7+1)
|
poles.polesides = range(1, 7+1)
|
||||||
save_global_map()
|
save_global_map()
|
||||||
session = '2012-01-08'
|
# TODO: Change this to the session you want to find trajectory for
|
||||||
|
session = '2012-01-15'
|
||||||
save_local_maps(session)
|
save_local_maps(session)
|
||||||
localize(session)
|
# Set visualization to False
|
||||||
|
localize(session, False)
|
||||||
plot_trajectories()
|
plot_trajectories()
|
||||||
evaluate()
|
evaluate()
|
||||||
|
|
@@ -7,7 +7,7 @@ import skimage.measure
|
|||||||
import torch
|
import torch
|
||||||
|
|
||||||
|
|
||||||
device = torch.device('cuda')
|
device = torch.device('cpu')
|
||||||
polesides = range(1, 5+1)
|
polesides = range(1, 5+1)
|
||||||
minscore = 0.6
|
minscore = 0.6
|
||||||
minheight = 1.0
|
minheight = 1.0
|
||||||
|
@@ -19,39 +19,42 @@ T_w_o[:3, :3] = [[0, 1, 0], [1, 0, 0], [0, 0, -1]]
|
|||||||
T_o_w = util.invert_ht(T_w_o)
|
T_o_w = util.invert_ht(T_w_o)
|
||||||
eulerdef = 'sxyz'
|
eulerdef = 'sxyz'
|
||||||
|
|
||||||
|
# TODO: Modify these for your workspace
|
||||||
csvdelimiter = ','
|
csvdelimiter = ','
|
||||||
datadir = '/mnt/c/Users/SabrinaB/Desktop/nclt'
|
datadir = '/app/dataset/data/'
|
||||||
resultdir = 'nclt'
|
resultdir = '/app/dataset/nclt'
|
||||||
snapshotfile = 'snapshot.npz'
|
snapshotfile = 'snapshot.npz'
|
||||||
sessionfile = 'sessiondata.npz'
|
sessionfile = 'sessiondata.npz'
|
||||||
|
# TODO: Comment out the sessions you are not using
|
||||||
sessions = [
|
sessions = [
|
||||||
#'2012-01-08',
|
'2012-01-08',
|
||||||
'2012-01-15',
|
'2012-01-15',
|
||||||
#'2012-01-22',
|
'2012-01-22',
|
||||||
#'2012-02-02',
|
'2012-02-02',
|
||||||
#'2012-02-04',
|
'2012-02-04',
|
||||||
#'2012-02-05',
|
'2012-02-05',
|
||||||
#'2012-02-12',
|
'2012-02-12',
|
||||||
#'2012-02-18',
|
'2012-02-18',
|
||||||
#'2012-02-19',
|
'2012-02-19',
|
||||||
#'2012-03-17',
|
'2012-03-17',
|
||||||
#'2012-03-25',
|
'2012-03-25',
|
||||||
#'2012-03-31',
|
'2012-03-31',
|
||||||
#'2012-04-29',
|
'2012-04-29',
|
||||||
#'2012-05-11',
|
'2012-05-11',
|
||||||
#'2012-05-26',
|
'2012-05-26',
|
||||||
#'2012-06-15',
|
'2012-06-15',
|
||||||
#'2012-08-04',
|
'2012-08-04',
|
||||||
#'2012-08-20',
|
'2012-08-20',
|
||||||
#'2012-09-28',
|
'2012-09-28',
|
||||||
#'2012-10-28',
|
'2012-10-28',
|
||||||
#'2012-11-04',
|
'2012-11-04',
|
||||||
#'2012-11-16',
|
'2012-11-16',
|
||||||
#'2012-11-17',
|
'2012-11-17',
|
||||||
#'2012-12-01',
|
'2012-12-01',
|
||||||
#'2013-01-10',
|
'2013-01-10',
|
||||||
#'2013-02-23',
|
'2013-02-23',
|
||||||
'2013-04-05']
|
'2013-04-05'
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
lat0 = np.radians(42.293227)
|
lat0 = np.radians(42.293227)
|
||||||
|
Reference in New Issue
Block a user