# D.19  Savitzky-Golay Smoother

The Savitzky-Golay Smoother is a Smoother Server plugin that will take in an input path and smooth it using a simple and fast smoothing technique based on Savitzky Golay Filters. It uses a digital signal processing technique designed to reduce noise distorting a reference signal, in this case, a path.&#x20;

Savizky-Golay smoother က တော့ Savitzky-Golay Filters ကိုသုံးပြီးတော့ input path ကို ယူမယ် ပြီးရင် ရိုးရှင်းပြီ မြန်ဆန်တယ် နည်းလမ်းကိုသုံးပြီး path ကို smooth ဖြစ် အောင်လုပ်ပေးသည့် smoother server plugin ဖြစ်တယ်။ ဒီplugin က digital signal ကိုယူတယ် (scanned လုပ်ထားတဲ့အရာတွေပေ့ါ) ပြီးရင် အဲ့ဒီpluginထဲမှာရေးဆွဲထားတဲ့ နည်းလမ်းကိုသုံးပြီး original signal(path) ကို ပြန်ပြီး reference ယူပြီး noise တွေကို လျှော့ချပေးတယ်ပေ့ါ။

<figure><img src="https://2903086714-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fr9x7fOEsshA97WfbNvfL%2Fuploads%2FjmR8wGSUcv6WPDmo0Bza%2Fsavitzky-golay-example.png?alt=media&#x26;token=2a45f6e2-bd58-46cf-963b-db01035ea67e" alt=""><figcaption><p>source from nav2</p></figcaption></figure>

It is useful for all types of planners, but particularly in NavFn to remove tiny artifacts that can occur near the end of paths or Theta\* to slightly soften the transition between Line of Sight line segments without modifying the primary path. It is very fast (<< 1ms) so is a recommended default for planners that may result in slight discontinuities. However, it will not smooth out larger scale discontinuities, oscillations, or improve smoothness. For those, use one of the other provided smoother plugins. It also provides estimated orientation vectors of the path points after smoothing.

&#x20;ဒီ plugin ကတော့ planners အားလုံးအတွက် အသုံး၀င်ပါတယ် ဒါပေမယ် အနည်းငယ်သွေဖယ်မှူတော့ရှိတာပေ့ါ။ အထူးသဖြင့် path ရဲ့ အဆုံးမှာ NavFn နဲ့ ပတ်သက်ပြီး sort လုပ်နဲ့ ပြဿနာအနည်းငယ်ရှိနိုင်တဲ့ error ရယ္် Thida တန်ဖိုးက primary path ကို modify မလုပ်ဘဲ အနီနားမှာရှိတဲ့ line ကို modify လုပ်တာမျိုးပေါ့ ။ ဒီ process က 1 ms အောက်မှာ အလုပ်လုပ်နေတဲ့အတွက် အရမ်းမြန်ပါတယ်။ ဒါကြောင့် ဒီ plugin ကို default အဖြစ် planner တွေမှာသုံးပါတယ်။

&#x20;ဒါပေမယ့် result မှာတော့ အနည်းငယ်သွေဖယ်မှုရှိနိုင်ပါသေးတယ်။ အကယ်၍ ကျွန်တော်တို့သာ အခြားသော plugin တွေကိုသုံးမယ်ဆိုရင် planner က smooth မဖြစ်တာတို့ scale ကွာဟမှု အရမ်းများတာတို့ , line jumpy ဖြစ်နေတာတို့ ဖြစ်နိုင်တယ် တကယ်လို့သာ ရှေ့ကအတိုင်း error တွေမပါရင် ပိုပြီးတော့ smooth ဖြစ်နိုင်ပါတယ်။ ဒီplugin server က plan path ကို smooth လုပ်ပြီးရင် robot ရဲ့ orientation ကို vectors နဲ့ ခန့်မှန်းပေးပါသေးတယ်။

<table><thead><tr><th width="179">Name</th><th width="355">Description</th><th>Type</th><th>Default</th></tr></thead><tbody><tr><td>do_refinement</td><td>Whether to smooth the smoothed results<br>refinement_num times to get an improved result.</td><td>bool</td><td>TRUE</td></tr><tr><td>refinement_num</td><td>Number of times to recursively smooth a segment</td><td>int</td><td>2</td></tr></tbody></table>

နမူနာ

```yaml
smoother_server:
  ros__parameters:
    costmap_topic: global_costmap/costmap_raw
    footprint_topic: global_costmap/published_footprint
    robot_base_frame: base_link
    transform_timeout: 0.1
    smoother_plugins: ["savitzky_golay_smoother"]
    savitzky_golay_smoother:
      plugin: "nav2_smoother::SavitzkyGolaySmoother"
      do_refinement: True
      refinement_num: 2
```
