Kapselung grundlegender Roboterbewegungen in VEXcode Pro V5

The VEX Visual Studio Code Extension has replaced VEXcode Pro V5, which is now end-of-life.

VEXcode Blocks and VEXcode Text remain actively developed and supported for all VEX platforms.

Das Hauptziel besteht darin, Ihnen zu zeigen, wie Sie einige der grundlegenden Bewegungscodes in Funktionen kapseln, nicht für Encoderberechnungen und Bewegungsmanipulationen.

Die folgenden Beispiel-Bewegungsfunktionen helfen Ihnen bei der Erstellung Ihres grundlegenden Bewegungscodes:

  • Besser organisiert
  • Besser lesbar
  • Weniger fehleranfällig

Zunächst müssen Sie die folgenden Basisvariablen definieren:

Schwimmerrad = 10,16;
Float WB = 36,75; //basierend auf der V5 Clawbot-Konfiguration

Hinweis: Wenn Sie das Übersetzungsverhältnis ändern, kann sich die folgende Berechnung je nach Übersetzungsverhältnis geringfügig ändern.

Dies wird in einem anderen Artikel besprochen, der sich auf den Motor-Encoder konzentriert:

float EncPerCm = 360/(wheel* M_PI);
float EncPerDeg = WB/Wheel;

Dieses Beispiel gilt nur für die Pivot-Drehung. Z.B rechter Motor = 100, linker Motor = -100 usw.

Zweitens empfehlen wir Ihnen, bei der Durchsicht der folgenden Beispiele in der Online-API-Referenz nach den Parametern und deren Spezifikationen zu suchen. Besuchen Sie:https://api.vexcode.cloud/v5/html/und suchen Sie beispielsweise nachrotateTo, um sich mit den Parametern vertraut zu machen.


Beispiel 1: Kapseln Sie eine geradlinige Bewegung basierend auf verschiedenen Entfernungen

Schwimmerrad = 10,16; 
Float WB = 36,75; 
float EncPerCm = 360,0 / (Wheel* M_PI); 

void reportMotionValues(motor m, int line){

  Brain.Screen.printAt(5,line, "%8.2lf%8.2lf%8.2f", 
    m.position(rev), 
    m.position(deg)); 
}

// Abstand ist in Zentimetern
void goStraight( float distance ){
	
	LeftMotor.resetPosition();
	LeftMotor.resetRotation();
	RightMotor.resetPosition();
	RightMotor.resetRotation();
  	
	float totalEnc = distance * EncPerCm;
	
	// Hinweis: „deg“ stammt aus dem Namensraum vex::. Daher sollten Sie 
        weitere Variable mit dem Namen „deg“ erstellen. 

       LeftMotor.setVelocity(50.0, Prozent);
LeftMotor.spinToPosition(totalEnc, deg, false);

RightMotor.setVelocity(50.0, Prozent);
RightMotor.spinToPosition(totalEnc, deg, false); while (LeftMotor.isSpinning() || RightMotor.isSpinning() ) wait(50, msec); zurück; } int main() { vexcodeInit(); goStraight(100.0); Brain.Screen.printAt(5,60, "Fertig"); reportMotionValues(LeftMotor, 30); reportMotionValues(RightMotor, 60); }

Beispiel 2: Kapseln Sie Linkskurven basierend auf verschiedenen Graden

Schwimmerrad = 10,16; 
Float WB = 36,75; 
float EncPerCm = 360,0 / (Wheel* M_PI); 
float EncPerDeg = WB / Wheel;

void turnRight( Float Degrees){
	
	LeftMotor.resetPosition();
	LeftMotor.resetRotation();
	RightMotor.resetPosition();
	RightMotor.resetRotation();
  	
	float totalEnc = Grad * EncPerDeg;
	
       // Hinweis: Dieses „Grad“ stammt aus dem Vex-Namespace
       LeftMotor.setVelocity(100.0, Prozent);
LeftMotor.spinToPosition(totalEnc, deg, false);

RightMotor.setVelocity(-100,0, Prozent);
RightMotor.spinToPosition(-totalEnc, deg, false); while(LeftMotor.isSpinning() || RightMotor.isSpinning() ) wait(50, msec); Rückkehr; } int main(){ ... turnRight(90.0); ... }

Beispiel 3: Kapseln Sie sowohl links als auch rechts in einer einzigen Funktion

void doTurning( float grades ) {
	// genau der gleiche Code wie turnRight oben
}

int main() {
...
   doTurning(90.0); // Rechtsdrehung
...
   doTurning(-90.0); // Linksdrehung
}

Wenn Sie Ihren Code für eine fortgeschrittenere Programmierung deutlich lesbarer machen möchten, können Sie Folgendes versuchen:

#define doLeftTurn(d) doTurning(d)
#define doRigtTurn(d) doTurning(-d)

int main() {
...
   doLeftTurn(90.0);  
   doRightTurning(90.0);
...
}

#definewird als Präprozessor-Makroausdruck bezeichnet. Betrachten Sie diesen Ausdruck als Symbol. Wo immer dieses Symbol im Code vorkommt, wirddurch den AusdruckdoTurning(der angegebene Wert)ersetzt.

Präprozessormakros sind ein anderes umfangreiches Thema und werden in diesem Artikel nicht behandelt.

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: