Aktarma organları#
giriiş#
drivetrain bir robotun nasıl hareket ettiğini ve döndüğünü kontrol eder. Tahrik sistemi, robotu hareket ettirmek için birlikte çalışan motorlardan ve tekerleklerden oluşur.
drivetrain , yön veya dönüşe dayalı dönüşler için Jiroskop Sensörü veya Atalet Sensörü kullanmaz. İleri veya geri gidebilir ve sola veya sağa dönebilir, ancak belirli bir yöne veya dönüşe dönemez. Yön ve dönüşe dayalı dönüşler için smartdrive sınıfını kullanın.
Bu sayfada örnek aktarma organı adı olarak myDrivetrain kullanılmıştır. Gerektiğinde kendi yapılandırdığınız adla değiştirin.
Türetilmiş Sınıflar#
drivetrain sınıfı, aşağıdaki türetilmiş sınıf için temel sınıf görevi görür:
smartdrive- Jiroskop Sensörü veya Atalet Sensörü desteğiyle bir tahrik sistemi oluşturur.
Sınıf Oluşturucuları#
1 - Mevcut
motor_groupnesnelerini kullanarak sol ve sağ taraflar için bir tahrik sistemi oluşturur.drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 - Sol ve sağ taraflar için mevcut
motornesnelerini kullanarak bir tahrik sistemi oluşturur.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Sınıf Yıkıcısı#
drivetrain nesnesini yok eder ve ilgili kaynakları serbest bırakır.
virtual ~drivetrain();
Parametreler#
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Sol ve sağ motorlar veya motor grupları. Her iki parametre de aynı türü kullanmalıdır: ya iki adet |
|
|
Tahrik sistemi tekerleklerinin çevresi. Varsayılan değer |
|
|
Sol ve sağ tekerlekler arasındaki mesafe. Varsayılan değer |
|
|
Ön ve arka tekerlekler arasındaki mesafe. Varsayılan değer |
|
|
|
|
|
Vites kullanılıyorsa, sürüş mesafelerini ayarlamak için kullanılan vites oranı. Varsayılan değer |
Örnek#
// Create the left and right motor objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain object.
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor
rightMotor, // right motor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Üye Fonksiyonları#
drivetrain sınıfı aşağıdaki üye fonksiyonlarını içerir:
İşlemler - Robotu hareket ettirin ve döndürün.
drive- Robotu sonsuza dek ileri veya geri hareket ettirir.driveFor- Robotu belirli bir mesafe boyunca ileri veya geri hareket ettirir.turn- Robotu sonsuza dek sola veya sağa döndürür.turnFor- Robotu belirli sayıda derece veya devir için sola veya sağa döndürür.stop- Robotun hareketini durdurur.
Ayarlar - Aktarma organı ayarlarını düzenleyin.
setDriveVelocity- Robota ne kadar hızlı süreceğini söyler.setTurnVelocity- Robota ne kadar hızlı döneceğini söyler.setStopping- Robotun hareket etmeyi nasıl durduracağını belirtir: fren yaparak, süzülerek veya tutunarak.setTimeout- Robotun bir hareketi bitirmek için ne kadar süre deneyeceğini ayarlar.
Değerler - Hareket durumunu kontrol edin.
isDone- Robotun hareketinin tamamlanıp tamamlanmadığını Boolean değer olarak döndürür.isMoving- Robotun hareket edip etmediğini Boolean değer olarak döndürür.velocity- Robotun ne kadar hızlı sürdüğünü döndürür.current- Aktarma organlarının ne kadar elektrik akımı kullandığını döndürür.power- Aktarma organlarının enerjiyi ne kadar hızlı kullandığını döndürür.torque- Aktarma organlarının ne kadar tork kullandığını döndürür.efficiency- Aktarma organlarının gücü ne kadar verimli kullandığını gösterir.temperature- Aktarma organlarının ne kadar sıcak olduğunu döndürür.voltage- Tahrik sisteminin elektrik voltajını döndürür.
Herhangi bir drivetrain üye fonksiyonunu çağırmadan önce, bir drivetrain nesnesi oluşturulmalıdır.
/* This constructor is required when using VS Code.
Drivetrain configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create the left and right motor objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain object.
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor
rightMotor, // right motor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Eylemler#
sürmek#
drive robotu sonsuza dek ileri veya geri hareket ettirir. Robot, dönme veya durma gibi başka bir işlem verilene kadar hareket etmeye devam edecektir.
1 - Mevcut sürüş hızını kullanarak sürüş yapar.
void drive( directionType dir );
Parameters2 - Belirtilen hızda hareket eder.
void drive( directionType dir, double velocity, velocityUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robotun hareket yönü: |
|
|
Hız, |
|
|
Hız birimi: |
Bu fonksiyon bir değer döndürmez.
Notesdrivebekleme yapmıyor. Proje, bir sonraki kod satırını hemen çalıştıracak.Robot,
stopçağrılana veya başka bir tahrik sistemi hareket fonksiyonu çalıştırılana kadar hareket etmeye devam edecektir.isDoneveisMovingdriveile kullanılmaz çünküdrivehedef mesafesi yoktur.
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
driveFor#
driveFor komutu, robotu belirli bir mesafe boyunca ileri veya geri hareket ettirir. Proje, bir sonraki kod satırı çalışmadan önce robotun hareketini tamamlamasını bekleyecektir.
1 - Mevcut sürüş hızı kullanılarak belirtilen yönde belirli bir mesafe boyunca hareket eder.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Mevcut sürüş hızını kullanarak mesafe değerine göre bir yöne doğru hareket eder.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Belirtilen hızda, mesafe değerine bağlı olarak bir yönde ilerler.
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Belirtilen yönde, belirtilen hızda ve belirtilen mesafe boyunca hareket eder.
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robotun hareket yönü: |
|
|
Robotun kat ettiği mesafe. |
|
|
Mesafe birimi: |
|
|
Hız, |
|
|
Hız birimi: |
|
|
|
Robotun hedef mesafeye ulaşıp ulaşmadığını Boolean değer olarak döndürür.
true- Robot hedef mesafeye ulaştı.false- Robot hareketi tamamlamadı veya hareket tamamlanmadan önce fonksiyon geri döndü çünküwaitForCompletiondeğerifalseolarak ayarlanmıştı.
driveForfonksiyonu çalışırken başka bir aktarma organı hareket fonksiyonunu çalıştırmak, mevcut hareketi kesintiye uğratacaktır.driveForhedef bir mesafe kullanır, bu nedenleisDoneveisMovingonunla birlikte kullanılabilir.
// Drive 200 mm, then back 200 mm.
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
dönüş#
turn robotu sonsuza dek sola veya sağa döndürür. Robot, sürüş veya durma gibi başka bir işlem verilene kadar dönmeye devam edecektir.
1 - Mevcut dönüş hızını kullanarak dönüş yapar.
void turn( turnType dir );
Parameters2 - Belirtilen hızda döner.
void turn( turnType dir, double velocity, velocityUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robotun dönüş yönü: |
|
|
|
|
|
Hız birimi: |
Bu fonksiyon bir değer döndürmez.
Notesturnbekleme yapmıyor. Proje, bir sonraki kod satırını hemen çalıştıracak.Robot,
stopçağrılana veya başka bir tahrik sistemi hareket fonksiyonu çalıştırılana kadar dönmeye devam edecektir.isDoneveisMovingturnile kullanılmaz çünküturnhedef açısı yoktur.
// Turn right, then left, then stop.
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
dönüş için#
turnFor komutu, robotu belirli bir derece, devir veya ham birim sayısı kadar sola veya sağa döndürür. Dönüş, robotun mevcut konumuna göre yapılır. Proje, bir sonraki kod satırı çalışmadan önce robotun dönüşünün tamamlanmasını bekleyecektir.
1 - Mevcut dönüş hızı kullanılarak belirtilen açı için dönüş yapar.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Mevcut dönüş hızı kullanılarak belirtilen yönde bir açı boyunca döner.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - Belirtilen hızda, belirtilen açı için dönüş sayısı.
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Belirtilen yönde, belirtilen hızda ve belirtilen açıda döner.
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robotun dönüş yönü: |
|
|
Robotun dönüş miktarı. |
|
|
Dönüş birimi: |
|
|
|
|
|
Hız birimi: |
|
|
|
Robotun hedef açıya ulaşıp ulaşmadığını Boolean değer olarak döndürür.
true- Robot hedef açıya ulaştı.false- Robot dönüşü tamamlamadı veya fonksiyon dönüş tamamlanmadan önce geri döndü çünküwaitForCompletiondeğerifalseolarak ayarlanmıştı.
turnForfonksiyonu çalışırken başka bir aktarma organı hareket fonksiyonunu çalıştırmak, mevcut hareketi kesintiye uğratacaktır.turnForhedef açıyı kullanır, bu nedenleisDoneveisMovingonunla birlikte kullanılabilir.
// Turn right, then left.
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
durmak#
stop robotun hareketini durdurur. Bir durdurma modu belirtilmişse, bu fonksiyon çağrısı için robotun nasıl duracağını kontrol eder.
1 - Mevcut durdurma modunu kullanarak aktarma organlarını durdurur.
void stop();
Parameters2 - Belirtilen durdurma modunu kullanarak aktarma organlarını durdurur.
void stop( brakeType mode );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robotun nasıl duracağı:
|
Bu fonksiyon bir değer döndürmez.
Examples// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Mutatörler#
Sürüş Hızını Ayarla#
setDriveVelocity komutu robota ne kadar hızlı gideceğini söyler. Daha yüksek bir yüzde robotun daha hızlı, daha düşük bir yüzde ise daha yavaş gitmesini sağlar.
Her proje, robotun varsayılan olarak %50 hızda hareket etmesiyle başlar.
Not: Daha yüksek hız, robotun daha hızlı hareket etmesini sağlar, ancak hassasiyeti azalabilir. Daha düşük hız ise robotun daha yavaş hareket etmesini sağlar, ancak hassasiyeti artabilir.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Hız, |
|
|
Hız birimi: |
Bu fonksiyon bir değer döndürmez.
NotesTahrik hızı, fonksiyon çağrısında belirli bir hız belirtilmediği sürece, daha sonraki aktarma organı hareket fonksiyonları tarafından kullanılır.
// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Dönüş Hızını Ayarla#
setTurnVelocity komutu robota ne kadar hızlı döneceğini söyler. Daha yüksek bir yüzde robotun daha hızlı dönmesini, daha düşük bir yüzde ise robotun daha yavaş dönmesini sağlar.
Her proje, robotun varsayılan olarak %50 hızda dönmesiyle başlar.
Not: Daha yüksek hız, robotun daha hızlı dönmesini sağlar, ancak hassasiyeti azalabilir. Daha düşük hız ise robotun daha yavaş dönmesini sağlar, ancak hassasiyeti artabilir.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
|
|
|
Hız birimi: |
Bu fonksiyon bir değer döndürmez.
NotesDönüş hızı, fonksiyon çağrısında belirli bir hız belirtilmediği sürece, daha sonraki aktarma organı dönüş fonksiyonları tarafından kullanılır.
// Try default, slow, then fast.
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(20, percent);
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(100, percent);
myDrivetrain.turnFor(right, 360, degrees);
Durdurma ayarı#
setStopping , robotun hareket etmeyi nasıl durduracağını belirler: fren yaparak, süzülerek veya durarak.
void setStopping(
brakeType mode );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robotun nasıl duracağı:
|
Bu fonksiyon bir değer döndürmez.
NotesDurdurma modu, fonksiyon çağrısında özel bir durdurma modu belirtilmediği sürece, daha sonraki
stopçağrıları tarafından kullanılır.Bu fonksiyon kullanılmazsa, robot dururken
brakekullanacaktır.
setTimeout#
setTimeout , robotun bir hareketi tamamlamak için ne kadar süre deneyeceğini belirler. Robot bu süre içinde hareketi tamamlayamazsa, denemeyi bırakır ve bir sonraki kod satırına geçer. Bu, robotun bir harekette takılıp kalmasını önler.
void setTimeout(
int32_t time,
timeUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robotun bir hareketi tamamlamak için deneyebileceği süre. Bu süre pozitif bir tam sayı olmalıdır. |
|
|
Zaman birimi: |
Bu fonksiyon bir değer döndürmez.
NotesZaman aşımı yalnızca
driveForveturnForgibi bir hedefe hareket eden aktarma organı fonksiyonları için geçerlidir.
// Turn right after driving forward.
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Getters#
Tamamlandı#
isDone , robotun hareketinin tamamlanıp tamamlanmadığını Boolean bir değer olarak döndürür. Bu, robotun hareketine bağlı olarak diğer davranışların zamanlamasını kontrol etmek için kullanılabilir.
bool isDone( void );
Bu fonksiyon herhangi bir parametre kabul etmez.
Return Valuestrue- Robot hareket etmeyi bitirdi.false- Robot hala hareket halinde.
Hareket halinde#
isMoving , robotun hareket edip etmediğini Boolean bir değer olarak döndürür. Bu, robotun hareketine bağlı olarak diğer davranışların zamanlamasını kontrol etmek için kullanılabilir.
virtual bool isMoving( void );
Bu fonksiyon herhangi bir parametre kabul etmez.
Return Valuestrue- Robot hareket ediyor.false- Robot hareket etmiyor.
hız#
velocity , robotun ne kadar hızlı gittiğini gösterir.
Hız değerini yüzde olarak, rpmveya dpscinsinden döndürebilir. Pozitif bir değer robotun ileri yönde hareket ettiğini, negatif bir değer ise robotun geri yönde hareket ettiğini gösterir.
double velocity(
velocityUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Hızın geri dönüş birimi: % |
Seçilen birimde aktarma organı hızını double olarak döndürür.
// Show velocity before and during motion.
Brain.Screen.print("Resting: %f", myDrivetrain.velocity(percent));
myDrivetrain.drive(forward, 100, velocityUnits::pct);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("Moving: %f", myDrivetrain.velocity(percent));
myDrivetrain.stop();
akım#
current aktarma organlarının ne kadar elektrik akımı kullandığını gösterir. Akım, aktarma organlarından geçen elektrik miktarıdır. Üniteye bağlı olarak amper (amper) veya yüzde olarak gösterilebilir.
Daha yüksek akım değeri, tahrik sisteminin daha fazla elektrik akımı kullandığı anlamına gelir. Bu durum, robot bir nesneye karşı itme hareketi yaparken veya sıkışmışken hareket etmeye çalışırken ortaya çıkabilir.
Bu, hareket sırasında aktarma organlarının zorlanıp zorlanmadığını kontrol etmek için kullanılabilir. Akım yüksek kalırsa, aktarma organları ısınabilir veya gücü daha az verimli kullanabilir.
Available Functions1 - Aktarma organlarının elektrik akımını amper cinsinden döndürür.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Aktarma organlarının elektrik akımını yüzde olarak döndürür.
double current( percentUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Akımı geri döndürecek ünite: |
|
|
Akımı geri döndürecek birim: % |
Seçilen ünitede aktarma organı akımını double olarak döndürür.
güç#
power , aktarma organlarının ne kadar güç kullandığını watt cinsinden gösterir. Güç, aktarma organlarının enerjiyi ne kadar hızlı kullandığını gösterir.
Daha yüksek güç değeri, tahrik sisteminin enerjiyi daha hızlı kullandığı anlamına gelir. Bu durum, robot bir nesneye karşı itme hareketi yaparken veya sıkışmışken hareket etmeye çalışırken ortaya çıkabilir.
Bu, hareketleri karşılaştırmak veya aktarma organlarının zorlanıp zorlanmadığını kontrol etmek için kullanılabilir. Güç yüksek kalırsa, aktarma organları daha fazla ısınabilir veya enerjiyi daha az verimli kullanabilir.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Güç ünitesi: |
Aktarma organlarının gücünü watt cinsinden double olarak döndürür.
tork#
Tork, tekerlekler dönerken aktarma organlarının ne kadar güçlü itme veya çekme yapabildiğini gösterir.
torque , aktarma organlarının kullandığı tork miktarını Newton-metre (Nm) veya inç-pound (InLb) cinsinden gösterir.
Daha yüksek tork değeri, tahrik sisteminin daha fazla itme veya çekme uyguladığı anlamına gelir. Bu durum, robot bir nesneye karşı itme uygularken veya sıkışmışken hareket etmeye çalışırken ortaya çıkabilir.
Bu, aktarma organlarının zorlanıp zorlanmadığını kontrol etmek veya farklı hareketlerin ne kadar itme gücü gerektirdiğini karşılaştırmak için kullanılabilir.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Tork değerinin belirtileceği birim: |
Aktarma organı torkunu seçilen birimde double olarak döndürür.
yeterlik#
efficiency aktarma organlarının gücü ne kadar verimli kullandığını %0 ile %100 arasında bir yüzde olarak gösterir.
Verimlilik, tahrik sisteminin gücünün ne kadarının hareket için kullanıldığını gösterir. Daha yüksek bir verimlilik değeri, tahrik sisteminin gücünün daha fazlasının hareket için kullanıldığı anlamına gelir. Daha düşük bir verimlilik değeri, robot sıkıştığında veya bir nesneye karşı itme yaptığında olduğu gibi, tahrik sistemi çok çalıştığı ancak fazla hareket etmediği durumlarda ortaya çıkabilir.
Bu özellik, hareketleri karşılaştırmak veya aktarma organlarının hareket için kullanmak yerine gücü boşa harcayıp harcamadığını kontrol etmek için kullanılabilir.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Verimlilik birimi şu şekildedir: % |
Seçilen birimde aktarma organı verimliliğini double olarak döndürür.
sıcaklık#
temperature , aktarma organlarının ortalama sıcaklığını %0 ile %100 arasında bir yüzde olarak döndürür.
Sıcaklık, tahrik sistemi motorlarının ne kadar ısındığını gösterir. Daha yüksek sıcaklık, motorların çalışırken daha fazla ısındığı anlamına gelir. Motorların tam performansla çalışmaya devam etmesi için 55°C’nin altında kalmaları gerekir.
Motorlar çok ısınırsa, kendilerini korumak için maksimum akımlarını düşürürler. 70°C’ye ulaştıklarında, soğuyana kadar çalışmayı durdururlar.
Bu özellik, aktarma organlarının tekrarlanan hareketler, uzun sürüşler veya bir cisme karşı itme sırasında aşırı ısınıp ısınmadığını kontrol etmek için kullanılabilir.
Available Functionsdouble temperature(
percentUnits units );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Sıcaklığın geri dönüş birimi: % |
Seçilen birimde ortalama aktarma organı sıcaklığını double olarak döndürür.
Döndürülen
50%değeri, ortalama motor sıcaklığının yaklaşık45°C(113°F) olduğu anlamına gelir.Aktarma organlarının tipik çalışma sıcaklığı aralığı yaklaşık
20°C(68°F) ile70°C(158°F) arasındadır.
Gerilim#
voltage aktarma organlarının elektrik voltajını döndürür.
Gerilim, tahrik sistemi motorlarına sağlanan elektriksel basınçtır. Bu, akım ve güç değerleriyle birlikte kullanılarak tahrik sisteminin elektrik enerjisini nasıl kullandığını anlamak için kullanılabilir.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Dönüş voltajı birimi: |
Seçilen birimde aktarma organı voltajını double olarak döndürür.