Пуужингаас эхлээд робот хүртэл, Python үүнтэй ямар холбоотой вэ. GeekBrains төгсөгчдийн түүх

Пуужингаас эхлээд робот хүртэл, Python үүнтэй ямар холбоотой вэ. GeekBrains төгсөгчдийн түүх
Өнөөдөр бид Андрей Вуколовын мэдээллийн технологид шилжсэн түүхийг нийтэлж байна. Түүний бага насны сансар огторгуйн хүсэл тэмүүлэл нь түүнийг MSTU-д пуужингийн шинжлэх ухаанд суралцахад хүргэсэн юм. Хатуу ширүүн бодит байдал намайг зүүдээ мартахад хүргэсэн ч бүх зүйл илүү сонирхолтой болсон. C++ болон Python-ийг судлах нь надад роботын удирдлагын системийн логикийг програмчлах зэрэг сонирхолтой ажил хийх боломжийг олгосон.

Начало

Би бага насаа сансар огторгуйн тухай хөөрч байсандаа азтай байсан. Тиймээс би сургуулиа төгсөөд хаашаа явах ёстойгоо нэг минут ч эргэлзсэнгүй, MSTU-д орсон. Бауман, пуужингийн жолоодлогын инженерийн тэнхимд. Гэсэн хэдий ч сургалтын салбарыг өөрөө - сансрын пуужингийн нунтаг эсвэл шингэн хөдөлгүүрийг сонгох шаардлагагүй байсан: 2001 онд факультетийн тусгай комисс зорилтот бүлгийн өргөдөл гаргагчдыг хуваарилсан хэвээр байна. Би дарьтай торхонд баригдсан.

Тухайн үед "пуужингийн тэсрэлт" нь зөвхөн төлөвлөгөөнд л байсан; инженерүүд бага цалин авч, карьер, мэргэжлийн өсөлтийн хэтийн төлөвгүй тусгай хаалттай дизайны товчоо, судалгааны хүрээлэнгүүдэд ажилладаг байв. Гэсэн хэдий ч Орос дахь нунтаг пуужингууд нь зөвхөн цэргийн зориулалттай бүтээгдэхүүн юм.

Одоо энэ газар эрэлт хэрэгцээтэй байгаа ч би суралцах хугацаандаа пуужингийн шинжлэх ухаанд өөрийн санаачилгаар аливаа үйл ажиллагаа бараг боломжгүй гэдгийг ойлгосон. Үнэндээ энэ бол цэргийн алба юм. Жишээлбэл, пуужингийн салбарт ажиллаж байхдаа би энэ үйл ажиллагааг хатуу зохицуулдаг тул өөртөө зориулж програм хангамжийг бие даан боловсруулах боломжоос бүрэн хасагдах болно.

Бүх програм хангамжийн бүтээгдэхүүнийг зөвхөн тусгай захиалгаар, нууцлалын комиссын зөвшөөрлөөр боловсруулдаг (одоо FSTEC-ийн хэлтэс). Тэнд байгаа хөгжүүлэгч нь кодын мөр бүрийг шууд утгаар нь бүртгүүлж, лицензжүүлэх шаардлагатай. Бүх програм хангамж нь эхлээд даалгаврын түвшинд нууц байдаг. Энэ нь одоо пуужингийн шинжлэх ухааны оюутнуудыг сургахад ашигладаг программ хангамжийг яагаад хамгийн сүүлд 90-ээд онд боловсруулсан болохыг зарим талаар тайлбарлаж байна.

Би институтийг төгсөхдөө механизмын онолын тэнхимд ажиллаж, C++ хэл дээр боловсролын үйл явцын симулятор боловсруулж эхэлсэн тул харьцуулах жишээтэй байсан бөгөөд давуу болон сул талуудыг жинлэж чадсан юм. Сонголт нь тодорхой байсан бөгөөд би аажмаар IT болон робот техник рүү шилжиж эхэлсэн. Хэрэглээний механик нь пуужингийн шинжлэх ухаанаас хамаагүй хөгжилтэй байсан: шийдэгдээгүй олон асуудал, нээлттэй орчин, хөгжлийн салбар дутагдалтай, симуляцийн програм хангамжийн яаралтай хэрэгцээ. Робот техникт нийтлэг програм хангамжийн тогтворгүй архитектур байдаг бөгөөд бүдэг логик, хиймэл оюун ухааны эхлэлийг багтаасан нарийн төвөгтэй алгоритмуудыг дахин дахин хэрэгжүүлэх шаардлагатай байдаг. Тиймээс туршилтын өгөгдлийг боловсруулах анхны программынхаа дараа би пуужин руу бараг хэзээ ч буцаж ирээгүй (төгсөлтийн төслөө эс тооцвол).

Үүний үр дүнд би Москвагийн ойролцоох сансрын үйлдвэрлэлийн нийлмэл байгууламжийн үйлдвэрт төгсөхөөсөө өмнө мэргэжлээрээ дөрөвхөн сар ажиллах боломжтой болсон. Сургуулиа төгсөөд ажил хайх шаардлагагүй болсон - би тэр даруй робот техникийн тэнхимд хэрэглээний механикийн хичээл заахаар ирсэн.

Багшлахаас эхлээд программчлал хүртэл

Пуужингаас эхлээд робот хүртэл, Python үүнтэй ямар холбоотой вэ. GeekBrains төгсөгчдийн түүх
IFTOMM Дэлхийн конгресс дээр судалгааны багийн оюутнуудын хамт (би баруун талд)

Би МУИС-ийн түүвэрлэлтийн тэнхимд 10 жил ажиллаж, механизмын онолын хичээл зааж байсан. Тэрээр шинжлэх ухааны бүтээлүүдийг хэвлүүлсэн (өгүүллийн төгсгөлийг үзнэ үү), аажмаар механикаас CAD болон робот техник рүү шилжсэн. Тэгээд эцэст нь тэр багшлахаа орхихоор шийдсэн. Энэ шийдвэрийн шалтгааныг хамгийн тодорхой харуулахын тулд би арван жилийн хугацаанд миний зааж байсан сургалтын чиглэл аравтын орон нэг ч өөрчлөгдөөгүй гэдгийг хэлье. Хэдийгээр хэрэглээний механикууд хэвлэлээс харахад маш амжилттай урагшилжээ.

Нэмж дурдахад ажил нь хүнд сурталтай ажилтай илүү төстэй болсон - тайлан, хөтөлбөр, стандарт, олон тонн цаас. Ийм нөхцөлд багшлах таашаал нь энэхүү таашаалыг хүлээн авсан тухай мэдээлэх замаар солигдсон бөгөөд энэ нь дадлагажигч мэргэжилтний хувьд тааламжгүй зүйл юм.

Эцэст нь би робот техникт ирсэн: 2007-2009 онд профессор А.Головин, Н.Умнов нартай хамтран анхны шинжлэх ухааны бүтээлүүдийг бэлтгэж эхэлсэн. Тэнд би strobe гэрэл зургийн объектуудын замыг тодорхойлох алгоритмыг ашиглах шаардлагатай болсон. Энэ сэдвээс эхлээд машины хараа, OpenCV, Робот үйлдлийн систем (тэр үед би ийм масштабын талаар огт бодож байгаагүй) нэг алхам юм. Үүний дараа би судалгаанд хэрэглээний механик, робот техникт анхаарлаа хандуулж, хөгжүүлэлт нь туслах үйл ажиллагаа болсон.

Гэсэн хэдий ч робот техникийн чиглэлээр шинэ ажил олохын тулд програмчлалын мэдлэгээ сайжруулж, баяжуулах шаардлагатай болсон. Эцсийн эцэст би хэзээ ч их сургуулийн жилийн курс (C++-ийн ObjectPascal болон Borland VCL)-ийг эс тооцвол IT-ийг тусгайлан судалж үзээгүй бөгөөд хөгжлийн онолын тал дээр математикт найдаж байсан.

Эхэндээ би төрөлх дээд сургуульдаа бүтэн цагийн сургалтанд хамрагдах сонголтыг авч үзсэн. Тогтмол бус хуваарь, хуваариас гадуур байнга ажилладаг (орлуулах гэх мэт) зэргээс шалтгаалан ийм судалгааг тэнхимийн ажилтай хослуулах нь бараг боломжгүй болох нь тодорхой болсон нь үнэн. Тиймээс би аажмаар төлбөртэй курсуудыг алсаас дүүргэх санаатай болсон. Би GeekBrains-д Бауманка хотод байрлах Mail.ru Технопарк сургалтын төвийн профессоруудын зөвлөмжийн дагуу ирж, Python программист курст элссэн.

Хичээлүүд нь ямар ч хүндрэл учруулаагүй бөгөөд цорын ганц асуудал бол би тэдгээрийг тэнхимийн ажил, шинжлэх ухааны ажил, арга хэмжээнүүдтэй байнга хослуулах явдал байв. Цаг хугацаа маш хатуу байсан тул гэрээсээ гадуурх ихэнх нийгмийн харилцааг золиослох шаардлагатай болсон (аз болоход түр зуур).

Би ажлын ачааллыг ингэж даван туулсан: Би замын асуудлыг шийдсэн. Олон тооны бизнес аялалаар дамжуулан хөгжүүлсэн энэ чадвар нь маш хэрэгтэй байсан, учир нь үүнгүйгээр би бүх гэрийн даалгавраа хийж чадахгүй (мөн энэ нь бясалгалыг орлодог ...). Би зөөврийн компьютер, ухаалаг утас, утасгүй гар утасныхаа гарыг ашиглан код бичиж сурсан.

Миний зөөврийн компьютер бол Dell Latitude 3470 бөгөөд Logitech K 5.5 BT гартай хослуулсан 810 инч ба түүнээс дээш диагональ бүхий ямар ч ухаалаг гар утас ажиллах болно. Ерөнхийдөө би Logitech-ийн бүтээгдэхүүнийг хүн бүрт санал болгож байна; тэдгээр нь маш найдвартай бөгөөд ашиглалтын маш хүнд нөхцөлд тэсвэртэй (мөн энэ нь хэзээ ч сурталчилгаа биш).

Пуужингаас эхлээд робот хүртэл, Python үүнтэй ямар холбоотой вэ. GeekBrains төгсөгчдийн түүх
Logitech K810 гар

Python нь ийм ажилд маш их тустай - хэрэв танд сайн редактор байгаа бол. Өөр нэг програмчлалын хакер: ширээний компьютер эсвэл ажиллах орчинтой алсын холболтыг ашиглах. Би гэрийн компьютер дээрээ Django-г ажиллуулж байгаа аюулгүй вэб сервер ашиглан хэд хэдэн ажлыг гүйцэтгэсэн. Би PyDroid, DroidEdit, Maxima программыг ашиглан галт тэрэгнээс ажилласан.

Яагаад Python гэж?

Удалгүй би PHP-г системийн скрипт хэл болгон ашиглахыг оролдсон. Би Python хэлийг анх бие дааж, бага багаар "өөртөө зориулж" сурсан. Би модулийн түвшинд Python болон C++ хооронд үр дүнтэй холболт байгааг мэдсэнийхээ дараа нухацтай судлахаар шийдсэн - нэг хэлээр оновчтой алгоритмууд болон өгөгдөл бэлтгэх процедурыг хуваалцах нь сонирхолтой санагдсан.

Хамгийн энгийн жишээ: C++ хэл дээр RISC процессор бүхий суулгагдсан машин дээр хэрэгжсэн стандарт бус хүчирхэг хөтөчийн хяналтын систем байдаг. Удирдлага нь сүлжээгээр дамжуулан дэд системүүдийн хоорондын харилцаа холбоог дэмждэг гадаад машинаас хамааралтай API-ээр дамждаг. Өндөр түвшинд хөтөчийн үйлдлийн алгоритм нь дибаг хийгдээгүй эсвэл тогтмол биш (ажлын процессоос хамааран өөр өөр алгоритмуудыг ачаалах шаардлагатай).

Ийм системд хүрэх хамгийн сайн арга замуудын нэг бол машинд зориулагдсан C++ дэд системийн API-г платформ хоорондын орчуулагч дээр ажилладаг Python ангиудын багцын үндэс болгон ашиглах явдал юм. Тиймээс дээд түвшний хөгжүүлэгч нь суулгагдсан машин болон түүний үйлдлийн системийн онцлогийг харгалзан үзэх шаардлагагүй бөгөөд тэр зүгээр л доод түвшний API-ийн "боодол" үүрэг гүйцэтгэдэг Python ангиудтай ажиллах болно.

Би C++ болон Python binding-ийг бараг эхнээс нь сурах хэрэгтэй болсон. Өндөр түвшний объектод чиглэсэн чадвар нь доод түвшнийхээс хамаагүй чухал болох нь хурдан тодорхой болсон. Ийм учраас бид API-г зохион бүтээх, хэрэгжүүлэх арга барилаа бүрэн өөрчлөх, Python түвшний ангиудыг сонгох, C/C++ хэл дээрх глобал өгөгдлийг хуваалцах шаардлагатай болсон. Код үүсгэж хэвшээрэй: жишээлбэл, ROS хүрээ нь өөрөө Python дээр нэр, объект үүсгэдэг тул та интерфэйсээ зохиохдоо хэлний ялгааг, ялангуяа бичихдээ анхаарч үзэх хэрэгтэй.

Одоогийн байдлаар ажиллах: Python болон роботын удирдлагын логик

Одоо би Москвагийн Улсын Техникийн Их Сургуулийн Роботын Судалгаа боловсролын төвд Python болон C++ програмистаар ажилладаг. Бид засгийн газрын агентлагуудын захиалгаар судалгааны төсөл, програм хангамжийн хэрэгслийг хэрэгжүүлдэг: бид системээс хамааралгүй техникийн харааны систем, өндөр түвшний автомат удирдлагын алгоритм бүхий манипуляторуудыг боловсруулдаг.

Одоогоор би Python дээр роботын удирдлагын системд зориулсан өндөр түвшний логик программчилж байна; энэ хэл нь C++, assembler, Go хэл дээр бичигдсэн өндөр оновчтой модулиудыг хооронд нь холбодог.

Робот удирдах алгоритмыг програмчлахдаа хоёр том бүлэг алгоритмыг ашигладаг. Тэдгээрийн эхнийх нь төхөөрөмж дээр шууд хэрэгждэг, бага түвшинд - энэ нь хөтөч хянагч, холбооны шугамын баяжуулагч, операторын харилцан үйлчлэлийн дэд системүүдийн суурилуулсан програм хангамж юм.

Энд байгаа алгоритмууд нь роботын гүйцэтгэлээс давсан хяналттай гүйцэтгэлийн хурд, найдвартай байдалд зориулагдсан болно. Сүүлийнх нь заавал байх ёстой, учир нь бүхэл системийн аюулгүй байдал нь доод түвшний хяналтын програм хангамжаас хамаардаг.

Хоёрдахь бүлгийн алгоритмууд нь роботын ажиллагааг бүхэлд нь тодорхойлдог. Эдгээр нь өндөр түвшний хөтөлбөрүүд бөгөөд тэдгээрийг боловсруулахдаа алгоритмын хэрэгжилтийн тодорхой байдал, хурдыг чухалчилдаг бөгөөд ихэвчлэн нэлээд төвөгтэй байдаг. Нэмж дурдахад робот дээрх өндөр түвшний програм хангамжийг тохируулах, турших явцад ихэвчлэн өөрчлөгддөг. Ийм хөгжүүлэхийн тулд ерөнхий зориулалтын орчуулгын хэл зайлшгүй шаардлагатай.

Ийм ажилд ямар мэдлэг хэрэгтэй вэ?

Энэ нь C++ загварын хэл болон Python-ын объект хандалтат чадварыг судлах шаардлагатай болно. Бараг орлуулашгүй ур чадвар бол API-г зохион бүтээх, баримтжуулах чадвар юм. Boost::Python зэрэг төрөлжсөн номын сангуудын чадавхийг судлах нь зүйтэй байх. Доод түвшний программ хангамжтай ажилладаг хүмүүс олон урсгалтай (цөмийн түвшинд) болон Linux/UNIX/QNX системийн дуудлагуудтай тулгарах нь гарцаагүй. Роботын зарчмуудын талаарх ойлголтоо сайжруулахын тулд Робот үйлдлийн системийн хүрээтэй танилцах нь маш хэрэгтэй.

Хөгжиж буй, эрэлт хэрэгцээтэй байгаа ядаж нэг хөрвүүлсэн, тайлбарласан програмчлалын хэлтэй байхыг хичээдэг. Энэ бол өндөр мэргэшсэн (уншсан: ер бусын) алгоритмуудыг боловсруулж, хэлийг эмхэтгэхдээ хэрэгжүүлэх байнгын хэрэгцээ байдаг инженерийн салбарт ажиллах ялалтын стратеги юм. Ийм програм хангамжид өгөгдөл бэлтгэх ажлыг тайлбарласан хэл ашиглан шийдвэрлэхэд илүү таатай байдаг. Эхэндээ миний багцад C++, Pascal, BASIC орсон байсан бол сүүлд PHP болон BASH нэмэгдсэн.

Оюутнуудад заахад хөгжлийн хэрэгслүүд хэрхэн хэрэг болох вэ

Одоо мэргэжил дээшлүүлэх гол төлөвлөгөө бол сурган хүмүүжүүлэх ухаанд мэргэжлийн программ хангамж хөгжүүлэх хэрэглүүр ашиглахад шинжлэх ухааны үндэслэлтэй болгох, заах арга зүйг боловсруулах, турших явдал юм.

2016 оноос хойш би дээд боловсролын сургалтын практикт програмчлалын хэл, IDE, баримт бичгийн генератор, хувилбарын хяналтын систем зэрэг хөгжүүлэлтийн хэрэгслүүдийг нэвтрүүлэх томоохон туршилтыг эхлүүлсэн. Одоо бид чанарын хувьд ерөнхийлөн дүгнэх боломжтой үр дүнд хүрч чадсан.

Жишээлбэл, сургалтын үйл явцад материалын хувилбарыг нэвтрүүлэх нь оюутны ажлын чанарыг эрс сайжруулдаг, гэхдээ зөвхөн заавал байх ёстой нөхцөлд: оюутнууд хамтарсан төсөл дээр хамтран ажилладаг. Мэргэжлийн програм хангамж хөгжүүлэх хэрэгслийг ашиглан техникийн хичээл заах арга зүйг боловсруулах ажлыг одоо МУИС-ийн оюутнууд, өргөдөл гаргагчид, нэмэлт боловсролын хөтөлбөрийн оюутнуудаас бүрдсэн миний судалгааны баг идэвхтэй явуулж байна.

Дашрамд хэлэхэд, би багшлах дадлагаа орхиогүй - би МУИС-ийн Ахисан түвшний судалгааны хүрээлэнд зориулж Линуксийг зохион бүтээх, удирдах чиглэлээр гүнзгийрүүлсэн бүрэн цагийн курсээ боловсруулж, өөрөө заадаг.

Эрдэм шинжилгээний ажил

Эртний бүтээлүүд
Морины алхалтын жишээг ашиглан дөрвөн хөлт алхах системийг зохион бүтээхдээ алхалтыг төлөвлөхтэй холбоотой асуудлууд. (2010/XNUMX/XNUMX)

Дөрвөн хөлт хөдөлгөгчийн ажлын мөчлөгийн бүрэлдэхүүн хэсэг болох тулгуурт ойртох үе шатанд морины урд хөлийн тулгуур элементийн кинематик ба ачааллын асуудалд (2012/XNUMX/XNUMX)

Сүүлийнхээс
Механизм, машины онолыг заах зориулалттай 3D араа үйлдвэрлэх загварчлалын програм (2019/XNUMX/XNUMX)

Бүтцийн саад тотгорыг таних арга, түүнийг тусламжийн объект хайхад ашиглах арга (2018/XNUMX/XNUMX)

Шинжлэх ухааны ишлэлийн мэдээллийн сангуудаар индексжүүлсэн бусад бүтээлүүдийг миний профайл дээрх хаягаас харж болно ResearchGate. Ихэнх нийтлэлүүд нь машинуудын хөдөлгөөнд зориулагдсан, инженерийн сурган хүмүүжүүлэх ухаан, боловсролын програм хангамжийн талаархи бүтээлүүд байдаг.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх