def setUpClass():

        VirtualJoystickTest.joystick0 = Joystick(MOTOR_JOYSTICK_ID)
        VirtualJoystickTest.motors = Wheelbase(left=LEFT_MOTOR_ID,
                                               right=RIGHT_MOTOR_ID)
        VirtualJoystickTest.motors.source = steering_mixer(
            VirtualJoystickTest.joystick0.values)
        #VirtualJoystickTest.motors.source_delay = 0.1

        VirtualJoystickTest.joystick1 = Joystick(PANTILT_JOYSTICK_ID)
        VirtualJoystickTest.pan_tilt = PanTilt(pan=PAN_SERVO_ID,
                                               tilt=TILT_SERVO_ID)
        VirtualJoystickTest.pan_tilt.source = scaled_pair(
            VirtualJoystickTest.joystick1.values, MAX_ANGLE, MIN_ANGLE,
            JOY_AXIS_MIN, JOY_AXIS_MAX)
        #VirtualJoystickTest.pan_tilt.source_delay = 0.1

        # Setup Selenium

        capabilities = DesiredCapabilities.CHROME
        capabilities['loggingPrefs'] = {'browser': 'ALL'}

        if VirtualJoystickTest.IS_CI_BUILD:
            username = environ["SAUCE_USERNAME"]
            access_key = environ["SAUCE_ACCESS_KEY"]
            capabilities["tunnel-identifier"] = environ["TRAVIS_JOB_NUMBER"]
            capabilities["build"] = environ["TRAVIS_BUILD_NUMBER"]
            capabilities["tags"] = [environ["TRAVIS_PYTHON_VERSION"], "CI"]
            hub_url = "%s:%s@localhost:4445" % (username, access_key)
            VirtualJoystickTest.driver = webdriver.Remote(
                desired_capabilities=capabilities,
                command_executor="http://%s/wd/hub" % hub_url)
        else:
            #DRIVER = webdriver.Safari()  # see: http://elementalselenium.com/tips/69-safari
            #DRIVER = webdriver.Chrome()   # see: https://sites.google.com/a/chromium.org/chromedriver/downloads
            VirtualJoystickTest.driver = webdriver.Chrome(
                desired_capabilities=capabilities)

        VirtualJoystickTest.driver.implicitly_wait(BROWSER_WAIT_SECONDS)
        VirtualJoystickTest.driver.maximize_window()
        VirtualJoystickTest.driver.get("http://localhost:8000/")
        VirtualJoystickTest.canvas = VirtualJoystickTest.driver.find_element_by_id(
            "camera_view")

        VirtualJoystickTest.fake_set_speed_called_values = [
            OccuranceRecorder(allow_repeating_items=False),
            OccuranceRecorder(allow_repeating_items=False)
        ]

        VirtualJoystickTest.fake_set_angle_called_values = [
            OccuranceRecorder(allow_repeating_items=False),
            OccuranceRecorder(allow_repeating_items=False)
        ]
Example #2
0
#!/usr/bin/python3

# see: https://github.com/CamJam-EduKit/EduKit3

from gpiozero import CamJamKitRobot
from picraftzero import Joystick, steering_mixer, scaled_pair, start

robot = CamJamKitRobot()
joystick = Joystick()

robot.source = scaled_pair(steering_mixer(joystick.values),
                           -1.0,
                           1.0,
                           input_min=-100,
                           input_max=100)

start()
Example #3
0
#!/usr/bin/python3

from picraftzero import Joystick, Wheelbase, steering_mixer, start

# Joystick axis range is:               (left/down) -100 .. 100 (right/up)
# Motors value range is:     (full speed backwards) -100 .. 100 (full speed forwards)

joystick = Joystick(
)  # use the first available controller (e.g. Rock Candy, XBox360) or web client
tiny4wd_motors = Wheelbase(
    left=1, right=0
)  # left,right = logical id of i2c motor (auto-detected Explorer pHAT or PiConZero)

# Connect the motor speeds (left, right) to the joysticks axes (x,y), via a 'steering mixer'
tiny4wd_motors.source = steering_mixer(joystick.values)

start()
Example #4
0
from picraftzero.config import get_config

config = get_config()
script_file = config.get('service', 'script', fallback=None)

if script_file:
    logger.info("Running user script: {}".format(script_file))
    with open(script_file) as f:
        code = compile(f.read(), script_file, 'exec')
        exec(code)
        # user script is expected to exit with an error code or 0, so shouldnt reach here
        exit(1)

# see the `pantilt.py` example for more info.

from picraftzero import Wheelbase, PanTilt, Joystick, steering_mixer, scaled_pair, start, filter_messages, MessageReceiver, join_values
joystick_right = Joystick(0)
joystick_left = Joystick(1)
messages = MessageReceiver(port=8001)

wheelbase = Wheelbase(left=1, right=0)
pan_tilt = PanTilt(pan=0, tilt=1)

wheelbase.source = steering_mixer(joystick_right.values)
pan_tilt.source = join_values(
    filter_messages(messages.values, type='PANTILT', id=0),
    scaled_pair(joystick_left.values, 180, 0, -100, 100))

if __name__ == '__main__':
    start()
Example #5
0
#!/usr/bin/python3

# Example of the experimental joypad button API, subject to change.

from picraftzero import Joystick, Button, start

joystick = Joystick()                   # use the first available controller's rightmost joystick (required)

button0 = Button(0)                     # attach some buttons by id
button1 = Button(1)
button2 = Button(2)
button3 = Button(3)


def button0_pressed():
    print('button0_pressed')

def button0_released():
    print('button0_released')

def button1_pressed():
    print('button1_pressed')

def button2_pressed():
    print('button2_pressed')

def button3_pressed():
    print('button3_pressed')

button0.when_pressed = button0_pressed
button0.when_released= button0_released