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$
Program#!/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 #######