بعد أن طرح الأخ محمد سؤاله :

https://arabia.io/go/6325

تذكرت موضوعاً كنت قد كتبته منذ أكثر من سنة ونصف حول هذا المفهوم

و ارتأيت أن أعيد طرح فقراته ليكون مرجع ومحل نقاش أو استفسار أو تصحيح

ولنبدأ على بركة الله :


مفهوم | تطبيقات الزمن الحقيقي (01)

السلام عليكم ورحمة الله وبركاته

بسم الله الرحمن الرحيم

لا شك أن الكثير منا سمع بمصطلح الزمن الحقيقي Real Time فمثلا في مجال التصاميم الثلاثية الأبعاد نسمع عن شيء اسمه ريندر في الزمن الحقيقي

ونسمع أيضا أن برنامج مثل جاليلو الذي يستخدم لتنسيق حركة المطارات في العالم هو برامج تعمل في الزمن الحقيقي

وبرامج تعلم عن بعد أو تحكم عن بعد وخاصة الطبية هي برامج تعمل في الزمن الحقيقي

بعض البرامج التي تقوم بمعالجة صور قادمة من كاميرة مراقبة هي برامج تنفذ في الزمن الحقيقي

فهذا المصطلح يعني أن نجعل الزمن بين لحظة إعطاء الأوامر للتنفيذ وبين الحصول على النتيجة يتناهى إلى الصفر وذلك لأن طبيعة الامر تتطلب أن يكون الزمن أصغريا وكلما اقترب إلى الانعدام أصبح مثالي أكثر ولكن أن يصبح معدوما تماما فهذا مستحيل طبعا ولكن جعله صغير جدا لدرجة أن لا يؤثر على النتيجة

وسنضرب مثالا :

النقل بالبر يكون فيه متسع من الوقت ولهذا المسافر لن تفرق معه إن تأخر وصوله ساعة مثلا لأن طبيعة النقل البري فيها قابلية هذا النوع من التأخير بسبب عطل في السيارة أو انفجار الإطار أو الوقوف على طابور أو ازدحام بسبب حادث

ولكن لو كان الأمر متعلق بامتحان مثلا فهنا سيضطر الراكب لأن يرتب مع تكسي بدلا من استقلال حافلة عامة جماعية وذلك لضبط موعد الوصول أكثر

لو تعلق الأمر باجتماع طاري وهام قد يقوم المسافر بحجز تذكرة طائرة لضبط دقة الوصول أكثر

الآن ماذا لو تعلق الأمر بحادث ما وتطلب إسعاف

هنا يجب أن يتم اتخاذ الإجراءات لتقليل زمن الوصول ما أمكن

فمثلا يتم اختيار سيارات سريعة وجديدة لتقليل احتمال التعطل

يتم إنشاء طرق جانبية ممنوع أن تستخدم من قبل العموم وذلك لتجنب الازدحامات

وهكذا لضمان وصول المصاب بأسرع وقت ممكن لأن في التأخر قد يؤدي إلى مضاعفات وربما وفاة

ولو كان الحالة خطرة جدا وتستدعي الوصول بسرعة لربما تم استخدام طوافة لنقل المصاب في دقائق معدودة.

من هذا المنطلق تأتي دور البرامج التي تعمل في الزمن الحقيقي

فمثلا برامج التصميم ثلاثية الأبعاد المعدة لإنتاج أفلام ومشاهد عالية الدقة والوضوع وأقرب للواقعية تستغرق عملية الريندر ساعات وربما أيام على أحدث الأجهزة

بينما في الألعاب الثلاثية الأبعاد يتم الريندر في الزمن الحقيقي لأن المشاهد المتولدة تتبع تصرفات المستخدم أثناء اللعب ولهذا تكون جودتها مختلفة عن تلك المنتجة من قبل برامج مثل ثري دي ماكس

برنامج يدير حركة طيران في كل أنحاء العالم يختلف عن برنامج تربط بين شركة وفرعها في مكان آخر

لأن الأول وعند عملية حجز لمسافر على متن طائرة لرحلة معينة يجب أن تعكس العملية مباشرة بحيث لو قام مكتب حجز في أي مكان آخر للحجز على نفس الرحلة أن يعلم أن المكان المتاح قد حجز للتو ولم يعد متوفرا

الآن لو كان هناك عملية معالجة صورة وحيدة قد تعملها على الفوتوشوب وتنتظر عدة ثواني أو دقائق لا مشكلة لأنه المهم الحصول على النتيجة

أما ماذا لو كانت المعالجة لصور قادمة من كاميرة مراقبة ويترتب عليها حدث مباشر مثل إنذار مثلا

فهذا يعني أنك محكوم بزمن تنفيذ محدد هو 1 مقسوم على عدد الأطر في الثانية

في الحالة المثالية وحتى لا تشعر العين البشرية برجفة الصورة يجب ان يكون التردد 24 إطار (صورة) في الثانية الواحدة

وفي بعض الحالات انخفاض هذا المعدل إلى 14 يعتبر مقبولا نوعا ما ولكن نزوله إلى مستوى منخفض تظهر الصورة مقطعة وبالتالي لو مر جسم أمام الكامير بسرعة كافية قد يكون بين إطارين مما يبدو الامر وكأن شيئا لم يكن وأصبحت العملية فاشلة

إذا لا بد أن يكون التنفيذ في الزمن الحقيقي أي لو فرضنا أننا نقبل بتردد 14 صورة فلا بد أن تنجز عمليات معالجة الصورة وتحليلها خلال زمن 0.07 ثانية أي 70 ملي ثانية

وإلا فالبرنامج يعتبر سيء

من هنا عندما تكون الخوارزميات والإجراءات هي لبرنامج يعمل في الزمن الحقيقي أن نضع في حسباننا الزمن أولا مهما كان ذلك على حساب التخزين والذواكر والعتاد الصلب .

سيكون هذا الموضوع حاويا على بعض النصائح والتلميحات ونتائج التجارب التي أقوم بها أو وجدتها أثناء البحث ليستفيد منها الجميع

والموضوع مطروح للجميع بالمشاركة فيه لكي تكبر الفائدة إلى أبعد مدى

بما أن التجارب والنتائج يجب أن تكون من خلال أشياء عملية فسأعتبر أننا نقوم ببرنامج مرتبط بكامير مراقبة ويقوم هو بمعالجة كل إطار قادم وتحليل بياناته لينتهي من ذلك ويبدأ بتلقي الإطار التالي دون تأخير

طبعا لن أتوسع في البرنامج نفسه ولكن شرح الأفكار واستخدام الأكواد سيكون على هذا الأساس لكي يكون مفهوما.

وسأستخدم لغة السي شارب C# لأني أستخدمها حاليا

والله ولي التوفيق

يتبع ... 2