從火箭到機器人,Python 與它有什麼關係。 GeekBrains 校友故事

從火箭到機器人,Python 與它有什麼關係。 GeekBrains 校友故事
今天,我們將發布 Andrey Vukolov 轉型為 IT 的故事。 他童年時對太空的熱情曾促使他在 MSTU 學習火箭科學。 殘酷的現實讓我忘記了夢想,但一切變得更有趣。 學習 C++ 和 Python 讓我能夠從事同樣令人興奮的工作:對機器人控制系統的邏輯進行程式設計。

開始

我很幸運,整個童年都對太空著迷。 因此,放學後,我沒有一刻猶豫自己該去哪裡學習,於是我進入了MSTU。 鮑曼,到火箭推進工程系。 然而,課程本身的分支——太空火箭的粉末或液體發動機——根本不必選擇:2001年,一個特別的教師委員會仍然分配了申請人的目標群體。 我被困在一桶火藥裡。

當時,「火箭熱潮」只存在於計畫之中;工程師拿著微薄的薪水,在專門封閉的設計局和研究機構工作,幾乎沒有職業和職業發展的前景。 不過,俄羅斯的火藥火箭純粹是軍用產品。

現在這個領域很受歡迎,但在我的學習過程中我已經意識到,在火箭科學中,任何自發性的活動幾乎是不可能的。 其實這就是服兵役。 例如,在火箭業工作,我將完全被剝奪獨立開發軟體的機會,即使是我自己,因為這項活動受到嚴格監管。

所有軟體產品均根據特殊訂單專門開發,並獲得保密委員會(現為 FSTEC 的部門)的批准。 那裡的開發人員需要對每一行程式碼進行註冊和許可。 所有軟體最初在任務層級都是保密的。 這在一定程度上解釋了為什麼現在用於培訓火箭科學專業學生的軟體最晚是在 90 世紀 XNUMX 年代開發的。

當我從研究所畢業時,我成功地在機構理論系工作,並開始用C++開發一個教育過程模擬器,這樣我就有了一個可以比較的例子,可以權衡利弊。 選擇是顯而易見的,我逐漸開始轉向 IT 和機器人技術。 應用力學比火箭科學有趣得多:許多未解決的問題、開放的環境、缺乏開發產業、對模擬軟體的迫切需求。 在機器人技術中,通用軟體的架構不穩定,需要重複實現複雜的演算法,包括模糊邏輯和人工智慧的開端。 因此,在我的第一個處理實驗數據的程式之後,我幾乎再也沒有回到火箭(除了我的畢業設計)。

結果,我有機會在我的專業領域工作了僅僅四個月,然後就在莫斯科附近的一家航空航天工業複合結構工廠畢業了。 完成學業後,我甚至不用去找工作,就立即來到機器人系教應用力學。

從教學到程式設計

從火箭到機器人,Python 與它有什麼關係。 GeekBrains 校友故事
在 IFTOMM 世界大會上與研究小組的學生成員(我在右邊)

我在 MSTU 採樣部門工作了 10 年,教授機制理論課程。 他發表了科學著作(見文末),逐漸從力學轉向CAD和機器人技術。 最後他決定離開教職。 為了最清楚地說明這個決定的原因,我要說的是,十年來我所教的課程沒有改變小數點後一位。 儘管從出版物來看,應用力學向前發展得非常非常成功。

此外,這項工作越來越像官僚工作——報告、計劃、標準和大量的紙張。 在這種情況下,教學的樂趣被報告獲得這種樂趣所取代,這對執業專家來說是非常不愉快的。

最後我就這樣進入了機器人領域:2007-2009 年,我們與 A. Golovin 和 N. Umnov 教授一起開始準備第一個科學著作。 在那裡,我必須使用演算法來確定閃光燈攝影中物體的路徑。 從這個主題開始,就到了機器視覺、OpenCV 和機器人作業系統(雖然當時我甚至沒有想到這樣一個規模)。 之後我最終把研究重點放在了應用力學和機器人領域,開發成為了輔助活動。

然而,為了找到一份機器人方面的新工作,我有必要提升和補充我的程式設計知識。 畢竟我從來沒有專門學過IT,除了一年的大學課程(ObjectPascal和C++中的Borland VCL),並且依靠數學進行理論的發展。

起初,我考慮了在我的母校學習全日制課程的選擇。 確實,很快我們就發現,由於日程安排不規律,而且經常在自己的日程之外工作(替代等),因此幾乎不可能將此類學習與部門工作結合起來。 於是我逐漸萌生了遠距完成付費課程的想法。 在位於 Baumanka 的 Mail.ru Technopark 培訓中心教授的推薦下,我來到了 GeekBrains,並報名參加了 Python 程式設計師課程。

這些課程並沒有造成任何困難,唯一的問題是我必須不斷地將它們與部門工作、科學工作和活動結合。 時間如此緊迫,以至於必須犧牲大多數家庭之外的社交聯繫(幸運的是,暫時的)。

我是這樣應對工作量的:在路上解決問題。 這項透過多次出差培養出來的技能被證明非常有用,因為沒有它我甚至無法完成我所有的作業(而且它也取代了冥想......)。 我學會了使用筆記型電腦、智慧型手機和無線智慧型手機鍵盤隨時隨地進行編碼。

我的筆記型電腦是 Dell Latitude 3470,任何對角線為 5.5 吋或以上且配有 Logitech K 810 BT 鍵盤的智慧型手機都可以。 總的來說,我向大家推薦羅技的產品;它們非常可靠,可以承受非常惡劣的使用條件(這絕對不是廣告)。

從火箭到機器人,Python 與它有什麼關係。 GeekBrains 校友故事
鍵盤 羅技 K810

Python 非常有利於這樣的工作——如果你有一個好的編輯器的話。 另一種程式設計技巧:使用遠端連線到桌面或執行時間環境。 我使用在我的家用電腦上執行 Django 的安全 Web 伺服器完成了幾項任務。 我在火車上工作,使用 PyDroid、DroidEdit、Maxima 軟體。

為什麼選擇Python?

不久之後,我嘗試使用 PHP 作為系統腳本語言。 我最初是自己「為自己」一點點學習 Python。 當我了解到Python和C++之間在模組層級上有有效的連結後,我決定認真研究——在同一種語言中共享最佳化的演算法和資料準備過程似乎很有趣。

最簡單的例子:有一個非標準強力驅動器的控制系統,在具有RISC處理器的嵌入式機器上用C++實現。 管理透過外部機器相關的 API 進行,該 API 支援子系統之間透過網路進行的通訊等。 在較高層面上,驅動操作演算法未經調試或不是恆定的(需要根據工作流程加載不同的演算法)。

實現此類系統的最佳方法之一是使用特定於機器的 C++ 子系統 API 作為在跨平台解釋器上運行的一組 Python 類別的基礎。 因此,頂級開發人員不必考慮嵌入式機器及其作業系統的功能;他只需使用充當低階 API「包裝器」的 Python 類別即可。

我幾乎必須從頭開始學習 C++ 和 Python 綁定。 很快地人們就清楚了,高層的物件導向能力比低層的物件導向能力重要得多。 因此,我們必須徹底改變設計和實作 API 的方法,選擇 Python 層級的類別並在 C/C++ 中共享全域資料。 習慣程式碼產生:例如,ROS框架本身在Python中產生名稱和對象,因此在設計介面時必須考慮語言差異,尤其是打字方面。

當下工作:Python 和機器人控制邏輯

現在,我在莫斯科國立技術大學機器人研究和教育中心擔任 Python 和 C++ 程式設計師。 我們實施政府部門委託的研究項目和軟體工具:我們開發內建技術視覺系統和獨立於系統的高級自動控制演算法的機械手。

目前,我使用 Python 為機器人控制系統編寫高級邏輯;這種語言將用 C++、彙編程式和 Go 編寫的高度優化的模組連結在一起。

在對機器人控制演算法進行程式設計時,使用了兩大組演算法。 第一個是直接在設備上低層實現的——這是驅動控制器、通訊線路集中器和操作員交互子系統的內建軟體。

這裡的演算法旨在控制執行速度和可靠性,超越機器人的整體性能。 後者是強制性的,因為整個系統的安全取決於底層控制軟體。

第二組演算法決定了機器人的整體運作。 這些是高級程序,其開發的重點是演算法的清晰度和執行速度,通常相當複雜。 此外,機器人上的高階軟體在設定和測試過程中經常會發生變化。 對於這樣的開發,通用解釋語言是必不可少的。

此類工作需要哪些知識?

必須學習 C++ 模板語言和 Python 的物件導向功能。 一項幾乎不可取代的技能是設計和記錄 API 的能力。 探索 Boost::Python 等專用函式庫的功能是個好主意。 使用低階軟體的人肯定必須處理多執行緒(在核心層級)和 Linux/UNIX/QNX 系統呼叫。 為了提高對機器人原理的理解,熟悉機器人作業系統框架非常有用。

我嘗試至少擁有一種正在開發且需求旺盛的編譯型程式語言和一種解釋型程式語言。 這是工程領域的致勝策略,因為工程領域不斷需要開發高度專業化(即:不尋常)的演算法並用編譯語言實現它們。 使用解釋語言來解決為此類軟體準備資料的任務要愉快得多。 最初,我的集合包括 C++、Pascal 和 BASIC,後來加入了 PHP 和 BASH。

發展工具如何在教學中發揮作用

目前專業發展的主要計劃是力爭為教育學專業軟體開發工具的使用、開發和檢驗教學方法提供科學依據。

自2016年以來,我開始了一項大型實驗,將程式語言、IDE、文件產生器、版本控制系統等開發工具引入高等教育教學實踐。 我們現在已經成功地獲得了可以定性概括的結果。

例如,在教育過程中引入材料版本可以顯著提高學生作業的質量,但是,只有在強制性條件下:學生一起完成共享專案。 我的研究小組目前正在積極開發使用專業軟體開發工具教授技術學科的方法,該研究小組由 MSTU 的學生、申請者和附加教育計畫的學生組成。

順便說一句,我並沒有離開我的教學實踐——我為 MSTU 的高級研究所開發了自己的深入的全日制 Linux 設計和管理課程,並親自教授。

科學工作

早期作品
以馬步態實現為例設計四足行走系統時的步態規劃問題 (2010 g。)

作為四足移動者工作循環的組成部分,馬前腿支撐元件在接近支撐階段的運動學和負荷問題 (2012 g。)

從最後
3D齒輪製造模擬在機構與機械理論教學的應用 (2019 g。)

結構障礙物辨識方法及其在搜尋地形物中的應用 (2018 g。)

其他被科學引文資料庫索引的作品可以在我的個人資料中看到 研究之門。 大多數文章都是關於機器運動的,也有關於工程教育學和教育軟體的文章。

來源: www.habr.com

添加評論