Özel Bileşenler Ekleme
RobotBuilder, motorlar, kontrolörler ve sensörler için yalnızca WPILib kullanan robot programları oluşturmak için çok iyi çalışıyor. Ancak özel sınıfları kullanan ekipler için, RobotBuilder’ın bu sınıflar için herhangi bir desteği yoktur, bu nedenle bunları RobotBuilder’da kullanmak için birkaç adım atılması gerekir.
Özel Bileşen Yapısı
Özel bileşenlerin tümü yıl olarak burada bulunur. ~/wpilib/YYYY/Robotbuilder/extensions
where ~ is C:\Users\Public
on Windows and YYYY is the FRC® year.
Özel bir bileşen için gereken yedi dosya ve bir klasör vardır. Klasör, bileşeni ve nasıl dışa aktarılacağını açıklayan dosyaları içerir. Bileşenle aynı ada sahip olmalıdır (örneğin, bir Kiwi sürücü denetleyicisi için “Kiwi Drive”, altı motorlu sürücü denetleyicisi için “Robot Drive 6”, vb.). Dosyalar, burada gösterilenlerle aynı adlara ve uzantılara sahip olmalıdır. Diğer dosyalar bu yedi ile birlikte klasörde olabilir, ancak yedi tanesi RobotBuilder’ın özel bileşeni tanıması için mevcut olmalıdır.
PaletteDescription.yaml
Satır satır:
!Component-Bileşen: Yeni bir bileşenin başlangıcını bildirir
name: Bileşenin adı. Palette/ağaçta görünecek olan budur - bu aynı zamanda içeren klasörün adıyla aynı olmalıdır.
type-tür: bileşenin türü (bunlar daha sonra ayrıntılı olarak açıklanacaktır)
supports-destekler: destekleyebileceği her bileşen türünün miktarının bir haritası. RobotBuilder’daki motor kontrolörlerinin tümü PIDOutput’lardır, bu nedenle bir kivi sürücüsü üç PIDOutput’u destekleyebilir. Bir bileşen herhangi bir şeyi desteklemiyorsa (sensörler veya motor kontrol cihazları gibi), bu satırı dışarıda bırakın
help-yardım: bu bileşenlerden birinin üzerine geldiğinde faydalı bir mesaj veren kısa bir dize
properties: bu bileşenin özelliklerinin listesi. Bu kivi sürücü örneğinde, her motor için bir tane olmak üzere çok benzer üç özellik vardır. Bir ChildSelectionProperty, kullanıcının, düzenlenen bileşenin alt bileşenlerinden belirli türden bir bileşeni seçmesine olanak tanır (bu nedenle, burada, kiwi sürücüsüne eklenen bir PIDOutput - yani bir motor denetleyicisi - isteyen bir açılır menü gösterilir)
RobotBuilder’ın desteklediği bileşen türleri (bunlar büyük / küçük harfe duyarlıdır):
Komut
Alt sistem
PIDOutput (motor kontrolleri)
PIDSource (PIDSource uygulayan sensör, örneğin analog potansiyometre, kodlayıcı)
Sensör (PIDSource uygulamayan sensör, örneğin limit anahtarı)
Kontrolör (robot sürücü, PID kontrolör vb.)
Aktüatör (motor olmayan bir çıkış, örneğin solenoid, servo)
Joystick - Oyun kolu
Joystick Düğmesi
Properties-Özellikleri
Özel bir bileşenle ilgili özellikler:
StringProperty: bir bileşen bir dizeye ihtiyaç duyduğunda kullanılır, ör. bileşenin adı
BooleanProperty: bir bileşen bir boole değerine ihtiyaç duyduğunda kullanılır, ör. SmartDashboard’a bir düğme koymak
DoubleProperty: bir bileşen bir sayı değerine ihtiyaç duyduğunda kullanılır, ör. PID sabitleriSeçimlerÖzellik
ChildSelectionProperty: bir alt bileşen seçmeniz gerektiğinde kullanılır, ör. bir RobotDrive’daki motor kontrolörleri
TypeSelectionProperty: programın herhangi bir yerinden verilen türdeki herhangi bir bileşeni seçmeniz gerektiğinde kullanılır, ör. PID komutu için giriş ve çıkış
Her mülkün alanları aşağıda açıklanmıştır:
Validators.yaml
PaletteDescription.yaml içindeki motor özelliklerinin her birinin doğrulayıcılar girişinde “KiwiDriveValidator” olduğunu fark etmiş olabilirsiniz. Yerleşik bir doğrulayıcı olmadığı için Validators.yaml’de tanımlanması gerekiyordu. Bu örnek doğrulayıcı çok basittir - sadece adlandırılmış alanların her birinin diğerlerinden farklı bir değere sahip olmasını sağlar.
Yerleşik Validator-doğrulayıcı ve ValidatorTürleri
Yerleşik doğrulayıcılar çok kullanışlıdır (özellikle bağlantı noktası / kanal kullanımı için UniqueValidators), ancak bazen önceki adımda olduğu gibi özel bir doğrulayıcıya ihtiyaç duyulur
DistinctValidator: Verilen alanların her birinin değerlerinin benzersiz olduğundan emin olur
ExistsValidator: Bu doğrulayıcı kullanılarak cihaz için bir değerin ayarlandığından emin olur
UniqueValidator: Özelliğin değerinin verilen alanlar için genel olarak benzersiz olduğundan emin olur
ListValidator: Bir liste özelliğindeki tüm değerlerin geçerli olduğundan emin olur
C++ Export.yaml
Dosyanın satır satır dökümü:
Kiwi Drive: dışa aktarılan bileşenin adı. Bu, PaletteDescription.yaml’de ayarlanan ad ve bu dosyayı içeren klasörün adıyla aynıdır.
Varsayılanlar: Bu bileşenin ihtiyaç duyduğu dahil etme, sınıfın adı, bir yapı şablonu ve daha fazlası için bazı varsayılan değerler sağlar. CustomComponent varsayılanı, bileşeni kullanan her oluşturulan dosyaya
Custom/${ClassName}.h
için bir include ekler (örneğin,RobotDrive.h
,#include "Custom/KiwiDrive.h
içerir. dosyanın üst kısmı)ClassName: eklediğiniz özel sınıfın adı.
Construction : bileşenin nasıl inşa edilmesi gerektiğine dair bir talimat. Değişkenler değerleri ile değiştirilecek (”$ {ClassName}”, “KiwiDrive” ile değiştirilecektir), ardından makrolar değerlendirilecektir (örneğin,``#variable($Name)``,
drivebaseKiwiDrive
ile değiştirilebilir `).
Bu örnek, constructor-yapıcıyla bir KiwiDrive sınıfı beklemektedir.
KiwiDrive(SpeedController, SpeedController, SpeedController)
Ekibiniz Java kullanıyorsa, bu dosya boş olabilir.
Java Export.yaml
C ++ dışa aktarma dosyasına çok benzer; tek fark İnşaat hattı olmalıdır. Bu örnek, yapıcıyla bir KiwiDrive sınıfı beklemektedir.
KiwiDrive(SpeedController, SpeedController, SpeedController)
Ekibiniz C ++ kullanıyorsa, bu dosya boş olabilir.
Makroları ve Değişkenleri Kullanma
Makrolar, RobotBuilder’ın değişkenleri oluşturulan koda eklenecek metne dönüştürmek için kullandığı basit işlevlerdir. Her zaman “#” simgesiyle başlarlar ve işlevlere benzer bir sözdizimine sahiptirler: ``<macro_name> (arg0, arg1, arg2, …) `` Muhtemelen kullanmanız gerekecek tek makro ``#variable (bileşen_adı)``dır.
#variable
bir string alır, genellikle bir yerde tanımlanmış bir değişkendir (yani “Name”, RobotBuilder’daki bileşene verilen addır, “Kol Motoru” gibi) ve onu içinde tanımlanan bir değişkenin adına dönüştürür. üretilen kod. Örneğin, #variable("Arm Motor")
, ArmMotor
dizesiyle sonuçlanır
Değişkenlere, değişken adının önüne bir dolar işareti (“$”) yerleştirilerek başvurulur; bu, değişkeni dosyadaki diğer metinden kolayca ayırt etmek için isteğe bağlı olarak güzel parantez içine yerleştirilebilir. Dosya ayrıştırıldığında dolar işareti, değişken adı ve küme parantezleri değişkenin değeriyle değiştirilir (örneğin, ${ClassName}
, KiwiDrive
‘’ ile değiştirilir).
Değişkenler, bileşen özellikleridir (örn. Kiwi sürücü örneğinde “Motor 1”, “Motor 2”, “Motor 3”) veya aşağıdakilerden biridir:
Short_Name: RobotBuilder’daki editör panelinde bileşene verilen ad
Ad: bileşenin tam adı. Bileşen bir alt sistemdeyse, bu, alt sistemin adına eklenen kısa ad olacaktır.
Export-Dışa Aktar: Varsa, bu bileşenin içinde oluşturulacağı dosyanın adı. Bu, aktüatörler, kontrolörler ve sensörler gibi bileşenler için “RobotMap” olmalıdır; veya oyun kumandaları veya diğer özel OI bileşenleri gibi şeyler için “OI”. “CustomComponent” varsayılanının RobotMap’e aktarılacağını unutmayın.
Import : Bu bileşenin kullanılabilmesi için dahil edilmesi veya içe aktarılması gereken dosyalar.
Declaration: Bu bileşen türünde bir değişkenin nasıl beyan edileceğine dair Construction’a benzer bir talimat. Bu, varsayılan “None” olarak alınır.
Construction: bu bileşenin yeni bir örneğinin nasıl oluşturulacağına ilişkin talimat
LiveWindow: bu bileşenin LiveWindow’a nasıl ekleneceğine dair bir talimat
Extra: kodlama türünü ayarlaması gereken kodlayıcılar gibi bu bileşenin doğru davranması için herhangi bir ekstra işlev veya yöntem çağrısı için talimatlar.
Prototip (yalnızca C ++): Bileşenin bildirildiği dosyada oluşturulacak bir işlevin prototipi, tipik olarak OI sınıfında bir alıcı
Function: Bileşenin bildirildiği dosyada oluşturulacak bir işlev, genellikle OI sınıfındaki bir alıcı
PID: Eğer varsa, bileşenin PID çıktısının nasıl alınacağına dair bir talimat (örneğin,
#variable($Short_Name)->PIDGet()
)ClassName: Bileşenin temsil ettiği sınıfın adı (örneğin,
KiwiDrive
veyaJoystick
)
Adında boşluklar olan değişkenleriniz varsa (“Motor 1”, “Sağ Ön Motor” vb.), Dışa aktarma dosyalarında bunları kullanırken boşlukların alt çizgi ile değiştirilmesi gerekir.
help.html
Bileşen hakkında bilgi veren bir HTML dosyası. Bunun olabildiğince ayrıntılı olması daha iyidir, ancak programcı (lar) bileşene yeterince aşina ise veya o kadar basitse, ayrıntılı bir açıklamada çok az nokta varsa kesinlikle gerekli değildir.
config.txt
Bileşen hakkında çeşitli bilgileri tutan bir yapılandırma dosyası. Şu anda, bu yalnızca bileşeni yerleştirmek için palet bölümüne sahiptir.
Paletin bölümleri (bunlar büyük / küçük harfe duyarlıdır):
Alt sistemler
Kontrolörler
Sensörler
Aktüatörler
Pnömatik
OI
Komutlar
icon.png
Palette ve yardım sayfasında görünen simge. Bu 64x64 .png
dosyası olmalıdır.
Görsel dağınıklığı önlemek için içinde bulunduğu bölümün renk şemasını ve genel stilini kullanmalıdır, ancak bu tamamen isteğe bağlıdır. Simgelerin ve arka planların Photoshop .psd
dosyaları src / main / icons / icons ve simgelerin ve arka planların png dosyaları src / main / resources / icons içinde yer alır.