دورات هندسية

 

 

تطوير نظام بدائي يقوم باستخلاص المعلومات المخزنة في الصندوق الأسود الخاص بالطائرات

النتائج 1 إلى 3 من 3
  1. [1]
    م المصري
    م المصري غير متواجد حالياً

    عضو شرف

     وسام الشكر

      وسام كبار الشخصيات


    تاريخ التسجيل: May 2006
    المشاركات: 5,015
    Thumbs Up
    Received: 16
    Given: 0

    تطوير نظام بدائي يقوم باستخلاص المعلومات المخزنة في الصندوق الأسود الخاص بالطائرات

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

    سيتم باستخدام أدوات التطوير المتوفرة في برامج الـ 3D لتطوير نظام بدائي يقوم باستخلاص المعلومات المخزنة في الصندوق الأسود الخاص بالطائرات للقيام بمحاكاة ثلاثية الأبعاد لحركة الطائرة إضافة للظروف المحيطة بها.
    سنعتمد لتنفيذ هذا المثال على بيئة التطوير المتوفرة في الـ XSI إضافة للـ VB Script كلغة برمجة بسيطة لأتمتة المهمات. بالطبع يمكننا بشكل مماثل تطبيق نفس المفاهيم في البرامج الأخرى مع مراعاة اختلاف لغات البرمجة المتوفرة فيها والتي قمنا باختيار الـ XSI من بينها بسبب اعتماده على لغات scripting نظامية ومتنوعة مثل الـ VB Script والـ Jscript. بينما لا يوفر أي من الـ Maya أو الـ 3Ds MAX لغات برمجة معروفة لأتمتة المهمات حيث يعتمد كل منهم على اللغة الخاصة به (MEL في حال الـ Maya أوالـ MAX Script في حال الـ 3Ds MAX).
    الآن بالنسبة للمعلومات المخزنة في الصندوق الأسود سنفترض أنها مخزنة بشكل رقمي بأي صيغة ملفات معروفة. ولسهولة التعامل سنفترض أنها مخزنة ضمن جداول في ملف Excel.
    لذلك وقبل البدء بتنفيذ المثال علينا الحصول على ملف Excel يحوي هذه المعلومات إما بافتراضها بشكل وهمي أو بتفجير طائرة واستخلاص الصندوق الأسود الخاص بها من أجل الحصول على معلومات واقعية... أمزح فقط.
    المهم سنقوم باستخدام ملف Excel وهمي يحوي معلومات افتراضية عن حركة الطائرة كالتالي:
    في العمود الأول سيكون لدينا الفواصل الزمنية المستخدمة في تسجيل معلومات الملاحة الجوية. في العمود الثاني الى الرابع سيتم تخزين إحداثيات الطائرة. بينما في العمود الخامس الى السابع يمكننا إضافة أي معلومات خاصة مثل معلومات عن محركات الطائرة.


    الآن بعد أن أصبحت المعلومات الخاصة بالطائرة جاهزة يمكننا البدء ببناء النظام المطلوب في الـ XSI.
    الفكرة العامة لهذا النظام بسيطة جداً... كل ما يجب فعله هو جعل الـ XSI يقرء جميع القيم المتوفرة في ملف الـ Excel وتطبيقها على نموذج الطائرة المجسم الوجود في البرنامج بالاعتماد على الفواصل الزمنية المفروضة ثم بعد ذلك يمكننا اضافة أية خوارزميات إضافية عن الظروف الجوية المحيطة بالطائرة بالاعتماد على تطبيق معادلات هيدروليكية ولكن بشكلها العكسي وذلك على افتراض أن حركة الطائرة تتم ضمن وسط هيدروليكي وهو الهواء.
    سأبدأ فوراً بكتابة الـ code في Visual Studio مع التعليق على الكتل البرمجية المختلفة ولكن دون الخوض بالتفاصيل البرمجية وذلك بسبب بساطة كل من الفكرة واللغة بحد ذاتها.


    بدايةً سنقوم بإنشاء مشهد جديد والحصول على النموذج المجسم للطائرة:
    ‘// start freshNewSceneSetDisplayMode "Camera", "shaded"‘// Create a light to illuminate the sceneGetPrimLight "Point.Preset", "Point"Translate , .8, 13, 18‘// Create a plane objectCreatePrim "Cube", "MeshSurface", "Airplane"
    سنقوم هنا بربط ملف code إضافي "ExcelUpdate" وظيفته تحديث معلومات الطائرة ضمن الفواصل الزمنية المختلفة واستنتاج أي معلومات إضافية:
    ‘// set a script to run on each frame changeSetValue "PlayControl.OnFrameChangeCommand", "ExcelUpdate"
    هنا يمكننا بناء نظام إظهار النتائج الخاص بالطائرة:
    ‘// create a textual overlayCreateMeshText "CurveListToPlanarMeshForText",siPersistentOperati on' set it to emptySetValue "text.text.text", "_RTF_{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset 0 Arial;}}" & vbCrLf & "\viewkind4\uc1\pard\lang1033\fs20\par" & vbCrLf & "}" & vbCrLf & ""‘// set it to ignore lighting changesApplyShader "Material\Constant"‘// set the colorSetValue "polymsh.Material.Constant.color.green", 0SetValue "polymsh.Material.Constant.color.blue", 0SetValue "polymsh.Material.Constant.color.red", 1‘// position itScale , .1747,.1747,.1747, siAbsolute, siLocalCOG, siObj, siXYZTranslate , -2.0698, -1.5466, 12.5455, siAbsolute, siGlobalCOG, siObj, siXYZ‘// connect it to the camera so it acts like a titleSetUserPref "SI3D_CONSTRAINT_COMPENSATION_MODE", 1ApplyCns "Pose", "polymsh", "Camera", TrueSetUserPref "SI3D_CONSTRAINT_COMPENSATION_MODE", 0DeselectAll
    الآن يمكننا البدء بفتح ملف الـ Excel ومعالجة محتوياته على الشكل التالي:
    • فتح نسخة (instance) من برنامج الـ Excel:
      ‘// Open Excel application instance…dim dataset data = createobject("excel.application")
    • فتح جدول معلومات الطائرة:
      ‘// Open the spreadsheetdata.workbooks.open("c:\blackboxdata.xl s")
    • البحث عن بداية الأعمدة التي تحوي المعلومات:
      Columns where we find informationDataStartRow = 6timeColumn = "a"xColumn = "b"yColumn = "c"zColumn = "d"rColumn = "e"gColumn = "f"bColumn = "g"
    • على عدد الكوادر (Frames) المطلوبة اعتماداً على الفواصل الزمنية في الملف:
      ‘// Got to the start of the animationFirstFrame‘// get the number of frames of animation in the spreadsheetExcelFrameCount = data.range("B2")
    • كل كادر في الـ XSI بمعلومات الصف المقابل له في الـ Excel:
      For i = 1 to ExcelFrameCount ' map the current frame number to a row in Excel FrameNumber = i + DataStartRow - 1 xpos = data.range(xColumn & FrameNumber) ypos = data.range(yColumn & FrameNumber) zpos = data.range(zColumn & FrameNumber) translate "Airplane", xpos, ypos, zpos, siAbsolute, siGlobal SaveKey "Airplane.kine.local.posx, Airplane.kine.local.posy, Airplane.kine.local.posz", i redChannel = data.range( rColumn & FrameNumber) greenChannel = data.range( gColumn & FrameNumber) blueChannel = data.range( bColumn & FrameNumber) SetKey "Airplane.Material.Constant.color.red", i, redChannel SetKey "Airplane.Material.Constant.color.green", i, greenChannel SetKey "Airplane.Material.Constant.color.blue", i, blueChannelnext' close exceldata.quit' update the viewportSetValue "PlayControl.Current", 2PrevFrame
    بعد الانتهاء من قراءة المعلومات من ملف الـ Excel ومحاكاة مسار حركة الطائرة في الـ XSI يمكننا الآن من إضافة أي خوارزميات في ملف الـ "ExcelUpdate" لحساب واستنتاج أي معلومات إضافية عن الظروف المحيطة بالطائرة.
    لذلك سأقوم الآن في الـ Visual Studio بانشاء ملف vbs جديد باسم "ExcelUpdate" ولكنني لن أقوم هنا باستنتاج وبرمجة أية خوارزميات معقدة لأن هذا سيحتاج إلى مساحة أوسع من مجرد وريقات لشرح الأفكار الهيدروليكية ومن ثم تطبيقها في البرنامج. لذلك سأكتفي باستنتاج وتخريج معلومات وهمية يمكنك استبدالها بما تريد.
    Altitude = GetValue("Airplane.kine.local.posy", currentFrame)SetValue "text.text.text", "_RTF_{\rtf1\ansi\deff0{\fonttbl{\f0\fnil\fcharset 0 Arial;}}" & vbCrLf & "\viewkind4\uc1\pard\lang1033\fs20 Altitude " & Altitude & "\par" & vbCrLf & "}" & vbCrLf & ""
    حسناً... يمكننا الآن اختبار هذا النظام الصغير في الـ XSI والاستمتاع بنتائج المحاكاة التي سنحصل عليها.


    للحصول على المزيد من المتعة يمكنك إضافة Rigid Bodies Simulation أو (محاكاة الأجسام الصلدة) للطائرة بعد تحديد جميع الخصائص الفيزيائية للطائرة اعتماداً على المعلومات المستنتجة للحصول على نظام متكامل لمحاكاة حركة الطائرة لحظة تحطمها بشكل دقيق.
    بالطبع لا تتوقع أن تحصل على نتائج واقعية وذلك بسبب عدم دقة المعلومات المفترضة في البداية إضافة الى وجود عدد كبير من العوامل الهامة التي أهملناها في حساباتنا لسهولة العرض والتي تؤثر بشكل كبير على نتائج المحاكاة.
    ولكن ما يهمنا من الموضوع في النهاية هو آلية العمل للنظام ككل الذي يمتلك مرونة التحسين والإضافة بالشكل الذي نراه مناسباً.

    الآن وبعد أن انتهينا من تجريب هذا المثال أتمنى أن تكون فكرة استثمار الأمكانيات المختلفة في برامج الـ 3D التي بين أيدينا قد أصبحت ملموسة بحيث تكون خيارنا الأول في المجالات العلمية إضافة بالطبع إلى المجالات الفنية أو الترفيهية المعهودة.
    لاشك أن المثال المطروح خيالي بعض الشيء وكنت أتمنى أن أطرح أمثلة وأبحاث أخرى أكثر واقعية وإمكانية للتطبيق الفعلي ولكن أي منها يحتاج الى المزيد من الحيز الورقي الذي لا أعتقد أنه متوفر في حالتنا هنا.
    أخيراً بعض المراجع العلمية الهامة للمهتمين بمثل هذه الأمور...
    Advanced Animation & Rendering Techniques: Theory and Practice. By: Alan Watt & Mark WattApplied Mathematical Science: Level Set Methods & Dynamic Implicit Surfaces. By: Stanley Osher & Ronlad Fedkiw

    لمراسلة كاتب المقال لمزيد من المعلومات هذا الرابط:http://www.instructurez.com/papers/research.htm

  2. [2]
    اكديد
    اكديد غير متواجد حالياً
    عضو


    تاريخ التسجيل: Dec 2007
    المشاركات: 35
    Thumbs Up
    Received: 0
    Given: 0
    موضوع رائع...
    جزاك الله خيرا...

    0 Not allowed!



  3. [3]
    م المصري
    م المصري غير متواجد حالياً
    عضو شرف


    تاريخ التسجيل: May 2006
    المشاركات: 5,015

    وسام الشكر

     وسام كبار الشخصيات

    Thumbs Up
    Received: 16
    Given: 0
    مرور اروع ... أخي راكيد

    0 Not allowed!


    لا اله الا الله محمد رسول الله
    تفضل , هنا تقرأ القرآن

  
الكلمات الدلالية لهذا الموضوع

عرض سحابة الكلمة الدلالية

RSS RSS 2.0 XML MAP HTML