CV

[RA-L 2022] Smooth MPPI

PaperTitle
Smooth Model Predictive Path Integral Control without Smoothing
Author
Taekyung Kim, Gyuhyun Park, Kiho Kwak, Jihwan Bae, Wonsuk Lee
Affiliation
Agency for Defense Development, Korea
Venue
RAL
IROS
2 more properties
A simplified representation of the MPPI algorithm during each optimization iteration. For clarity, we only visualize one sampled trajectory (in green). (a) Amount of changes between previously computed control sequence and the next control sequence (along the “i-axis”). (b) Amount of changes in control values during MPPI rollouts (along the “t-axis”), which are hard to be minimized by the MPPI baseline. Such chattering in control input becomes more prominent in cases where the environment changes rapidly, possibly even causing the MPPI to diverge.
To address this issue, we propose the Smooth MPPI algorithm that seamlessly combines MPPI with an input-lifting strategy.

Frequently Asked Questions

Q: How to tune Δt in Smooth MPPI?
A: The sampling time Δt affects the covariance of the control input derivative significantly. Here is the suggested way to tune the parameters:
1.
Tune the covariance of the control input with normal MPPI
2.
Implement the Smooth MPPI by setting Δt = 1 (even if the sampling time is not 1 sec)
3.
Fine tune the covariance of the control input derivative slightly based on the tuned covariance of the normal control input from step 1.
ex) If the covariance in MPPI was Diag(1,1), the covariance of the SMPPI can be tuned with the range of Diag(0.1, 0.1) to Diag(1,1).
It is fine to set ∆t to be the actual sampling time, but in this case, it’s hard to tune the covariance due to numerical issue. You have to increase it by a large magnitude.
Q: The performance of the Smooth MPPI is bad. What is wrong?
A: Please check the above answer. Also, please check out our pytorch implementation: Code
Q: Do you need many iterations of warm-starting because the initial action sequence will be bad, and due to it being corrected only by integrating the control sequence, you'd need to do it iteratively to correct it significantly? How do you initialize your control and action sequences if they're not given? I'm assuming control is uniform noise while action is all 0?
A: Yes. I just simply set the actions to be zero at the first stage, so it requires more warm starting from the initial stage than the original MPPI. Since our application was mostly focused on autonomous driving, the system state always starts with all zero-value (vx, vy, yaw_rate are zeros). And it always takes some time to accelerate, so there was no problem to set the actions to all zero. It was enough for my application, but yes it's a disadvantage.

Video

Main Supplmentary Video