İçindekiler:

FTC'de Olaya Dayalı Programlama: 4 Adım
FTC'de Olaya Dayalı Programlama: 4 Adım

Video: FTC'de Olaya Dayalı Programlama: 4 Adım

Video: FTC'de Olaya Dayalı Programlama: 4 Adım
Video: Nesne Tabanlı Programlama #3 - Class Members #Field #Property #Encapsulation #Methot #Indexer 2024, Temmuz
Anonim
FTC'de Olaya Dayalı Programlama
FTC'de Olaya Dayalı Programlama

Bu yıl ekibimiz, robotumuz için olay odaklı yazılım geliştirme konusunda çok fazla çalışma yaptı. Bu programlar, ekibin otonom programlar ve hatta tekrarlanabilir tele-op olayları doğru bir şekilde geliştirmesine izin verdi. Gerektirdiği yazılım çalışması karmaşık olduğundan, FTC robotları için olaya dayalı kod geliştirme konusunda edindiğimiz bilgileri paylaşmaya karar verdik.

Adım 1: Olay Odaklı Programlama Nedir?

Genel olarak Techopedia'ya göre olay güdümlü programlama, kullanıcı girdisine yanıt veren programların geliştirilmesidir. Bu anlamda, herhangi bir eylemi gerçekleştirmek için insan tarafından çalıştırılan bir denetleyiciden gelen girdilere dayanan bir ekibin tele-op programı da dahil olmak üzere birçok program olay odaklı olarak kabul edilir. Ancak, ekibimizin yaptığı iş açısından olaya dayalı programlama, çeşitli girdilerden yazılım oluşturmakla ilgilidir; diğer bir deyişle, kontrolörlerin ve sensörlerin girişlerine dayalı olarak olayları belgeliyoruz, ardından bu olayları sıraya alabilir ve kaydedilen olayı yeniden çalıştırmak için dosyayı kullanabiliriz.

Robotumuz için bu program geliştirme yönteminin çeşitli avantajları vardır:

  • Doğru otonom programlar oluşturmamızı sağlar. Yazılımı olay sırasında gerçek zamanlı olarak oluşturduğumuz için toplanan ve kullanılan sensör değerleri, doğrudan orijinal olaydan geldiği için çok doğru olacaktır.
  • Hızlı bir şekilde otonom programlar oluşturmamızı sağlar. Otonom programlar yapmak, bir dizi olayı kaydetmek ve olayı gerektiği gibi ayarlamak kadar basittir.
  • Tele-op için otomatik süreçler oluşturmamızı sağlar. Tele-op'ta tekrarlanan eylemler için, olaya dayalı programlama, bu eylemleri kaydetmemize ve sürücü kontrollü maç dönemlerinde olayı bir düğmeye atamamıza olanak tanır. Bu otomatik olaylar, doğru şekilde yürütülmesine izin vermek için sensörlerden etkilenebilir.

2. Adım: Olaya Dayalı Programlamanın Mantıksal Akışı

Olay Odaklı Programlamanın Mantık Akışı
Olay Odaklı Programlamanın Mantık Akışı

Aşağıdaki, olaya dayalı bir programın mantıksal akışını gösterir: kırmızı, bir olayın oluşturulmasını ve mavi, olayın çağrısını gösterir. Bir olay oluşturmak için, robot eylemi aracılığıyla bir dizi girdi alınır ve olaylar olarak kaydedilir; bu olaylar bir dosyaya yazılır. Bir olayı çağırmak için bu dosya okunur ve girdiler, dosya kodunu robot eylemine dönüştürmek için bir olay işlemcisine gönderilir.

3. Adım: Etkinlik Oluşturucu

Etkinlik Oluşturucu
Etkinlik Oluşturucu
Etkinlik Oluşturucu
Etkinlik Oluşturucu

Etkinlik oluşturucular, çeşitli sensörlere ve düğmelere dayalı olarak eylemleri veya "olayları" belgelemek için kullanılır. Robot sahada eylemler gerçekleştirirken, bir olay yaratıcısı sınıfı, bir olay sınıfında sınıflandırılan olaya atıfta bulunarak, bu eylemlerin her biri için paralel olarak olaylar yaratır. Olay oluşturulduktan sonra, olaylar sınıfında bir olaylar sırasına konur: ilk olay en üst sırada yer alır, ardından ikinci olay en üst sırada yer alır ve altındaki tüm olayları aşağı iter ve bu, program durana kadar devam eder. Program durdurulduğunda, olaylar JSON dosyası gibi insan tarafından okunabilen bir format dosyasına gider. Bu dosya, otonom rutinleri daha iyi geliştirmek için kullanılabilir.

Yukarıdaki örnek kod, bu durumda bir IMU sensörü kullanan bir dönüş olan olay için parametreleri ayarlar. Daha sonra olayı olay kuyruğuna sıralarız. Son olarak, olayı, gelecekteki olayları sıraya koymak için kullanabilmemiz için esas olarak sıfırlayan olayı keseriz.

Adım 4: Olay İşlemcisi

Olay İşlemcisi
Olay İşlemcisi
Olay İşlemcisi
Olay İşlemcisi

Olay sınıfları, olay oluşturucu sınıfında üretilen insan tarafından okunabilir dosyayı alır ve bir olay işlemcisi sınıfında özetlenen yöntemleri çağırarak kuyruğa alınan her olay kendisine ne derse onu yapar. Olay işlemci sınıfı daha sonra robota hangi olayın tekrar oynatılacağını söyler. Basit bir "ileri sürüş" olayı veya mesafeler, dönüşler ve çarpışmalarla dolu karmaşık bir olay olsun, işlemci kendisine verilen herhangi bir olayı tekrar oynatacaktır. Bir takım maç öncesi sensörleri ve Tele-Op eylemlerini kaydedebildiğinden, ardından olayları otonom olarak tekrar oynatabildiğinden, bu süreç otonom sırasında çok kullanışlıdır. Bu işleme Hafıza Tekrarı denir. Bu, özerk bir programın tek bir dosya üzerinden %100 yapılandırılabilir olmasını sağlar. Olay yaratıcısı ve işlemcisi oluşturulduktan sonra, bir ekip insan tarafından okunabilir dosya aracılığıyla otonom rutinleri kolayca değiştirebilir.

Yukarıdaki örnek önce bir olay için JSON dosyasını kontrol ederek ve ardından ne tür bir olay olduğunu görmek için bir vaka ifadesi kullanarak o olayı kontrol ederek başlar, bu durumda bir IMU sensörü kullanarak bir dönüş. IMU olayını kullanarak bir sıra olduğunu anladıktan sonra, daha sonra olayın işlenmesiyle ilgilenir; bu, genellikle olayın, olaydan gelen değişkenleri kullanarak geldiği kodu çalıştırmayı içerir, daha önce yapılmış olayı çoğaltmak için geçirilir.

Önerilen: