99import serial .tools .list_ports
1010
1111from pymycobot .mycobot import MyCobot
12+ from pymycobot .mecharm import MechArm
13+ from pymycobot .myarm import MyArm
1214
1315
1416port : str
1719
1820
1921def 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
5074class 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