I have a Lego Mindstorms brick running ev3dev (open source Linux) and I am writing a Python program for it. I want to enter it in a friendly Sumo style robot competition. Two robots are put inside a circular ring and whoever pushes their opponent outside the ring wins. So I need an "avoid the line" or "stay inside the black line circle" program.
Here is an example video wwwDOTyoutubeDOTcom/watch?v=3tguWcKTXQI&t=110s
I still have to clarify exactly what the ring will be, black area outlined by white, or something different. But I think I can assume I'll be avoiding a bold black line, and I can change that later if I need to.
I'm running ev3dev, brickman v.0.8.0, kernel 4.4.24-16-ev3dev-ev3 on a Lego Mindstorms EV3 programmable brick, revision 0006
I'm using PyCharm IDE and I push the code to the brick over WiFi.
Here is an example video wwwDOTyoutubeDOTcom/watch?v=3tguWcKTXQI&t=110s
I still have to clarify exactly what the ring will be, black area outlined by white, or something different. But I think I can assume I'll be avoiding a bold black line, and I can change that later if I need to.
I'm running ev3dev, brickman v.0.8.0, kernel 4.4.24-16-ev3dev-ev3 on a Lego Mindstorms EV3 programmable brick, revision 0006
I'm using PyCharm IDE and I push the code to the brick over WiFi.
Error:<ev3dev.core.LargeMotor object at 0xb6903e30>> ignored
robot@ev3dev:~/myproject$ python col-reflect-driveaway-v.2016.12.05.n01.py
0
Traceback (most recent call last):
File "col-reflect-driveaway-v.2016.12.05.n01.py", line 38, in <module>
m2.reset()
File "/usr/lib/python2.7/dist-packages/ev3dev/core.py", line 738, in reset
self.command = 'reset'
File "/usr/lib/python2.7/dist-packages/ev3dev/core.py", line 295, in command
self.set_attr_string('command', value)
File "/usr/lib/python2.7/dist-packages/ev3dev/core.py", line 216, in set_attr_string
self._set_attribute(attribute, "{0}".format(value))
File "/usr/lib/python2.7/dist-packages/ev3dev/core.py", line 204, in _set_attribute
self._attribute_cache.write(abspath(self._path + '/' + attribute), value)
AttributeError: 'LargeMotor' object has no attribute '_path'
Exception AttributeError: "'LargeMotor' object has no attribute '_path'" in <bound method LargeMotor.__del__ of <ev3dev.core.LargeMotor object at 0xb6960e30>> ignored
robot@ev3dev:~/myproject$
Program1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#!/usr/bin/env python3 # so that script can be run from Brickman # I amd combining a "bump into wall, back up, turn 45 degrees, drive forward" program # and a color sensor col-reflect program # This is for a "sumo", robot inside of a circle outlined in black, drive forward, if sense black line then turn # This code (or an earlier version of it) is posted at codepasteDOTnet/zrs5gq from ev3dev.ev3 import * from time import sleep ### col-reflect # Connect EV3 color sensor and check connected. cl = ColorSensor() assert cl.connected, "Connect a color sensor to any sensor port" # Put the color sensor into COL-REFLECT mode # to measure reflected light intensity. # In this mode the sensor will return a value between 0 and 100 cl.mode = 'COL-REFLECT' while True : print (cl.value()) sleep( 0.5 ) # I get max 80 with white paper, 3mm separation # and 5 with black plastic, same separation direction = 1 # Switches between 1 and -1 m = LargeMotor( 'outB' ) m.reset() m.run_forever(speed_sp = 675 * direction) m2 = LargeMotor( 'outA' ) m2.reset() m2.run_forever(speed_sp = 675 ) print (cl.value()) sleep( 0.5 ) new_color = cl.value() print new_color if new_color < 10 : direction * = - 1 # Reverse the direction. Forward becomes backward, backward becomes forward m.run_timed(time_sp = 1000 , speed_sp = 300 * direction) sleep( 1 ) print "I am sleeping" direction * = - 1 # Reverse the direction. Forward becomes backward, backward becomes forward m.run_forever(speed_sp = 675 * direction) touch = new_touch ####### |