I have a question regarding the design of ConstraintCritic velocity bounds for holonomic robots.
|
min_vel_ = min_sgn * sqrtf(vx_min * vx_min + vy_max * vy_max); |
|
} |
Given:
vx_max = 0.5
vx_min = -0.3
vy_max = 0.5
The critic computes:
max_vel = sqrt(vx_max^2 + vy_max^2) ≈ 0.707
min_vel = -sqrt(vx_min^2 + vy_max^2) ≈ -0.583
Now consider a trajectory:
vx = -0.4, vy = 0 → v = -0.4
This satisfies:
v ∈ [min_vel, max_vel] → no cost applied
However:
vx = -0.4 < vx_min = -0.3 → violates longitudinal constraint
This suggests that the critic enforces a magnitude-based constraint
rather than axis-wise bounds, allowing physically invalid velocities
(along vx) to pass without penalty.
Is this behavior intentional for smoothing / MPPI optimization reasons,
or is it an oversight?
Thanks
I have a question regarding the design of ConstraintCritic velocity bounds for holonomic robots.
navigation2/nav2_mppi_controller/src/critics/constraint_critic.cpp
Lines 38 to 39 in 554e0ff
Given:
vx_max = 0.5
vx_min = -0.3
vy_max = 0.5
The critic computes:
max_vel = sqrt(vx_max^2 + vy_max^2) ≈ 0.707
min_vel = -sqrt(vx_min^2 + vy_max^2) ≈ -0.583
Now consider a trajectory:
vx = -0.4, vy = 0 → v = -0.4
This satisfies:
v ∈ [min_vel, max_vel] → no cost applied
However:
vx = -0.4 < vx_min = -0.3 → violates longitudinal constraint
This suggests that the critic enforces a magnitude-based constraint
rather than axis-wise bounds, allowing physically invalid velocities
(along vx) to pass without penalty.
Is this behavior intentional for smoothing / MPPI optimization reasons,
or is it an oversight?
Thanks