Wii Remote basis Steuerung
This commit is contained in:
@@ -27,6 +27,7 @@ class Iot_car():
|
||||
speed_cur = 0
|
||||
speed_last = 0
|
||||
angle_cur = 0
|
||||
speed_cruise_control = 0 # m/s but only positive
|
||||
|
||||
motor = None
|
||||
streeting = None
|
||||
@@ -38,6 +39,7 @@ class Iot_car():
|
||||
self.motor = Motor(1)
|
||||
self.streeting = Steering(2)
|
||||
|
||||
# for keyboard control
|
||||
def __testmode_accelerate(self):
|
||||
calc_acc = calculate_acceleration(self.speed_cur, self.acc)
|
||||
self.speed_last = self.speed_cur
|
||||
@@ -67,6 +69,45 @@ class Iot_car():
|
||||
else:
|
||||
self.__accelerate(speed)
|
||||
|
||||
# for wii remote
|
||||
def cruise_control_increase(self):
|
||||
s = min(self.V_MAX, self.speed_cruise_control + 2.75)
|
||||
if s < 0:
|
||||
self.speed_cruise_control = 0
|
||||
else:
|
||||
self.speed_cruise_control = s
|
||||
|
||||
def cruise_control_decrease(self):
|
||||
s = min(self.V_MAX, self.speed_cruise_control - 2.75)
|
||||
if s < 0:
|
||||
self.speed_cruise_control = 0
|
||||
else:
|
||||
self.speed_cruise_control = s
|
||||
|
||||
def def cruise_control_reset(self):
|
||||
self.speed_cruise_control = 0
|
||||
|
||||
def activate_cruise_control_forward(self):
|
||||
self.speed_last = self.speed_cur
|
||||
self.speed_cur = self.speed_cruise_control
|
||||
self.is_testmode_servo_active = True
|
||||
if not is_testmode_activated:
|
||||
self.__accelerate(self.speed_cruise_control)
|
||||
|
||||
def activate_cruise_control_backward(self):
|
||||
self.speed_last = self.speed_cur
|
||||
self.speed_cur = -1 * self.speed_cruise_control
|
||||
self.is_testmode_servo_active = True
|
||||
if not is_testmode_activated:
|
||||
self.__accelerate(-1 * self.speed_cruise_control)
|
||||
|
||||
def deactivate_cruise_control(self):
|
||||
self.speed_last = self.speed_cur
|
||||
self.speed_cur = 0
|
||||
self.is_testmode_servo_active = False
|
||||
if not is_testmode_activated:
|
||||
self.__accelerate(0)
|
||||
|
||||
def reset_streeting(self):
|
||||
self.set_angle(0)
|
||||
|
||||
@@ -90,6 +131,7 @@ class Iot_car():
|
||||
self.streeting.set_angle(angle)
|
||||
|
||||
def stop(self):
|
||||
self.speed_last = self.speed_cur
|
||||
self.speed_cur = 0
|
||||
self.angle_cur = 0
|
||||
|
||||
|
||||
@@ -183,10 +183,10 @@ if __name__ == "__main__":
|
||||
if keystates['accelerate']: # and v_step:
|
||||
# Beschleunigen
|
||||
v_step = False
|
||||
car.accelerate(speed=1)
|
||||
car.accelerate(speed=11)
|
||||
if keystates['decelerate']: # and v_step:
|
||||
# abbremsen
|
||||
car.accelerate(speed=-1)
|
||||
car.accelerate(speed=-11)
|
||||
if keystates['accelerate_angle_right']:
|
||||
car.streeting_right()
|
||||
if keystates['accelerate_angle_left']:
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#######################################################################
|
||||
|
||||
from linuxWiimoteLib import *
|
||||
frim iot_car import Iot_car
|
||||
|
||||
# initialize wiimote
|
||||
wiimote = Wiimote()
|
||||
@@ -16,6 +17,22 @@ device = ('', '')
|
||||
|
||||
connected = False
|
||||
|
||||
car = Iot_car(testmode=True)
|
||||
|
||||
# AUFGABE d
|
||||
def set_led(remote):
|
||||
global car
|
||||
# percent
|
||||
p = car.speed_cruise_control / car.V_MAX
|
||||
if p > 0 and p <= 0.25:
|
||||
remote.SetLEDs(True, False, False, False)
|
||||
elif p > 0.25 and p <= 0.5:
|
||||
remote.SetLEDs(True, True, False, False)
|
||||
elif p > 0.5 and p <= 0.75:
|
||||
remote.SetLEDs(True, True, True, False)
|
||||
else:
|
||||
remote.SetLEDs(True, True, True, True)
|
||||
|
||||
try:
|
||||
print "Press any key on wiimote to connect"
|
||||
while (not connected):
|
||||
@@ -33,6 +50,37 @@ try:
|
||||
wiimote.calibrateAccelerometer()
|
||||
sleep(0.1)
|
||||
|
||||
# Set acceleration and deceleration
|
||||
if wiistate.ButtonState.One:
|
||||
car.activate_cruise_control_forward()
|
||||
else:
|
||||
car.deactivate_cruise_control()
|
||||
if wiistate.ButtonState.Two:
|
||||
car.activate_cruise_control_backward()
|
||||
else:
|
||||
car.deactivate_cruise_control()
|
||||
|
||||
# streeting
|
||||
if wiistate.ButtonState.Up:
|
||||
# streeting left
|
||||
car.car.streeting_left()
|
||||
if wiistate.ButtonState.Down:
|
||||
# streeting right
|
||||
car.streeting_right()
|
||||
if not wiistate.ButtonState.Down and not wiistate.ButtonState.Up:
|
||||
car.reset_streeting()
|
||||
|
||||
# reset button
|
||||
if wiistate.ButtonState.Minus:
|
||||
car.reset()
|
||||
car.cruise_control_reset()
|
||||
|
||||
# set led states
|
||||
set_led(wiimote)
|
||||
|
||||
delta = 1.0 / 50
|
||||
print("({},{} --> {})".format(car.speed_cur, car.angle_cur, (car.speed_cur - car.speed_last) / delta)) + ", Servo_active: " + str(car.is_testmode_servo_active) + "CC Speed: " str(car.speed_cruise_control)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print "Exiting through keyboard event (CTRL + C)"
|
||||
exit(wiimote)
|
||||
|
||||
Reference in New Issue
Block a user