예제 #1
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)
예제 #2
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)
예제 #3
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)