[WIP] uniax: removed do_ prefix
Change-Id: I98d56a8ece681515de8f05767c67686715212c09
This commit is contained in:
parent
a8f1495bc8
commit
486be9604e
@ -150,7 +150,7 @@ class Uniax(PersistentMixin, Drivable):
|
|||||||
setattr(self, name, pos)
|
setattr(self, name, pos)
|
||||||
return pos
|
return pos
|
||||||
|
|
||||||
def do_find(self, state):
|
def find(self, state):
|
||||||
"""find active (engaged) range"""
|
"""find active (engaged) range"""
|
||||||
if state.init:
|
if state.init:
|
||||||
state.prev_direction = 0 # find not yet started
|
state.prev_direction = 0 # find not yet started
|
||||||
@ -160,13 +160,13 @@ class Uniax(PersistentMixin, Drivable):
|
|||||||
self.log.info('motor stopped - substantial force detected: %g', self.value)
|
self.log.info('motor stopped - substantial force detected: %g', self.value)
|
||||||
self.motor.stop()
|
self.motor.stop()
|
||||||
elif state.prev_direction == 0:
|
elif state.prev_direction == 0:
|
||||||
return self.do_adjust
|
return self.adjust
|
||||||
if abs(self.value) > self.hysteresis:
|
if abs(self.value) > self.hysteresis:
|
||||||
self.set_zero_pos(self.value, self.motor.read_value())
|
self.set_zero_pos(self.value, self.motor.read_value())
|
||||||
return self.do_adjust
|
return self.adjust
|
||||||
if self.value * direction < -self.hysteresis:
|
if self.value * direction < -self.hysteresis:
|
||||||
state.force_before_free = self.value
|
state.force_before_free = self.value
|
||||||
return self.do_free
|
return self.free
|
||||||
if self.motor_busy():
|
if self.motor_busy():
|
||||||
if direction == -state.prev_direction: # target direction changed
|
if direction == -state.prev_direction: # target direction changed
|
||||||
self.motor.stop()
|
self.motor.stop()
|
||||||
@ -192,7 +192,7 @@ class Uniax(PersistentMixin, Drivable):
|
|||||||
self.drive_relative(zero_pos - self.motor.value)
|
self.drive_relative(zero_pos - self.motor.value)
|
||||||
return Retry()
|
return Retry()
|
||||||
# we are already at or beyond zero_pos
|
# we are already at or beyond zero_pos
|
||||||
return self.do_adjust
|
return self.adjust
|
||||||
self.write_adjusting(False)
|
self.write_adjusting(False)
|
||||||
self.status = 'BUSY', 'find %s side' % side_name
|
self.status = 'BUSY', 'find %s side' % side_name
|
||||||
self.log.info('one turn to %g', self.motor.value + direction * 360)
|
self.log.info('one turn to %g', self.motor.value + direction * 360)
|
||||||
@ -215,7 +215,7 @@ class Uniax(PersistentMixin, Drivable):
|
|||||||
self.motor.stop()
|
self.motor.stop()
|
||||||
self.write_adjusting(False)
|
self.write_adjusting(False)
|
||||||
|
|
||||||
def do_free(self, state):
|
def free(self, state):
|
||||||
"""free from high force at other end"""
|
"""free from high force at other end"""
|
||||||
if state.init:
|
if state.init:
|
||||||
state.free_way = None
|
state.free_way = None
|
||||||
@ -227,7 +227,7 @@ class Uniax(PersistentMixin, Drivable):
|
|||||||
self.log.error(self.status[1])
|
self.log.error(self.status[1])
|
||||||
return None
|
return None
|
||||||
if abs(self.value) < self.hysteresis:
|
if abs(self.value) < self.hysteresis:
|
||||||
return self.do_find
|
return self.find
|
||||||
if state.free_way is None:
|
if state.free_way is None:
|
||||||
state.free_way = 0
|
state.free_way = 0
|
||||||
self.log.info('free from high force %g', self.value)
|
self.log.info('free from high force %g', self.value)
|
||||||
@ -242,15 +242,15 @@ class Uniax(PersistentMixin, Drivable):
|
|||||||
self.drive_relative(direction * self.safe_step)
|
self.drive_relative(direction * self.safe_step)
|
||||||
return Retry()
|
return Retry()
|
||||||
|
|
||||||
def do_within_tolerance(self, state):
|
def within_tolerance(self, state):
|
||||||
"""within tolerance"""
|
"""within tolerance"""
|
||||||
if self.motor_busy():
|
if self.motor_busy():
|
||||||
return Retry()
|
return Retry()
|
||||||
if abs(self.target - self.value) > self.tolerance:
|
if abs(self.target - self.value) > self.tolerance:
|
||||||
return self.do_adjust
|
return self.adjust
|
||||||
self.status = 'IDLE', 'within tolerance'
|
self.status = 'IDLE', 'within tolerance'
|
||||||
|
|
||||||
def do_adjust(self, state):
|
def adjust(self, state):
|
||||||
"""adjust force"""
|
"""adjust force"""
|
||||||
if state.init:
|
if state.init:
|
||||||
state.prev_force = None
|
state.prev_force = None
|
||||||
@ -259,7 +259,7 @@ class Uniax(PersistentMixin, Drivable):
|
|||||||
if abs(self.target - self.value) < self.tolerance:
|
if abs(self.target - self.value) < self.tolerance:
|
||||||
self._in_cnt += 1
|
self._in_cnt += 1
|
||||||
if self._in_cnt >= 3:
|
if self._in_cnt >= 3:
|
||||||
return self.do_within_tolerance
|
return self.within_tolerance
|
||||||
else:
|
else:
|
||||||
self._in_cnt = 0
|
self._in_cnt = 0
|
||||||
if state.prev_force is None:
|
if state.prev_force is None:
|
||||||
@ -279,7 +279,7 @@ class Uniax(PersistentMixin, Drivable):
|
|||||||
if motor_dif > self.motor_play:
|
if motor_dif > self.motor_play:
|
||||||
self.log.warning('adjusting failed - try to find zero pos')
|
self.log.warning('adjusting failed - try to find zero pos')
|
||||||
self.set_zero_pos(self.target, None)
|
self.set_zero_pos(self.target, None)
|
||||||
return self.do_find
|
return self.find
|
||||||
elif motor_dif > self.motor_max_play:
|
elif motor_dif > self.motor_max_play:
|
||||||
raise Error('force seems not to change substantially')
|
raise Error('force seems not to change substantially')
|
||||||
force_step = (self.target - self.value) * self.pid_i
|
force_step = (self.target - self.value) * self.pid_i
|
||||||
@ -326,16 +326,16 @@ class Uniax(PersistentMixin, Drivable):
|
|||||||
if abs(target - self.value) <= self.tolerance:
|
if abs(target - self.value) <= self.tolerance:
|
||||||
if not self.isBusy():
|
if not self.isBusy():
|
||||||
self.status = 'IDLE', 'already at target'
|
self.status = 'IDLE', 'already at target'
|
||||||
self._state.start(self.do_within_tolerance)
|
self._state.start(self.within_tolerance)
|
||||||
return target
|
return target
|
||||||
self.log.info('new target %g', target)
|
self.log.info('new target %g', target)
|
||||||
self._cnt_rderr = 0
|
self._cnt_rderr = 0
|
||||||
self._cnt_wrerr = 0
|
self._cnt_wrerr = 0
|
||||||
self.status = 'BUSY', 'changed target'
|
self.status = 'BUSY', 'changed target'
|
||||||
if self.value * math.copysign(1, target) > self.hysteresis:
|
if self.value * math.copysign(1, target) > self.hysteresis:
|
||||||
self._state.start(self.do_adjust)
|
self._state.start(self.adjust)
|
||||||
else:
|
else:
|
||||||
self._state.start(self.do_find)
|
self._state.start(self.find)
|
||||||
return target
|
return target
|
||||||
|
|
||||||
@Command()
|
@Command()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user