class Control:
    ''' rover control class '''
    def __init__(self, left=LEFT, right=RIGHT):
        ''' Constructor '''
        self.drive = Robot(left=left, right=right)

    def off(self):
        ''' Stop all motors '''
        self.drive.stop()

    def cmd(self, char, step=STEP):
        ''' Perform required command '''
        if char == 'f':
            self.drive.forward(SPEED)
            time.sleep(step)
        elif char == 'b':
            self.drive.backward(SPEED)
            time.sleep(step)
        elif char == 'r':
            self.drive.right(SPEED)
            time.sleep(step)
        elif char == 'l':
            self.drive.left(SPEED)
            time.sleep(step)
        elif char == '#':
            time.sleep(step)
Пример #2
0
class Jeeno:

    def __init__(self):
        self.front_sensor = DistanceSensor(echo = 22, trigger = 27)
        #self.back_sensor = DistanceSensor(echo = , trigger = )
        self.robot = Robot(left=(6,12), right=(5,13))
        self.move()



    def move(self):
        self.front_sensor.when_out_of_range = self.robot.forward
        self.front_sensor.when_in_range = self.turn

    def turn(self):
        self.robot.stop()
        if choice(['L','R']) == 'L':
            self.left()
        else:
            self.right()

    def left(self):
        self.robot.forward(curve_left=1)
        sleep(1)
        self.robot.stop()
    def right(self):
        self.robot.forward(curve_right=1)
        sleep(1)
        self.robot.stop()
Пример #3
0
    def __init__(self):
        #movement variables
        self.legs = Robot(left=(5, 6), right=(17, 27))
        self.turning_right = False
        self.turning_left = False
        self.moving_forward = False
        self.moving_backward = False

        #used when preforming specific actions for fleeing Darth Vader
        self.turning_around = False
        self.time_turning_around = 0
        self.running_away = False
        self.time_running_away = 0
        self.fleeing = False

        #used to blink red-blue light
        self.light = RGBLED(red=16, green=20, blue=21)
        self.light.color = (1, 0, 0)
        self.red = True
        self.time_since_last_blink = 0

        #used to make random movements
        self.time_stopped = 0
        self.time_moving = 0
        self.moving = False

        #used for reaction to characters
        self.seeing_Leia = False
        self.seen_Leia = False
        self.time_seeing_Leia = 0
        self.seeing_Obiwan = False
        self.time_seeing_Obiwan = 0
        self.seeing_Vader = False
        self.time_seeing_Vader = 0
Пример #4
0
 def __init__(self, level='lvl0'):
     #instantiating all the motors and sensors on the bot
     self.robot = Robot(left=MOTOR_L, right=MOTOR_R)
     self.sonic = DistanceSensor(echo=SONIC_ECHO, trigger=SONIC_TRIG)
     self.ir_l = MCP3008(IR_L)
     self.ir_r = MCP3008(IR_R)
     self.button = MCP3008(BTN)
     self.bz = TonalBuzzer(BZ)
     self.led = RGBLED(R, G, B)
     #creating custom variables
     self.speed = self.get_speed(level)
Пример #5
0
 def __init__(self):
     GPIO.cleanup()
     self.__leftencoder = Encoder(21)
     self.__rightencoder = Encoder(27)
     self.__robot = Robot(left=(23, 24), right=(26, 22))
     self.__en1 = 12
     self.__en2 = 13
     GPIO.setmode(GPIO.BCM)
     GPIO.setup(self.__en1, GPIO.OUT)
     GPIO.output(self.__en1, GPIO.HIGH)
     GPIO.setup(self.__en2, GPIO.OUT)
     GPIO.output(self.__en2, GPIO.HIGH)
Пример #6
0
    def __init__(self):
        #movement variables
        self.legs = Robot(left=(5, 6), right=(17, 27))
        self.turning_right = False
        self.turning_left = False
        self.moving_forward = False
        self.moving_backward = False

        #light variables
        #used to blink red-blue light
        self.light = RGBLED(red=16, green=20, blue=21)
        self.light.color = (1, 0, 0)
        self.red = True
        self.time_since_last_blink = 0
Пример #7
0
 def __init__(self):
     
     window = np.zeros((100,100)) #initialising a black 100x100 window for using escape to quit
     self.colour = {'red':0,'green':0,'blue':0,-1:0} #control dictionary for logic
     left = (4,14)  #left wheel gpio pins
     right = (17,18) #right wheel gpio pins
     self.robot = Robot(left,right) #robot initialisation class call
     self.cap = cv2.VideoCapture(0) #recording video from camera 0 (i.e. the camera on rpi)
     
     while(True):
         ret, image = self.cap.read() #read from camera
         if cv2.waitKey(1) != 27 : 
             cv2.imshow('window',window) #show the window previously made
             self.botmove(image) #main bot moving method call
         else:
             break #exit if escape key is pressed 
Пример #8
0
class RobotWheels:

    robot = Robot(left=(5, 6), right=(22, 27))

    def __init__(self):
        pass

    def move_forward(self):
        self.robot.forward(0.2)

    def move_backwards(self):
        self.robot.backward(0.2)

    def turn_right(self):
        self.robot.right(0.2)

    def turn_left(self):
        self.robot.left(0.2)

    def dance(self):
        self.move_forward()
        sleep(0.5)
        self.stop()
        self.move_backwards()
        sleep(0.5)
        self.stop()
        self.turn_right()
        sleep(0.5)
        self.stop()
        self.turn_left()
        sleep(0.5)
        self.stop()

    def stop(self):
        self.robot.stop()
Пример #9
0
def wheel_action(msg):
    data = json.loads(msg["data"])
    duration = data["duration"]
    speed = data.get("speed", 1)
    direction = data["direction"]
    robot = Robot(left=config.WHEEL_LEFT, right=config.WHEEL_RIGHT)
    if direction in "left right forward backward".split():
        getattr(robot, direction)(speed)
        time.sleep(duration)
Пример #10
0
def main():
	""" メイン関数 """
	# 接続ピン
	PIN_AIN1 = 6
	PIN_AIN2 = 5
	PIN_BIN1 = 26
	PIN_BIN2 = 27
	# 左右モーター設定(PWM)
	motors = Robot(left=(PIN_AIN1,PIN_AIN2),right=(PIN_BIN1,PIN_BIN2),pwm=True)
	
	# 0.1秒毎周期30(約3秒)のSIN値の信号源
	srcleft = post_delayed(sin_values(period=30),0.1)
	# 0.1秒毎周期30(約3秒)のCOS値の信号源
	srcright = post_delayed(cos_values(period=30),0.1)
	
	# 左右モータに信号源を接続
	motors.source = zip(srcleft,srcright)
	
	# 停止(Ctr+c)まで待機
	pause()
Пример #11
0
def main():
    """ メイン関数 """
    # 接続ピン
    PIN_AIN1 = 6
    PIN_AIN2 = 5
    PIN_BIN1 = 26
    PIN_BIN2 = 27
    # 左右モーター設定(PWM)
    motors = Robot(left=(PIN_AIN1, PIN_AIN2),
                   right=(PIN_BIN1, PIN_BIN2),
                   pwm=True)

    # 1秒毎の正負パルス値の信号源
    dirleft = post_delayed(scaled(alternating_values(True), -1, 1), 1)
    dirright = post_delayed(scaled(alternating_values(False), -1, 1), 1)

    # 左右モーターに信号源を接続
    motors.source = zip(dirleft, dirright)

    # 停止(Ctrl+c)まで待機
    pause()
Пример #12
0
    def __init__(self):
        self._commands = [
            0,  # forward
            0,  # backward
            0,  # left
            0,  # right
            0,  # turbo
        ]

        self._robot = Robot(left=(_LEFT_MOTOR_NEG_PIN,
                                  _LEFT_MOTOR_POS_PIN),
                            right=(_RIGHT_MOTOR_POS_PIN,
                                   _RIGHT_MOTOR_NEG_PIN))

        # A Driver exposes a number of multiprocess Events objects that
        # external objects can use to signal the need of an emergency stops.
        # It is up to the caller to clear the safety stop Event.
        self._safety_stop_event = mp.Event()
        self._safety_stop_forward_event = mp.Event()
        self._safety_stop_backward_event = mp.Event()

        _logger.debug('{} initialized'.format(self.__class__.__name__))
Пример #13
0
def main():
    """ メイン関数 """
    # モータードライバ接続ピン
    PIN_AIN1 = 6
    PIN_AIN2 = 5
    PIN_BIN1 = 26
    PIN_BIN2 = 27

    # A/D変換チャネル数
    NUM_CH = 4

    # 左右モーター設定(PWM)
    motors = Robot(left=(PIN_AIN1,PIN_AIN2), \
                   right=(PIN_BIN1,PIN_BIN2), \
                   pwm=True)
    # フォトリフレクタ(複数)設定(A/D変換)
    photorefs = [MCP3004(channel=idx) for idx in range(NUM_CH)]

    # ライントレース処理
    motors.source = line_follow(photorefs)

    # 停止(Ctr+c)まで待機
    pause()
Пример #14
0
class MadmaxWheelbase():
    def __init__(self):
        self.wheel_base = Robot(
            left=(sets['motor_in1_left'],sets['motor_in2_left'],sets['motor_enabler_left']), 
            right=(sets['motor_in3_right'],sets['motor_in4_right'],sets['motor_enabler_right']))
        self.speed = 0.3
    def forward(self, speed = None):
        if speed: 
            self.speed = speed
        self.wheel_base.forward(self.speed)
    def backward(self, speed = None):
        if speed: 
            self.speed = speed
        self.wheel_base.backward(self.speed)   
    def stop(self):
        self.wheel_base.stop()
    def set_speed(self, speed):
        self.speed = speed 
Пример #15
0
from gpiozero import DistanceSensor, Robot
from time import sleep
robot = Robot(left=(7, 8), right=(9, 10))
#robot.forward(0.3)


def go_forward(n_seconds):
    robot.forward(0.5)
    sleep(n_seconds)
    robot.stop()


def go_left(n_seconds):
    robot.left(0.5)
    sleep(n_seconds)
    robot.stop()


def go_forward_cautious():
    sensor = DistanceSensor(echo=18, trigger=17)
    robot.forward(0.3)
    while True:
        ##print('Distance: ', sensor.distance)
        if sensor.distance < 0.1:
            ##print("less than 0.1")
            robot.forward(0.5)
        if sensor.distance < 0.5:
            print("less than 0.05")
            robot.forward(0.025)
        if sensor.distance < 0.025:
            print("About to stop")
Пример #16
0
import signal
from xbox360controller import Xbox360Controller
from gpiozero import Robot

robot = Robot(left=(19,26),right=(20,21))


def on_button_pressed(button):
    print('Button {0} was pressed'.format(button.name))
    
    if button.name == "button_a":
        print('[Robot goes Forward]')
        robot.forward()
    elif button.name == "button_b":
        print('[Robot goes Backward]')
        robot.backward()
    elif button.name == "button_trigger_l":
        print('[Robot goes Left]')
        robot.left()
    elif button.name == "button_trigger_r":
        print('[Robot goes Right]')
        robot.right()


def on_button_released(button):
    print('Button {0} was released'.format(button.name))
    print('[Robot was Stoped]')
    robot.stop()

def on_axis_moved(axis):
    print('Axis {0} moved to {1} {2}'.format(axis.name,axis.x,axis.y))
Пример #17
0
from gpiozero import Robot

robot = Robot(left=(5,6), right=(13,19))

Пример #18
0
from gpiozero import Robot, DistanceSensor
from time import sleep
import CERCBot
import random

burt_the_robot = Robot(left=(8, 7), right=(21, 20)) 
left_echo_pin = 14
left_trigger_pin = 15
centre_echo_pin = 17
centre_trigger_pin = 4
right_echo_pin = 23
right_trigger_pin = 18


threshold = 20
threshold2 = 25
dead_end = 0
fast = 0.7
slow = 0.6

def go_forwards(speed):
	burt_the_robot.forward(speed)
	print("Going forwards")


def go_backwards(speed):
	burt_the_robot.backward(speed)
	print("Going backwards")

Пример #19
0
 def setup(self):
     self.robot = Robot(left=left_wheel, right=right_wheel)
     dotbot_ros.Subscriber("cmd_vel", Twist, self.on_cmd_vel)
Пример #20
0
from gpiozero import Robot
from time import sleep

robot = Robot(left=(4,14), right=(17,18))

for i in range(4):
    robot.forward()
    sleep(10)
    robot.right()
    sleep(1)
#!/usr/bin/python3
import time
from gpiozero import Robot
import RPi.GPIO as GPIO


robot = Robot(left=(17, 18), right=(22, 23))

# Ultrasonic range sensor (pins)
pin_trig = 13
pin_echo = 26

## These may need to be adjusted depending upon the size of the robot and the speed of the motors 
# minimum distance before we turn in cm
min_distance = 13
# speed when moving forward (between 0 and 1)
speed_forward = 0.8
# speed when turning (between 0 and 1)
speed_turn = 0.6

# Setup GPIO input/output and disable warnings
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings (False)
GPIO.setup(pin_trig, GPIO.OUT)
GPIO.setup(pin_echo, GPIO.IN)

# Set ultrasonic sensor off and wait to settle
GPIO.output(pin_trig, 0)
time.sleep(0.5)

while True:
Пример #22
0
    high = bus.read_byte_data(d_address, adr+1)
    val=(high<<8)+low
    if(val > 32768):
           val = val - 65536
    return val

magneto_start()

in1=17
in2=27
in3=23
in4=24
en1=PWMOutputDevice(18)
en2=PWMOutputDevice(19)
GPIO.setmode(GPIO.BCM)
robot = Robot((in1, in2), (in3, in4))
speed=1

en1.value=speed
en2.value=speed

#def user_input():
#   while 1: 
#      global speed
#      i=input("Please enter a number: ")
#      print ('wrong input')
#      if i== 'w':
#         robot.forward()
#      elif i=='s':
#         robot.backward()
#      elif i=='a':
Пример #23
0
cl = 0.1


def inrange():
    global cl
    robot.stop()
    robot.backward(curve_right=0.5)
    sleep(2)
    #robot.right()
    #robot.reverse()
    sleep(1)
    robot.forward(curve_right=cl)


def outrange():
    global cl
    robot.stop()
    robot.forward(curve_right=cl)


sensor = DistanceSensor(echo=20,
                        trigger=21,
                        max_distance=1,
                        threshold_distance=0.15)
sensor.when_in_range = inrange
sensor.when_out_of_range = outrange
#robot = Robot(left=(26, 19), right=(6, 13))
robot = Robot(right=(19, 26), left=(6, 13))

robot.forward(curve_right=cl)
pause()
Пример #24
0
from gpiozero import Robot, MCP3008
from gpiozero.tools import scaled
from signal import pause

robot = Robot(left=(4, 14), right=(17, 18))

left = MCP3008(0)
right = MCP3008(1)

robot.source = zip(scaled(left.values, -1, 1), scaled(right.values, -1, 1))

pause()
Пример #25
0
from gpiozero import Robot
from bluedot import BlueDot
from signal import pause

def pos_to_values(x, y):
    left = y if x > 0 else y + x
    right = y if x < 0 else y - x
    return (clamped(left), clamped(right))

def clamped(v):
    return max(-1, min(1, v))

def drive():
    while True:
        if bd.is_pressed:
            x, y = bd.position.x, bd.position.y
            yield pos_to_values(x, y)
        else:
            yield (0, 0)

robot = Robot(left=(4, 14), right=(17, 18))
bd = BlueDot()

robot.source = drive()

pause()
Пример #26
0
#!/usr/bin/env python3

from gpiozero import Robot, LED, Button
import time

robot   = Robot((9, 10), (8, 7))    # Left, Right
trig    = LED(17)                   # Ultrasonic Distance Trigger
echo    = Button(18)                # Ultrasonic Distance Echo


# Return the distance from the sensor at the front to any obstruction.

def distance():
    global trig, echo

    trig.off()
    time.sleep(0.01)

    trig.on()
    time.sleep(0.00001)
    trig.off()

    echo.wait_for_release()
    startTime = time.time()

    echo.wait_for_press(0.1)
    elapsed = time.time() - startTime
    distance = elapsed * 17163

    if elapsed > 0.04:
        print("Too close")
Пример #27
0
from gpiozero import Robot
from time import sleep

robot = Robot(left=(4, 14), right=(17, 18))

for i in range(4):
    robot.forward()
    sleep(10)
    robot.right()
    sleep(1)
Пример #28
0
import curses
from gpiozero import Robot
import sys

robot = Robot(left=(27, 24), right=(16, 23))

actions = {
    curses.KEY_UP: robot.forward,
    curses.KEY_DOWN: robot.backward,
    curses.KEY_LEFT: robot.left,
    curses.KEY_RIGHT: robot.right,
}


def main(stdscr):
    nextKey = None
    while True:
        curses.halfdelay(1)
        if nextKey is None:
            key = stdscr.getch()
        else:
            key = nextKey
            nextKey = None
        if key != -1:
            curses.halfdelay(3)
            action = actions.get(key)
            if action is not None:
                action()
            nextKey = key
            while nextKey == key:
                nextKey = stdscr.getch()
Пример #29
0

def getchar():
    fd = sys.stdin.fileno()
    old_setting = termios.tcgetattr(fd)
    ch=0
    try:
        tty.setraw(sys.stdin.fileno())
        ch=sys.stdin.read(1)
    finally:
        termios.tcsetattr(fd, termios.TCSADRAIN,old_setting)
    return ch

try:
    us = UltraSound(6,12)
    robot = Robot(left=(23,22),right=(17,18))
    speed=1.0

    while True:
        obstdistance = us.measure()
        print(obstdistance)
        if obstdistance < 15:
            speed=0.5
            robot.stop()
            robot.right(speed)
            time.sleep(0.01)
            robot.reverse(speed)
            time.sleep(2)
            speed =1.0
            robot.forward(speed)
        
Пример #30
0
from time import sleep
from gpiozero import Robot
tiempo = 5
robot = Robot(left=(7, 8), right=(9, 10))
while True:
    robot.forward()
    sleep(tiempo)
    robot.stop()
    robot.right()
    sleep(tiempo)
    robot.stop()
    robot.left()
    sleep(tiempo)
    robot.stop()
    robot.backward()
    sleep(tiempo)
    robot.stop()
Пример #31
0
from gpiozero import Robot, MCP3008
from signal import pause

robot = Robot(left=(4, 14), right=(17, 18))

left = MCP3008(0)
right = MCP3008(1)

robot.source = zip(left.values, right.values)

pause()
Пример #32
0
from gpiozero import Robot, Motor, MotionSensor
from signal import pause

robot = Robot(left=Motor(4, 14), right=Motor(17, 18))
pir = MotionSensor(5)

pir.when_motion = robot.forward
pir.when_no_motion = robot.stop

pause()
Пример #33
0
from bluedot import BlueDot
from gpiozero import Robot
bd = BlueDot()
robot = Robot(left=(8, 7), right=(10, 9))


def move(pos):
    if pos.top:
        robot.forward()
    elif pos.bottom:
        robot.backward()
    elif pos.right:
        robot.right()
    elif pos.left:
        robot.left()


def stop():
    robot.stop()


bd.when_pressed = move
bd.when_moved = move
bd.when_released = stop
Пример #34
0
from gpiozero import DistanceSensor
from gpiozero import Robot
from time import sleep
from signal import pause

robot = Robot(right=(19, 26), left=(6, 13))
robot.forward()
sleep(5)
robot.right(0.5)
sleep(5)
Пример #35
0
from time import sleep
from gpiozero import Robot
from bluedot import BlueDot
from signal import pause

robby = Robot(left=(9, 10), right=(8, 7))

tleft = 0.85
tright = 0.85


def line():
    robby.forward(1)
    sleep(1.15)
    robby.left(1)
    sleep(tleft)
    robby.forward(1)
    sleep(2)
    robby.right(1)
    sleep(tright)
    robby.forward(0.4)
    sleep(0.5)
    robby.left(1)
    sleep(tleft)
    robby.forward(1)
    sleep(0.9)
    robby.stop()


def remoteAndroid():
    bd = BlueDot(
#!/usr/bin/python
import sys, tty, termios
import picamera, time
import cwiid
from gpiozero import Robot

robot = Robot(left=(17, 18), right=(22, 23))
camera_enable = False
try:
    camera = picamera.PiCamera()
    camera.hflip=True
    camera.vflip=True
    camera_enable=True
except:
    print ("Camera not found - disabled");

photo_dir = "/home/pi/photos"

# delay between button presses
delay = 0.2

current_direction = "stop"
# speed is as a percentage (ie. 100 = top speed)
# start speed is 50% which is fairly slow on a flat surface
speed = 100

print ("Press 1 + 2 on the Wii Remote")
time.sleep(1)

# Keep trying to connect to the remote
while True:
Пример #37
0
from gpiozero import Robot, DistanceSensor
from signal import pause
sensor = DistanceSensor(23, 24, max_distance=1, threshold_distance=0.2)
robot = Robot(left=(4, 14), right=(17, 18))
sensor.when_in_range = robot.backward
sensor.when_out_of_range = robot.stop
pause()
Пример #38
0
from gpiozero import Robot, MotionSensor
from signal import pause

robot = Robot(left=(4, 14), right=(17, 18))
pir = MotionSensor(5)

robot.source = zip(pir.values, pir.values)

pause()
Пример #39
0
# This uses a hbridge module
# guide found @ https://projects.raspberrypi.org/en/projects/build-a-buggy/2
# and merged with another guide found @ https://gpiozero.readthedocs.io/en/v1.1.0/recipes.html#keyboard-controlled-robot

from evdev import InputDevice, list_devices, ecodes
from gpiozero import Robot
johnny = Robot(left=(7,8), right=(9,10))

devices = [InputDevice(device) for device in list_devices()]
keyboard = devices[0]  # this may vary

keypress_actions = {
    ecodes.KEY_UP: johnny.forward,
    ecodes.KEY_DOWN: johnny.backward,
    ecodes.KEY_LEFT: johnny.left,
    ecodes.KEY_RIGHT: johnny.right,
}

for event in keyboard.read_loop():
    if event.type == ecodes.EV_KEY:
        if event.value == 1:  # key down
            keypress_actions[event.code]()
        if event.value == 0:  # key up
            johnny.stop()
Пример #40
0
from gpiozero import Robot
from evdev import InputDevice, list_devices, ecodes

robot = Robot(left=(4, 14), right=(17, 18))

# Get the list of available input devices
devices = [InputDevice(device) for device in list_devices()]
# Filter out everything that's not a keyboard. Keyboards are defined as any
# device which has keys, and which specifically has keys 1..31 (roughly Esc,
# the numeric keys, the first row of QWERTY plus a few more) and which does
# *not* have key 0 (reserved)
must_have = {i for i in range(1, 32)}
must_not_have = {0}
devices = [
    dev
    for dev in devices
    for keys in (set(dev.capabilities().get(ecodes.EV_KEY, [])),)
    if must_have.issubset(keys)
    and must_not_have.isdisjoint(keys)
]
# Pick the first keyboard
keyboard = devices[0]

keypress_actions = {
    ecodes.KEY_UP: robot.forward,
    ecodes.KEY_DOWN: robot.backward,
    ecodes.KEY_LEFT: robot.left,
    ecodes.KEY_RIGHT: robot.right,
}

for event in keyboard.read_loop():