示例#1
0
    def __init__(self, TimeToSteer = 6, LogInfo = False,forwardSpeed = 40,turnSpeed = 35, confidenceNeeded = 0.90,InitCar = True,distanceToTurn =  50,
    distanceToDetectMin = 15, distanceToDetectMax = 70):

# Αρχικοποίηση κινητήρων
        if(InitCar):
            picar.setup()

        self.bw = back_wheels.Back_Wheels()

        self.fw = front_wheels.Front_Wheels()
    
        self.PreviousState = RobotState.Initial
        self.State = RobotState.Initial
        self.NNState = NeuralNetWorkRead.Unknown
        self.distance = 0
        self.confidence = 0
        self.confidenceNeeded = confidenceNeeded
        self.lastTime = time.time()
        self.curTime = time.time()
        self.timeDif = 0
        self.distanceToTurn = distanceToTurn
        self.TimeToSteer = TimeToSteer
        self.FolderName = time.strftime("%Y%m%d-%H%M%S")
        self.LogInfo = LogInfo
        self.count = 0
        self.forwardSpeed = forwardSpeed
        self.turnSpeed = turnSpeed
        self.distanceToDetectMin = distanceToDetectMin
        self.distanceToDetectMax = distanceToDetectMax
        self.lastLog = 0
        if(LogInfo):
            self.logger = logging.getLogger('./' + self.FolderName +'/logs.txt')
            fh = logging.FileHandler(self.FolderName + '.html',mode = "w")
            self.logger.setLevel(logging.INFO)
            self.logger.addHandler(fh)
def setup():
    global api, bw, fw, buzzer, led_green, led_red, mqtt_distance, mqtt_speed, ua

    # 1. PiCar setup.
    picar.setup()
    ua = Ultrasonic_Avoidance.Ultrasonic_Avoidance(20)
    fw = front_wheels.Front_Wheels(db='config')
    bw = back_wheels.Back_Wheels(db='config')
    fw.turning_max = 45

    # 2. GPIO pins for buzzer and LED.
    GPIO.setmode(GPIO.BCM)  # GPIO.BCM mode.
    GPIO.setup(PIN_BUZZER, GPIO.OUT)  # Buzzer pin.
    GPIO.setup(PIN_LED, GPIO.OUT)  # LED pins.
    GPIO.output(PIN_LED, GPIO.LOW)  # Set LED pins to low to turn off LEDs.
    buzzer = GPIO.PWM(PIN_BUZZER, 440)  # Set buzzer frequency to 440Hz.
    led_red = GPIO.PWM(PIN_LED[0], 2000)  # Set LED frequencies to 2KHz.
    led_green = GPIO.PWM(PIN_LED[1], 2000)
    buzzer.start(0)
    led_red.start(0)
    led_green.start(0)

    # 3. Ubidots.
    api = ApiClient(token='A1E-priJupwmfAGtVeOjcslK9wAW16HJzO')
    mqtt_distance = api.get_variable('59e93a20c03f9748c6bc3d54')
    mqtt_speed = api.get_variable('5a092816c03f9706c0205e88')
    def __init__(self):
        picar.setup()
        self.fw = front_wheels.Front_Wheels(db='config')
        self.bw = back_wheels.Back_Wheels(db='config')

        self.bw.speed = 70
        self.fw.turning_max = 45

        self.forward_speed = 90
        self.backward_speed = 70

        self.back_distance = 10
        self.turn_distance = 20
        self.straight = 90

        self.movement_dispatch = dict()
        self.movement_dispatch[self.FORWARD] = self.accelerate
        self.movement_dispatch[self.BACKWARD] = self.decelerate
        self.movement_dispatch[self.LEFT] = self.turn_left
        self.movement_dispatch[self.RIGHT] = self.turn_right

        self.movement_reset = dict()
        self.movement_reset[self.FORWARD] = self.stop
        self.movement_reset[self.BACKWARD] = self.stop
        self.movement_reset[self.LEFT] = self.turn_straight
        self.movement_reset[self.RIGHT] = self.turn_straight

        self.key_map = dict()

        self.bw.stop()
示例#4
0
 def __init__(self):
     picar.setup()
     self.is_stopped = False
     self.bw = back_wheels.Back_Wheels()
     self.fw = front_wheels.Front_Wheels()
     self.motor_speed = 0
     self.turning_direction = ""
     self.angle = self.DEFAULT_ANGLE
示例#5
0
 def __init__(self):
     picar.setup()
     db_file = "autonomous_car/picar_v/config"
     self.fw = front_wheels.Front_Wheels(debug=False, db=db_file)
     self.bw = back_wheels.Back_Wheels(debug=False, db=db_file)
     self.bw.ready()
     self.fw.ready()
     self.bw_status = 0
示例#6
0
 def __init__(self):
     self.fw = front_wheels.Front_Wheels(debug=True)
     self.max_right = 135
     self.max_left = 45
     self.straight = 90
     self.current_angle = 90
     self.direction = 1
     self.delta = 5  # number of degrees per turn
     picar.setup()
示例#7
0
    def __init__(self):
        self.music = playmusic.MUSIC()

        self.steer_count = 0
        """ Init camera and wheels"""
        logging.info('Creating a DeepPiCar...')

        picar.setup()

        logging.debug('Set up back wheels')
        self.fw = front_wheels.Front_Wheels(db='config')
        self.bw = back_wheels.Back_Wheels(db='config')
        self.bw.speed = DEFAULT_SPEED
    def __init__(self, test_mode=False):
        self._test_mode = False if test_mode is False else True
        self._controller = InputController()

        db_file = "config"
        picar.setup()

        self.fw = front_wheels.Front_Wheels(debug=False, db=db_file)
        self.bw = back_wheels.Back_Wheels(debug=False, db=db_file)

        self.bw.ready()
        self.fw.ready()

        self.fw.calibration()
示例#9
0
    def __init__(self, debug=False):
        try:
            from picar import front_wheels
            from picar import back_wheels
            import picar
        except ImportError:
            # the Picar moduls are not available,
            # most likely due to the code running outside the Raspberry Pi
            raise PicarModulesUnavailableException

        picar.setup()
        # ua = Ultrasonic_Avoidance.Ultrasonic_Avoidance(20)
        self.fw = front_wheels.Front_Wheels(db='config')
        # self.fw.turning_max = 45
        self.fw.debug = debug

        self.bw = back_wheels.Back_Wheels(db='config')
        self.bw.debug = debug
示例#10
0
def setup():
    global fw, bw, cam, SPEED, bw_status, is_setup
    if is_setup == True:
        return
    from .picar_v_video_stream import Vilib
    picar.setup()
    db_file = "/home/pi/SunFounder_PiCar-V/remote_control/remote_control/driver/config"
    fw = front_wheels.Front_Wheels(debug=False, db=db_file)
    bw = back_wheels.Back_Wheels(debug=False, db=db_file)
    cam = camera.Camera(debug=False, db=db_file)
    cam.ready()
    bw.ready()
    fw.ready()

    Vilib.camera_start()

    SPEED = 60
    bw_status = 0
    is_setup = True
    def __init__(self):
        picar.setup()

        self.REFERENCES = [20.5, 25.0, 28.0, 21.5, 20.5]
        # self.calibrate = True
        self.calibrate = False
        self.forward_speed = 40
        self.turning_angle = 45

        self.delay = 0.0005

        self.fw = front_wheels.Front_Wheels(db='config')
        self.bw = back_wheels.Back_Wheels(db='config')
        self.lf = Line_Follower.Line_Follower()

        self.lf.references = self.REFERENCES
        self.fw.ready()
        self.bw.ready()
        self.fw.turning_max = 60
示例#12
0
def main():
    print('STARTING CAR')

    picar.setup()
    db_file = "/home/pi/SunFounder_PiCar-V/remote_control/remote_control/driver/config"
    fw = front_wheels.Front_Wheels(debug=True, db=db_file)
    bw = back_wheels.Back_Wheels(debug=True, db=db_file)
    cam = camera.Camera(debug=True, db=db_file)
    cam.ready()
    bw.ready()
    fw.ready()
    cv2Cam = cv2.VideoCapture(0)

    # bw.speed = 20
    turn_cam_down(cam)
    current_state = 'straight'

    while True:
        print('TAKING PIC')
        np_img = take_picture(cv2Cam)

        print('CLASSIFYING PIC')
        prediction = classify(np_img)
        print('CLASSIFICATION: ' + prediction)

        if prediction == 'straight':
            if current_state == 'veer_left':
                turn_straight_from_left(fw)  # Overcorrect due to faulty car
            else:
                turn_straight(fw)
        elif prediction == 'right':
            turn_right(fw)
        elif prediction == 'veer_right':
            veer_right(fw)
        elif prediction == 'veer_left':
            veer_left(fw)
        current_state = prediction

        print('SLEEPING')
        sleep_car(0.05)
        print('')
        print('')
示例#13
0
    def __init__(self):
        self.fw = front_wheels.Front_Wheels(debug=False, db=db_file)
        self.bw = back_wheels.Back_Wheels(debug=False, db=db_file)
        self.bw.ready()
        self.fw.ready()
        self.turnStraight()
        self.speed = 60
        self.bw.speed = 0 #self.speed
        self.fw_status = 0
        self.bw_status = 0
    	self.fw.turning_max = 40

        ###### Parameters to translate robot speed 0-100 to absolute speed in cm/s
        self.ref_speed = 20
        self.ref_abs_speed = 3.6667
        self.slope_speed = 0.6885
        self.abs_speed = self.getAbsoluteSpeed()
        
        ###### Physical parameters of the car ##########################
        self.L = 0.145   # The distance between front and rear wheels(in m).
示例#14
0
    def __init__(self):
        # 0 = random direction, 1 = force left, 2 = force right, 3 = orderdly
        self.force_turning = 0
        picar.setup()

        self.ua = Ultrasonic_Avoidance.Ultrasonic_Avoidance(20)
        self.fw = front_wheels.Front_Wheels(db='config')
        self.bw = back_wheels.Back_Wheels(db='config')
        self.fw.turning_max = 45

        self.forward_speed = 70
        self.backward_speed = 70

        self.back_distance = 10
        self.turn_distance = 20

        self.timeout = 10
        self.last_angle = 90
        self.last_dir = 0

        self.command = xavier_command.STOP
    def __init__(self, test_img_src=None):
        self._test_mode = False
        self._test_img_src = None
        if test_img_src:
            if os.path.isfile(test_img_src):
                self._test_mode = True
                self._test_img_src = test_img_src
            else:
                raise IOError("File does not exist.")

        picar.setup()

        db_file = "config"
        self._fw = front_wheels.Front_Wheels(debug=False, db=db_file)
        self._bw = back_wheels.Back_Wheels(debug=False, db=db_file)

        self._fw.ready()
        self._bw.ready()

        self._fw.calibration()

        self._camera = Camera()

        self._tag = TagRecognition(resolution=144, marker_length=0.025)
        self._speed = 0

        self._tag_data = {
            'x': 0,
            'z': 0,
            'direction': 0,
            'decision': 0,
            'yaw': 0
        }

        self._tag_lost_time = 0
        self._speed_cycle_time = time()
        self._turn_time = time()
示例#16
0
    def __init__(self, **kwargs):
        # Initialise the parent class
        Thread.__init__(self)
        # Flat to exit gracefully
        self.shutdown_flag = Event()
        # Start the HS server
        self.server_connect(**kwargs)

        # Create SMBus instance
        self.bus = smbus.SMBus(1)
        self.address = 0x11

        self.references = 5 * [kwargs.get('reference', 600)]
        self.referneces = [600, 600, 600, 600, 800]

        self.speed = kwargs.get('speed', 35)
        self.turn = 40

        picar.setup()
        # Initialise the wheel objects
        self.front_wheels = front_wheels.Front_Wheels(db='config')
        self.back_wheels = back_wheels.Back_Wheels(db='config')

        print('configured wheels')
示例#17
0
class MyController(Controller):
    picar.setup()
    bw = back_wheels.Back_Wheels()
    fw = front_wheels.Front_Wheels()
    pan_servo = Servo.Servo(1)
    bw.speed = 0
    motor_speed = 60
    cap = cv2.VideoCapture(0)

    def __init__(self, **kwargs):
        Controller.__init__(self, **kwargs)

    def on_x_press(self):
        _,img = self.cap.read()
        cv2.imwrite('Documents\\'+ str(time.time())+ '.png',img)
        print("picture taken")
    def on_L3_up(self, value):
        speed = int((value/400)*-1)
        print("forward:" + str(speed))
        self.bw.speed = speed
        self.bw.backward()
    def on_L3_down(self, value):
        speed = int(value/400)
        print("backward:" + str(speed))
        self.bw.speed = speed
        self.bw.forward()
    def on_L3_left(self, value):
        print("value1:" + str(value))
        angleL = int((75-(-25/32767) * value))
        print("angle1:" + str(angleL))
        self.fw.turn(angleL)
    def on_L3_right(self, value):
        print("value2:" + str(value))
        angleR = int(((60/32767) * value + 75))
        print("angle2: " + str(angleR))
        self.fw.turn(angleR)
示例#18
0
publish_no_trigger = 0  # uj , forklift_power_error publish skip

stop_active = True
reset_active = False  # csak arra van hasznalva, hogy skippelje a vonalakat

pause_event = threading.Event()  # magyarazat: lasd. gateway
pause_event.set()  # not blocking by default; True = not paused, False = paused

picar.setup()

REFERENCES = [394, 329, 395, 402, 397]
#REFERENCES = [270,290,300,290,270]
#REFERENCES = [330,330,330,330,330]
refFile = "../referenceConfig"

fw = front_wheels.Front_Wheels(db='../wheel_config')
#fw.debug = True

bw = back_wheels.Back_Wheels(db='../wheel_config')
forwardSpeed = carconfig.getForwardSpeed()

lf = Line_Follower.Line_Follower()

fw.ready()
bw.ready()
#45
fw.turning_max = 50



logging.basicConfig(filename='car.log', level=logging.DEBUG, \
示例#19
0
#!/usr/bin/env python
import rospy
from picar import front_wheels, back_wheels
from picar.SunFounder_PCA9685 import Servo
import picar
from time import sleep
import numpy as np
from geometry_msgs.msg import Twist

bw = back_wheels.Back_Wheels()
fw = front_wheels.Front_Wheels()

picar.setup()

bw.speed = 0
fw.turn(90)
motor_speed = 20

curr_speed = 0
curr_dir = 0


def fw_movement(data):
    global curr_speed

    if data.linear.x > 0:
        curr_speed += 1
        if curr_speed > 5:
            curr_speed = 5
    elif data.linear.x < 0:
        curr_speed -= 1
示例#20
0
 def __init__(self):
     self.fw = front_wheels.Front_Wheels()
     self.bw = back_wheels.Back_Wheels()
     self.speed = 30
示例#21
0
from control.models import Recording
from control.utils import Capture

from picar import back_wheels, front_wheels
import picar

import json
import cv2
import git
import glob
import os
import logging

try:
    picar.setup()
    fw = front_wheels.Front_Wheels(debug=False, db=settings.CONFIG_FILE)
    bw = back_wheels.Back_Wheels(debug=False, db=settings.CONFIG_FILE)
    cam = camera.Camera(debug=False, db=settings.CONFIG_FILE)
    cam.ready()
    bw.ready()
    fw.ready()
    straight_angle = fw._straight_angle
    min_angle = fw._min_angle
    max_angle = fw._max_angle
except:
    fw = None
    bw = None
    cam = None
    straight_angle = 90
    min_angle = 45
    max_angle = 135
示例#22
0
 def __init__(self):
     self.fw = front_wheels.Front_Wheels()
     self.fw._angle = {'straight': 75, 'left': 32, 'right': 132}
     self.bw = back_wheels.Back_Wheels()
     self.speed = 40
示例#23
0
print("INIT")
picar.setup()

REFERENCES = [200, 200, 200, 200, 200]
# calibrate = True
calibrate = False
forward_speed = 80
backward_speed = 70
turning_angle = 40
dooms_day = False

max_off_track_count = 40

delay = 0.0005

fw = front_wheels.Front_Wheels(db='config')
bw = back_wheels.Back_Wheels(db='config')
lf = Line_Follower.Line_Follower()

lf.references = REFERENCES
fw.ready()
bw.ready()
fw.turning_max = 45

# Picar Ultrasonic init
UA = Ultrasonic_Avoidance.Ultrasonic_Avoidance(20)


# PICAR ORDERS
def order(value):
    if "SPEED" in value.upper():
class PiCarController:
    force_turning = 0  # 0 = random direction, 1 = force left, 2 = force right, 3 = orderdly

    fw = front_wheels.Front_Wheels(db='config')
    bw = back_wheels.Back_Wheels(db='config')
    fw.turning_max = 45

    forward_speed = 100
    backward_speed = 100

    back_distance = 10
    turn_distance = 20

    timeout = 10
    last_angle = 90
    last_dir = 0

    turning_angle = 8

    current_angle = 100
    moving = False
    turning = False

    def debug(self, func):
        print(func)
        print("is moving - {}".format(self.moving))
        print("is turning - {}".format(self.turning))

    def on_press(self, key):
        self.debug("on_press")
        if key in [Key.up, Key.down, Key.left, Key.right]:
            if key == Key.down and self.moving is False:
                self.moving = True
                print("down")
                self.bw.backward()
                self.bw.speed = self.backward_speed
            elif key == Key.up and self.moving is False:
                print("up")
                self.moving = True
                self.bw.forward()
                self.bw.speed = self.forward_speed
            elif key == Key.left and self.turning is False:
                self.turning = True
                print("left")
                if self.current_angle - self.turning_angle > 50:
                    self.current_angle -= self.turning_angle
                    self.fw.turn(self.current_angle)

            elif key == Key.right and self.turning is False:
                self.turning = True
                print("right")
                if self.current_angle + self.turning_angle < 150:
                    self.current_angle += self.turning_angle
                    self.fw.turn(self.current_angle)

    def on_release(self, key):
        self.debug("on_release")
        if key in [Key.up, Key.down, Key.left, Key.right]:
            if key == Key.down and self.moving is True:
                self.moving = False
                print("down - stop")
                self.bw.stop()
            elif key == Key.up and self.moving is True:
                self.moving = False
                print("up - stop")
                self.bw.stop()
            elif key == Key.left and self.turning is True:
                self.turning = False
                print("left - stop")

            elif key == Key.right and self.turning is True:
                self.turning = False
                print("right - stop")

        if key == Key.esc:
            # Stop listener
            return False
示例#25
0
hmx = 37
smn = 96
smx = 255
vmn = 186
vmx = 255

MIDDLE_TOLERANT = 5
PAN_ANGLE_MAX = 170
PAN_ANGLE_MIN = 10
TILT_ANGLE_MAX = 150
TILT_ANGLE_MIN = 70
FW_ANGLE_MAX = 90 + 30
FW_ANGLE_MIN = 90 - 30

bw = back_wheels.Back_Wheels(debug=True)
fw = front_wheels.Front_Wheels(debug=True)
cm = camera.Camera(debug=True)
picar.setup()

#fw.offset = 0
#pan_servo.offset = 10
#tilt_servo.offset = 0

bw.speed = 0
fw.turn(90)
cm.to_position(90, 90)

motor_speed = 90


def main():
from picar import back_wheels
import time
import picar

picar.setup()

REFERENCES = [200, 200, 200, 200, 200]
forward_speed = 80
backward_speed = 70
turning_angle = 40

max_off_track_count = 40

delay = 0.0005

fw = front_wheels.Front_Wheels(db="config")
bw = back_wheels.Back_Wheels(db="config")
lf = Line_Follower.Line_Follower()

lf.references = REFERENCES
fw.ready()
bw.ready()
fw.turning_max = 45
analogThreshold = 10


def straight_run():
    while True:
        bw.speed = 70
        bw.forward()
        fw.turn_straight()
示例#27
0
* Brand       : SunFounder
* E-mail      : [email protected]
* Website     : www.sunfounder.com
* Update      : Cavon    2016-09-13    New release
**********************************************************************
'''

from django.shortcuts import render_to_response
from driver import camera, stream
from picar import back_wheels, front_wheels
from django.http import HttpResponse
import picar

picar.setup()
db_file = "/home/pi/SunFounder_PiCar-V/remote_control/remote_control/driver/config"
fw = front_wheels.Front_Wheels(debug=False, db=db_file)
bw = back_wheels.Back_Wheels(debug=False, db=db_file)
cam = camera.Camera(debug=False, db=db_file)
cam.ready()
bw.ready()
fw.ready()
 
SPEED = 60
bw_status = 0

print stream.start()

def home(request):
	return render_to_response("base.html")

def run(request):
示例#28
0
* Update      : Cavon    2016-09-13    New release
**********************************************************************
'''

import picar

from .driver import camera
from .driver import stream
from django.http import HttpResponse
from django.shortcuts import render as render_to_response
from picar import back_wheels
from picar import front_wheels

picar.setup()
db_file = "/home/pi/SunFounder_PiCar-V/remote_control/remote_control/driver/config"
fw = front_wheels.Front_Wheels(debug=True, db=db_file)
bw = back_wheels.Back_Wheels(debug=True, db=db_file)
cam = camera.Camera(debug=True, db=db_file)
cam.ready()
bw.ready()
fw.ready()

SPEED = 60
bw_status = 0

print(stream.start())


def home(request):
    return render_to_response("base.html")