Permalink
Browse files

show tracks for ra and fixed some bugs

  • Loading branch information...
1 parent b4b5874 commit 0cfaa624db73c46c69a169c9f6dce8068967a125 @bahniks committed Apr 28, 2014
View
@@ -17,7 +17,7 @@
along with Carousel Maze Manager. If not, see <http://www.gnu.org/licenses/>.
"""
-from math import degrees, atan2, sin, cos, pi, radians, sqrt
+from math import degrees, atan2, sin, cos, pi, radians, sqrt, ceil
from collections import deque, OrderedDict
import os
@@ -505,7 +505,7 @@ def getAngleBoxes(self, time = 20, startTime = 0, width = "default", results = "
else:
sectorCenterAngle = center
- angles = [0] * int(360 / width)
+ angles = [0] * ceil(360 / width)
for content in self.data[start:]:
if content[1] <= time:
angle = (degrees(self._angle(*content[indices])) - sectorCenterAngle +
View
@@ -453,7 +453,8 @@ def CM_loaded(self, cm, initTime = 0, minTime = 0, maxTime = "max"):
self.compute(cm)
y = self.height * (1 - self.radius/self.maxY)
- self.create_line((0, y, self.width, y), fill = "grey")
+ color = "grey" if m.mode == "MWM" else "red"
+ self.create_line((0, y, self.width, y), fill = color)
self.drawGraph(maxY = self.maxY, valueList = self.points)
View
@@ -363,7 +363,10 @@ def __init__(self, root, name, options):
self.opts.append({})
var = BooleanVar if option[1][2] == 'bool' else StringVar
self.opts[row]["variable"] = var()
- self.opts[row]["variable"].set(optionGet(*option[1]))
+ current = optionGet(*option[1])
+ if type(current) == str:
+ current = "'" + current + "'"
+ self.opts[row]["variable"].set(current)
self.opts[row]["label"] = ttk.Label(self, text = option[0])
self.opts[row]["label"].grid(column = 0, row = row, pady = 2, sticky = E)
if option[1][2] == 'bool':
@@ -240,8 +240,12 @@ def __init__(self):
self["Robot filename"] = Par("getRoomName", "info", {})
+ self["Mean distance from robot"] = Par("getDistanceFromRobot", "basic", {})
-
+ self["Time in distances"] = Par("getDistanceBoxes", "advanced", {
+ "width": (Opt('WidthParTimeInDistances', 10, ['int', 'float']),
+ "Width of brackets [in cm]")
+ })
@@ -72,8 +72,7 @@ def __init__(self, root):
# labels
self.statusBar = ttk.Label(self, textvariable = self.status)
self.modeLab = ttk.Label(self, text = m.fullname[m.mode], font = ("Helvetica", "16"))
-
-
+
# adding to grid
self.parametersF.grid(column = 0, row = 3, columnspan = 4, sticky = (N, W), padx = 4)
self.fileStorageFrame.grid(column = 3, row = 0, pady = 5, padx = 4)
@@ -93,7 +92,6 @@ def __init__(self, root):
self.optionFrame.grid(column = 0, row = 5, sticky = (N, E), padx = 6)
-
# what should be enlarged
self.columnconfigure(2, weight = 1)
self.rowconfigure(2, weight = 3)
View
@@ -17,8 +17,8 @@
along with Carousel Maze Manager. If not, see <http://www.gnu.org/licenses/>.
"""
-from collections import OrderedDict
-from math import sqrt
+from collections import OrderedDict, Counter
+from math import sqrt, ceil
import os
@@ -166,9 +166,52 @@ def getSpeedAfterShock(self, time = 20, startTime = 0, after = 25):
speeds.append(self._computeSpeed(self.data[shock], self.data[shock + after]))
return format(median(speeds), "0.2f")
+
def getAngleBoxes(self, *args, indices = slice(7,9), **kwargs):
return super().getAngleBoxes(*args, indices = indices, **kwargs)
+ def getDistanceFromRobot(self, time = 20, startTime = 0, distances = False):
+ time = time * 60000
+ start = self.findStart(startTime)
+
+ distances = [sqrt((line[2] - line[7])**2 + (line[3] - line[8])**2) for line
+ in self.data[start:] if line[1] < time]
+
+ if not distances:
+ result = (sum(distances) / len(distances)) / self.trackerResolution
+ return format(result, "0.2f")
+ else:
+ return distances
+
+
+ def getDistanceBoxes(self, time = 20, startTime = 0, width = 10):
+ distances = self.getDistanceFromRobot(time = time, startTime = startTime)
+ maximum = self.arenaDiameter * 100
+ counter = Counter([(dist / self.trackerResolution) // width for dist in distances])
+ boxes = [0] * ceil(maximum / width)
+ for key, value in counter.items():
+ boxes[int(key)] = value
+ length = len(distances)
+ result = ("|".join(map(lambda x: format(x / length, "0.3f"), boxes)))
+
+ return result
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -405,24 +405,24 @@ def __init__(self, root, files, controlled = False):
# frame radiobuttons
self.frameVar = StringVar()
- if m.mode == "CM":
+ if m.files == "pair":
self.frameVar.set("arena")
else:
self.frameVar.set("room")
- if m.mode == "CM":
+ if m.files == "pair":
self.frameFrame = ttk.Labelframe(self.bottomFrame, text = "Frame")
self.frameFrame.grid(column = 2, row = 0, padx = 5, rowspan = 2, pady = 3, sticky = N)
- self.arenaFrameRB = ttk.Radiobutton(self.frameFrame, text = "Arena",
+ self.arenaFrameRB = ttk.Radiobutton(self.frameFrame, text = m.pairing[m.mode][0],
variable = self.frameVar, value = "arena",
command = self.toggleFrame)
- self.arenaFrameRB.grid(column = 0, row = 0, pady = 2)
+ self.arenaFrameRB.grid(column = 0, row = 0, pady = 2, sticky = W)
- self.roomFrameRB = ttk.Radiobutton(self.frameFrame, text = "Room",
+ self.roomFrameRB = ttk.Radiobutton(self.frameFrame, text = m.pairing[m.mode][1],
variable = self.frameVar, value = "room",
command = self.toggleFrame)
- self.roomFrameRB.grid(column = 0, row = 1, pady = 2)
+ self.roomFrameRB.grid(column = 0, row = 1, pady = 2, sticky = W)
View
@@ -51,11 +51,11 @@ def __init__(self):
self.after(250, lambda: print(self.winfo_width()))
self.after(250, lambda: print(self.winfo_height()))
'''
- x, y = 1010, 788
+ x, y = 1010, 813
self.minsize(x, y)
placeWindow(self, x, y)
- self.selectFunction = ttk.Notebook(self)
+ self.selectFunction = ttk.Notebook(self, height = y, width = x)
self.selectFunction.grid()
self["menu"] = MenuCM(self)
View
@@ -21,7 +21,7 @@ def version():
return ['0', '4', '0']
def date():
- return "27 April 2014"
+ return "28 April 2014"
def copyleft():
return "2013, 2014"

0 comments on commit 0cfaa62

Please sign in to comment.