Wii Remote basis Steuerung
This commit is contained in:
@@ -27,6 +27,7 @@ class Iot_car():
|
|||||||
speed_cur = 0
|
speed_cur = 0
|
||||||
speed_last = 0
|
speed_last = 0
|
||||||
angle_cur = 0
|
angle_cur = 0
|
||||||
|
speed_cruise_control = 0 # m/s but only positive
|
||||||
|
|
||||||
motor = None
|
motor = None
|
||||||
streeting = None
|
streeting = None
|
||||||
@@ -37,7 +38,8 @@ class Iot_car():
|
|||||||
import servo_ctrl
|
import servo_ctrl
|
||||||
self.motor = Motor(1)
|
self.motor = Motor(1)
|
||||||
self.streeting = Steering(2)
|
self.streeting = Steering(2)
|
||||||
|
|
||||||
|
# for keyboard control
|
||||||
def __testmode_accelerate(self):
|
def __testmode_accelerate(self):
|
||||||
calc_acc = calculate_acceleration(self.speed_cur, self.acc)
|
calc_acc = calculate_acceleration(self.speed_cur, self.acc)
|
||||||
self.speed_last = self.speed_cur
|
self.speed_last = self.speed_cur
|
||||||
@@ -67,6 +69,45 @@ class Iot_car():
|
|||||||
else:
|
else:
|
||||||
self.__accelerate(speed)
|
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):
|
def reset_streeting(self):
|
||||||
self.set_angle(0)
|
self.set_angle(0)
|
||||||
|
|
||||||
@@ -90,6 +131,7 @@ class Iot_car():
|
|||||||
self.streeting.set_angle(angle)
|
self.streeting.set_angle(angle)
|
||||||
|
|
||||||
def stop(self):
|
def stop(self):
|
||||||
|
self.speed_last = self.speed_cur
|
||||||
self.speed_cur = 0
|
self.speed_cur = 0
|
||||||
self.angle_cur = 0
|
self.angle_cur = 0
|
||||||
|
|
||||||
|
|||||||
@@ -183,10 +183,10 @@ if __name__ == "__main__":
|
|||||||
if keystates['accelerate']: # and v_step:
|
if keystates['accelerate']: # and v_step:
|
||||||
# Beschleunigen
|
# Beschleunigen
|
||||||
v_step = False
|
v_step = False
|
||||||
car.accelerate(speed=1)
|
car.accelerate(speed=11)
|
||||||
if keystates['decelerate']: # and v_step:
|
if keystates['decelerate']: # and v_step:
|
||||||
# abbremsen
|
# abbremsen
|
||||||
car.accelerate(speed=-1)
|
car.accelerate(speed=-11)
|
||||||
if keystates['accelerate_angle_right']:
|
if keystates['accelerate_angle_right']:
|
||||||
car.streeting_right()
|
car.streeting_right()
|
||||||
if keystates['accelerate_angle_left']:
|
if keystates['accelerate_angle_left']:
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#######################################################################
|
#######################################################################
|
||||||
|
|
||||||
from linuxWiimoteLib import *
|
from linuxWiimoteLib import *
|
||||||
|
frim iot_car import Iot_car
|
||||||
|
|
||||||
# initialize wiimote
|
# initialize wiimote
|
||||||
wiimote = Wiimote()
|
wiimote = Wiimote()
|
||||||
@@ -16,6 +17,22 @@ device = ('', '')
|
|||||||
|
|
||||||
connected = False
|
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:
|
try:
|
||||||
print "Press any key on wiimote to connect"
|
print "Press any key on wiimote to connect"
|
||||||
while (not connected):
|
while (not connected):
|
||||||
@@ -33,6 +50,37 @@ try:
|
|||||||
wiimote.calibrateAccelerometer()
|
wiimote.calibrateAccelerometer()
|
||||||
sleep(0.1)
|
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:
|
except KeyboardInterrupt:
|
||||||
print "Exiting through keyboard event (CTRL + C)"
|
print "Exiting through keyboard event (CTRL + C)"
|
||||||
exit(wiimote)
|
exit(wiimote)
|
||||||
|
|||||||
Reference in New Issue
Block a user