From 40c5adfa0b9a5f62e50393516dd8a1dd999528fe Mon Sep 17 00:00:00 2001 From: d3rped Date: Thu, 22 Mar 2018 14:34:55 +0100 Subject: [PATCH] applied commit: 08e0f98. Moved the brightness updater into the refresh method. --- src/move.py | 20 +++++++++----------- src/odometry.py | 2 +- src/planet.py | 7 +++++++ src/sensor.py | 19 +++++++++++++------ 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/move.py b/src/move.py index d102a7a..c778590 100644 --- a/src/move.py +++ b/src/move.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 -import ev3dev.ev3 as ev3 from wheel import Wheel from sensor import Sensor from odometry import Odometry @@ -11,16 +10,14 @@ class Move: try: self._wheel_l = Wheel('outB') self._wheel_r = Wheel('outC') - self._camera = Sensor() - self._bumper = ev3.TouchSensor() + self._sensor = Sensor() + except OSError: + print("ERROR: Cannot find Motor/Sensor") self.maxbrightness = 0 self.minbrightness = 0 self.edgebrightness = 0 self._odometry = Odometry() - except OSError: - print("ERROR: Cannot find Motor/Sensor") - ''' determine maximum and minimum brightness of lines/white space depending on environment lighting @@ -55,7 +52,7 @@ class Move: self._wheel_r.speed_set(-15) self._wheel_l.stop() self._wheel_r.stop() - # pass + ''' Function to correct errors should the robot wander astray ''' @@ -80,12 +77,13 @@ class Move: self._wheel_l.run() self._wheel_r.run() - while (not self._bumper.value() and self._camera.lastcolor == None): + while (not self._sensor.bumperispressed() and self._sensor.lastcolor == None): self._camera.refresh() - self._wheel_l.speed_set(self.maxbrightness//2 - self._camera.getbrightness()//2) - self._wheel_r.speed_set(self._camera.getbrightness()//2) - self._camera.getcolor() + self._wheel_l.speed_set(self.maxbrightness//2 - self._sensor.getbrightness()//2) + self._wheel_r.speed_set(self._sensor.getbrightness()//2) + self._sensor.getcolor() if(not isknownstation): print(self._odometry.degree(self._wheel_l.getmovement(), self._wheel_r.getmovement(), 0)) + self._wheel_l.stop() self._wheel_r.stop() diff --git a/src/odometry.py b/src/odometry.py index 35d266b..ec37ad7 100644 --- a/src/odometry.py +++ b/src/odometry.py @@ -35,7 +35,7 @@ class Odometry: self.alpha = 0 -# worked fine outside the class as function in nano, maybe we must fix it a bit :) + # worked fine outside the class as function in nano, maybe we must fix it a bit :) def degree(self, delta_rotation_l, delta_rotation_r): # delta_rotation_l/r should work with getmovement method self.alpha = ((delta_rotation_l * self._distance_per_tick - delta_rotation_r * self._distance_per_tick)/self._wheel_axis) + self.alpha diff --git a/src/planet.py b/src/planet.py index d78cf48..28e563e 100644 --- a/src/planet.py +++ b/src/planet.py @@ -50,6 +50,7 @@ class Planet: def __init__(self): """ Initializes the data structure """ self._planetmap = {} + self._unexedge = [] self._curnode = None self.target = None @@ -73,6 +74,12 @@ class Planet: def getcurnode(self): return self._curnode + def addtounexedge(self, node_edge_list): + self._unexedge = self._unexedge + node_edge_list + + def exploreedge(self, node_edge): + self._unexedge.remove(node_edge) + ''' Returns a shortest path between two nodes. Used Algorithm: Dijkstra's Algorithm diff --git a/src/sensor.py b/src/sensor.py index a7b6c9e..ca520e4 100644 --- a/src/sensor.py +++ b/src/sensor.py @@ -30,18 +30,25 @@ class Color(tuple, Enum): class Sensor: def __init__(self): - self._sensor = ev3.ColorSensor() - self._sensor.mode = 'RGB-RAW' - self.RGB = self._sensor.bin_data("hhh") + self._bumper = ev3.TouchSensor() + self._camera = ev3.ColorSensor() + self._camera.mode = 'RGB-RAW' + self.RGB = self._camera.bin_data("hhh") + self._brightness = self._camera.value() self.lastcolor = None - def refresh(self): - self.RGB = self._sensor.bin_data("hhh") + def bumperispressed(self): + self._bumper.value() + + def refresh(self): # do we still want to check if the propper camera/sensor mode is set? + self.RGB = self._camera.bin_data("hhh") + self._brightness = self._camera.value() def getbrightness(self): - return self._sensor.value() + return self._brightness def getcolor(self): + if(self._camera.mode == 'RGB-RAW'): if(self.RGB[0] > Color.RED[0] and (self.RGB[1], self.RGB[2]) < (Color.RED[1], Color.RED[2])): self.lastcolor = Color.RED if(self.RGB[0] < Color.BLUE[0] and (self.RGB[1], self.RGB[2]) > (Color.BLUE[1], Color.BLUE[2])):