Mühendislik eğitimi dünyasında pek çok mükemmel ders vardır, ancak çoğu zaman bunların etrafında oluşturulan müfredat ciddi bir kusurdan muzdariptir: çeşitli konular arasında iyi bir tutarlılık eksikliği. Biri itiraz edebilir: Bu nasıl olabilir?
Bir eğitim programı oluşturulurken her ders için ön koşullar ve çalışılması gereken disiplinlerin açık bir sırası belirtilir. Örneğin ilkel bir mobil robot yapmak ve programlamak için onun fiziksel yapısını oluşturacak biraz mekanik bilmeniz gerekir; Ohm/Kirchhoff kanunları düzeyinde elektriğin temelleri, dijital ve analog sinyallerin temsili; Koordinat sistemlerini ve robotun uzaydaki hareketlerini açıklamak amacıyla vektörler ve matrislerle yapılan işlemler; veri sunumu düzeyinde programlamanın temelleri, basit algoritmalar ve kontrol aktarım yapıları vb. davranışı tanımlamak için.
Bütün bunlar üniversite derslerinde yer alıyor mu? Elbette var. Ancak Ohm/Kirchhoff yasalarıyla termodinamiği ve alan teorisini elde ederiz; Matrisler ve vektörlerle yapılan işlemlere ek olarak Jordan formlarıyla da ilgilenilmesi gerekir; programlamada, polimorfizmi inceleyin - basit bir pratik problemi çözmek için her zaman gerekli olmayan konular.
Üniversite eğitimi kapsamlıdır - öğrenci geniş bir cepheye gider ve çoğu zaman aldığı bilginin anlamını ve pratik önemini görmez. STEM'de üniversite eğitimi paradigmasını (Bilim, Teknoloji, Mühendislik, Matematik kelimelerinden) değiştirmeye ve bilginin tutarlılığına dayanan, gelecekte bütünlüğün artmasına izin veren bir program oluşturmaya karar verdik. konulara yoğun hakimiyet anlamına gelir.
Yeni bir konu alanı öğrenmek, yerel bir alanı keşfetmeye benzetilebilir. Ve burada iki seçenek var: ya ana yer işaretlerinin nerede olduğunu ve birbirleriyle nasıl ilişkili olduklarını anlamak için üzerinde çalışılması gereken (ve bu çok zaman alır) çok fazla ayrıntı içeren çok ayrıntılı bir haritamız var. ; veya yalnızca ana noktaların ve bunların göreceli konumlarının belirtildiği ilkel bir plan kullanabilirsiniz - böyle bir harita, ilerledikçe ayrıntıları netleştirerek hemen doğru yönde hareket etmeye başlamak için yeterlidir.
MIT öğrencileriyle birlikte gerçekleştirdiğimiz kış okulunda yoğun STEM öğrenme yaklaşımını test ettik.
Malzeme hazırlığı
Okul programının ilk kısmı cebir, elektrik devreleri, bilgisayar mimarisi, Python programlama ve ROS'a (Robot İşletim Sistemi) girişi içeren ana alanlardaki bir haftalık derslerden oluşuyordu.
Yönler şans eseri seçilmedi: Birbirlerini tamamlayarak öğrencilerin ilk bakışta farklı görünen şeyler (matematik, elektronik ve programlama) arasındaki bağlantıyı görmelerine yardımcı olmaları gerekiyordu.
Elbette asıl amaç çok fazla ders vermek değil, öğrencilere yeni edindikleri bilgileri pratikte kendileri uygulama fırsatı vermekti.
Cebir bölümünde öğrenciler, elektrik devrelerini çalışırken faydalı olan matris işlemleri ve denklem sistemlerini çözme konusunda pratik yapabilirler. Bir transistörün yapısını ve onun temelinde oluşturulan mantıksal unsurları öğrenen öğrenciler, bunların bir işlemci cihazındaki kullanımını görebildiler ve Python dilinin temellerini öğrendikten sonra, içinde gerçek bir robot için bir program yazabildiler.

Duckietown
Okulun hedeflerinden biri mümkün olduğunca simülatörlerle çalışmayı en aza indirmekti. Bu nedenle, öğrencilerin gerçek bileşenlerden bir devre tahtası üzerinde monte etmeleri ve bunları pratikte test etmeleri gereken geniş bir elektronik devre seti hazırlandı ve projelerin temeli olarak Duckietown seçildi.
Duckietown, Duckiebots adı verilen küçük otonom robotları ve bunların seyahat ettiği yol ağlarını içeren açık kaynaklı bir projedir. Duckiebot, Raspberry Pi mikrobilgisayar ve tek kamerayla donatılmış tekerlekli bir platformdur.
Buna dayanarak, bir yol haritası oluşturmak, nesneleri aramak ve yanlarında durmak gibi bir dizi olası görevi ve daha fazlasını hazırladık. Öğrenciler ayrıca kendi problemlerini önerebilir ve sadece onu çözecek bir program yazmakla kalmayıp, aynı zamanda onu gerçek bir robotta hemen çalıştırabilirler.
öğretim
Ders sırasında öğretmenler materyali önceden hazırlanmış sunumlar kullanarak sundular. Öğrencilerin evde izleyebilmeleri için bazı dersler videoya kaydedildi. Dersler sırasında öğrenciler bilgisayarlarındaki materyalleri kullandılar, sorular sordular ve problemleri birlikte ve bağımsız olarak, bazen de tahtada çözdüler. Çalışmanın sonuçlarına göre her öğrencinin farklı konulardaki puanı ayrı ayrı hesaplandı.

Her dersteki derslerin işleyişini daha ayrıntılı olarak ele alalım. İlk konu doğrusal cebirdi. Öğrenciler bir günlerini vektörler ve matrisler, doğrusal denklem sistemleri vb. üzerinde çalışarak geçirdiler. Pratik görevler etkileşimli olarak yapılandırıldı: Önerilen problemler ayrı ayrı çözüldü ve öğretmen ve diğer öğrenciler yorum ve ipuçları sağladı.

İkinci konu ise elektrik ve basit devreler. Öğrenciler elektrodinamiğin temellerini öğrendiler: gerilim, akım, direnç, Ohm kanunu ve Kirchhoff kanunları. Pratik görevlerin bir kısmı simülatörde yapıldı ya da tahtada tamamlandı, ancak mantık devreleri, salınım devreleri vb. gibi gerçek devrelerin inşası için daha fazla zaman harcandı.

Bir sonraki konu Bilgisayar Mimarisi; bir bakıma fizik ile programlamayı birbirine bağlayan bir köprü. Öğrenciler, önemi pratikten çok teorik olan temel temeli incelediler. Uygulama olarak öğrenciler simülatörde bağımsız olarak aritmetik ve mantık devreleri tasarladılar ve tamamladıkları görevler için puan aldılar.
Dördüncü gün programlamanın ilk günüdür. Python 2 programlama dili olarak seçildi çünkü ROS programlamasında kullanılan dildi. Bu gün şu şekilde yapılandırıldı: Öğretmenler materyali sundu, problem çözme örnekleri verdi, öğrenciler ise bilgisayarlarının başına oturarak bunları dinlediler ve öğretmenin tahtaya veya slayta yazdıklarını tekrarladılar. Daha sonra öğrenciler benzer problemleri kendi başlarına çözdüler ve daha sonra çözümler öğretmenler tarafından değerlendirildi.
Beşinci gün ROS'a ayrıldı: çocuklar robot programlamayı öğrendiler. Öğrenciler tüm okul günü boyunca bilgisayarlarının başında oturup öğretmenin bahsettiği program kodunu çalıştırdılar. Temel ROS birimlerini kendi başlarına çalıştırabildiler ve Duckietown projesiyle de tanıştılar. Bu günün sonunda öğrenciler okulun proje kısmına, yani pratik problemlerin çözümüne başlamaya hazırdılar.

Seçilen projelerin açıklaması
Öğrencilerden üç kişilik ekipler oluşturarak bir proje konusu seçmeleri istendi. Sonuç olarak aşağıdaki projeler kabul edildi:
1. Renk kalibrasyonu. Duckiebot'un aydınlatma koşulları değiştiğinde kamerayı kalibre etmesi gerekiyor, dolayısıyla otomatik bir kalibrasyon görevi var. Sorun, renk aralıklarının ışığa karşı çok duyarlı olmasıdır. Katılımcılar, bir çerçevede gerekli renkleri (kırmızı, beyaz ve sarı) vurgulayacak ve her renk için HSV formatında aralıklar oluşturacak bir yardımcı program uyguladılar.
2. Ördek Taksi. Bu projenin fikri Duckiebot'un bir nesnenin yakınında durabilmesi, onu alıp belirli bir rotayı izleyebilmesidir. Nesne olarak parlak sarı bir ördek seçildi.

3. Yol grafiğinin oluşturulması. Yolların ve kavşakların bir grafiğini oluşturma görevi var. Bu projenin amacı Duckiebot'a önceden çevresel veri sağlamadan, yalnızca kamera verilerine dayanarak bir yol grafiği oluşturmaktır.
4. Devriye arabası. Bu proje öğrencilerin kendileri tarafından icat edildi. Bir "devriye" olan Duckiebot'a, bir "ihlalci" olan diğerini kovalamayı öğretmeyi önerdiler. Bu amaçla ArUco işaretleyicisini kullanarak hedef tanıma mekanizması kullanıldı. Tanıma tamamlanır tamamlanmaz, "davetsiz misafire" işi tamamlaması için bir sinyal gönderilir.

Renk Kalibrasyonu
Renk Kalibrasyonu projesinin amacı, tanınabilir işaretleme renkleri aralığını yeni aydınlatma koşullarına göre ayarlamaktı. Bu tür ayarlamalar olmadan durma çizgilerinin, şerit ayırıcıların ve yol sınırlarının tanınması hatalı hale geldi. Katılımcılar, ön işleme işaretleme renk desenlerine dayalı bir çözüm önerdiler: kırmızı, sarı ve beyaz.
Bu renklerin her birinin önceden ayarlanmış bir HSV veya RGB değerleri aralığı vardır. Bu aralık kullanılarak çerçevenin uygun renkleri içeren tüm alanları bulunur ve en büyüğü seçilir. Bu alan hatırlanması gereken renk olarak alınır. Daha sonra yeni renk aralığını tahmin etmek için ortalama ve standart sapmanın hesaplanması gibi istatistiksel formüller kullanılır.
Bu aralık Duckiebot'un kamera yapılandırma dosyalarına kaydedilir ve daha sonra kullanılabilir. Açıklanan yaklaşım üç rengin tümüne uygulandı ve sonuçta işaretleme renklerinin her biri için aralıklar oluşturuldu.
Testler, işaretleme malzemelerinin, ışık kaynaklarını o kadar güçlü yansıtan parlak bant kullandığı durumlar dışında, işaretleme çizgilerinin neredeyse mükemmel şekilde tanındığını gösterdi; bu bant, kameranın görüş açısından bakıldığında, orijinal renginden bağımsız olarak işaretler beyaz görünüyordu.

Ördek Taksi
Duck Taxi projesi, şehirde ördek yolcunun aranması ve daha sonra istenilen noktaya taşınması için bir algoritmanın oluşturulmasını içeriyordu. Katılımcılar bu sorunu ikiye ayırdılar: algılama ve grafik boyunca hareket etme.
Öğrenciler, ördeğin çerçevede üzerinde kırmızı üçgen (gaga) bulunan, sarı olarak algılanabilen herhangi bir alan olduğu varsayımını yaparak ördek tespitini gerçekleştirdiler. Bir sonraki karede böyle bir alan tespit edilir edilmez robot oraya yaklaşmalı ve ardından birkaç saniye durarak bir yolcunun inişini simüle etmelidir.
Daha sonra, tüm Duckietown'un yol grafiğini ve botun konumunu önceden hafızaya kaydederek ve varış noktasını girdi olarak alarak katılımcılar, grafikteki yolları bulmak için Dijkstra'nın algoritmasını kullanarak kalkış noktasından varış noktasına kadar bir yol oluştururlar. . Çıktı, aşağıdaki kavşakların her birinde dönüşler yapan bir dizi komut olarak sunulur.

Yol Grafiği
Bu projenin amacı Duckietown'da bir yol ağı grafiği oluşturmaktı. Ortaya çıkan grafiğin düğümleri kavşaklardır ve yaylar yollardır. Bunu yapmak için Duckiebot'un şehri keşfetmesi ve rotasını analiz etmesi gerekiyor.
Proje üzerinde yapılan çalışmalar sırasında, ağırlıklı bir grafik oluşturma fikri düşünüldü, ancak daha sonra bir kenara atıldı; burada bir kenarın maliyeti, kavşaklar arasındaki mesafeye (seyahat süresi) göre belirlenir. Bu fikrin uygulanmasının çok emek yoğun olduğu ortaya çıktı ve okulda bunun için yeterli zaman yoktu.
Duckiebot bir sonraki kavşağa geldiğinde henüz girmediği kavşaktan çıkan yolu seçer. Tüm kavşaklardaki tüm yollar geçildiğinde, oluşturulan kavşak komşuluk listesi botun hafızasında kalır ve bu, Graphviz kütüphanesi kullanılarak bir görüntüye dönüştürülür.
Katılımcılar tarafından önerilen algoritma rastgele bir Duckietown için uygun değildi ancak okul içinde kullanılan dört kavşaktan oluşan küçük bir kasaba için iyi çalıştı. Fikir, kavşakların ilerleme sırasını takip etmek için her kavşağa, bir kavşak tanımlayıcı içeren bir ArUco işaretçisi eklemekti.
Katılımcılar tarafından geliştirilen algoritmanın diyagramı şekilde gösterilmiştir.

Devriye arabası
Bu projenin amacı Duckietown şehrinde ihlalde bulunan bir botu aramak, takip etmek ve gözaltına almaktır. Bir devriye botu, izinsiz girdiği bilinen bir botu aramak için şehir yolunun dış halkası boyunca hareket etmelidir. Davetsiz misafiri tespit ettikten sonra devriye botu davetsiz misafiri takip etmeli ve onu durmaya zorlamalıdır.
Çalışma, bir karedeki botu tespit etme ve içerideki davetsiz misafiri tanıma fikrinin araştırılmasıyla başladı. Ekip, tıpkı gerçek arabaların eyalet tescil numaralarına sahip olması gibi, şehirdeki her robotun arkasında benzersiz bir işaret bulunmasını önerdi. ArUco belirteçleri bu amaç için seçildi. Çalışmaları kolay olduğundan ve işaretleyicinin uzaydaki yönünü ve ona olan mesafeyi belirlemenize izin verdikleri için daha önce Duckietown'da kullanılmışlardı.
Daha sonra, devriye botunun kavşaklarda durmadan kesinlikle dış çemberde hareket etmesini sağlamak gerekiyordu. Duckiebot varsayılan olarak bir şeritte hareket eder ve durma çizgisinde durur. Daha sonra yol işaretleri yardımıyla kavşağın konfigürasyonunu belirler ve kavşağın geçiş yönü konusunda bir seçim yapar. Tanımlanan aşamaların her biri için robotun sonlu durum makinesinin durumlarından biri sorumludur. Ekip, kavşaktaki duraklamalardan kurtulmak için durum makinesini değiştirerek durma çizgisine yaklaşıldığında botun hemen kavşaktan düz sürüş durumuna geçmesini sağladı.
Bir sonraki adım davetsiz misafir botu durdurma problemini çözmekti. Ekip, devriye botunun şehirdeki botların her birine SSH erişiminin olabileceği, yani her botun hangi yetkilendirme verilerine ve hangi kimliğe sahip olduğuna dair bazı bilgilere sahip olabileceği varsayımında bulundu. Böylece devriye botu davetsiz misafiri tespit ettikten sonra SSH aracılığıyla davetsiz misafir botuna bağlanmaya ve sistemini kapatmaya başladı.
Kapatma komutunun tamamlandığını doğruladıktan sonra devriye botu da durdu.
Bir devriye robotunun çalışma algoritması aşağıdaki diyagramla temsil edilebilir:

Projeler üzerinde çalışmak
Çalışma Scrum'a benzer bir formatta düzenlendi: Öğrenciler her sabah o güne ait görevleri planladılar ve akşamları yapılan çalışmaları rapor ettiler.
İlk ve son günlerde öğrenciler görevi ve nasıl çözüleceğini anlatan sunumlar hazırladılar. Öğrencilerin seçtikleri planları takip etmelerine yardımcı olmak için, Rusya ve Amerika'dan öğretmenler projeler üzerinde çalışmaların yapıldığı odalarda sürekli hazır bulunarak soruları yanıtladılar. İletişim öncelikle İngilizce olarak gerçekleşti.
Sonuçlar ve gösterileri
Projeler üzerindeki çalışmalar bir hafta sürdü ve ardından öğrenciler sonuçlarını sundular. Herkes bu okulda öğrendiklerini, öğrendikleri en önemli derslerin neler olduğunu, neyi sevip neyi sevmediğini anlattığı sunumlar hazırladı. Daha sonra her ekip projesini sundu. Tüm ekipler verilen görevlerle başa çıktı.
Renk kalibrasyonunu uygulayan ekip projeyi diğerlerinden daha hızlı tamamladı ve böylece programlarının dokümantasyonunu hazırlamak için de zamanları oldu. Ve yol grafiği üzerinde çalışan ekip, proje gösteriminden önceki son günde bile algoritmalarını iyileştirmeye ve düzeltmeye çalıştı.

Sonuç
Okulu tamamladıktan sonra öğrencilerden geçmiş etkinlikleri değerlendirmelerini ve okulun beklentilerini ne kadar karşıladığı, hangi becerileri edindikleri vb. soruları yanıtlamalarını istedik. Öğrencilerin tamamı bir takım halinde çalışmayı, görev dağılımını ve zamanlarını planlamayı öğrendiklerini belirtti.
Öğrencilerden ayrıca aldıkları derslerin yararlılığını ve zorluklarını derecelendirmeleri istendi. Ve burada iki grup değerlendirme oluşturuldu: Bazıları için dersler çok fazla zorluk çıkarmadı, diğerleri ise onları son derece zor olarak değerlendirdi.
Bu, okulun belirli bir alanda yeni başlayanlar için erişilebilir kalarak ve aynı zamanda deneyimli öğrencilerin tekrarlayabileceği ve pekiştirebileceği materyaller sağlayarak doğru pozisyonu aldığı anlamına gelir. Programlama kursunun (Python) neredeyse herkes tarafından basit ama faydalı olarak görüldüğünü belirtmek gerekir. Öğrencilere göre en zor ders “Bilgisayar Mimarisi” idi.
Öğrencilere okulun güçlü ve zayıf yönleri sorulduğunda, çoğu, öğretmenlerin hızlı ve kişisel yardım sağladığı ve soruları yanıtladığı seçilen öğretim stilini beğendiklerini söyledi.
Öğrenciler ayrıca görevlerini günlük olarak planlama ve kendi son tarihlerini belirleme şeklinde çalışmayı sevdiklerini belirttiler. Dezavantaj olarak öğrenciler, botla çalışırken gerekli olan bilgi eksikliğini belirttiler: bağlanırken, çalışmasının temellerini ve ilkelerini anlamak.
Öğrencilerin neredeyse tamamı okulun beklentilerini aştığını belirtti ve bu da okulun organizasyonu için doğru yönü gösteriyor. Bu nedenle, bir sonraki okul düzenlenirken genel ilkeler korunmalıdır, öğrenciler ve öğretmenler tarafından belirtilen eksiklikler dikkate alınmalı ve mümkünse giderilmeli, muhtemelen ders listesi veya öğretim zamanlaması değiştirilmelidir.
Makale yazarları: ekip в
Not: Kurumsal blogumuzun yeni bir adı var. Artık JetBrains'in eğitim projelerine ayrılacak.
Kaynak: habr.com
