Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 33a98f9

Browse files
committedFeb 26, 2024
feat: members as private
1 parent 27cc769 commit 33a98f9

File tree

1 file changed

+137
-126
lines changed

1 file changed

+137
-126
lines changed
 

‎arduino_alvik.py

Lines changed: 137 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -21,53 +21,53 @@ class ArduinoAlvik:
2121
_update_thread_id = None
2222

2323
def __new__(cls):
24-
if not hasattr(cls, 'instance'):
25-
cls.instance = super(ArduinoAlvik, cls).__new__(cls)
26-
return cls.instance
24+
if not hasattr(cls, '_instance'):
25+
cls._instance = super(ArduinoAlvik, cls).__new__(cls)
26+
return cls._instance
2727

2828
def __init__(self):
29-
self.packeter = ucPack(200)
30-
self.left_wheel = _ArduinoAlvikWheel(self.packeter, ord('L'))
31-
self.right_wheel = _ArduinoAlvikWheel(self.packeter, ord('R'))
32-
self.led_state = [None]
33-
self.left_led = _ArduinoAlvikRgbLed(self.packeter, 'left', self.led_state,
29+
self._packeter = ucPack(200)
30+
self.left_wheel = _ArduinoAlvikWheel(self._packeter, ord('L'))
31+
self.right_wheel = _ArduinoAlvikWheel(self._packeter, ord('R'))
32+
self._led_state = [None]
33+
self.left_led = _ArduinoAlvikRgbLed(self._packeter, 'left', self._led_state,
3434
rgb_mask=[0b00000100, 0b00001000, 0b00010000])
35-
self.right_led = _ArduinoAlvikRgbLed(self.packeter, 'right', self.led_state,
35+
self.right_led = _ArduinoAlvikRgbLed(self._packeter, 'right', self._led_state,
3636
rgb_mask=[0b00100000, 0b01000000, 0b10000000])
37-
self.battery_perc = None
38-
self.touch_bits = None
39-
self.behaviour = None
40-
self.red = None
41-
self.green = None
42-
self.blue = None
37+
self._battery_perc = None
38+
self._touch_byte = None
39+
self._behaviour = None
40+
self._red = None
41+
self._green = None
42+
self._blue = None
4343
self._white_cal = None
4444
self._black_cal = None
45-
self.left_line = None
46-
self.center_line = None
47-
self.right_line = None
48-
self.roll = None
49-
self.pitch = None
50-
self.yaw = None
51-
self.x = None
52-
self.y = None
53-
self.theta = None
54-
self.ax = None
55-
self.ay = None
56-
self.az = None
57-
self.gx = None
58-
self.gy = None
59-
self.gz = None
60-
self.left_tof = None
61-
self.center_left_tof = None
62-
self.center_tof = None
63-
self.center_right_tof = None
64-
self.right_tof = None
65-
self.top_tof = None
66-
self.bottom_tof = None
67-
self.linear_velocity = None
68-
self.angular_velocity = None
69-
self.last_ack = ''
70-
self.version = [None, None, None]
45+
self._left_line = None
46+
self._center_line = None
47+
self._right_line = None
48+
self._roll = None
49+
self._pitch = None
50+
self._yaw = None
51+
self._x = None
52+
self._y = None
53+
self._theta = None
54+
self._ax = None
55+
self._ay = None
56+
self._az = None
57+
self._gx = None
58+
self._gy = None
59+
self._gz = None
60+
self._left_tof = None
61+
self._center_left_tof = None
62+
self._center_tof = None
63+
self._center_right_tof = None
64+
self._right_tof = None
65+
self._top_tof = None
66+
self._bottom_tof = None
67+
self._linear_velocity = None
68+
self._angular_velocity = None
69+
self._angular_velocity = ''
70+
self._version = [None, None, None]
7171

7272
@staticmethod
7373
def is_on() -> bool:
@@ -191,7 +191,7 @@ def _wait_for_ack(self) -> None:
191191
Waits until receives 0x00 ack from robot
192192
:return:
193193
"""
194-
while self.last_ack != 0x00:
194+
while self._angular_velocity != 0x00:
195195
sleep_ms(20)
196196

197197
@staticmethod
@@ -231,12 +231,12 @@ def is_target_reached(self) -> bool:
231231
It also responds with an ack received message
232232
:return:
233233
"""
234-
if self.last_ack != ord('M') and self.last_ack != ord('R'):
234+
if self._angular_velocity != ord('M') and self._angular_velocity != ord('R'):
235235
sleep_ms(50)
236236
return False
237237
else:
238-
self.packeter.packetC1B(ord('X'), ord('K'))
239-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
238+
self._packeter.packetC1B(ord('X'), ord('K'))
239+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
240240
sleep_ms(200)
241241
return True
242242

@@ -246,8 +246,8 @@ def set_behaviour(self, behaviour: int):
246246
:param behaviour: behaviour code
247247
:return:
248248
"""
249-
self.packeter.packetC1B(ord('B'), behaviour & 0xFF)
250-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
249+
self._packeter.packetC1B(ord('B'), behaviour & 0xFF)
250+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
251251

252252
def rotate(self, angle: float, unit: str = 'deg', blocking: bool = True):
253253
"""
@@ -259,8 +259,8 @@ def rotate(self, angle: float, unit: str = 'deg', blocking: bool = True):
259259
"""
260260
angle = convert_angle(angle, unit, 'deg')
261261
sleep_ms(200)
262-
self.packeter.packetC1F(ord('R'), angle)
263-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
262+
self._packeter.packetC1F(ord('R'), angle)
263+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
264264
if blocking:
265265
self._wait_for_target()
266266

@@ -274,8 +274,8 @@ def move(self, distance: float, unit: str = 'cm', blocking: bool = True):
274274
"""
275275
distance = convert_distance(distance, unit, 'mm')
276276
sleep_ms(200)
277-
self.packeter.packetC1F(ord('G'), distance)
278-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
277+
self._packeter.packetC1F(ord('G'), distance)
278+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
279279
if blocking:
280280
self._wait_for_target()
281281

@@ -293,8 +293,8 @@ def stop(self):
293293
# stop the update thrad
294294
self._stop_update_thread()
295295

296-
# delete instance
297-
del self.__class__.instance
296+
# delete _instance
297+
del self.__class__._instance
298298
gc.collect()
299299

300300
@staticmethod
@@ -333,8 +333,8 @@ def set_wheels_speed(self, left_speed: float, right_speed: float, unit: str = 'r
333333
left_speed = convert_rotational_speed(left_speed, unit, 'rpm')
334334
right_speed = convert_rotational_speed(right_speed, unit, 'rpm')
335335

336-
self.packeter.packetC2F(ord('J'), left_speed, right_speed)
337-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
336+
self._packeter.packetC2F(ord('J'), left_speed, right_speed)
337+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
338338

339339
def set_wheels_position(self, left_angle: float, right_angle: float, unit: str = 'deg'):
340340
"""
@@ -344,9 +344,9 @@ def set_wheels_position(self, left_angle: float, right_angle: float, unit: str =
344344
:param unit: the speed unit of measurement (default: 'rpm')
345345
:return:
346346
"""
347-
self.packeter.packetC2F(ord('A'), convert_angle(left_angle, unit, 'deg'),
347+
self._packeter.packetC2F(ord('A'), convert_angle(left_angle, unit, 'deg'),
348348
convert_angle(right_angle, unit, 'deg'))
349-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
349+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
350350

351351
def get_wheels_position(self, unit: str = 'deg') -> (float, float):
352352
"""
@@ -363,36 +363,36 @@ def get_orientation(self) -> (float, float, float):
363363
:return: roll, pitch, yaw
364364
"""
365365

366-
return self.roll, self.pitch, self.yaw
366+
return self._roll, self._pitch, self._yaw
367367

368368
def get_accelerations(self) -> (float, float, float):
369369
"""
370370
Returns the 3-axial acceleration of the IMU
371371
:return: ax, ay, az
372372
"""
373-
return self.ax, self.ay, self.az
373+
return self._ax, self._ay, self._az
374374

375375
def get_gyros(self) -> (float, float, float):
376376
"""
377377
Returns the 3-axial angular acceleration of the IMU
378378
:return: gx, gy, gz
379379
"""
380-
return self.gx, self.gy, self.gz
380+
return self._gx, self._gy, self._gz
381381

382382
def get_imu(self) -> (float, float, float, float, float, float):
383383
"""
384384
Returns all the IMUs readouts
385385
:return: ax, ay, az, gx, gy, gz
386386
"""
387-
return self.ax, self.ay, self.az, self.gx, self.gy, self.gz
387+
return self._ax, self._ay, self._az, self._gx, self._gy, self._gz
388388

389389
def get_line_sensors(self) -> (int, int, int):
390390
"""
391391
Returns the line sensors readout
392392
:return: left_line, center_line, right_line
393393
"""
394394

395-
return self.left_line, self.center_line, self.right_line
395+
return self._left_line, self._center_line, self._right_line
396396

397397
def drive(self, linear_velocity: float, angular_velocity: float, linear_unit: str = 'cm/s',
398398
angular_unit: str = 'deg/s'):
@@ -409,8 +409,8 @@ def drive(self, linear_velocity: float, angular_velocity: float, linear_unit: st
409409
angular_velocity = (angular_velocity/100)*ROBOT_MAX_DEG_S
410410
else:
411411
angular_velocity = convert_rotational_speed(angular_velocity, angular_unit, 'deg/s')
412-
self.packeter.packetC2F(ord('V'), linear_velocity, angular_velocity)
413-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
412+
self._packeter.packetC2F(ord('V'), linear_velocity, angular_velocity)
413+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
414414

415415
def brake(self):
416416
"""
@@ -427,11 +427,11 @@ def get_drive_speed(self, linear_unit: str = 'cm/s', angular_unit: str = 'deg/s'
427427
:return: linear_velocity, angular_velocity
428428
"""
429429
if angular_unit == '%':
430-
angular_velocity = (self.angular_velocity/ROBOT_MAX_DEG_S)*100
430+
angular_velocity = (self._angular_velocity/ROBOT_MAX_DEG_S)*100
431431
else:
432-
angular_velocity = convert_rotational_speed(self.angular_velocity, 'deg/s', angular_unit)
432+
angular_velocity = convert_rotational_speed(self._angular_velocity, 'deg/s', angular_unit)
433433

434-
return convert_speed(self.linear_velocity, 'mm/s', linear_unit), angular_velocity
434+
return convert_speed(self._linear_velocity, 'mm/s', linear_unit), angular_velocity
435435

436436
def reset_pose(self, x: float, y: float, theta: float, distance_unit: str = 'cm', angle_unit: str = 'deg'):
437437
"""
@@ -446,8 +446,8 @@ def reset_pose(self, x: float, y: float, theta: float, distance_unit: str = 'cm'
446446
x = convert_distance(x, distance_unit, 'mm')
447447
y = convert_distance(y, distance_unit, 'mm')
448448
theta = convert_angle(theta, angle_unit, 'deg')
449-
self.packeter.packetC3F(ord('Z'), x, y, theta)
450-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
449+
self._packeter.packetC3F(ord('Z'), x, y, theta)
450+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
451451
sleep_ms(1000)
452452

453453
def get_pose(self, distance_unit: str = 'cm', angle_unit: str = 'deg') -> (float, float, float):
@@ -457,9 +457,9 @@ def get_pose(self, distance_unit: str = 'cm', angle_unit: str = 'deg') -> (float
457457
:param angle_unit: unit of theta output
458458
:return: x, y, theta
459459
"""
460-
return (convert_distance(self.x, 'mm', distance_unit),
461-
convert_distance(self.y, 'mm', distance_unit),
462-
convert_angle(self.theta, 'deg', angle_unit))
460+
return (convert_distance(self._x, 'mm', distance_unit),
461+
convert_distance(self._y, 'mm', distance_unit),
462+
convert_angle(self._theta, 'deg', angle_unit))
463463

464464
def set_servo_positions(self, a_position: int, b_position: int):
465465
"""
@@ -468,19 +468,19 @@ def set_servo_positions(self, a_position: int, b_position: int):
468468
:param b_position: position of B servomotor (0-180)
469469
:return:
470470
"""
471-
self.packeter.packetC2B(ord('S'), a_position & 0xFF, b_position & 0xFF)
472-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
471+
self._packeter.packetC2B(ord('S'), a_position & 0xFF, b_position & 0xFF)
472+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
473473

474474
def get_ack(self):
475475
"""
476476
Returns last acknowledgement
477477
:return:
478478
"""
479-
return self.last_ack
479+
return self._angular_velocity
480480

481481
# def send_ack(self):
482-
# self.packeter.packetC1B(ord('X'), ACK_)
483-
# uart.write(self.packeter.msg[0:self.packeter.msg_size])
482+
# self._packeter.packetC1B(ord('X'), ACK_)
483+
# uart.write(self._packeter.msg[0:self._packeter.msg_size])
484484

485485
def _set_leds(self, led_state: int):
486486
"""
@@ -489,31 +489,31 @@ def _set_leds(self, led_state: int):
489489
5->right_red 6->right_green 7->right_blue
490490
:return:
491491
"""
492-
self.led_state[0] = led_state & 0xFF
493-
self.packeter.packetC1B(ord('L'), self.led_state[0])
494-
uart.write(self.packeter.msg[0:self.packeter.msg_size])
492+
self._led_state[0] = led_state & 0xFF
493+
self._packeter.packetC1B(ord('L'), self._led_state[0])
494+
uart.write(self._packeter.msg[0:self._packeter.msg_size])
495495

496496
def set_builtin_led(self, value: bool):
497497
"""
498498
Turns on/off the builtin led
499499
:param value:
500500
:return:
501501
"""
502-
if self.led_state[0] is None:
502+
if self._led_state[0] is None:
503503
self._set_leds(0x00)
504-
self.led_state[0] = self.led_state[0] | 0b00000001 if value else self.led_state[0] & 0b11111110
505-
self._set_leds(self.led_state[0])
504+
self._led_state[0] = self._led_state[0] | 0b00000001 if value else self._led_state[0] & 0b11111110
505+
self._set_leds(self._led_state[0])
506506

507507
def set_illuminator(self, value: bool):
508508
"""
509509
Turns on/off the illuminator led
510510
:param value:
511511
:return:
512512
"""
513-
if self.led_state[0] is None:
513+
if self._led_state[0] is None:
514514
self._set_leds(0x00)
515-
self.led_state[0] = self.led_state[0] | 0b00000010 if value else self.led_state[0] & 0b11111101
516-
self._set_leds(self.led_state[0])
515+
self._led_state[0] = self._led_state[0] | 0b00000010 if value else self._led_state[0] & 0b11111101
516+
self._set_leds(self._led_state[0])
517517

518518
def _update(self, delay_=1):
519519
"""
@@ -547,8 +547,8 @@ def _read_message(self) -> bool:
547547
"""
548548
while uart.any():
549549
b = uart.read(1)[0]
550-
self.packeter.buffer.push(b)
551-
if b == self.packeter.end_index and self.packeter.checkPayload():
550+
self._packeter.buffer.push(b)
551+
if b == self._packeter.end_index and self._packeter.checkPayload():
552552
return True
553553
return False
554554

@@ -557,53 +557,53 @@ def _parse_message(self) -> int:
557557
Parse a received message
558558
:return: -1 if parse error 0 if ok
559559
"""
560-
code = self.packeter.payloadTop()
560+
code = self._packeter.payloadTop()
561561
if code == ord('j'):
562562
# joint speed
563-
_, self.left_wheel._speed, self.right_wheel._speed = self.packeter.unpacketC2F()
563+
_, self.left_wheel._speed, self.right_wheel._speed = self._packeter.unpacketC2F()
564564
elif code == ord('l'):
565565
# line sensor
566-
_, self.left_line, self.center_line, self.right_line = self.packeter.unpacketC3I()
566+
_, self._left_line, self._center_line, self._right_line = self._packeter.unpacketC3I()
567567
elif code == ord('c'):
568568
# color sensor
569-
_, self.red, self.green, self.blue = self.packeter.unpacketC3I()
569+
_, self._red, self._green, self._blue = self._packeter.unpacketC3I()
570570
elif code == ord('i'):
571571
# imu
572-
_, self.ax, self.ay, self.az, self.gx, self.gy, self.gz = self.packeter.unpacketC6F()
572+
_, self._ax, self._ay, self._az, self._gx, self._gy, self._gz = self._packeter.unpacketC6F()
573573
elif code == ord('p'):
574574
# battery percentage
575-
_, self.battery_perc = self.packeter.unpacketC1F()
575+
_, self._battery_perc = self._packeter.unpacketC1F()
576576
elif code == ord('d'):
577577
# distance sensor
578-
_, self.left_tof, self.center_tof, self.right_tof = self.packeter.unpacketC3I()
578+
_, self._left_tof, self._center_tof, self._right_tof = self._packeter.unpacketC3I()
579579
elif code == ord('t'):
580580
# touch input
581-
_, self.touch_bits = self.packeter.unpacketC1B()
581+
_, self._touch_byte = self._packeter.unpacketC1B()
582582
elif code == ord('b'):
583583
# behaviour
584-
_, self.behaviour = self.packeter.unpacketC1B()
584+
_, self._behaviour = self._packeter.unpacketC1B()
585585
elif code == ord('f'):
586586
# tof matrix
587-
(_, self.left_tof, self.center_left_tof, self.center_tof,
588-
self.center_right_tof, self.right_tof, self.top_tof, self.bottom_tof) = self.packeter.unpacketC7I()
587+
(_, self._left_tof, self._center_left_tof, self._center_tof,
588+
self._center_right_tof, self._right_tof, self._top_tof, self._bottom_tof) = self._packeter.unpacketC7I()
589589
elif code == ord('q'):
590590
# imu position
591-
_, self.roll, self.pitch, self.yaw = self.packeter.unpacketC3F()
591+
_, self._roll, self._pitch, self._yaw = self._packeter.unpacketC3F()
592592
elif code == ord('w'):
593593
# wheels position
594-
_, self.left_wheel._position, self.right_wheel._position = self.packeter.unpacketC2F()
594+
_, self.left_wheel._position, self.right_wheel._position = self._packeter.unpacketC2F()
595595
elif code == ord('v'):
596596
# robot velocity
597-
_, self.linear_velocity, self.angular_velocity = self.packeter.unpacketC2F()
597+
_, self._linear_velocity, self._angular_velocity = self._packeter.unpacketC2F()
598598
elif code == ord('x'):
599599
# robot ack
600-
_, self.last_ack = self.packeter.unpacketC1B()
600+
_, self._angular_velocity = self._packeter.unpacketC1B()
601601
elif code == ord('z'):
602602
# robot ack
603-
_, self.x, self.y, self.theta = self.packeter.unpacketC3F()
603+
_, self._x, self._y, self._theta = self._packeter.unpacketC3F()
604604
elif code == 0x7E:
605605
# firmware version
606-
_, *self.version = self.packeter.unpacketC3B()
606+
_, *self._version = self._packeter.unpacketC3B()
607607
else:
608608
return -1
609609

@@ -614,72 +614,73 @@ def get_battery_charge(self) -> int:
614614
Returns the battery SOC
615615
:return:
616616
"""
617-
if self.battery_perc > 100:
617+
if self._battery_perc > 100:
618618
return 100
619-
return round(self.battery_perc)
619+
return round(self._battery_perc)
620620

621-
def _get_touch(self) -> int:
621+
@property
622+
def _touch_bits(self) -> int:
622623
"""
623624
Returns the touch sensor's state
624625
:return: touch_bits
625626
"""
626-
return self.touch_bits
627+
return (self._touch_byte & 0xFF) if self._touch_byte is not None else 0x00
627628

628629
def get_touch_any(self) -> bool:
629630
"""
630631
Returns true if any button is pressed
631632
:return:
632633
"""
633-
return bool(self.touch_bits & 0b00000001)
634+
return bool(self._touch_bits & 0b00000001)
634635

635636
def get_touch_ok(self) -> bool:
636637
"""
637638
Returns true if ok button is pressed
638639
:return:
639640
"""
640-
return bool(self.touch_bits & 0b00000010)
641+
return bool(self._touch_bits & 0b00000010)
641642

642643
def get_touch_cancel(self) -> bool:
643644
"""
644645
Returns true if cancel button is pressed
645646
:return:
646647
"""
647-
return bool(self.touch_bits & 0b00000100)
648+
return bool(self._touch_bits & 0b00000100)
648649

649650
def get_touch_center(self) -> bool:
650651
"""
651652
Returns true if center button is pressed
652653
:return:
653654
"""
654-
return bool(self.touch_bits & 0b00001000)
655+
return bool(self._touch_bits & 0b00001000)
655656

656657
def get_touch_up(self) -> bool:
657658
"""
658659
Returns true if up button is pressed
659660
:return:
660661
"""
661-
return bool(self.touch_bits & 0b00010000)
662+
return bool(self._touch_bits & 0b00010000)
662663

663664
def get_touch_left(self) -> bool:
664665
"""
665666
Returns true if left button is pressed
666667
:return:
667668
"""
668-
return bool(self.touch_bits & 0b00100000)
669+
return bool(self._touch_bits & 0b00100000)
669670

670671
def get_touch_down(self) -> bool:
671672
"""
672673
Returns true if down button is pressed
673674
:return:
674675
"""
675-
return bool(self.touch_bits & 0b01000000)
676+
return bool(self._touch_bits & 0b01000000)
676677

677678
def get_touch_right(self) -> bool:
678679
"""
679680
Returns true if right button is pressed
680681
:return:
681682
"""
682-
return bool(self.touch_bits & 0b10000000)
683+
return bool(self._touch_bits & 0b10000000)
683684

684685
@staticmethod
685686
def _limit(value: float, lower: float, upper: float) -> float:
@@ -768,7 +769,7 @@ def get_color_raw(self) -> (int, int, int):
768769
:return: red, green, blue
769770
"""
770771

771-
return self.red, self.green, self.blue
772+
return self._red, self._green, self._blue
772773

773774
def _normalize_color(self, r: float, g: float, b: float) -> (float, float, float):
774775
"""
@@ -836,6 +837,9 @@ def get_color(self, color_format: str = 'rgb') -> (float, float, float):
836837
"""
837838
assert color_format in ['rgb', 'hsv']
838839

840+
if None in list(self.get_color_raw()):
841+
return None, None, None
842+
839843
if color_format == 'rgb':
840844
return self._normalize_color(*self.get_color_raw())
841845
elif color_format == 'hsv':
@@ -858,6 +862,9 @@ def hsv2label(h, s, v) -> str:
858862
:return:
859863
"""
860864

865+
if None in [h, s, v]:
866+
return 'UNDEFINED'
867+
861868
if s < 0.1:
862869
if v < 0.05:
863870
label = 'BLACK'
@@ -899,34 +906,38 @@ def get_distance(self, unit: str = 'cm') -> (float, float, float, float, float):
899906
:param unit: distance output unit
900907
:return: left_tof, center_left_tof, center_tof, center_right_tof, right_tof
901908
"""
902-
return (convert_distance(self.left_tof, 'mm', unit),
903-
convert_distance(self.center_left_tof, 'mm', unit),
904-
convert_distance(self.center_tof, 'mm', unit),
905-
convert_distance(self.center_right_tof, 'mm', unit),
906-
convert_distance(self.right_tof, 'mm', unit))
909+
910+
if None in [self._left_tof, self._center_left_tof, self._center_tof, self._center_right_tof, self._right_tof]:
911+
return None, None, None, None, None
912+
913+
return (convert_distance(self._left_tof, 'mm', unit),
914+
convert_distance(self._center_left_tof, 'mm', unit),
915+
convert_distance(self._center_tof, 'mm', unit),
916+
convert_distance(self._center_right_tof, 'mm', unit),
917+
convert_distance(self._right_tof, 'mm', unit))
907918

908919
def get_distance_top(self, unit: str = 'cm') -> float:
909920
"""
910921
Returns the obstacle top distance readout
911922
:param unit:
912923
:return:
913924
"""
914-
return convert_distance(self.top_tof, 'mm', unit)
925+
return convert_distance(self._top_tof, 'mm', unit)
915926

916927
def get_distance_bottom(self, unit: str = 'cm') -> float:
917928
"""
918929
Returns the obstacle bottom distance readout
919930
:param unit:
920931
:return:
921932
"""
922-
return convert_distance(self.bottom_tof, 'mm', unit)
933+
return convert_distance(self._bottom_tof, 'mm', unit)
923934

924935
def get_version(self) -> str:
925936
"""
926937
Returns the firmware version of the Alvik
927938
:return:
928939
"""
929-
return f'{self.version[0]}.{self.version[1]}.{self.version[2]}'
940+
return f'{self._version[0]}.{self._version[1]}.{self._version[2]}'
930941

931942
def print_status(self):
932943
"""

0 commit comments

Comments
 (0)
Please sign in to comment.