mirror of
https://github.com/undera/pylgbst.git
synced 2020-11-18 19:37:26 -08:00
Improve vernie
This commit is contained in:
parent
cf7dee8f7b
commit
bb602dae98
@ -23,7 +23,7 @@ try:
|
||||
|
||||
with open(os.devnull, 'w') as fnull:
|
||||
subprocess.call("mplayer %s" % fname, shell=True, stderr=fnull, stdout=fnull)
|
||||
except:
|
||||
except BaseException:
|
||||
def say(text):
|
||||
sys.stdout.write("%s\n", text)
|
||||
|
||||
@ -33,27 +33,29 @@ forward = FORWARD = right = RIGHT = 1
|
||||
backward = BACKWARD = left = LEFT = -1
|
||||
straight = STRAIGHT = 0
|
||||
|
||||
SPEECH_LANG_MAP = {
|
||||
'en': {
|
||||
'ready': "Vernie the Robot is ready.",
|
||||
"commands help": "Available commands are: "
|
||||
"forward, backward, turn left, turn right, "
|
||||
"head left, head right, head straight and say",
|
||||
"finished": "Thank you! Robot is now turning off"
|
||||
},
|
||||
"ru": {
|
||||
"ready": "Робот Веернии 01 готов к работе",
|
||||
"type commands": "печатайте команды",
|
||||
"ok": "хорошо",
|
||||
"commands help": "Доступные команды это: вперёд, назад, поворот влево, поворот вправо, "
|
||||
"голову влево, голову вправо, голову прямо, скажи",
|
||||
"Finished": "Робот завершает работу. Спасибо!",
|
||||
"commands from file": "Исполняю команды из файла",
|
||||
}
|
||||
}
|
||||
|
||||
VERNIE_TO_MOTOR_DEGREES = 2.7
|
||||
|
||||
|
||||
class Vernie(MoveHub):
|
||||
SPEECH_LANG_MAP = {
|
||||
'en': {
|
||||
'ready': "Vernie the Robot is ready.",
|
||||
"commands help": "Available commands are: "
|
||||
"forward, backward, turn left, turn right, "
|
||||
"head left, head right, head straight and say",
|
||||
"finished": "Thank you! Robot is now turning off"
|
||||
},
|
||||
"ru": {
|
||||
"ready": "Робот Веернии 01 готов к работе",
|
||||
"type commands": "печатайте команды",
|
||||
"ok": "хорошо",
|
||||
"commands help": "Доступные команды это: вперёд, назад, поворот влево, поворот вправо, "
|
||||
"голову влево, голову вправо, голову прямо, скажи",
|
||||
"Finished": "Робот завершает работу. Спасибо!",
|
||||
"commands from file": "Исполняю команды из файла",
|
||||
}
|
||||
}
|
||||
|
||||
def __init__(self, language='en'):
|
||||
self.language = language
|
||||
try:
|
||||
@ -79,8 +81,8 @@ class Vernie(MoveHub):
|
||||
time.sleep(1)
|
||||
|
||||
def say(self, phrase):
|
||||
if phrase in self.SPEECH_LANG_MAP[self.language]:
|
||||
phrase = self.SPEECH_LANG_MAP[self.language][phrase]
|
||||
if phrase in SPEECH_LANG_MAP[self.language]:
|
||||
phrase = SPEECH_LANG_MAP[self.language][phrase]
|
||||
say(phrase)
|
||||
|
||||
def _external_motor_data(self, data):
|
||||
@ -101,7 +103,7 @@ class Vernie(MoveHub):
|
||||
def turn(self, direction, degrees=90, speed=0.3):
|
||||
self.head(STRAIGHT, speed=1)
|
||||
self.head(direction, 35, 1)
|
||||
self.motor_AB.angled(int(2.7 * degrees), speed * direction, -speed * direction)
|
||||
self.motor_AB.angled(int(VERNIE_TO_MOTOR_DEGREES * degrees), speed * direction, -speed * direction)
|
||||
self.head(STRAIGHT, speed=1)
|
||||
|
||||
def move(self, direction, distance=1, speed=0.3):
|
||||
@ -128,14 +130,14 @@ class Vernie(MoveHub):
|
||||
elif cmd[0] in ("forward", "вперёд", "вперед"):
|
||||
try:
|
||||
dist = int(cmd[-1])
|
||||
except:
|
||||
except BaseException:
|
||||
dist = 1
|
||||
confirm(cmd)
|
||||
self.move(FORWARD, distance=dist)
|
||||
elif cmd[0] in ("backward", "назад"):
|
||||
try:
|
||||
dist = int(cmd[-1])
|
||||
except:
|
||||
except BaseException:
|
||||
dist = 1
|
||||
confirm(cmd)
|
||||
self.move(BACKWARD, distance=dist)
|
||||
|
@ -66,8 +66,8 @@ try:
|
||||
messageString = message.decode("utf-8")
|
||||
a, b, c = decode_xml(messageString)
|
||||
divider = 2.0 if c > 0 else -2.0
|
||||
sa = int(10 * (c + b / divider)) / 10.0
|
||||
sb = int(10 * (c - b / divider)) / 10.0
|
||||
sa = round(c + b / divider, 2)
|
||||
sb = round(c - b / divider, 2)
|
||||
logging.info("SpeedA=%s, SpeedB=%s", sa, sb)
|
||||
robot.motor_AB.constant(sa, sb, async=True)
|
||||
time.sleep(0.5)
|
||||
|
Loading…
x
Reference in New Issue
Block a user