ロケットからロボットたで、そしお Python はそれず䜕の関係があるのか​​。 GeekBrains 同窓䌚ストヌリヌ

ロケットからロボットたで、そしお Python はそれず䜕の関係があるのか​​。 GeekBrains 同窓䌚ストヌリヌ
本日は、Andrey Vukolov の IT ぞの移行のストヌリヌを公開したす。 幌少期の宇宙ぞの情熱がきっかけで、MSTU でロケット科孊を孊ぶようになりたした。 厳しい珟実は私に倢のこずを忘れさせたしたが、すべおがさらに面癜くなりたした。 C++ ず Python を勉匷したこずで、ロボット制埡システムのロゞックをプログラミングするずいう、同様に刺激的な仕事ができるようになりたした。

開始

私は幌少期ずっず宇宙に熱䞭できお幞運でした。 それで、攟課埌、どこに勉匷に行こうか迷いもせず、MSTUに入孊したした。 バりマン、ロケット掚進工孊科ぞ。 しかし、コヌス自䜓の分野である宇宙ロケットの粉末゚ンゞンたたは液䜓゚ンゞンを遞択する必芁はたったくありたせんでした。2001 幎には、特別教授委員䌚が䟝然ずしお志願者の察象グルヌプを分配しおいたした。 火薬庫に捕たっおしたいたした。

圓時、「ロケット ブヌム」は蚈画の䞭だけであり、技術者はわずかな絊䞎を受け取り、キャリアや専門的な成長の芋蟌みがほずんどない閉鎖的な特別な蚭蚈局や研究機関で働いおいたした。 それでも、ロシアの火薬ロケットは玔粋に軍事補品である。

今、この分野は需芁が高たっおいたすが、ロケット科孊においおは、自分の意志で掻動するこずはほずんど䞍可胜であるこずに、私は勉匷䞭にすでに気づいおいたした。 実際、これは兵圹です。 たずえば、ロケット産業で働いおいるず、たずえ自分自身であっおも゜フトりェアを独自に開発する機䌚は完党に奪われおしたいたす。この掻動は厳しく芏制されおいるからです。

すべおの゜フトりェア補品は特別泚文に基づいおのみ開発され、機密委員䌚 (珟圚は FSTEC の䞀郚門) の承認を埗おいたす。 開発者は、文字通りコヌドのすべおの行を登録し、ラむセンスを取埗する必芁がありたす。 すべおの゜フトりェアは、最初はタスク レベルで秘密です。 これは、ロケット科孊の孊生を蚓緎するために珟圚䜿甚されおいる゜フトりェアが遅くずも 90 幎代に開発された理由の䞀郚を説明したす。

研究所を卒業するたでに、私はメカニズム理論の孊科でなんずか働くこずができ、C++ で教育プロセス シミュレヌタヌの開発を始めたので、比范甚の䟋があり、メリットずデメリットを比范怜蚎するこずができたした。 遞択は明癜で、私は埐々に IT ずロボット工孊に傟き始めたした。 応甚力孊はロケット科孊よりもはるかに楜しかったです。倚くの未解決の問題、オヌプンな環境、開発産業の欠劂、シミュレヌション ゜フトりェアの緊急の必芁性がありたした。 ロボット工孊では、䞀般的な゜フトりェアのアヌキテクチャが確立されおおらず、ファゞヌ ロゞックや AI の始たりを含む耇雑なアルゎリズムを繰り返し実装する必芁がありたす。 したがっお、実隓デヌタを凊理するための最初のプログラムの埌、私は卒業研究を陀いおロケットに戻るこずはほずんどありたせんでした。

その結果、モスクワ近郊の航空宇宙産業向け耇合構造の工堎で卒業するたでのわずか XNUMX か月間、自分の専門分野で働く機䌚を埗たした。 卒業埌は仕事を探す必芁もなく、すぐにロボット工孊科で応甚力孊を教えるこずになりたした。

教育からプログラミングたで

ロケットからロボットたで、そしお Python はそれず䜕の関係があるのか​​。 GeekBrains 同窓䌚ストヌリヌ
IFTOMM䞖界䌚議にお研究グルヌプの孊生メンバヌず右が私

私は MSTU のサンプリング郚門で 10 幎間働き、メカニズム理論のコヌスを教えおいたした。 圌は科孊的な著䜜を出版し (蚘事の最埌を参照)、埐々に機械孊から CAD やロボット工孊ぞず移行しおいきたした。 そしお最終的に圌は教垫を蟞めるこずを決意したした。 この決定の理由を最も明確に説明するために、私が教えた孊習指導芁領は XNUMX 幎間、小数点以䞋 XNUMX 桁も倉わっおいないず蚀いたいず思いたす。 出版物から刀断するず、応甚力孊は非垞にうたく前進したしたが。

さらに、報告曞、プログラム、基準、倧量の玙など、仕事はたすたす官僚的な仕事に䌌おきたした。 このような状況では、教えるこずの喜びが、その喜びを受け取ったこずを報告するこずによっお眮き換えられ、これは珟圹の専門家にずっお䞍快以䞊のものです。

そしお最終的に、私はこのようにロボット工孊に到達したした。2007幎から2009幎にかけお、A.ゎロビン教授ずN.りムノフ教授ず䞀緒に、最初の科孊的研究の準備を始めたした。 そこではアルゎリズムを䜿甚しお、ストロボ写真からオブゞェクトの経路を決定する必芁がありたした。 このトピックからは、マシン ビゞョン、OpenCV、ロボット オペレヌティング システムぞの䞀歩です (ただし、圓時はそのような芏暡に぀いおは考えもしたせんでした)。 その埌、最終的には応甚力孊ずロボット工孊の研究に集䞭し、開発は補助的な掻動になりたした。

しかし、ロボット工孊の分野で新しい仕事を芋぀けるには、プログラミングの知識を向䞊させ、補足する必芁がありたした。 結局のずころ、私は XNUMX 幎間の倧孊のコヌス (C++ の ObjectPascal ず Borland VCL) を陀いお、IT を具䜓的に勉匷したこずはなく、開発の理論的偎面は数孊に䟝存しおいたした。

最初は母校のフルタむムコヌスの遞択肢を怜蚎したした。 確かに、䞍芏則なスケゞュヌルず自分のスケゞュヌル倖の仕事亀代などが頻繁にあるため、そのような研究ず孊郚での仕事を組み合わせるのはほずんど䞍可胜であるこずがすぐに明らかになりたした。 そこで、埐々に有料コヌスをリモヌトで履修するずいう考えに至りたした。 私はバりマンカにある Mail.ru テクノパヌク トレヌニング センタヌの教授の勧めで GeekBrains に来お、Python プログラマヌ コヌスに登録したした。

コヌスは䜕の問題も匕き起こしたせんでしたが、唯䞀の問題は、それらを孊郚での仕事、科孊的な仕事、むベントず垞に組み合わせなければならないこずでした。 時間が非垞に逌迫しおいたので、家の倖での瀟䌚的぀ながりのほずんどを幞いなこずに䞀時的に犠牲にしなければならなかった。

私はこのようにしお仕事量に察凊したした。移動䞭に問題を解決したした。 䜕床も出匵するこずで培われたこのスキルは、ずおも圹立぀こずがわかりたした。それがなければ宿題をすべお終わらせるこずさえできないからです瞑想の代わりにもなりたす...。 ラップトップ、スマヌトフォン、ワむダレススマヌトフォンのキヌボヌドを䜿甚しお、倖出先でコヌディングするこずを孊びたした。

私のラップトップは Dell Latitude 3470 で、Logicool K 5.5 BT キヌボヌドず組み合わせた察角線 810 むンチ以䞊のスマヌトフォンであれば問題ありたせん。 䞀般に、私はロゞクヌル補品を誰にでもお勧めしたす。それらは非垞に信頌性が高く、非垞に過酷な䜿甚条件に耐えるこずができたす (これは決しお宣䌝ではありたせん)。

ロケットからロボットたで、そしお Python はそれず䜕の関係があるのか​​。 GeekBrains 同窓䌚ストヌリヌ
キヌボヌド ロゞクヌル K810

優れた゚ディタヌを持っおいる堎合、Python はそのような䜜業に非垞に圹立ちたす。 もう XNUMX ぀のプログラミング ハック: デスクトップたたはランタむム環境ぞのリモヌト接続を䜿甚したす。 自宅のコンピュヌタヌで Django を実行しおいる安党な Web サヌバヌを䜿甚しお、いく぀かのタスクを完了したした。 私は電車の䞭で PyDroid、DroidEdit、Maxima ゜フトりェアを䜿甚しお仕事をしたした。

なぜパむ゜ンなのか?

私がシステム スクリプト蚀語ずしお PHP を䜿甚しようずするたで、それほど時間はかかりたせんでした。 私は最初は独孊で少しず぀「自分のため」に Python を勉匷したした。 モゞュヌル レベルで Python ず C++ の間に効果的な接続が存圚するこずを知り、同じ蚀語内で最適化されたアルゎリズムずデヌタ準備手順を共有するのは興味深いず思い、真剣に勉匷するこずにしたした。

最も単玔な䟋: RISC プロセッサを搭茉した組み蟌みマシンに C++ で実装された、非暙準の匷力なドラむブの制埡システムがありたす。 管理は、たずえばネットワヌクを介したサブシステム間の通信をサポヌトする、マシンに䟝存する倖郚 API を通じお行われたす。 倧たかに蚀うず、ドラむブ操䜜アルゎリズムはデバッグされおいないか䞀定ではありたせん (䜜業プロセスに応じお異なるアルゎリズムをロヌドする必芁がありたす)。

このようなシステムを実珟する最良の方法の XNUMX ぀は、クロスプラットフォヌム むンタプリタ䞊で実行される Python クラスのセットの基瀎ずしお、マシン固有の C++ サブシステム API を䜿甚するこずです。 したがっお、トップレベルの開発者は、組み蟌みマシンずその OS の機胜を考慮する必芁がなく、䜎レベル API の「ラッパヌ」ずしお機胜する Python クラスを操䜜するだけで枈みたす。

C++ ず Python のバむンディングをほがれロから孊ばなければなりたせんでした。 高レベルのオブゞェクト指向機胜が䜎レベルよりもはるかに重芁であるこずがすぐに明らかになりたした。 このため、API の蚭蚈ず実装のアプロヌチを完党に倉曎し、Python レベルのクラスず C/C++ での共有グロヌバル デヌタを遞択する必芁がありたした。 コヌド生成に慣れたす。たずえば、ROS フレヌムワヌク自䜓は Python で名前ずオブゞェクトを生成するため、むンタヌフェむスを蚭蚈する際には、蚀語の違い、特に入力の違いを考慮する必芁がありたす。

珟圚の働き方: Python ずロボット制埡ロゞック

珟圚、私はモスクワ囜立工科倧孊のロボット研究教育センタヌで Python および C++ プログラマヌずしお働いおいたす。 圓瀟は政府機関から委蚗された研究プロゞェクトや゜フトりェア ツヌルを実行しおいたす。圓瀟は、組み蟌みのテクニカル ビゞョン システムずシステムに䟝存しない高レベルの自動制埡アルゎリズムを備えたマニピュレヌタを開発しおいたす。

珟圚、ロボット制埡システムの高レベル ロゞックを Python でプログラムしおいたす。この蚀語は、C++、アセンブラヌ、Go で曞かれた高床に最適化されたモゞュヌルをリンクしおいたす。

ロボット制埡アルゎリズムのプログラミングでは、XNUMX ぀の倧きなグルヌプのアルゎリズムが䜿甚されたす。 それらの XNUMX ぀目は、䜎レベルで機噚に盎接実装されたす。これは、ドラむブ コントロヌラヌ、通信回線コンセントレヌタヌ、およびオペレヌタヌ察話サブシステムの組み蟌み゜フトりェアです。

ここでのアルゎリズムは、ロボット党䜓のパフォヌマンスを超える制埡された実行速床ず信頌性を実珟するように蚭蚈されおいたす。 システム党䜓のセキュリティは䜎レベルの制埡゜フトりェアに䟝存するため、埌者は必須です。

XNUMX 番目のグルヌプのアルゎリズムは、ロボットの党䜓的な動䜜を決定したす。 これらは高レベルのプログラムであり、その開発ではアルゎリズムの実装の明確さず速床に重点が眮かれおおり、倚くの堎合非垞に耇雑です。 さらに、ロボット䞊の高レベルの゜フトりェアは、セットアップおよびテストのプロセス䞭に倉曎される可胜性が非垞に頻繁にありたす。 このような開発には汎甚むンタプリタ蚀語が䞍可欠です。

そのような仕事にはどのような知識が必芁ですか

C++ テンプレヌト蚀語ず Python のオブゞェクト指向機胜を孊習するこずが必須になりたす。 ほがかけがえのないスキルは、API を蚭蚈しお文曞化する胜力です。 Boost::Python のような特殊なラむブラリの機胜を調べおみるのも良いでしょう。 䜎レベルの゜フトりェアを扱う人は、間違いなくマルチスレッド (カヌネル レベルで) ず Linux/UNIX/QNX システム コヌルに察凊する必芁がありたす。 ロボット工孊の原理の理解を深めるには、ロボット オペレヌティング システムのフレヌムワヌクに慣れるこずが非垞に圹立ちたす。

私は、開発䞭で需芁のあるコンパむル枈みプログラミング蚀語ずむンタヌプリタ型プログラミング蚀語を少なくずも XNUMX ぀ず぀甚意するようにしおいたす。 これは、高床に特殊化された (぀たり、珍しい) アルゎリズムを開発し、コンパむル蚀語で実装する必芁が垞にある゚ンゞニアリング分野での䜜業にずっお勝利を収める戊略です。 このような゜フトりェア甚にデヌタを準備するタスクは、むンタヌプリタ蚀語を䜿甚しお解決する方がはるかに快適です。 圓初、私のセットには C++、Pascal、BASIC が含たれおいたしたが、埌に PHP ず BASH が远加されたした。

開発ツヌルが生埒の指導にどのように圹立぀か

珟圚の専門胜力開発の䞻な蚈画は、教育孊における専門的な゜フトりェア開発ツヌルの䜿甚に関する科孊的根拠を提䟛し、教育方法を開発およびテストするこずです。

2016 幎以来、私はプログラミング蚀語、IDE、ドキュメント ゞェネレヌタヌ、バヌゞョン管理システムなどの開発ツヌルを高等教育の教育実践に導入する倧芏暡な実隓を開始したした。 珟圚、定性的に䞀般化できる結果を埗るこずができたした。

たずえば、教育プロセスに教材のバヌゞョン管理を導入するず、孊生の䜜業の質が倧幅に向䞊したすが、それは孊生が共有プロゞェクトに䞀緒に取り組むずいう必須の条件の䞋でのみです。 専門的な゜フトりェア開発ツヌルを䜿甚しお技術分野を教える方法の開発は、珟圚、MSTU の孊生、志願者、远加教育プログラムの孊生で構成される私の研究グルヌプによっお積極的に実斜されおいたす。

ちなみに、私は教職を蟞めたわけではありたせん。MSTU の高等研究所向けに Linux の蚭蚈ず管理に関する詳现なフルタむム コヌスを独自に開発し、自分で教えおいたす。

科孊的な仕事

初期の仕事
銬の歩行の実装䟋を䜿甚しお四足歩行システムを蚭蚈する堎合の歩行蚈画の問題 2010 g

四足運動装眮の動䜜サむクルの構成芁玠ずしお、サポヌトに近づく段階での銬の前脚のサポヌト芁玠の運動孊ず負荷の問題に぀いお 2012 g

最埌から
機構や機械理論を教えるための3D歯車補造シミュレヌションアプリケヌション 2019 g

構造障害物の認識手法ずレリヌフ物䜓の探玢ぞの応甚 2018 g

科孊匕甚デヌタベヌスによっお玢匕付けされた他の䜜品は、次の私のプロフィヌルで芋るこずができたす。 ResearchGate。 ほずんどの蚘事は機械の動きに圓おられおおり、工孊教育孊や教育゜フトりェアに関する研究もありたす。

出所 habr.com

コメントを远加したす