Пример #1
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
Пример #2
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()
Пример #3
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)
Пример #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 
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)

    # ループ処理
    while True:
        # 0.2秒前進(50%)
        motors.forward(speed=0.5)
        sleep(0.2)
        # 0.2秒停止
        motors.stop()
        sleep(0.2)
        # 0.2秒後退(50%)
        motors.backward(speed=0.5)
        sleep(0.2)
        # 0.2秒停止
        motors.stop()
        sleep(0.2)
        # 0.2秒左カーブ(50%)前進(100%)
        motors.forward(speed=1, curve_left=0.5)
        sleep(0.2)
        # 0.2秒逆転
        motors.reverse()
        sleep(0.2)
        # 0.2秒停止
        motors.stop()
        sleep(0.2)
        # 0.2秒右カーブ(50%)前進(100%)
        motors.forward(speed=1, curve_right=0.5)
        sleep(0.2)
        # 0.2秒逆転
        motors.reverse()
        sleep(0.2)
        # 0.2秒停止
        motors.stop()
        sleep(0.2)
Пример #9
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()
Пример #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)

    # 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()
Пример #11
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__))
Пример #12
0
def main():
    """ メイン関数 """
    # 接続ピン
    PIN_AIN1 = 6
    PIN_AIN2 = 5
    PIN_BIN1 = 26
    PIN_BIN2 = 27
    # 左右モーター設定(ON/OFF)
    motors = Robot(left=(PIN_AIN1, PIN_AIN2),
                   right=(PIN_BIN1, PIN_BIN2),
                   pwm=False)

    # ループ処理
    while True:
        # 0.2秒前進
        motors.forward()
        sleep(0.2)
        # 0.2秒停止
        motors.stop()
        sleep(0.2)
        # 0.2秒後退
        motors.backward()
        sleep(0.2)
        # 0.2秒停止
        motors.stop()
        sleep(0.2)
        # 0.2秒左旋回
        motors.left()
        sleep(0.2)
        # 0.2秒停止
        motors.stop()
        sleep(0.2)
        # 0.2秒右旋回
        motors.right()
        sleep(0.2)
        # 0.2秒停止
        motors.stop()
        sleep(0.2)
Пример #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
 def setup(self):
     self.robot = Robot(left=left_wheel, right=right_wheel)
     dotbot_ros.Subscriber("cmd_vel", Twist, self.on_cmd_vel)
Пример #15
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()
Пример #16
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")
Пример #17
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))
Пример #18
0
from gpiozero import Robot

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

Пример #19
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()
Пример #20
0
from gpiozero import Robot, InputDevice, OutputDevice
from time import sleep, time

trig = OutputDevice(4)
echo = InputDevice(17)

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

duration = 7
end_time = time() + duration
running = True

sleep(2)


def get_pulse_time():
    pulse_start, pulse_end = 0, 0

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

    while echo.is_active == False:
        pulse_start = time()

    while echo.is_active == True:
        pulse_end = time()

    return pulse_end - pulse_start

Пример #21
0
from gpiozero import DistanceSensor, LED, MotionSensor,Robot
import gpiozero
from signal import pause
import time
pir = MotionSensor(12)
sensor = DistanceSensor(21, 20, max_distance=1, threshold_distance=0.2)
led = LED(16)
robot = Robot(left=(26, 19), right=(6, 13))

def sense():
    #stop robot
    robot.stop()
    #record time
    start = time.time()
    #this function will stop when it see's any motion but if will stop anyway after 2 seconds
    pir.wait_for_motion(timeout=2)
    #if it took less than 2 seconds for the waitForMotion fuction to stop then it detected movement
    if time.time() - start < 1.9999999:
        #buzzer on
        led.on()
        #wait 2 seconds
        time.sleep(2)
        #buzzer off
        led.off()
    else:
        #the thing in front of the robot is a walll
        #turn to get out of the way
        robot.left()
        time.sleep(1)
        robot.stop()
Пример #22
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()
Пример #23
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(
Пример #24
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
Пример #25
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")

Пример #26
0
from gpiozero import Robot
from time import sleep

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

robot.forward(0.2)
sleep(0.5)
robot.backward(0.2)
sleep(0.5)
robot.stop()




Пример #27
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()
Пример #28
0
# -------------------------------------------------------------------------------------------------

from gpiozero import Robot  # controls the robot hardware
import paho.mqtt.client as mqtt  # provides IoT functionality to send messages between computers

# Settings
# -------------------------------------------------------------------------------------------------

# If you need to change the defaults, change them in settings.py:
from settings import *

# Globals
# -------------------------------------------------------------------------------------------------

# Set the GPIO pins used to connect to the motor controller
robot = Robot(left=(19, 26), right=(16, 20))

# Functions
# -------------------------------------------------------------------------------------------------


def map(n, a, b, c, d):
    return (n - a) * (d - c) / (b - a)


def on_connect(client, userdata, flags, rc):
    # Called when the client receives connection acknowledgement response from the broker

    print("MQTT Connected with result code " + str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
Пример #29
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':
Пример #30
0
from gpiozero import Button, Robot
from gpiozero.pins.pigpio import PiGPIOFactory
from signal import pause

factory = PiGPIOFactory(host='192.168.1.17')
robot = Robot(left=(4, 14), right=(17, 18), pin_factory=factory)  # remote pins

# local buttons
left = Button(26)
right = Button(16)
fw = Button(21)
bw = Button(20)

fw.when_pressed = robot.forward
fw.when_released = robot.stop

left.when_pressed = robot.left
left.when_released = robot.stop

right.when_pressed = robot.right
right.when_released = robot.stop

bw.when_pressed = robot.backward
bw.when_released = robot.stop

pause()