Skip to content

Commit 71eabf3

Browse files
committed
Redo clamping logic to maintain vel ratios
Addresses qcr/benchbot#44.
1 parent e4b2a2f commit 71eabf3

1 file changed

Lines changed: 12 additions & 8 deletions

File tree

src/robot_callbacks.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -146,14 +146,18 @@ def _move_to_pose(goal, publisher, controller):
146146
vel_msg.linear.x = _move_speed_factor(controller) * vel_msg.linear.x
147147
vel_msg.angular.z = _move_speed_factor(controller) * vel_msg.angular.z
148148

149-
vel_msg.linear.x = (
150-
_MOVE_LINEAR_LIMITS[1] if vel_msg.linear.x > _MOVE_LINEAR_LIMITS[1]
151-
else _MOVE_LINEAR_LIMITS[0]
152-
if vel_msg.linear.x < _MOVE_LINEAR_LIMITS[0] else vel_msg.linear.x)
153-
vel_msg.angular.z = (
154-
_MOVE_ANGULAR_LIMIT if vel_msg.angular.z > _MOVE_ANGULAR_LIMIT else
155-
-_MOVE_ANGULAR_LIMIT
156-
if vel_msg.angular.z < -_MOVE_ANGULAR_LIMIT else vel_msg.angular.z)
149+
clamped_l = min(_MOVE_LINEAR_LIMITS[1],
150+
max(_MOVE_LINEAR_LIMITS[0], vel_msg.linear.x))
151+
clamped_a = min(_MOVE_ANGULAR_LIMIT,
152+
max(-_MOVE_ANGULAR_LIMIT, vel_msg.angular.z))
153+
factor = max(abs(vel_msg.linear.x / clamped_l),
154+
abs(vel_msg.angular.z / clamped_a))
155+
# print(
156+
# "r,a,p: (%f,%f,%f) B:%d l,a: (%f, %f) lc,ac: (%f, %f)" %
157+
# (rho, alpha, beta, backwards, vel_msg.linear.x, vel_msg.angular.z,
158+
# vel_msg.linear.x / factor, vel_msg.angular.z / factor))
159+
vel_msg.linear.x = vel_msg.linear.x / factor
160+
vel_msg.angular.z = vel_msg.angular.z / factor
157161

158162
# Publish velocity (don't move if we're already there!)
159163
if (rho > _MOVE_TOL_DIST):

0 commit comments

Comments
 (0)