Everything should work now. But it doesn't.

This commit is contained in:
d3rped 2018-03-26 09:10:13 +02:00
parent aa6b049ce5
commit 6b2a19ebdc
3 changed files with 25 additions and 35 deletions

View file

@ -101,19 +101,21 @@ class Communication:
self.client.loop_start() self.client.loop_start()
self._status = Mode.EXPLORE self._status = Mode.EXPLORE
self.navto = [] self.navto = []
self.isfirstrun = True
def status(self): def status(self):
return self._status return self._status
def update(self, odometry): # TODO: FINISH def update(self, odometry): # TODO: FINISH
if(odometry is not None): # use odometry to send data if(self.isfirstrun):
pass
elif(odometry is not None): # use odometry to send data
self.encode_message(Command.PATH, ((self.planet.getcurnode(), self.planet.getcurdir()), ((self.planet.getcurnode()[0] + odometry[0][0], self.planet.getcurnode()[1] + odometry[0][1]), (odometry[1] - 180) % 360), odometry[2])) self.encode_message(Command.PATH, ((self.planet.getcurnode(), self.planet.getcurdir()), ((self.planet.getcurnode()[0] + odometry[0][0], self.planet.getcurnode()[1] + odometry[0][1]), (odometry[1] - 180) % 360), odometry[2]))
if(self._status is Mode.GOTOSTATION or self._status is Mode.TARGET): elif(self._status is Mode.GOTOSTATION or self._status is Mode.TARGET):
self.encode_message(Command.PATH, ((self.navto[0][0], self.navto[0][1]), (self.planet._planetmap[self.navto[0][0]][self.navto[0][1]][0], self.planet._planetmap[self.navto[0][0]][self.navto[0][1]][1]), self.planet._planetmap[self.navto[0][0]][self.navto[0][1]][2])) self.encode_message(Command.PATH, ((self.navto[0][0], self.navto[0][1]), (self.planet._planetmap[self.navto[0][0]][self.navto[0][1]][0], self.planet._planetmap[self.navto[0][0]][self.navto[0][1]][1]), self.planet._planetmap[self.navto[0][0]][self.navto[0][1]][2]))
self.navto.pop(0)
self.process_messages() # this should update curnode and curdir self.process_messages() # this should update curnode and curdir
def process(self, edges): def process_edges(self, edges):
edges = self.planet.checkedges(edges) edges = self.planet.checkedges(edges)
if(edges == [] and self._status is Mode.EXPLORE): if(edges == [] and self._status is Mode.EXPLORE):
if(self.planet.unexedge == []): if(self.planet.unexedge == []):

View file

@ -24,40 +24,28 @@ def run():
while(communication.planetname is None): while(communication.planetname is None):
communication.process_messages() communication.process_messages()
# run first time not in loop because odometry data is not relevant
communication.update(None) # TODO: Register in map
# correct odometry right here otherwise list of edges will be incorrect
move.setcurdir(communication.getdir())
communication.process(move.getstationedges())
move.turnto(communication.navto[0][1]) # TODO: add control mechanism to communication class
sleep(4)
communication.planet.setcurdir(communication.navto[0][1])
move.setcurdir(communication.getdir())
move.reset()
print("current dir:", move._odometry.angle_get())
print("Navigation Data:", communication.navto)
move.traversetonextstation(False) move.traversetonextstation(False)
while(communication.status() is not Mode.COMPLETE): while(communication.status() is not Mode.COMPLETE):
while(communication.status() is Mode.GOTOSTATION or communication.status() is Mode.TARGET): # should be triggered if current station has no unexplored edges
for instructions in communication.navto:
for instructions in communication.navto:
communication.update(None, None)
move.turnto(instructions[1])
move.traversetonextstation(True)
communication.update(move.getstats()) # TODO: Register in map communication.update(move.getstats()) # TODO: Register in map
# correct odometry right here otherwise list of edges will be incorrect # correct odometry right here otherwise list of edges will be incorrect
move.setcurdir(communication.getdir()) move.setcurdir(communication.getdir())
communication.process(move.getstationedges()) communication.process_edges(move.getstationedges())
move.turnto(communication.navto[0][1]) # TODO: add control mechanism to communication class if(communication.status() is Mode.GOTOSTATION or communication.status() is Mode.TARGET): # should be triggered if current station has no unexplored edges
sleep(4) for instructions in communication.navto:
communication.planet.setcurdir(communication.navto[0][1]) move.turnto(instructions[1])
move.setcurdir(communication.getdir()) move.traversetonextstation(True)
move.reset() move.setcurdir(communication.planet._planetmap[instructions[0]][instructions[1]][1])
print("current dir:", move._odometry.angle_get()) communication.update(None)
print("Navigation Data:", communication.navto) communication.navto.clear()
move.traversetonextstation(False) communication._status = Mode.EXPLORE
else:
move.turnto(communication.navto[0][1])
sleep(4)
communication.planet.setcurdir(communication.navto[0][1])
move.setcurdir(communication.getdir())
move.reset()
move.traversetonextstation(False)
# DO NOT EDIT # DO NOT EDIT

View file

@ -97,8 +97,8 @@ class Move:
else: else:
found_edges.append(self._odometry.angle_get()) found_edges.append(self._odometry.angle_get())
self._odometry.angle_set(self._odometry.angle_get()) self._odometry.angle_set(self._odometry.angle_get())
self._wheel_l.turnbyamount(40, 60) self._wheel_l.turnbyamount(20, 40)
self._wheel_r.turnbyamount(-40, 60) self._wheel_r.turnbyamount(-20, 40)
sleep(2) sleep(2)
self._aligntoedge() self._aligntoedge()
self._odometry.pos_update((self._wheel_l.getmovement(), self._wheel_r.getmovement())) self._odometry.pos_update((self._wheel_l.getmovement(), self._wheel_r.getmovement()))
@ -141,7 +141,7 @@ class Move:
self._odometry.pos_update((self._wheel_l.getmovement(), self._wheel_r.getmovement())) self._odometry.pos_update((self._wheel_l.getmovement(), self._wheel_r.getmovement()))
self._wheel_l.stop() self._wheel_l.stop()
self._wheel_r.stop() self._wheel_r.stop()
if(self._sensor._bumper_r): if(self._sensor.bumperwaspressed is True):
self._wheel_l.turnbyamount(-200, 120) self._wheel_l.turnbyamount(-200, 120)
self._wheel_r.turnbyamount(-200, 120) self._wheel_r.turnbyamount(-200, 120)
sleep(1) sleep(1)