akıllı sürücü#
giriiş#
smartdrive sınıfı, motorlar, tekerlekler ve bir jiroskop sensörü kullanarak bir robotun nasıl hareket ettiğini ve döndüğünü kontrol eder. smartdrive yön ve dönüşü izlemek için bağlı bir Jiroskop Sensörü kullanır.
A smartdrive robotun hassas bir şekilde hareket etmesine ve dönmesine yardımcı olmak için jiroskop sensörünü kullanır. Her projenin başlangıcında, tahrik sistemi jiroskop sensörünü otomatik olarak kalibre eder. Kalibrasyon sırasında robotu yaklaşık 2 saniye boyunca hareketsiz tutun, böylece robot doğru şekilde hareket edebilir ve dönebilir.
smartdrive sınıfı, smartdrive sınıfına dayanmaktadır. Bir drivetrain drivetrain ile aynı tahrik ve dönüş fonksiyonlarını kullanabilir ve ayrıca turnToHeading ve turnToRotation gibi sensör tabanlı fonksiyonlar da ekler.
Bu sayfada örnek akıllı sürücü adı olarak myDrivetrain kullanılmıştır. Gerektiğinde kendi yapılandırdığınız adla değiştirin.
Sınıf Oluşturucuları#
1 — Mevcut
motor_groupnesnelerini sol ve sağ taraflar için ve bir Jiroskop Sensörü ile birlikte kullanarak akıllı bir sürücü oluşturur.smartdrive( motor_group &l, motor_group &r, gyro &g, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 — Mevcut
motornesnelerini sol ve sağ taraflar için ve bir Jiroskop Sensörü ile birlikte kullanarak akıllı bir sürücü oluşturur.smartdrive( motor &l, motor &r, gyro &g, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Sınıf Yıkıcısı#
smartdrive nesnesini yok eder ve ilişkili kaynakları serbest bırakır.
~smartdrive();
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 |
|
|
Akıllı sürücü tarafından kullanılan Jiroskop Sensörü. |
|
|
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#
/* 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 Gyro Sensor object.
gyro myGyro = gyro(PORT3);
// Create the smartdrive object.
smartdrive myDrivetrain = smartdrive(
leftMotor, // left motor
rightMotor, // right motor
myGyro, // Gyro Sensor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Üye Fonksiyonları#
smartdrive sınıfı aşağıdaki üye işlevlerini içerir:
İşlemler — Robotu yönlendirme veya döndürme kullanarak hareket ettirin.
turnToHeading— Robotu -359 ile 359 derece arasında belirli bir yöne doğru döndürür. Robot, hedef yöne ulaşmak için en kısa yönde dönecektir.turnToRotation— Robotu belirli bir dönüşe döndürür.calibrateDrivetrain— Akıllı sürücü ile yapılandırılmış Jiroskop Sensörünü kalibre eder.
Ayarlar — Başlık ve döndürme değerlerini ayarlayın.
setHeading— Robotun mevcut yönünü yeni bir yöne değiştirir.setRotation— Robotun mevcut dönüşünü yeni bir dönüşe değiştirir.
Değerler — Yön ve dönüşü kontrol edin.
heading— Robotun mevcut yönünü 0 ile 359 derece arasında döndürür.rotation— Robotun mevcut dönüşünü döndürür.
Bir smartdrive ayrıca drivetrain’den miras alınan üye fonksiyonlarını da kullanabilir; örneğin drive, driveFor, turn, turnFor, stop, isDoneve isMoving.
smartdrive üye fonksiyonunu çağırmadan önce, smartdrive 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 Gyro Sensor object.
gyro myGyro = gyro(PORT3);
// Create the smartdrive object.
smartdrive myDrivetrain = smartdrive(
leftMotor, // left motor
rightMotor, // right motor
myGyro, // Gyro Sensor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
turnToHeading#
Yön, robotun baktığı yönü derece cinsinden ifade eder. turnToHeading komutu, robotu -359 ile 359 derece arasında belirli bir yöne çevirir. Robot, hedef yöne ulaşmak için en kısa yöne dönecektir.
Robotun başlangıç yönü 0 derecedir.
Proje, bir sonraki kod satırını çalıştırmadan önce robotun dönüş işlemini tamamlamasını bekleyecektir.
Available Functions1 — Mevcut dönüş hızını kullanarak robotu belirtilen yöne döndürür.
bool turnToHeading( double angle, rotationUnits units, bool waitForCompletion = true );
Parameters2 — Robotu belirtilen yönde ve belirtilen hızda döndürür.
bool turnToHeading( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robotun bakması gereken yön, derece cinsinden. Bu değer, |
|
|
Başlık birimi: |
|
|
|
|
|
Hız birimi: |
|
|
|
Robotun hedef yöne ulaşıp ulaşmadığını Boolean değer olarak döndürür.
true— Robot hedef yöne ulaştı.false— Robot turu tamamlamadı veya fonksiyon tur tamamlanmadan önce geri döndü çünküwaitForCompletiondeğerifalseolarak ayarlanmıştı.
turnToHeadingfonksiyonu çalışırken başka bir aktarma organı hareket fonksiyonunu çalıştırmak, mevcut hareketi kesintiye uğratacaktır.turnToHeadinghedef bir yön kullanır, bu nedenleisDoneveisMovingonunla birlikte kullanılabilir.
// Face the new 0 degrees.
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);
turnToRotation#
turnToRotation , robotu belirli bir dönüşe döndürür.
Dönme, robotun ne kadar döndüğünü derece veya devir cinsinden ölçer. Bir projenin başlangıcında, dönme değeri 0 dereceye ayarlanır. Dönme ayrıca setRotation fonksiyonu kullanılarak da ayarlanabilir.
Dönme değerleri mutlaktır. Bu, dönüş yönünün robotun mevcut dönüşüne bağlı olduğu anlamına gelir. Sağa dönmek dönmeyi artırır, sola dönmek ise dönmeyi azaltır.
Örneğin, robot 0 dereceden başlarsa ve 720 derece döndürürseniz, iki kez sağa dönecektir. Ardından 360 derece döndürürseniz, 360, 720’den küçük olduğu için bir kez sola dönecektir.
Proje, bir sonraki kod satırını çalıştırmadan önce robotun dönüş işlemini tamamlamasını bekleyecektir.
Available Functions1 — Mevcut dönüş hızını kullanarak robotu belirtilen dönüşe döndürür.
bool turnToRotation( double angle, rotationUnits units, bool waitForCompletion = true );
Parameters2 — Robotu belirtilen hızda ve belirtilen dönüş açısında döndürür.
bool turnToRotation( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robotun döneceği dönüş değeri. |
|
|
Dönme birimi: |
|
|
|
|
|
Hız birimi: |
|
|
|
Robotun hedef dönüş hızına ulaşıp ulaşmadığını Boolean değer olarak döndürür.
true— Robot hedef dönüşe ulaştı.false— Robot turu tamamlamadı veya fonksiyon tur tamamlanmadan önce geri döndü çünküwaitForCompletiondeğerifalseolarak ayarlanmıştı.
turnToRotationfonksiyonu çalışırken başka bir aktarma organı hareket fonksiyonunu çalıştırmak, mevcut hareketi kesintiye uğratacaktır.turnToRotationhedef bir dönüş kullanır, bu nedenleisDoneveisMovingonunla birlikte kullanılabilir.
// Spin counterclockwise for 2 turns, then face forward.
myDrivetrain.setRotation(720, degrees);
myDrivetrain.turnToRotation(0, degrees);
calibrateDrivetrain#
calibrateDrivetrain komutu, smartdrive ile yapılandırılmış jiroskop sensörünü kalibre eder.
Kalibrasyon, jiroskop sensörünün hareketi doğru şekilde ölçmesine yardımcı olur. Kalibrasyon sırasında robotu yaklaşık 2 saniye boyunca hareketsiz tutun. Robot kalibrasyon sırasında hareket ederse, jiroskop sensörü hareketi doğru şekilde ölçemeyebilir.
Proje, bir sonraki kod satırı çalıştırılmadan önce kalibrasyon işleminin tamamlanmasını bekleyecektir.
calibrateDrivetrain , bir tahrik sistemi bir Jiroskop Sensörü ile yapılandırıldığında VEXcode tarafından otomatik olarak oluşturulur. Proje kaynak kodunun bir parçası olarak sağlanır ve VEX IQ C++ API’sinin bir parçası değildir.
void calibrateDrivetrain();
Bu fonksiyon herhangi bir parametre kabul etmez.
Return ValuesBu fonksiyon bir değer döndürmez.
NotesVEXcode’da akıllı sürücü yapılandırıldığında robot her projenin başlangıcında otomatik olarak kalibre edilir.
Kalibrasyon sırasında robotu yaklaşık 2 saniye boyunca hareketsiz tutun.
Aşağıda VEXcode tarafından otomatik olarak oluşturulan calibrateDrivetrain uygulamasının bir örneği verilmiştir:
bool vexcode_initial_drivetrain_calibration_completed = false;
void calibrateDrivetrain() {
wait(200, msec);
Brain.Screen.print("Calibrating");
Brain.Screen.newLine();
Brain.Screen.print("Gyro");
DrivetrainGyro.calibrate();
while (DrivetrainGyro.isCalibrating()) {
wait(25, msec);
}
vexcode_initial_drivetrain_calibration_completed = true;
// Clears the screen and returns the cursor to row 1, column 1.
Brain.Screen.clearScreen();
Brain.Screen.setCursor(1, 1);
}
setHeading#
Yön, robotun baktığı yönü derece cinsinden ifade eder. setHeading komutu, robotun mevcut yönünü yeni bir yön değerine değiştirir.
Örneğin, robot sağa doğru dönmüşse, yönü 0 dereceye ayarlamak, sağa dönük bu pozisyonu yeni 0 derece yapar. Ardından robot, bu yeni yöne göre diğer pozisyonlara dönebilir.
Available Functionsvoid setHeading(
double value,
rotationUnits units);
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robot için ayarlanacak yön değeri. Bu değer, |
|
|
Başlık birimi: |
Bu fonksiyon bir değer döndürmez.
Examples// Face the new 0 degrees.
myDrivetrain.setHeading(90, degrees);
myDrivetrain.turnToHeading(0, degrees);
setRotation#
Dönme, robotun ne kadar döndüğünü derece veya devir cinsinden ölçer. Bir projenin başlangıcında, dönme değeri 0 dereceye ayarlanır. setRotation komutu, robotun mevcut dönme değerini yeni bir değere değiştirir.
Örneğin, robot sağa doğru iki tam tur atmışsa, dönüş değeri 720 derece olacaktır. Dönüşü 0 dereceye ayarlamak, bu dönüş değerini 720’den 0 dereceye sıfırlayacaktır. Ardından robot, bu yeni değere göre dönüş yapabilir.
Available Functionsvoid setRotation(
double value,
rotationUnits units);
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
Robot için ayarlanacak dönüş değeri. |
|
|
Dönme birimi: |
Bu fonksiyon bir değer döndürmez.
Examples// Spin counterclockwise for 2 turns, then face forward.
myDrivetrain.setRotation(720, degrees);
myDrivetrain.turnToRotation(0, degrees);
heading#
Yön, robotun baktığı yönü derece cinsinden ifade eder. heading komutu, robotun mevcut yönünü 0 ile 359 derece arasında döndürür.
Robotun başlangıç yönü 0 derecedir.
Available Functionsdouble heading( rotationUnits units = rotationUnits::deg );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
İsteğe bağlı. Dönme yönünün birimi: |
Robotun mevcut yönünü seçilen birimde double olarak döndürür.
// Show heading before and after turning.
Brain.Screen.print("Before: %f", myDrivetrain.heading(degrees));
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("After: %f", myDrivetrain.heading(degrees));
myDrivetrain.stop();
rotation#
Dönme, robotun ne kadar döndüğünü derece veya devir cinsinden ölçer. Bir projenin başlangıcında, dönme değeri 0 dereceye ayarlanır. rotation komutu robotun mevcut dönme değerini döndürür.
Sağa dönmek dönüş açısını artırır, sola dönmek ise azaltır. Örneğin, sağa iki tam tur dönmek 720 derecelik bir dönüş sağlar.
Available Functionsdouble rotation( rotationUnits units = rotationUnits::deg );
Parametre |
Tip |
Tanım |
|---|---|---|
|
|
İsteğe bağlı. Dönme birimi olarak şunlar seçilebilir: |
Robotun mevcut dönüşünü seçilen birimde double olarak döndürür.
// Show rotation before and after turning.
Brain.Screen.print("Before: %f", myDrivetrain.rotation(degrees));
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("After: %f", myDrivetrain.rotation(degrees));
myDrivetrain.stop();