Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
base_vel, top_vel, max_top_vel = 0, float('+inf'), float('+inf')
accel_time, decel_time = 0, 0
coordinate = False
last_user_pos = start_positions[i]
real_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=accel_time,
decel_time=decel_time)
real_path = MotionPath(real_vmotor, last_user_pos, position)
real_path.moveable = moveable
real_path.apply_correction = coordinate
# Find the cruise duration of motion at top velocity. For this create a
# virtual motor which has instantaneous acceleration and deceleration
ideal_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=0, decel_time=0)
# create a path which will tell us which is the cruise duration of this
# motion at top velocity
ideal_path = MotionPath(ideal_vmotor, last_user_pos, position)
ideal_path.moveable = moveable
ideal_path.apply_correction = coordinate
# if really motor is moving in this waypoint
if ideal_path.displacement > 0:
# recalculate time to reach maximum velocity
delta_start = max(delta_start, accel_time)
# recalculate cruise duration of motion at top velocity
cruise_duration = max(cruise_duration, ideal_path.duration)
duration = max(duration, real_path.duration)
if not iterate_only:
motor.setVelocity(max_top_vel)
else:
max_top_vel = top_vel
except AttributeError:
if not iterate_only:
self.macro.warning(
"%s motion will not be coordinated", motor)
base_vel, top_vel, max_top_vel = 0, float(
'+inf'), float('+inf')
accel_time, decel_time = 0, 0
coordinate = False
last_user_pos = start_positions[i]
real_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=accel_time,
decel_time=decel_time)
real_path = MotionPath(real_vmotor, last_user_pos, position)
real_path.moveable = moveable
real_path.apply_correction = coordinate
# Find the cruise duration of motion at top velocity. For this
# create a virtual motor which has instantaneous acceleration and
# deceleration
ideal_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=0, decel_time=0)
# create a path which will tell us which is the cruise
# duration of this motion at top velocity
ideal_path = MotionPath(ideal_vmotor, last_user_pos, position)
ideal_path.moveable = moveable
def get_virtual_motors(self):
ret = []
for moveable in self.moveables:
try:
v_motor = VMotor.fromMotor(moveable.moveable)
except Exception:
# self.debug("Details:", exc_info=1)
v_motor = VMotor(min_vel=0, max_vel=float('+inf'),
accel_time=0, decel_time=0)
ret.append(v_motor)
return ret
max_dec_time = max(self.get_min_dec_time(motor), max_dec_time)
acc_time = max_acc_time
dec_time = max_dec_time
for moveable, start, end in \
zip(self._physical_moveables, start_positions, positions):
total_displacement = abs(end - start)
direction = 1 if end > start else -1
interval_displacement = total_displacement / self.macro.nr_interv
# move further in order to acquire the last point at constant
# velocity
end = end + direction * interval_displacement
base_vel = moveable.getBaseRate()
ideal_vmotor = VMotor(accel_time=acc_time,
decel_time=dec_time,
min_vel=base_vel)
ideal_path = MotionPath(ideal_vmotor, start, end, active_time)
ideal_path.moveable = moveable
ideal_path.apply_correction = True
ideal_paths.append(ideal_path)
return ideal_paths, acc_time, active_time
def get_virtual_motors(self):
ret = []
for moveable in self.moveables:
try:
v_motor = VMotor.fromMotor(moveable.moveable)
except Exception:
# self.debug("Details:", exc_info=1)
v_motor = VMotor(min_vel=0, max_vel=float('+inf'),
accel_time=0, decel_time=0)
ret.append(v_motor)
return ret
# then use the current top velocity
max_top_vel = self.get_max_top_velocity(motor)
if not iterate_only:
motor.setVelocity(max_top_vel)
else:
max_top_vel = top_vel
except AttributeError:
if not iterate_only:
self.macro.warning("%s motion will not be coordinated", motor)
base_vel, top_vel, max_top_vel = 0, float('+inf'), float('+inf')
accel_time, decel_time = 0, 0
coordinate = False
last_user_pos = start_positions[i]
real_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=accel_time,
decel_time=decel_time)
real_path = MotionPath(real_vmotor, last_user_pos, position)
real_path.moveable = moveable
real_path.apply_correction = coordinate
# Find the cruise duration of motion at top velocity. For this create a
# virtual motor which has instantaneous acceleration and deceleration
ideal_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=0, decel_time=0)
# create a path which will tell us which is the cruise duration of this
# motion at top velocity
ideal_path = MotionPath(ideal_vmotor, last_user_pos, position)
ideal_path.moveable = moveable
ideal_path.apply_correction = coordinate
def get_virtual_motors(self):
ret = []
for moveable in self.moveables:
try:
v_motor = VMotor.fromMotor(moveable.moveable)
except:
#self.debug("Details:", exc_info=1)
v_motor = VMotor(min_vel=0, max_vel=float('+inf'),
accel_time=0, decel_time=0)
ret.append(v_motor)
return ret
accel_time, decel_time = 0, 0
coordinate = False
last_user_pos = start_positions[i]
real_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=accel_time,
decel_time=decel_time)
real_path = MotionPath(real_vmotor, last_user_pos, position)
real_path.moveable = moveable
real_path.apply_correction = coordinate
# Find the cruise duration of motion at top velocity. For this
# create a virtual motor which has instantaneous acceleration and
# deceleration
ideal_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=0, decel_time=0)
# create a path which will tell us which is the cruise
# duration of this motion at top velocity
ideal_path = MotionPath(ideal_vmotor, last_user_pos, position)
ideal_path.moveable = moveable
ideal_path.apply_correction = coordinate
# if really motor is moving in this waypoint
if ideal_path.displacement > 0:
# recalculate time to reach maximum velocity
delta_start = max(delta_start, accel_time)
# recalculate cruise duration of motion at top velocity
cruise_duration = max(cruise_duration, ideal_path.duration)
duration = max(duration, real_path.duration)
if not iterate_only:
motor.setVelocity(max_top_vel)
else:
max_top_vel = top_vel
except AttributeError:
if not iterate_only:
self.macro.warning(
"%s motion will not be coordinated", motor)
base_vel, top_vel, max_top_vel = 0, float(
'+inf'), float('+inf')
accel_time, decel_time = 0, 0
coordinate = False
last_user_pos = start_positions[i]
real_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=accel_time,
decel_time=decel_time)
real_path = MotionPath(real_vmotor, last_user_pos, position)
real_path.moveable = moveable
real_path.apply_correction = coordinate
# Find the cruise duration of motion at top velocity. For this
# create a virtual motor which has instantaneous acceleration and
# deceleration
ideal_vmotor = VMotor(min_vel=base_vel, max_vel=max_top_vel,
accel_time=0, decel_time=0)
# create a path which will tell us which is the cruise
# duration of this motion at top velocity
ideal_path = MotionPath(ideal_vmotor, last_user_pos, position)
ideal_path.moveable = moveable