Bir Komutun Kodunu Yazmak

Subsystem sınıfları, robotunuzdaki mekanizmaları hareket ettirir, ancak doğru zamanda durmasını ve daha karmaşık işlemlerle sıralanmasını sağlamak için Komutlar yazarsınız. Daha önce writing the code for a subsystem pençe açılmasını, kapanmasını başlatmak veya hareket etmeyi durdurmak için bir robot üzerindeki Claw alt sisteminin kodunu geliştirdik. Şimdi pençe motorunu doğru zamanda çalıştıracak bir komutun kodunu yazarak pençenin açılıp kapanmasını sağlayacağız. Pençe örneğimiz, motoru 1 saniye süreyle çalıştırdığımız veya kapatmak için limit anahtarı açılıncaya kadar çalıştırdığımız çok basit bir mekanizmadır.

RobotBuilder’da Pençe Komutunu Kapat

../../../../../_images/writing-command-code-1.png

Bu, RobotBuilder’daki CloseClaw komutunun tanımıdır. Claw alt sistemini gerektirdiğine dikkat edin. Bu, sonraki adımda açıklanmaktadır.

CloseClaw Sınıfı oluşturuldu

12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
public class CloseClaw extends CommandBase {

    // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=VARIABLE_DECLARATIONS
        private final Claw m_claw;

    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=VARIABLE_DECLARATIONS

    // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=CONSTRUCTORS


    public CloseClaw(Claw subsystem) {


    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=CONSTRUCTORS
        // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=VARIABLE_SETTING

    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=VARIABLE_SETTING
        // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=REQUIRES

        m_claw = subsystem;
        addRequirements(m_claw);

    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=REQUIRES
    }

    // Called when the command is initially scheduled.
    @Override
    public void initialize() {
        m_claw.open(); // (1)
    }

    // Called every time the scheduler runs while the command is scheduled.
    @Override
    public void execute() {
    }

    // Called once the command ends or is interrupted.
    @Override
    public void end(boolean interrupted) {
        m_claw.stop(); // (3)
    }

    // Returns true when the command should end.
    @Override
    public boolean isFinished() {
        return m_claw.isGripping(); // (2)
    }

    @Override
    public boolean runsWhenDisabled() {
        // BEGIN AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DISABLED
        return false;

    // END AUTOGENERATED CODE, SOURCE=ROBOTBUILDER ID=DISABLED
    }
}

RobotBuilder, CloseClaw komutu için sınıf dosyalarını oluşturacaktır. Komut, pençe davranışını, yani zaman içindeki işlemi temsil eder. Bu çok basit pençe mekanizmasını çalıştırmak için motorun yakın yönde çalışması gerekir. Claw alt sistemi, motoru doğru yönde çalıştırma ve durdurma yöntemlerine sahiptir. Komutların sorumluluğu, motoru doğru zamanda çalıştırmaktır. Kutularda gösterilen kod satırları, bu davranışı eklemek için eklenir.

  1. CloseClaw Initialize yönteminde Claw alt sistemine eklenen Close() yöntemini çağırarak pençe motorunu kapanma yönünde hareket ettirin.

  2. Bu komut, Claw alt sistemindeki limit anahtarı açıldığında tamamlanır.

  3. End() yöntemi, komut bittiğinde çağrılır ve temizlenecek bir yerdir. Bu durumda motor, süre dolduğu için durdurulur.