1
- import math
2
-
3
1
import gc
4
2
5
3
from uart import uart
@@ -193,8 +191,7 @@ def get_wheels_speed(self, unit: str = 'rpm') -> (float, float):
193
191
Returns the speed of the wheels
194
192
:return: left_wheel_speed, right_wheel_speed
195
193
"""
196
- return (convert_rotational_speed (self .left_wheel .get_speed (), 'rpm' , unit ),
197
- convert_rotational_speed (self .right_wheel .get_speed (), 'rpm' , unit ))
194
+ return self .left_wheel .get_speed (unit ), self .right_wheel .get_speed (unit )
198
195
199
196
def set_wheels_speed (self , left_speed : float , right_speed : float , unit : str = 'rpm' ):
200
197
"""
@@ -204,8 +201,15 @@ def set_wheels_speed(self, left_speed: float, right_speed: float, unit: str = 'r
204
201
:param unit: the speed unit of measurement (default: 'rpm')
205
202
:return:
206
203
"""
207
- self .packeter .packetC2F (ord ('J' ), convert_rotational_speed (left_speed , unit , 'rpm' ),
208
- convert_rotational_speed (right_speed , unit , 'rpm' ))
204
+
205
+ if unit == '%' :
206
+ left_speed = (left_speed / 100 )* MOTOR_MAX_RPM
207
+ right_speed = (right_speed / 100 )* MOTOR_MAX_RPM
208
+ else :
209
+ left_speed = convert_rotational_speed (left_speed , unit , 'rpm' )
210
+ right_speed = convert_rotational_speed (right_speed , unit , 'rpm' )
211
+
212
+ self .packeter .packetC2F (ord ('J' ), left_speed , right_speed )
209
213
uart .write (self .packeter .msg [0 :self .packeter .msg_size ])
210
214
211
215
def set_wheels_position (self , left_angle : float , right_angle : float , unit : str = 'deg' ):
@@ -276,7 +280,10 @@ def drive(self, linear_velocity: float, angular_velocity: float, linear_unit: st
276
280
:return:
277
281
"""
278
282
linear_velocity = convert_speed (linear_velocity , linear_unit , 'mm/s' )
279
- angular_velocity = convert_rotational_speed (angular_velocity , angular_unit , 'deg/s' )
283
+ if angular_unit == '%' :
284
+ angular_velocity = (angular_velocity / 100 )* ROBOT_MAX_DEG_S
285
+ else :
286
+ angular_velocity = convert_rotational_speed (angular_velocity , angular_unit , 'deg/s' )
280
287
self .packeter .packetC2F (ord ('V' ), linear_velocity , angular_velocity )
281
288
uart .write (self .packeter .msg [0 :self .packeter .msg_size ])
282
289
@@ -287,8 +294,12 @@ def get_drive_speed(self, linear_unit: str = 'mm/s', angular_unit: str = 'deg/s'
287
294
:param angular_unit: output angular velocity unit of meas
288
295
:return: linear_velocity, angular_velocity
289
296
"""
290
- return (convert_speed (self .linear_velocity , 'mm/s' , linear_unit ),
291
- convert_rotational_speed (self .angular_velocity , 'deg/s' , angular_unit ))
297
+ if angular_unit == '%' :
298
+ angular_velocity = (self .angular_velocity / ROBOT_MAX_DEG_S )* 100
299
+ else :
300
+ angular_velocity = convert_rotational_speed (self .angular_velocity , 'deg/s' , angular_unit )
301
+
302
+ return convert_speed (self .linear_velocity , 'mm/s' , linear_unit ), angular_velocity
292
303
293
304
def reset_pose (self , x : float , y : float , theta : float , distance_unit : str = 'cm' , angle_unit : str = 'deg' ):
294
305
"""
@@ -606,8 +617,13 @@ def set_speed(self, velocity: float, unit: str = 'rpm'):
606
617
:param unit: the unit of measurement
607
618
:return:
608
619
"""
609
- self ._packeter .packetC2B1F (ord ('W' ), self ._label & 0xFF , ord ('V' ),
610
- convert_rotational_speed (velocity , unit , 'rpm' ))
620
+
621
+ if unit == '%' :
622
+ velocity = (velocity / 100 )* MOTOR_MAX_RPM
623
+ else :
624
+ velocity = convert_rotational_speed (velocity , unit , 'rpm' )
625
+
626
+ self ._packeter .packetC2B1F (ord ('W' ), self ._label & 0xFF , ord ('V' ), velocity )
611
627
uart .write (self ._packeter .msg [0 :self ._packeter .msg_size ])
612
628
613
629
def get_speed (self , unit : str = 'rpm' ) -> float :
@@ -616,7 +632,11 @@ def get_speed(self, unit: str = 'rpm') -> float:
616
632
:param unit: the unit of the output speed
617
633
:return:
618
634
"""
619
- return convert_rotational_speed (self ._speed , 'rpm' , unit )
635
+ if unit == '%' :
636
+ speed = (self ._speed / MOTOR_MAX_RPM )* 100
637
+ else :
638
+ speed = convert_rotational_speed (self ._speed , 'rpm' , unit )
639
+ return speed
620
640
621
641
def get_position (self , unit : str = 'deg' ) -> float :
622
642
"""
0 commit comments