من الصواريخ إلى الروبوتات وما علاقة بيثون به. قصة الخريجين GeekBrains


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

بداية


كنت محظوظاً طوال طفولتي في الهذيان حول الفضاء. لذلك ، بعد المدرسة ، لم أتردد لمدة دقيقة في أين أذهب للدراسة ، ودخلت في جامعة موسكو التقنية الحكومية. بومان ، لقسم الدفع الصاروخي. ومع ذلك ، لم يكن من الضروري اختيار فرع الدورة نفسها - المسحوق أو المحركات السائلة لصواريخ الفضاء - على الإطلاق: في عام 2001 ، قامت لجنة كلية خاصة بتوزيع المجموعات المستهدفة من المتقدمين. حصلت "في برميل البارود".

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

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

يتم تطوير جميع منتجات البرمجيات حصريًا بأمر خاص وبموافقة لجنة الخصوصية (وهي الآن قسم من FSTEC). مطلوب المطور هناك للتسجيل والترخيص حرفيا كل سطر من التعليمات البرمجية. جميع البرامج سرية في البداية على مستوى المهمة. يشرح هذا جزئيًا سبب تطوير البرنامج المستخدم حاليًا لتدريب طلاب الصواريخ في التسعينيات من القرن العشرين كحد أقصى.

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

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

من التدريس إلى البرمجة



في مؤتمر IFTOMM العالمي مع الطلاب - أعضاء مجموعة الأبحاث (أنا على حق)

في جامعة ماساتشوستس للتكنولوجيا ، في كلية probotechnical ، عملت لمدة 10 سنوات ، درست دورة في نظرية الآليات. قام بنشر المقالات العلمية (انظر نهاية المقال) ، وانتقل تدريجيا من الميكانيكا نحو CAD والروبوتات. وفي النهاية ، قرر ترك التدريس. من أجل توضيح أسباب هذا القرار بوضوح شديد ، سأقول أنه خلال عقد من الزمان ، لم يتغير مسار الدراسة الذي قرأته بفاصلة. على الرغم من أن الميكانيكا التطبيقية ، وفقًا للمنشورات ، فقد نجحت جدًا.

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

وأخيرا جئت إلى الروبوتات مثل هذا: في 2007-2009 ، جنبا إلى جنب مع الأستاذين A. Golovin و N. Umnov ، بدأنا في إعداد الأوراق العلمية الأولى. كان علي استخدام الخوارزميات لتحديد مسارات الأشياء وفقًا للتصوير الفوتوغرافي. من هذا الموضوع - خطوة واحدة إلى رؤية الماكينة ، OpenCV ونظام التشغيل الآلي (على الرغم من أنني لم أفكر بهذا الحجم بعد ذلك). بعد ذلك ، ركزت أخيرًا على الميكانيكا التطبيقية والروبوتات في البحث ، وأصبح التطوير نشاطًا مساعدًا.

ومع ذلك ، للعثور على وظيفة جديدة في مجال الروبوتات ، كان من الضروري تحسين واستكمال معرفتي البرمجية. بعد كل شيء ، وعلى وجه التحديد تكنولوجيا المعلومات ، باستثناء الدورة الجامعية لمدة عام واحد (ObjectPascal و Borland VCL in C ++) لم أدرس في أي مكان ، لقد اعتمدت على الرياضيات في الجوانب النظرية للتنمية.

في البداية نظرت في خيارات الدورات بدوام كامل في معهد وطني. صحيح ، سرعان ما أصبح من الواضح أن الجمع بين مثل هذه الدراسات والعمل في القسم سيكون مستحيلًا عملياً بسبب الجدول الزمني الممزق والعمل المتكرر خارج جدول المرء (استبدال ، وما إلى ذلك). وهكذا توصلت تدريجيا إلى فكرة إنهاء الدورات المدفوعة عن بعد. انضم إلى GeekBrains بناءً على توصية من الأساتذة من مركز تدريب Technopark Mail.ru الموجود في بومانكا وتسجيله في دورة Python Programmer.

لم تتسبب الدورات في أي صعوبات ، مشكلة واحدة - كان لابد من دمجها باستمرار: مع العمل في القسم ، والأعمال العلمية والفعاليات. لم يكن هناك ما يكفي من الوقت لدرجة أنني اضطررت للتضحية (لحسن الحظ ، مؤقتًا) بمعظم الروابط الاجتماعية خارج المنزل.

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

لدي جهاز كمبيوتر محمول Dell Latitude 3470 ، وأي هاتف ذكي به قطر 5.5 بوصة أو أكثر مقترن بلوحة مفاتيح Logitech K 810 BT. بشكل عام ، أوصي بمنتجات Logitech للجميع ، فهي موثوقة جدًا ويمكنها تحمل شروط الاستخدام القاسية جدًا (وهذا ليس إعلانًا أبدًا).


لوحة المفاتيح لوجيتك K810

بيثون مرتاح جدا لهذا العمل - مع محرر جيد. اختراق آخر للبرمجة: استخدم الاتصالات عن بعد لسطح المكتب أو وقت التشغيل. أكملت العديد من المهام باستخدام خادم ويب آمن يقوم بتشغيل Django على جهاز الكمبيوتر المنزلي. كان يعمل في نفس الوقت من القطار ، استخدم البرنامج PyDroid و DroidEdit و Maxima.

لماذا بيثون؟


باختصار ، حاولت استخدام PHP كلغة برمجة للنظام. بيثون في البداية بشكل مستقل وقليلا درس شيئا فشيئا "لنفسه". قرر أن يدرس بجدية بعد أن علم بوجود اتصال فعال بين Python و C ++ على مستوى الوحدة - بدا من المثير للاهتمام فصل الخوارزميات والإجراءات المحسنة لإعداد البيانات بلغة واحدة.

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

واحدة من أفضل الطرق للحصول على مثل هذا النظام هي استخدام أنظمة API C ++ الفرعية الخاصة بالجهاز كأساس لمجموعة فئات Python المستخدمة في مترجم النظام الأساسي المشترك. وبالتالي ، لن يحتاج المطور ذي المستوى الأعلى إلى مراعاة ميزات الجهاز المضمن ونظام التشغيل الخاص به ، وسيعمل ببساطة مع فئات Python التي تعمل "كلفّات" لواجهة برمجة التطبيقات ذات المستوى المنخفض.

كان علي أن أتعلم رابط C ++ و Python من البداية. سرعان ما أصبح الفهم أن الميزات الموجهة للكائنات على مستوى عال أكثر أهمية من المستوى المنخفض. ولهذا السبب ، كان عليّ تغيير النهج الخاص بتصميم API وتطبيقه بالكامل ، واختيار الفئات على مستوى Python والبيانات العالمية المشتركة في C / C ++. التعود على إنشاء الشفرة: على سبيل المثال ، يولد إطار عمل ROS نفسه أسماءًا وكائنات في بيثون ، لذلك يجب أن تأخذ في الاعتبار الاختلافات في اللغات ، وخاصة في كتابة وتصميم واجهاتك.

العمل في الوقت الحاضر: بيثون ومنطق أنظمة التحكم الآلي


الآن أعمل كمبرمج في Python و C ++ في مركز البحث والتدريب "Robotics" في جامعة MSTU. نحن ننفذ مشاريع بحثية وأدوات برمجية بتكليف من الإدارات الحكومية: نحن نطور المتلاعبين مع أنظمة الرؤية المتكاملة وخوارزميات التحكم الآلي عالية المستوى المستقلة عن الأنظمة.

أنا الآن أبرمج في Python منطقًا رفيع المستوى لأنظمة التحكم في الروبوت ، وتربط هذه اللغة وحدات محسّنة للغاية مكتوبة بلغة C ++ و المجمّع و Go.

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

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

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

ما هي المعرفة اللازمة لمثل هذه الوظيفة


مطلوب معرفة لغة قالب C ++ ، وهي ميزات موجهة لبيثون. من المهارات التي لا غنى عنها تقريبًا القدرة على تصميم وتوثيق واجهات برمجة التطبيقات. لن يكون من الضروري دراسة قدرات المكتبات المتخصصة ، مثل Boost :: Python. سيتعين على أولئك الذين يعملون مع برامج منخفضة المستوى أن يتعاملوا مع multithreading (علاوة على ذلك ، على مستوى kernel) ، ويدعو نظام Linux / UNIX / QNX. لتعزيز فهم مبادئ بناء الروبوتات ، من المفيد أن تتعرف على إطار عمل نظام التشغيل الآلي.

أحاول الحصول على لغة برمجة واحدة مترجمة على الأقل ولغة برمجة واحدة مترجمة في الأصل ، قيد التطوير وفي الطلب. هذه استراتيجية رابحة للعمل في الهندسة ، حيث تحتاج دائمًا إلى تطوير خوارزميات متخصصة (قراءة: غير عادية) وتنفيذها في تجميع اللغات. مهمة إعداد البيانات لمثل هذا البرنامج هي أجمل بكثير لحلها باستخدام لغات مترجمة. في البداية ، تضمنت مجموعتي C ++ و Pascal و BASIC ، وتمت إضافة PHP و BASH لاحقًا.

كيف يمكن لأدوات التطوير أن تكون مفيدة في تعلم الطلاب


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

في عام 2016 ، بدأت تجربة كبيرة حول إدخال أدوات التطوير - لغات البرمجة ، و IDEs ، ومولدات الوثائق ، وأنظمة التحكم في الإصدار - في الممارسة التربوية في التعليم العالي. لقد نجحنا بالفعل في الحصول على نتائج تضفي طابعًا عامًا على النوعية.

على سبيل المثال ، يؤدي إدخال إصدارات المواد في العملية التعليمية إلى تحسين جودة عمل الطلاب بشكل كبير ، ولكن بشرط أن يعمل الطلاب معًا في مشاريع مشتركة. يتم الآن تطوير أساليب تدريس التخصصات الفنية باستخدام أدوات تطوير البرمجيات الاحترافية بنشاط بواسطة قوى مجموعتي البحثية ، والتي تتكون من الطلاب والمتقدمين وطلاب برامج التعليم التكميلي لجامعة MSTU.

بالمناسبة ، لم أترك ممارسة التدريس - لقد قمت بتطوير دورة المؤلف الشخصية المتعمقة حول جهاز Linux وإدارته لمعهد الدراسات المتقدمة بجامعة MSTU ، وأنا أدرس بنفسي.

أعمال علمية


العمل المبكر
قضايا تخطيط المشية في تصميم أنظمة المشي ذات الأرجل الأربعة باستخدام مشية الخيل كمثال (2010)

فيما يتعلق بمسألة الحركية والتحميل للعنصر الداعم للساق الأمامية للحصان في مرحلة الاقتراب من الدعم كمكونات لدورة عمل الدفع الرباعي (2012)

من الماضي
تطبيق ثلاثي الأبعاد لمحاكاة إنتاج التروس لتدريس نظرية الآليات والآلات (2019)

التعرف على العقبات الهيكلية وتطبيقاتها في البحث عن مواد الإغاثة (2018)

يمكن الاطلاع على الأعمال الأخرى المفهرسة بواسطة قواعد بيانات الاستشهاد العلمي في ملفي الشخصي ResearchGate . معظم المقالات مكرسة لحركة الآلات ، وهناك أعمال في علم الهندسة التربوية والبرامج التعليمية.

Source: https://habr.com/ru/post/ar468523/


All Articles