back to Index
The API:
r.drive(left, right) makes the motors move. The values range from -1 to 1.
Let's make a robot drive forward:
In [15]:
import lbot, time, IPython, sys, time
r = lbot.Robot()
r.drive(.1, .1)
The robot should now be driving forward!
Stop the robot by running the cell below:
In [16]:
r.drive(0,0)
In the empty cell below, try making the robot spin to the right:
In [13]:
r.drive(.2, .05)
Then, in the empty cell below, try to make the robot stop.
In [14]:
r.drive(0,0)
now, try making the robot drive backwards:
In [11]:
r.drive(-.1, -.1)
These code blocks are called cells.
The menu and toolbar:
Try clicking on Insert
==> Insert Cell Below
.
In [ ]:
By making new cells below this one, try commanding the robot to drive in different radius circles.
Make a cell below here that spins the robot in ~5 inch diameter circles. (Don't spend too much time tuning)
In [62]:
r.drive(.2, -.025)
In [63]:
r.drive(0,0)
Make a cell below here that spins the robot in ~10 inch diameter circles. (Don't spend too much time tuning)
In [77]:
r.drive(.6,.05)
In [89]:
r.drive(0,0)
Commands can be strung together to make a robot follow paths.
Compare the behavior of the two cells, and try to record an explaination:
In [79]:
r.drive(0,.2)
r.drive(0,0)
What happened: The robot moved a little then stopped
Why: The lines got executed one after another
In [80]:
r.drive(.15,.15)
time.sleep(.5)
r.drive(0,0)
What happened: THe robot moved quite a bit then stopped
Why: the time.sleep line allowed the code above to last for a longer amount of time so it continued driving lonver
Try making the robot turn 90 degrees using what you've learned (hint: time.sleep might help!)
In [83]:
r.drive(.3,-.3)
time.sleep(.5)
r.drive(0,0)
Try making the robot drive 5 inches.
In [84]:
r.drive(.15,.15)
time.sleep(.5)
r.drive(0,0)
Now, use these together to make the robot drive forwards, turn 180 degrees, drive back, and then turn back to the original angle.
In [87]:
r.drive(.15,.15)
time.sleep(.5)
r.drive(0,0)
r.drive(.3,-.3)
time.sleep(.9)
r.drive(0,0)
r.drive(.15,.15)
time.sleep(.5)
r.drive(0,0)
We can pass variables to functions:
In [88]:
left = .1
right = .1
r.drive(left, right)
We can also assign variables:
In [90]:
left = .1
right = .1
print left
print right
left = left * 2
print left
print right
r.drive(left, right)
In [69]:
r.drive(0,0)
In [101]:
for i in range(10):
value = i*5
print i
print value
Now, using the for loop, make a robot drive in a square:
In [95]:
for i in range(4):
r.drive(.15,.15)
time.sleep(.5)
r.drive(0,0)
r.drive(.3,-.3)
time.sleep(.5)
r.drive(0,0)
r.drive(.15,.15)
time.sleep(.5)
r.drive(0,0)
Run the cell below a couple times under various lighting conditions. For example, try:
In [37]:
reflectances = r.read_sensors()
print reflectances
print len(reflectances)
The output of read_sensors
is a tuple: a group of values.
In [38]:
tups = (12, -1)
print tups
print len(tups)
In [27]:
print tups[0]
print tups[1]
Use the examples above to print out the value of the third reflectance sensor.
In [28]:
# Your code goes here!~
Use your knowlege of loops and tuples to print all the values of read_sensors.
In [65]:
# Your code goes here!~
for i in range(len(reflectances)):
print reflectances[i]
In [51]:
for i in range(5):
print i
time.sleep(1)
In [50]:
for i in range(5):
IPython.display.clear_output()
print i
sys.stdout.flush()
time.sleep(1)
Try this:
(To stop it remember that there is a stop button in the toolbar ar the top)
In [66]:
while True:
values = r.read_sensors()
IPython.display.clear_output()
for val in values:
print '='*int(100*val) + int(100*(1.-val))*' ' + str(val)
sys.stdout.flush()
time.sleep(.01)
In [ ]:
5 < 4
In [ ]:
5 > 4
In [ ]:
5 >= 4
In [ ]:
4 >= 4
In [ ]:
4 <= 3
In [ ]:
5 == 4
In [ ]:
5 == 5.0
In [ ]:
5 != 4
In [ ]:
2 + 2 == 4
In [ ]:
2 >= 3
What do the following comparison operators do?
">":
"<":
">=":
"<=":
"!=":
See if the value read in by the first sensor is greater than or equal to .3
Store the result in variable boo
In [ ]:
# Your code goes here!~
Try to do the following:
Set the robot to be perpendicular to some retro reflective tape a few inches away
Let the robot drive until the robot reaches the tape
Run the cell multiple times for varrying distance from the reflective tape.
Think about your tests under different lighting conditions and logical operators.
In [74]:
# Your code goes here!~
r.drive(.15,.15)
temp = r.read_sensors()
while temp[0] > .4:
# r.drive(.15,.15)
temp = r.read_sensors()
r.drive(0,0)
In [75]:
# Your code goes here!~
r.drive(.15,.15)
# temp = r.read_sensors()
while r.read_sensors()[0] > .4:
time.sleep(.001)
r.drive(0,0)
Now put the robot on reflective tape parallel to it and have it drive until it is off the reflective tape.
In [58]:
# Your code goes here!~
Congratulations, you are on your way to follow a line!
The final step to make to follow lines is learning about conditionals
In [59]:
temp = 0
if temp > 8:
print "hello"
else:
if temp > 4:
print "bye"
else:
print "Your number is too small"
In [ ]: