Esempio n. 1
0
#! /usr/bin/python3

from brickpi3 import BrickPi3

from helper import RobotBase, Canvas, Map
from time import sleep
from math import pi

canvas = Canvas(210)
mymap = Map()

# to waypoint
robot = RobotBase(BrickPi3.PORT_B,
                  BrickPi3.PORT_C,
                  BrickPi3.PORT_D,
                  BrickPi3.PORT_4,
                  mymap,
                  p_start=(84.0, 30.0, 0),
                  debug_canvas=canvas)

robot.to_relative_forward(100)
Esempio n. 2
0
mymap.add_wall((168, 210, 168, 84))
# e
mymap.add_wall((168, 84, 210, 84))
# f
mymap.add_wall((210, 84, 210, 0))
# g
mymap.add_wall((210, 0, 0, 0))
# h
canvas.drawLines(mymap.walls)

name_list = ["a", "b", "c", "d", "e", "f", "g", "h"]

robot = RobotBase(BrickPi3.PORT_B,
                  BrickPi3.PORT_C,
                  BrickPi3.PORT_D,
                  BrickPi3.PORT_4,
                  mymap,
                  p_start=(84.0, 30.0, 0),
                  debug_canvas=canvas)

canvas.drawParticles(robot.p_tuples, robot.p_weights)

cfg_scan_a_range = (radians(-30), radians(30), radians(2))
cfg_scan_b_range = (radians(-30), radians(-200), radians(-2))
cfg_scan_a_var = 0.4
cfg_scan_b_var = 0.4

#####################

#       AREA C      #
Esempio n. 3
0
mymap.add_wall((168, 210, 168, 84))
# e
mymap.add_wall((168, 84, 210, 84))
# f
mymap.add_wall((210, 84, 210, 0))
# g
mymap.add_wall((210, 0, 0, 0))
# h
canvas.drawLines(mymap.walls)
name_list = ["a", "b", "c", "d", "e", "f", "g", "h"]

# to waypoint
robot = RobotBase(BrickPi3.PORT_B,
                  BrickPi3.PORT_C,
                  BrickPi3.PORT_D,
                  BrickPi3.PORT_4,
                  mymap,
                  p_start=(84.0, 30.0, 0),
                  debug_canvas=canvas)

canvas.drawParticles(robot.p_tuples, robot.p_weights)

##################################
#   FIND AREA A FROM STARTPOINT  #
##################################

# scan bottle
cfg_a_start = radians(-180)
cfg_a_step = radians(1)
cfg_a_end = radians(180)
Esempio n. 4
0
# d: D to E
# e: E to F
# f: F to G
# g: G to H
# h: H to O
mymap.add_wall((0,0,0,168));        # a
mymap.add_wall((0,168,84,168));     # b
mymap.add_wall((84,126,84,210));    # c
mymap.add_wall((84,210,168,210));   # d
mymap.add_wall((168,210,168,84));   # e
mymap.add_wall((168,84,210,84));    # f
mymap.add_wall((210,84,210,0));     # g
mymap.add_wall((210,0,0,0));        # h
canvas.drawLines(mymap.walls)
name_list = ["a","b","c","d","e","f","g","h"]


# to waypoint
robot = RobotBase(BrickPi3.PORT_B, BrickPi3.PORT_C,BrickPi3.PORT_D, BrickPi3.PORT_4, mymap, p_start=(84.0,30.0,0), debug_canvas=canvas)
waypoints = [(84.0,30),(180,30), (180,54), (138,54), (138,168), (114,168), (114,84), (84,84), (84,30)]

canvas.drawParticles(robot.p_tuples, robot.p_weights)
print(f"location {robot.get_est_pos()}")
sleep(1)

for i, waypoint in enumerate(waypoints):
    robot.to_waypoint(*waypoint)
    canvas.drawParticles(robot.p_tuples, robot.p_weights)
    print(f"location {robot.get_est_pos()}")
    print(f"#################finish way point {i+1}#####################")
Esempio n. 5
0
#! /usr/bin/python3

from brickpi3 import BrickPi3

from helper import RobotBase, Canvas, Map
from time import sleep
from math import pi

robot = RobotBase(BrickPi3.PORT_B, BrickPi3.PORT_C)
canvas = Canvas(40)
mymap = Map()


# draw wall
wall_corner = [(0,0), (0,40), (40,40), (40,0)]
for i in range(3):
    mymap.add_wall((*wall_corner[i], *wall_corner[i+1]))
mymap.add_wall((*wall_corner[3], *wall_corner[0]))

# draw lines
canvas.drawLines(mymap.walls)

# init
for _ in range(4):
    for _ in range(4):
        robot.to_relative_forward(10) # *task unpack to arguments
        canvas.drawParticles(robot.p_tuples, robot.p_weights)
        print (f"est postion:{robot.get_est_pos()}")
        sleep(1)

    robot.to_relative_turn(0.5*pi)
Esempio n. 6
0
# d
mymap.add_wall((168, 210, 168, 84))
# e
mymap.add_wall((168, 84, 210, 84))
# f
mymap.add_wall((210, 84, 210, 0))
# g
mymap.add_wall((210, 0, 0, 0))
# h
canvas.drawLines(mymap.walls)
name_list = ["a", "b", "c", "d", "e", "f", "g", "h"]

robot = RobotBase(BrickPi3.PORT_B,
                  BrickPi3.PORT_C,
                  BrickPi3.PORT_D,
                  BrickPi3.PORT_4,
                  mymap,
                  p_start=(84.0, 30.0, 0),
                  debug_canvas=canvas)

canvas.drawParticles(robot.p_tuples, robot.p_weights)

cfg_scan_a_range = (radians(-180), radians(180), radians(2))


def calibrate_and_getbottle():
    obstacles = robot.get_nearest_obstacles(-pi, pi, radians(2), DEBUG=True)

    walls_likelyhood = []
    _, walls = robot.identify_bottle(obstacles, walls_likely=walls_likelyhood)
    robot.update_pos(walls, walls_likelyhood)
Esempio n. 7
0
# g: G to H
# h: H to O
mymap.add_wall((0,0,0,168));        # a
mymap.add_wall((0,168,84,168));     # b
mymap.add_wall((84,126,84,210));    # c
mymap.add_wall((84,210,168,210));   # d
mymap.add_wall((168,210,168,84));   # e
mymap.add_wall((168,84,210,84));    # f
mymap.add_wall((210,84,210,0));     # g
mymap.add_wall((210,0,0,0));        # h
canvas.drawLines(mymap.walls)
name_list = ["a","b","c","d","e","f","g","h"]


# to waypoint
robot = RobotBase(BrickPi3.PORT_B, BrickPi3.PORT_C,BrickPi3.PORT_D, BrickPi3.PORT_4, mymap, p_start=(84.0,30.0,0), debug_canvas=canvas)
waypoints = [(180,30), (180,54), (138,54), (138,168), (114,168), (114,84), (84,84), (84,30)]
calpoints = [(100,30),(120,30),(140,30),(160,30)]

canvas.drawPoints(waypoints)

canvas.drawParticles(robot.p_tuples, robot.p_weights)
print(f"location {robot.get_pos_mean()}")
sleep(1)

for cal in calpoints:
    robot.to_waypoint(*cal, accuracy=10)
    canvas.drawParticles(robot.p_tuples, robot.p_weights, robot.get_pos_mean())
    sleep(1)
    while robot.get_pos_var()[1] > 5:
        robot.sonar_calibrate(-0.5*pi)
Esempio n. 8
0
mymap.add_wall((168, 84, 210, 84))
# f
mymap.add_wall((210, 84, 210, 0))
# g
mymap.add_wall((210, 0, 0, 0))
# h
canvas.drawLines(mymap.walls)
name_list = ["a", "b", "c", "d", "e", "f", "g", "h"]

# init
count = 200
pos = (180, 42, 0)
robot = RobotBase(BrickPi3.PORT_B,
                  BrickPi3.PORT_C,
                  BrickPi3.PORT_D,
                  BrickPi3.PORT_1,
                  mymap,
                  p_start=pos,
                  p_count=count,
                  debug_canvas=canvas)
canvas.drawParticles(robot.p_tuples, robot.p_weights)
sleep(1)

# hijack points
print("particles start from (180,42,0), but robot is at (190,42,0)")

var = np.random.uniform(-20, 20, (count, 2))
hijack = []
for v in var:
    hijack.append((pos[0] + v[0], pos[1] + v[1], pos[2]))
robot.p_tuples = hijack
canvas.drawParticles(robot.p_tuples, robot.p_weights)