Skip to content

Commit e511530

Browse files
committed
Fix bug:
1. 修复了在循环播放时依然可以进行单次播放的bug
1 parent ab2f3c6 commit e511530

File tree

1 file changed

+40
-20
lines changed

1 file changed

+40
-20
lines changed

demo/drag_trial_teaching.py

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import serial.tools.list_ports
1010

1111
from pymycobot.mycobot import MyCobot
12+
from pymycobot.mecharm import MechArm
13+
from pymycobot.myarm import MyArm
1214

1315

1416
port: str
@@ -17,8 +19,29 @@
1719

1820

1921
def setup():
20-
print("")
2122
global port, mc
23+
24+
print("")
25+
26+
print("1 - MyCobot")
27+
print("2 - MechArm")
28+
print("3 - MyArm")
29+
_in = input("Please input 1 - 3 to choose:")
30+
robot_model = None
31+
if _in == "1":
32+
robot_model = MyCobot
33+
print("MyCobot\n")
34+
elif _in == "2":
35+
robot_model = MechArm
36+
print("MechArm\n")
37+
elif _in == "3":
38+
robot_model = MyArm
39+
print("MyArm\n")
40+
else:
41+
print("Please choose from 1 - 3.")
42+
print("Exiting...")
43+
exit()
44+
2245
plist = list(serial.tools.list_ports.comports())
2346
idx = 1
2447
for port in plist:
@@ -44,7 +67,8 @@ def setup():
4467
if f in ["y", "Y", "yes", "Yes"]:
4568
DEBUG = True
4669
# mc = MyCobot(port, debug=True)
47-
mc = MyCobot(port, baud, debug=DEBUG)
70+
mc = robot_model(port, baud, debug=DEBUG)
71+
mc.power_on()
4872

4973

5074
class Raw(object):
@@ -87,17 +111,15 @@ def record(self):
87111
self.recording = True
88112
#self.mc.set_fresh_mode(0)
89113
def _record():
90-
91-
92114
while self.recording:
93115
start_t = time.time()
94116
angles = self.mc.get_encoders()
95117
speeds = self.mc.get_servo_speeds()
96118
gripper_value = self.mc.get_encoder(7)
97119
interval_time = time.time() - start_t
98-
#print(angles)
99120
if angles:
100-
self.record_list.append([angles, speeds, gripper_value, interval_time])
121+
record = [angles, speeds, gripper_value, interval_time]
122+
self.record_list.append(record)
101123
# time.sleep(0.1)
102124
print("\r {}".format(time.time() - start_t), end="")
103125

@@ -114,29 +136,24 @@ def stop_record(self):
114136
def play(self):
115137
self.echo("Start play")
116138
i = 0
117-
for angles in self.record_list:
139+
for record in self.record_list:
140+
angles, speeds, gripper_value, interval_time = record
118141
#print(angles)
119-
self.mc.set_encoders_drag(angles[0],angles[1])
120-
self.mc.set_encoder(7, angles[2])
142+
self.mc.set_encoders_drag(angles, speeds)
143+
if len(record) == 7:
144+
self.mc.set_encoder(7, record[2])
121145
if i == 0:
122146
time.sleep(3)
123-
time.sleep(angles[-1])
147+
i+=1
148+
time.sleep(record[-1])
124149
self.echo("Finish play")
125150

126151
def loop_play(self):
127152
self.playing = True
128153

129154
def _loop():
130-
len_ = len(self.record_list)
131-
i = 0
132155
while self.playing:
133-
idx_ = i % len_
134-
i += 1
135-
self.mc.set_encoders_drag(self.record_list[idx_][0],self.record_list[idx_][1])
136-
self.mc.set_encoder(7, self.record_list[idx_][2])
137-
if idx_ == 0:
138-
time.sleep(3)
139-
time.sleep(self.record_list[idx_][-1])
156+
self.play()
140157

141158
self.echo("Start loop play.")
142159
self.play_t = threading.Thread(target=_loop, daemon=True)
@@ -193,7 +210,10 @@ def start(self):
193210
elif key == "c": # stop recorder
194211
self.stop_record()
195212
elif key == "p": # play
196-
self.play()
213+
if not self.playing:
214+
self.play()
215+
else:
216+
print("Already playing. Please wait till current play stop or stop loop play.")
197217
elif key == "P": # loop play
198218
if not self.playing:
199219
self.loop_play()

0 commit comments

Comments
 (0)