Skip to content

Commit e819ddb

Browse files
committed
improve homing by moving to opposite direction first
1 parent 1622f6b commit e819ddb

3 files changed

Lines changed: 63 additions & 7 deletions

File tree

uc2rest/UC2Client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def __init__(self, host=None, port=31950, serialport=None, identity="UC2_Feather
5656
5757
you can send commands through wifi/http or usb/serial
5858
'''
59-
if logger is None:
59+
if True: #logger is None:
6060
self.logger = Logger()
6161
else:
6262
self.logger = logger

uc2rest/home.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ def home_a(self, speed = None, direction = None, endposrelease = None, endstoppo
5555
endstoppolarity=endstoppolarity,
5656
isBlocking=isBlocking)
5757

58-
def home(self, axis=None, timeout=None, speed=None, direction=None, endposrelease=None, endstoppolarity=None, endstoptimeout=10000, isBlocking=False):
58+
def home(self, axis=None, timeout=None, speed=None, direction=None, endposrelease=None, endstoppolarity=None, endstoptimeout=10000, isBlocking=False, preMove=True):
5959
'''
6060
axis = 0,1,2,3 or 'A, 'X','Y','Z'
6161
timeout => when to stop homing (it's a while loop on the MCU)
6262
speed => speed of homing (0...15000)
6363
direction => 1,-1 (left/right)
6464
endposrelease => how far to move after homing (0...3000)
65+
preMove => the motor will first move by some steps in the opposite direction before homing, this is useful to avoid false triggering of the endstop
6566
'''
6667

6768
# default values
@@ -79,6 +80,25 @@ def home(self, axis=None, timeout=None, speed=None, direction=None, endposreleas
7980
if direction not in [-1,1]:
8081
direction = 1
8182

83+
if preMove:
84+
# first move in the opposite direction
85+
if direction == 1:
86+
preMoveDirection = -1
87+
else:
88+
preMoveDirection = 1
89+
90+
# move away from endstop
91+
if axis == 1 or axis == "X":
92+
self._parent.motor.move_x(steps=preMoveDirection*1000, speed=10000, is_blocking=False, is_absolute=False, is_enabled=True)
93+
elif axis == 2 or axis == "Y":
94+
self._parent.motor.move_y(steps=preMoveDirection*1000, speed=10000, is_blocking=False, is_absolute=False, is_enabled=True)
95+
elif axis == 3 or axis == "Z":
96+
self._parent.motor.move_z(steps=preMoveDirection*1000, speed=10000, is_blocking=False, is_absolute=False, is_enabled=True)
97+
elif axis == 0 or axis == "A":
98+
self._parent.motor.move_a(steps=preMoveDirection*1000, speed=10000, is_blocking=False, is_absolute=False, is_enabled=True)
99+
else:
100+
raise ValueError("Invalid axis. Use 'X', 'Y', 'Z', or 'A'.")
101+
time.sleep(0.5)
82102
# construct json string
83103
path = "/home_act"
84104

uc2rest/logger.py

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,45 @@
1+
import logging
2+
3+
14
class Logger(object):
2-
def __init__(self):
3-
pass
5+
def __init__(
6+
self,
7+
name=__name__,
8+
log_to_file=False,
9+
filename='uc2rest.log'
10+
):
11+
# Create a logger with the given name
12+
self.logger = logging.getLogger(name)
13+
self.logger.setLevel(logging.DEBUG)
14+
formatter = logging.Formatter(
15+
'%(asctime)s [%(levelname)s] %(name)s: %(message)s'
16+
)
17+
18+
# Console handler
19+
ch = logging.StreamHandler()
20+
ch.setLevel(logging.DEBUG)
21+
ch.setFormatter(formatter)
22+
self.logger.addHandler(ch)
423

5-
def error(self,message):
6-
print(message)
24+
# Optional file handler
25+
if log_to_file:
26+
fh = logging.FileHandler(filename)
27+
fh.setLevel(logging.DEBUG)
28+
fh.setFormatter(formatter)
29+
self.logger.addHandler(fh)
30+
31+
def error(self, message):
32+
# Log an error message
33+
self.logger.error(message)
734

835
def debug(self, message):
9-
print(message)
36+
# Log a debug message
37+
self.logger.debug(message)
38+
39+
def info(self, message):
40+
# Log an info message
41+
self.logger.info(message)
42+
43+
def warning(self, message):
44+
# Log a warning message
45+
self.logger.warning(message)

0 commit comments

Comments
 (0)