يتم إعطاؤك مقتطفًا برمجيًا من فئة Python التي تعد جزءًا من نظام القيادة الذاتية. تمثل الفئة وحدة التحكم لنظام التوجيه وهي المسؤولة عن التحكم في زاوية توجيه السيارة. يقوم مقتطف الكود بتهيئة المكونات المختلفة لوحدة التحكم.

تحتوي فئة `SelfDrivingController` على السمات وعمليات التهيئة التالية:
- `self.cp`: كائن من النوع `ControlParams` يحتوي على معلمات تحكم متنوعة لوحدة التحكم.
- `self.pid`: كائن من النوع `PID` يستخدم لحساب إشارة التحكم في التوجيه بناءً على الخطأ بين الحالة المطلوبة والحالية.
- `self.s_lpf`: كائن من النوع `LowPassFilter` يُستخدم لتصفية التمرير المنخفض لإشارة التحكم في التوجيه.
- `self.t_lpf`: كائن من النوع `LowPassFilter` يُستخدم لتصفية التمرير المنخفض لإشارة الخرج من إشارة التحكم في التوجيه المُفلترة بالتمرير المنخفض.

لقد تم تكليفك بتنفيذ الأجزاء المفقودة من فئة "SelfDrivingController".

مهمتك هي استكمال الطرق التالية:
1.`calculate_steering_control_signal(error)`: تأخذ هذه الطريقة قيمة خطأ كمدخل وتحسب إشارة التحكم في التوجيه باستخدام وحدة التحكم PID (`self.pid`).
2. `low_pass_filter_steering(signal)`: تأخذ هذه الطريقة إشارة التحكم في التوجيه كمدخل وتطبق مرشح تمرير منخفض مع ثابت زمني قدره 3 ثوانٍ (`self.s_lpf`) على إشارة الإدخال.
3. `low_pass_filter_output(signal)`: تأخذ هذه الطريقة إشارة الخرج من إشارة التحكم في التوجيه المُفلترة ذات التمرير المنخفض كمدخل وتطبق مرشح تمرير منخفض مع ثابت زمني قدره 3 ثوانٍ (`self.t_lpf`) على الإدخال الإشارة.

يمكنك أن تفترض أن جميع الفئات الضرورية (`ControlParams`، `PID`، `LowPassFilter`) قد تم تنفيذها بالفعل وهي متاحة لك.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}