Update hexapod.py

master
Zhengyu Peng 3 years ago
parent 4ac7d97fad
commit 6199bb77c4

@ -1,6 +1,6 @@
#!python #!python
# #
# 2021 Zhengyu Peng # 2021 - PRESENT Zhengyu Peng
# Website: https://zpeng.me # Website: https://zpeng.me
# #
# ` ` # ` `
@ -51,6 +51,29 @@ from btserver import BluetoothServer
class Hexapod(Thread): class Hexapod(Thread):
CMD_STANDBY = 'standby'
CMD_LAYDOWN = 'laydown'
CMD_FORWARD = 'forward'
CMD_BACKWARD = 'backward'
CMD_FASTFORWARD = 'fastforward'
CMD_FASTBACKWARD = 'fastbackward'
CMD_SHIFTLEFT = 'shiftleft'
CMD_SHIFTRIGHT = 'shiftright'
CMD_TURNLEFT = 'turnleft'
CMD_TURNRIGHT = 'turnright'
CMD_CLIMBFORWARD = 'climbforward'
CMD_CLIMBBACKWARD = 'climbbackward'
CMD_ROTATEX = 'rotatex'
CMD_ROTATEY = 'rotatey'
CMD_ROTATEZ = 'rotatez'
CMD_TWIST = 'twist'
def __init__(self, in_cmd_queue): def __init__(self, in_cmd_queue):
Thread.__init__(self) Thread.__init__(self)
@ -231,13 +254,14 @@ class Hexapod(Thread):
self.leg_3.move_junctions(angles[3, :]) self.leg_3.move_junctions(angles[3, :])
try: try:
data = self.cmd_queue.get(block=False) cmd_string = self.cmd_queue.get(block=False)
print('interrput') print('interrput')
print(data) print(cmd_string)
except Empty: except Empty:
time.sleep(self.interval) time.sleep(self.interval)
pass pass
else: else:
data = cmd_string.split(':')[-2]
if data == 'standby': if data == 'standby':
self.current_motion = None self.current_motion = None
self.standby() self.standby()
@ -330,16 +354,54 @@ class Hexapod(Thread):
return angles return angles
def cmd_handler(self, cmd_string):
data = cmd_string.split(':')[-2]
if data == self.CMD_STANDBY:
self.current_motion = None
self.standby()
elif data == self.CMD_FORWARD:
self.current_motion = self.forward_path
elif data == self.CMD_BACKWARD:
self.current_motion = self.backward_path
elif data == self.CMD_FASTFORWARD:
self.current_motion = self.fastforward_path
elif data == self.CMD_FASTBACKWARD:
self.current_motion = self.fastbackward_path
elif data == self.CMD_TURNLEFT:
self.current_motion = self.leftturn_path
elif data == self.CMD_TURNRIGHT:
self.current_motion = self.rightturn_path
elif data == self.CMD_SHIFTLEFT:
self.current_motion = self.shiftleft_path
elif data == self.CMD_SHIFTRIGHT:
self.current_motion = self.shiftright_path
elif data == self.CMD_CLIMBFORWARD:
self.current_motion = self.climb_path
elif data == self.CMD_CLIMBBACKWARD:
self.current_motion = self.climb_path
elif data == self.CMD_ROTATEX:
self.current_motion = self.rotatex_path
elif data == self.CMD_ROTATEY:
self.current_motion = self.rotatey_path
elif data == self.CMD_ROTATEZ:
self.current_motion = self.rotatez_path
elif data == self.CMD_TWIST:
self.current_motion = self.twist_path
else:
self.current_motion = None
self.cmd_queue.task_done()
def run(self): def run(self):
while True: while True:
if self.current_motion is None: if self.current_motion is None:
try: try:
data = self.cmd_queue.get(block=False) cmd_string = self.cmd_queue.get(block=False)
print(data) print(cmd_string)
except Empty: except Empty:
time.sleep(self.interval) time.sleep(self.interval)
pass pass
else: else:
data = cmd_string.split(':')[-2]
if data == 'standby': if data == 'standby':
self.current_motion = None self.current_motion = None
self.standby() self.standby()

Loading…
Cancel
Save