Traffic Monitoring System

Wednesday, August 13, 2008 | Labels: , | |

اسم المشروع : نظام لمراقبة المرور مع نموذج للقيادة الآلية .
Traffic Monitoring System With Automatic Driving Model


المشروع فائز بالمركز الأول على مستوى جمهورية مصر العربية في يوم الهندسة المصري EED فرع IT .

فريق العمل :
1- أحمد جمال خليفة .
2- أحمد سعيد أنور .
3- أحمد عماد أحمد .
4- أحمد محمد عيسوي .
5- حسام الدين محمد صادق .
6- خالد عادل محمد سلامة .

اسم المشرف :
بروفيسور: عراقي خليفة .
م. عمر غنيم .


الكلية والجامعة :
جمهورية مصر العربية - جامعة حلوان - كلية الحاسبات والمعلومات - قسم علوم الحاسب.
السنة : 2007 .


وصف مختصر للمشروع :
المراحل الأساسية للمشروع - باختصار شديد - لمزيد من التفاصيل راجع ال Documentation في آخر الموضوع .

مقدمة :
أصبح لأنظمة الكومبيوتر الآلية تأثير عميق على حياتنا اليومية حيث أصبحنا نرى كل يوم أبحاث ومشاريع جديدة من أجل استخدام الكومبيوتر لتسهيل الحياة وتخفيف الضغوط التي يتحملها البشر .
والمشروع عبارة عن مزيح من آخر التقنيات التي قدمت في هذا الفرع من علوم الكومبيوتر المتعلقة بالرؤية الحاسوبية ونظم دعم اتخاذ القرار المقدمة في مجال تطوير المدن الآلية ، حيث يستخدم النظام للمساعدة في عملية المراقبة ، ازدحام الطرق ومراقبة اشارات المرور وتدفق السير في المدن ، هو عبارة عن نظام لمراقبة السير ودعم قرارت القيادة الآلية حيث أن هذين النظامين لم يتم ربطهما سوية من قبل .
وكل ما نطمح إليه حالياً هو تقديم خطوة في طريق تطبيق نظام مراقبة في الواقع عن طريق دعمه للتكامل مع النموذج المستقبلي لنظام القيادة الآلية من خلال نموذج مصغر لمدينة تحتوي على سيارات يتم التحكم بها عن بعد وتتم ادارته من خلال الكومبيوتر .

المصاعب الأساسية التي واجهت النظام :
تعتبر الاستجابة اللحظية للأوامر الصادرة عن طريق الكومبيوتر للسيارة هي العقبة الأولى في المشروع نظراً للزمن الذي تستغرقه عمليه تحليل الصور على حاسب آلي متوسط السرعة ، والوقت الذي تستغرقة الأوامر للانتقال في ظل حاجتنا إلى أسرع استجابة ممكنة ليمكن تطبيق النظام في الواقع .

السيناريو :
* مخطط لسيناريو المشروع :

* مخطط Collaboration Diagram للمشروع :

وصف المشروع :
باختصار شديد : المشروع يحتوي على كاميرا تقوم بارسال صور فورية إلى الكومبيوتر الذي يقوم بتحليلها وفهمها والخروج ببعض التقارير والإحصائيات عن الطرق ونظام المرور ، وفي الجزء الثاني من المشروع وعند بداية مهمة لتحريك السيارة من نقطة إلى أخرى يتم الرجوع إلى هذه المعلومات لحساب الطريق الامثل للتحرك من خلاله ، وأخيراً يتم اللجوء إلى بعض مبادئ Physical Computing من أجل تحريك السيارة الموديل الموجودة في المدينة المصغرة .
وسنبدأ الآن في الشرح التفصيلي لبعض المراحل باختصار .


معالجة الصور :
المرحلة الأولى في عملية معالجة الصور هي مرحلة Road Extraction حيث يتم معرفة الطرق الموجودة في المدينة عن طريق مراحل متعددة تمر بها عملية استخراج الطرق بعد ذلك يمكن حصرها اجمالاً في المراحل التالية (Generate Road Seed points, Snaxles, Snakes) حيث يتم التعرف في آخر مرحلة بصورة مفصلة على جميع الطرق غير المستقيمة أو المنحنية بانحناءات متعددة .


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

في الخطوات التالية نقوم باستبعاد تلك التي تمثل مباني مثلاً أو ناتجة عن تشويش في الصورة ، نقوم بدمج الخطوط سوية ... الخ .
وبما أن الناتج لن يكون بالطبيعي 100% فإننا نسمح للمستخدم بالانتقال إلى شاشة رسم الطرق والتعديل حيث يمكنه اضافة وحذف الطرق الخاطئة كما يمكنه تسمية الشوارع والمباني وغيرها ...
المرحلة الثانية في عملية معالجة الصور هي متابعة تحركات السيارات في المدينة ، ويتم ذلك أيضاً عبر مجموعة من العمليات الخاصة بكيفية استخراج خلفية فارغة من جميع السيارات دون الاضطرار لتصوير المدينة وهي فارغة ، ومن ثم البدء في قراءة الصورة عن طريق الطرح المباشر كخطوة أولى ، وهذه مجموعة من الصور :

الخطوة الثانية تعتمد على البدء الفعلي في قراءة الصور ويتم ذلك عبر تحويلها إلى صور Binary مع تطبيق بعض ال morphological filtering من اجل توضيح الصورة ، وهذه المحصلة النهائية لهذه العمليات :

الخطوة الأخيرة هي البدء بتتبع هذه السيارات فترة عمل النظام ، ويتم ذلك باستخدام LUCAS-KANADE OPTICAL FLOW ALGORITHM على سبيل المثال .
نظام الإحصائيات والتقارير القيادة الآلية :
بعد أن استطعنا في المرحلة السابقة معرفة أماكن السيارات في المدينة وحالة الطرق ، جاء دور المرحلة الثانية من النظام والتي تتلخص في الاستفادة من هذه البيانات ، وتتم الاستفادة من هذه البيانات بطريقتين :

نظام الإحصائيات والتقارير :
حيث يتم عرض تقرير فوري بحالة الطرق ونسب الإزدحام وخلافه .

نظام القيادة الآلية :
وهذا هو الجزء الثاني من المشروع ، حيث يتم كبداية تحديد مهمة للانتقال من نقطة أ إلى نقطة ب .
أول العمليات التي يتم تنفيذها هي حساب ال Best Path عن طريق معادلة لكل طريق يتم من خلالها اختيار الطريق الأنسب وبدء العمل على تحريك السيارة من خلاله

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


الهاردوير Hardware :
كما أسلفنا في النقطة السابقة ، فإنه تلزمنا بعض التعديلات ليصبح بمقدورنا تحريك السيارة الموديل عن طريق الكومبيوتر .
بداية استعنا بسيارة ريموت كنترول RC Car مع مراعاة وجود أكثر من تردد Frequency في حالة استخدام أكثر من سيارة أو استخدام crystals أو Removable Strips من أجل تجنب تداخل الموجات .
ثم قمنا بعمل موديل لمدينة مصغرة وقمنا برسم بعض الطرق وبناء بعض المباني كما هو موضح في الصور المرفقة .
وقمنا باستخدام كاميرا عادية لالتقاط الصور .
المرحلة الأولى هي ربط الكاميرا بالكومبيوتر ، وتم ذلك عبر منفذ USB حيث يمكن قراءة الكاميرا بأكثر من طريقة وحسب لغة البرمجة المستخدمة .
الخطوة الثانية هي ربط الريموت بالكومبيوتر ليتم التحكم في السيارة ، ويتم ذلك عن طريق استخدام مبادئ ال Relays والتي تسمح للتيار بالمرور في الريموت عند تلقي أمر معين من الكومبيوتر من خلال منفذ الطابعة Parallel Port .
وهاتين الصورتين توضحان الفرق بين الريموت العادي حيث يتم تحريك صفائح على بعضها مقارنة بالريموت الجديد حيث أصبح ال Relay هو المتحكم في توصيل الكهرباء .

التطبيق في العالم الواقعي :
لكي يصبح هذا النظام قابلاً للتطبيق في أرض الواقع وعلى مدينة حقيقة فإنه ما زال بحاجة إلى بعض التعديلات ، نوجزها في الثلاث نقاط التالية :


- من جهة معالجة الصور : سيتم استبدال الكاميرا بصور مباشرة للأقمار الصناعية مثل Googel Earth والتي بدأت تقدم خدمات بث مباشر لبعض المدن حول العالم .
أيضاً لا زلنا بحاجة للمزيد من التسريع والدقة في عمليات معالجة الصور ، أيضا لمزيد من الفلترة للمؤثرات الجوية الخاصة مثل الغيوم ، الأمطار ... الخ .
- من جهة نظام قيادة السيارة : لن يتحمل السيرفر وحده عبء القيادة بل سيكون هناك جهاز على السيارة أو Microcontroller يستقبل المسار ويبدأ في توجيه نفسه بنفسه وذلك منعاً لتثقيل العمل على السيرفر وزيادة في السرعة .
أيضاً سيتم استخدام دوائر كهربائية مثل ultra-sonic حتى في الموديل الصغير لتلافي الاصطدامات التي تنتج عن أجسام مفاجئة حيث تقوم بارسال واستقبال موجات ويتم احتساب زمن ارتدادها لمعرفة ومن خلالها يمكن معرفة المسافة التي تفصلها عن أقرب جسم في الاتجاه والزاوية التي ترسل بها الموجات .
- من جهة نظام التحكم والاتصال : لن يتم الاتصال عبر موجات Radio عادية بل لا بد من وجود Wireless network ، والشرط الأهم هو كونها محمية وهو ما لم تتوصل إليه البحوث حتى الآن حيث لا توجد شبكة لا سلكية محمية بصورة كاملة أبداً .
ومن الجهة الأخرى فنحن بحاجة إلى تطويع هاردوير السيارات لاستقبال أوامر عن طريق الكومبيوتر وهو ما لا يعد مرحلة صعبة من ناحية التطبيق ، ولكنه سيواجه مشاكل عديدة تنتج عن سرعة السيارة مثلاً وسرعة الاستجابة للأوامر في ظل سيرها على سرعات كبيرة والتوقف المفاجئ وتوقع الاعطال وغيره .

المشروع :


تم تسليم المشروع باستخدام C# ولكن بداية العمل في المشروع لم تكن كذلك ، حيث تم استخدام MATLAP نظراً لكونه الأسهل في التعامل مع ال Image Proccessing ، ومن ثم تم ربطه بالنظام الذي قمنا بعمله من خلال C# ولكن وبالرغم من ذلك فلن تجد اللغة المستخدمة تفرق كثيراً حيث أن أغلب البرنامج عبارة عن معادلات وقوانين لن يختلف تطبيقها من لغة إلى أخرى أبداً .
وللتحويل إلى C# تم استخدام SharperCV وهي مكتبة مفتوحة المصدر متخصصة في عمليات ال Image Proccesing وهي عبارة عن Warrper لمكتبة OpenCV التي تم تصميمها للعمل على C++ ، وسبب الاستعانة بهذه المكتبة هو التعقيد الكبير الذي سينتج عن استخدام أكواد سي شارب مباشرة في كل عملية من عمليات معالجة الصور التي نستخدمها نظراً لإنك ستضطر للتعامل مع المؤشرات Pointers وهو ما يضطرك لاستخدام unsafe code ، وبصراحة فهي لا تعطيك كافة المميزات التي تقدمها لك لغة مثل C++ وفي نفس الوقت تحرمك من السهولة التي تجدها في الماتلاب .
ولكن هذا لم يمنع استخدام أكواد مباشرة في كثير من الأحيان ، وإنما تم استخدام SharperCV فقط في العمليات المتكررة أو التي يتم التعامل فيها مع كمية كبيرة من الأكواد حيث تختصر عليك ال SharperCV جزء كبير من المهمة برغم كثرة مشاكلها ، ولكنك ستجد نفسك مضطراً في النهاية للبرمجة اليدوية .
كان بالإمكان اضافة حل آخر وهو استخدام عمليات التحويل من ماتلاب إلى .net ولكن ظهور بعض المشاكل أدى إلى ايقاف هذه العملية ، عموماً ما زالت جميع مراحل العمل على معالجة الصور موجودة من خلال matlap ومن خلال C# أيضاً .
أما الجزء الآخر الخاص بالنظام والشاشات والقيادة الآلية ومعادلات الحركة والربط بالكاميرا من جهة أو الربط بالسيارة من جهة أخرى وعمليات التعديل والتحرير وقواعد البيانات والتقارير وخلافه فقد تمت برمجته باستخدام C# مباشرة .
لقطات وصور من المشروع :


لقطات وصور من البرنامج :


وهذه نسخة من ال Documentation للمشروع يمكن الاطلاع عليها من خلال هذا الرابط :
http://www.4shared.com/file/133227955/d4ea58ba/Final_Documentation.html

مراكز أخرى حققتها جروبات كلية حاسبات ومعلومات حلوان :

http://www.fcih.net/details.asp?id=94

4 comments:

  1. ingieropo says: This comment has been removed by the author.
  2. ingieropo says:

    execellent job
    but i can't c the documentation plz load it again ASAP
    or tell me why i ca't c it
    tnx 4 ur time

  3. Ahmed Gamal says:

    المشكلة انه على
    googlepage
    وفي ليميت للباندويدث
    جرب مرة تانية بعد فترة أو بكرة الصبح مثلاً

  4. mohammad haqqi says:

    الرابط مش شغال ممكن رابط اخر
    وجزاك الله خيرا