CTE-armen#

Introduktion#

Klassen arm ger kontroll över den 6-axliga armen som används i CTE Workcell. I VEX EXP C++ kan den 6-axliga armen flytta en ändeffektor till positioner i tredimensionellt rum, rotera ändeffektorn, kontrollera om rörelser är möjliga och styra anslutna verktyg som magnetupptagningsverktyget eller pennhållarverktyget.

Exemplen på den här sidan använder en konfigurerad 6-axlig arm med namnet Arm.

Konstruktörer#

arm#

arm skapar ett 6-axligt armobjekt.

Tillgänglig funktion

arm(int32_t index);

Parameter

Typ

Beskrivning

index

int32_t

Den smarta porten som 6-axlingsarmen är ansluten till, skriven som PORTx, där x är portnumret. Till exempel, PORT1.

Exempel

// Create a 6-Axis Arm named Arm on Port 1
arm Arm = arm(PORT1);

Destruktor#

~arm#

~arm förstör arm -objektet och frigör tillhörande resurser.

Tillgänglig funktion

~arm();

Medlemsfunktioner#

Klassen arm innehåller följande medlemsfunktioner:

Åtgärder — Flytta 6-axlig arm till positioner eller orienteringar.

  • moveTo — Flyttar ändeffektorn till en specificerad x-, y- och z-koordinat.

  • moveInc — Flyttar ändeffektorn ett angivet avstånd från dess aktuella position.

  • moveEndEffectorTo — Roterar ändeffektorn till en specificerad girnings-, rullnings- och lutningsorientering.

  • moveEndEffectorInc — Roterar ändeffektorn med en specificerad girnings-, rullnings- och lutningsmängd.

Mutatorer — Konfigurera rörelser, verktyg och kontrollinställningar.

  • setSpeed — Ställer in rörelsehastigheten som används av 6-axlig arm.

  • setEndEffectorType — Ställer in typen av ändeffektor som är fäst vid 6-axlig arm.

  • setEndEffectorMagnet — Aktiverar eller inaktiverar magnetupptagningsverktyget.

  • setPenOffset — Ställer in z-axelns offset som används med pennhållarverktyget.

  • setControlStop — Aktiverar eller inaktiverar kontrollstopp för 6-axlig arm.

  • setTimeout — Ställer in timeouten som används av 6-axliga armrörelsefunktioner.

Getters — Returnerar rörelsestatus, position, orientering och anslutningsvärden.

  • isDone — Returnerar om 6-axlig arm har slutfört sin rörelse.

  • isCrashed — Returnerar om 6-axlig arm har kraschat under rörelse.

  • getX — Returnerar ändeffektorns aktuella x-position.

  • getY — Returnerar ändeffektorns aktuella y-position.

  • getZ — Returnerar ändeffektorns aktuella z-position.

  • getYaw — Returnerar den aktuella girningen för ändeffektorn.

  • getRoll — Returnerar den aktuella rullen för sluteffektorn.

  • getPitch — Returnerar den aktuella tonhöjden för ändeffektorn.

  • canArmReachTo — Returnerar om 6-axlig arm kan nå en specifik position.

  • canArmReachInc — Returnerar om 6-axlig arm kan röra sig ett visst avstånd.

  • canEndEffectorReachTo — Returnerar om ändeffektorn kan nå en specificerad orientering.

  • canEndEffectorReachInc — Returnerar om ändeffektorn kan rotera med en viss mängd.

  • isConnected — Returnerar om 6-axlig arm är ansluten till EXP-hjärnan.

  • timestamp — Returnerar tidsstämpeln för det senast mottagna statuspaketet från 6-axlig arm.

  • installed — Returnerar om 6-axlig arm är ansluten.

Återanrop — Kör funktioner när aktiveringshändelser inträffar.

  • controlStopped — Registrerar en funktion som ska köras när kontrollstopp är aktiverat.

  • crashed — Registrerar en funktion som ska köras när en krasch upptäcks.

Åtgärder#

moveTo#

moveTo flyttar 6-axlig arm till en specificerad x-, y- och z-koordinat.

X-, y- och z-koordinaterna beskriver ändeffektorns position i det tredimensionella rummet. Använd canArmReachTo före denna funktion om målpositionen kan ligga utanför 6-axlarmens nåbara arbetsyta.

Tillgänglig funktion

bool moveTo(
  double x,
  double y,
  double z,
  bool   waitForCompletion = true
);

Parameter

Typ

Beskrivning

x

double

Målpositionens x-koordinat i millimeter.

y

double

Y-koordinaten för målpositionen i millimeter.

z

double

Z-koordinaten för målpositionen i millimeter.

waitForCompletion

bool

Valfritt. true (standard) väntar tills rörelsen är klar innan den fortsätter. false startar rörelsen och fortsätter omedelbart till nästa kodrad.

Returvärde

Returnerar ett booleskt värde.

  • true — 6-axlig arm nådde målpositionen.

  • false — 6-axlig arm nådde inte målpositionen, eller waitForCompletion var inställt på false.

Exempel

// Move the 6-Axis Arm to (200, 0, 100)
Arm.moveTo(200, 0, 100);

// Start moving, then print the y-position while the arm moves
Arm.moveTo(-100, 200, 100, false);

while (!Arm.isDone()) {
  Brain.Screen.print(Arm.getY());
  Brain.Screen.newLine();
  wait(0.25, seconds);
}

moveInc#

moveInc flyttar 6-axlig arm ett angivet avstånd från dess aktuella position längs x-, y- och z-axlarna.

Använd den här funktionen för att flytta i förhållande till var ändeffektorn nu befinner sig. Använd canArmReachInc före den här funktionen om rörelsen kan placera 6-axlig arm utanför dess nåbara arbetsyta.

Tillgänglig funktion

bool moveInc(
  double x,
  double y,
  double z,
  bool   waitForCompletion = true
);

Parameter

Typ

Beskrivning

x

double

Avståndet som ska förflyttas längs x-axeln i millimeter.

y

double

Avståndet att förflytta sig längs y-axeln i millimeter.

z

double

Avståndet som ska förflyttas längs z-axeln i millimeter.

waitForCompletion

bool

Valfritt. true (standard) väntar tills rörelsen är klar innan den fortsätter. false startar rörelsen och fortsätter omedelbart till nästa kodrad.

Returvärde

Returnerar ett booleskt värde.

  • true — 6-axlig arm nådde den begärda positionen.

  • false — 6-axlig arm nådde inte den begärda positionen, eller waitForCompletion var inställt på false.

Exempel

// Move the 6-Axis Arm 100 millimeters along the y-axis
Arm.moveInc(0, 100, 0);

moveEndEffectorTo#

moveEndEffectorTo roterar 6-axlarmens ändeffektor till en specificerad girnings-, rullnings- och tippningsorientering.

Orientering beskriver hur ändeffektorn roteras. yaw roterar runt z-axeln, roll roterar runt x-axeln och pitch roterar runt y-axeln.

Tillgänglig funktion

bool moveEndEffectorTo(
  double yaw,
  double roll = 0,
  double pitch = 0,
  bool   waitForCompletion = true
);

Parameter

Typ

Beskrivning

yaw

double

Målets girvinkel i grader.

roll

double

Valfritt. Målrullningsvinkeln i grader. Standardvärdet är 0.

pitch

double

Valfritt. Målvinkeln i grader. Standardvärdet är 0.

waitForCompletion

bool

Valfritt. true (standard) väntar tills rörelsen är klar innan den fortsätter. false startar rörelsen och fortsätter omedelbart till nästa kodrad.

Returvärde

Returnerar ett booleskt värde.

  • true — Sluteffektorn nådde målorienteringen.

  • false — Sluteffektorn nådde inte målorienteringen, eller waitForCompletion var inställt på false.

Exempel

// Rotate the end effector to 90 degrees of roll
Arm.moveEndEffectorTo(0, 90, 0);

moveEndEffectorInc#

moveEndEffectorInc roterar 6-axlarmens ändeffektor med en specificerad girnings-, rullnings- och lutningsmängd från dess aktuella orientering.

Använd den här funktionen för att rotera i förhållande till ändeffektorns aktuella girning, roll eller lutning.

Tillgänglig funktion

bool moveEndEffectorInc(
  double yaw,
  double roll = 0,
  double pitch = 0,
  bool   waitForCompletion = true
);

Parameter

Typ

Beskrivning

yaw

double

Förändringen i girning, i grader.

roll

double

Valfritt. Förändringen i rullning, i grader. Standardvärdet är 0.

pitch

double

Valfritt. Ändringen av tonhöjd, i grader. Standardvärdet är 0.

waitForCompletion

bool

Valfritt. true (standard) väntar tills rörelsen är klar innan den fortsätter. false startar rörelsen och fortsätter omedelbart till nästa kodrad.

Returvärde

Returnerar ett booleskt värde.

  • true — Ändeffektorn nådde den begärda orienteringen.

  • false — Ändeffektorn nådde inte den begärda orienteringen, eller waitForCompletion var inställd på false.

Exempel

// Rotate the end effector -50 degrees in pitch
Arm.moveEndEffectorInc(0, 0, -50);

Mutatorer#

setSpeed#

setSpeed ställer in rörelsehastigheten som används av 6-axlig arm.

Tillgänglig funktion

void setSpeed(uint32_t speed);

Parameter

Typ

Beskrivning

speed

uint32_t

Hastigheten med vilken 6-axlig arm ska röra sig, i millimeter per sekund.

Returvärde

Den här funktionen returnerar inget värde.

Exempel

// Set the 6-Axis Arm movement speed
Arm.setSpeed(100);

setEndEffectorType#

setEndEffectorType anger typen av ändeffektor som är fäst vid 6-axlig arm.

När ändeffektortypen ändras justerar 6-axlingsarmen automatiskt sin z-offset så att den matchar det valda verktyget.

Tillgänglig funktion

bool setEndEffectorType(
  endEffectorType type,
  bool            waitForCompletion = true
);

Parameter

Typ

Beskrivning

type

endEffectorType

Verktyget fäst vid 6-axlig arm: magnet (magnetupptagningsverktyg) eller pen (pennhållare).

waitForCompletion

bool

Valfritt. true (standard) väntar tills ändringen är klar innan den fortsätter. false startar ändringen och fortsätter omedelbart till nästa kodrad.

Returvärde

Returnerar ett booleskt värde.

  • true — Den begärda typen har angetts.

  • false — Den begärda typen var inte inställd, eller waitForCompletion var inställd på false.

Exempel

// Set the end effector type to the Magnet Pickup Tool
Arm.setEndEffectorType(magnet);

setEndEffectorMagnet#

setEndEffectorMagnet aktiverar eller inaktiverar magnetupptagningsverktyget.

Tillgänglig funktion

void setEndEffectorMagnet(bool enabled);

Parameter

Typ

Beskrivning

enabled

bool

true gör att magneten kan plocka upp och hålla föremål. false inaktiverar magneten och släpper alla föremål som hålls.

Returvärde

Den här funktionen returnerar inget värde.

Exempel

// Pick up objects and then drop them
Arm.setEndEffectorType(magnet);
Arm.setEndEffectorMagnet(true);
wait(2, seconds);
Arm.setEndEffectorMagnet(false);

setPenOffset#

setPenOffset ställer in z-axeloffseten som används när pennhållarverktyget är fäst på 6-axilsarmen.

Ställ in ändeffektortypen till pen innan du använder den här funktionen. Om pennhållarverktyget inte är valt har den här funktionen ingen effekt.

Pennans offset är avståndet från toppen av pennhållarverktyget till spetsen på whiteboardpennan. Ett positivt z-värde flyttar offseten uppåt från verktygets monteringspunkt.

Tillgänglig funktion

void setPenOffset(double zOffset);

Parameter

Typ

Beskrivning

zOffset

double

Pennans offsetvärde i millimeter.

Returvärde

Den här funktionen returnerar inget värde.

Exempel

// Set the end effector type to the Pen Holder Tool and set the pen offset
Arm.setEndEffectorType(pen);
Arm.setPenOffset(25);

setControlStop#

setControlStop aktiverar eller inaktiverar kontrollstopp för 6-axlig arm.

När kontrollstopp är aktiverat stoppar 6-axlig arm omedelbart rörelsen och förhindrar ytterligare linjära eller gemensamma rörelser.

Tillgänglig funktion

void setControlStop(bool state = true);

Parameter

Typ

Beskrivning

state

bool

Valfritt. true (standard) aktiverar kontrollstopp och förhindrar ytterligare linjära eller gemensamma rörelser. false inaktiverar kontrollstopp.

Returvärde

Den här funktionen returnerar inget värde.

Exempel

// Stop the 6-Axis Arm and prevent further movement
Arm.setControlStop();

setTimeout#

setTimeout ställer in timeout-värdet som används vid förflyttning av 6-axlig arm.

Om en rörelse inte avslutas innan timeout-tiden har nåtts fortsätter projektet till nästa kodrad.

Tillgänglig funktion

void setTimeout(
  int32_t   timeout,
  timeUnits units
);

Parameter

Typ

Beskrivning

timeout

int32_t

Det nya timeout-värdet.

units

timeUnits

Tidsenheten: sec (sekunder) eller msec (millisekunder).

Returvärde

Den här funktionen returnerar inget värde.

Exempel

// Set the 6-Axis Arm timeout to 2 seconds
Arm.setTimeout(2, sec);

Getters#

isDone#

isDone returnerar om 6-axlig arm har rört sig färdigt.

Den här funktionen är användbar efter att en rörelsefunktion anropats med waitForCompletion satt till false.

Tillgänglig funktion

bool isDone();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returnerar ett booleskt värde.

  • true — 6-axlig arm har rört sig färdigt.

  • false — 6-axlig arm rör sig fortfarande.

Exempel

// Display the 6-Axis Arm's y-position while it moves
Arm.moveTo(-100, 200, 100, false);

while (!Arm.isDone()) {
  Brain.Screen.print(Arm.getY());
  Brain.Screen.newLine();
  wait(0.25, seconds);
}

isCrashed#

isCrashed returnerar om 6-axlig arm har kraschat under rörelse.

När en krasch upptäcks stoppar 6-axlig arm motorns rörelse och kan verka slak. Detta minskar belastningen och hjälper till att skydda motorerna från oavsiktliga skador.

Tillgänglig funktion

bool isCrashed();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returnerar ett booleskt värde.

  • true — 6-axlig arm har kraschat.

  • false — 6-axlig arm har inte kraschat.

Exempel

// Quickly move to a new location
Arm.setSpeed(100);
Arm.moveTo(-40, 250, 40, false);

// While moving, check for a crash
while (true) {
  if (Arm.isCrashed()) {
    // Indicate a crash with the Signal Tower and Brain screen
    Brain.Screen.print("Crash Detected");
    SignalTower6.setColor(signaltower::green, signaltower::off);
    SignalTower6.setColor(signaltower::red, signaltower::on);
    break;
  }

  wait(5, msec);
}

getX#

getX returnerar ändeffektorns aktuella x-position i millimeter.

Använd den här funktionen för att avläsa var ändeffektorn för närvarande är placerad längs x-axeln.

Tillgänglig funktion

float getX();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returns a float representing the x position of the end effector in millimeters.

Exempel

// Print the current x position of the 6-Axis Arm
Brain.Screen.print(Arm.getX());

getY#

getY returnerar ändeffektorns aktuella y-position i millimeter.

Använd den här funktionen för att avläsa var ändeffektorn för närvarande är placerad längs y-axeln.

Tillgänglig funktion

float getY();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returnerar ett flyttal på float som representerar y-positionen för ändeffektorn i millimeter.

Exempel

// Print the current y position of the 6-Axis Arm
Brain.Screen.print(Arm.getY());

getZ#

getZ returnerar ändeffektorns aktuella z-position i millimeter.

Använd den här funktionen för att avläsa var ändeffektorn för närvarande är placerad längs z-axeln.

Tillgänglig funktion

float getZ();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returns a float representing the z position of the end effector in millimeters.

Exempel

// Print the current z position of the 6-Axis Arm
Brain.Screen.print(Arm.getZ());

getYaw#

getYaw returnerar den aktuella girningen för ändeffektorn i grader.

Tillgänglig funktion

float getYaw();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returns a float representing the current yaw of the end effector in degrees.

Exempel

// Print the current yaw of the end effector
Brain.Screen.print(Arm.getYaw());

getRoll#

getRoll returnerar den aktuella rullningen av ändeffektorn i grader.

Tillgänglig funktion

float getRoll();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returns a float representing the current roll of the end effector in degrees.

Exempel

// Print the current roll of the end effector
Brain.Screen.print(Arm.getRoll());

getPitch#

getPitch returnerar den aktuella tonhöjden för ändeffektorn i grader.

Tillgänglig funktion

float getPitch();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returnerar ett flyttal på float som representerar den aktuella tonhöjden för ändeffektorn i grader.

Exempel

// Print the current pitch of the end effector
Brain.Screen.print(Arm.getPitch());

canArmReachTo#

canArmReachTo returnerar om 6-axlig arm kan flytta ändeffektorn till en specificerad x-, y- och z-koordinat.

Använd den här funktionen för att kontrollera en målposition innan du använder moveTo.

Tillgänglig funktion

bool canArmReachTo(
  double x,
  double y,
  double z
);

Parameter

Typ

Beskrivning

x

double

Målpositionens x-koordinat i millimeter.

y

double

Y-koordinaten för målpositionen i millimeter.

z

double

Z-koordinaten för målpositionen i millimeter.

Returvärde

Returnerar ett booleskt värde.

  • true — 6-axlig arm kan nå den begärda positionen.

  • false — 6-axlig arm kan inte nå den begärda positionen.

Exempel

// Move the 6-Axis Arm to (100, -20, 50) if it can reach
if (Arm.canArmReachTo(100, -20, 50)) {
  Arm.moveTo(100, -20, 50);
}

canArmReachInc#

canArmReachInc returnerar om 6-axlig arm kan flytta ändeffektorn med ett angivet x-, y- och z-avstånd från dess aktuella position.

Använd den här funktionen för att kontrollera en relativ rörelse innan du använder moveInc.

Tillgänglig funktion

bool canArmReachInc(
  double x,
  double y,
  double z
);

Parameter

Typ

Beskrivning

x

double

Avståndet som ska förflyttas längs x-axeln i millimeter.

y

double

Avståndet att förflytta sig längs y-axeln i millimeter.

z

double

Avståndet som ska förflyttas längs z-axeln i millimeter.

Returvärde

Returnerar ett booleskt värde.

  • true — 6-axlig arm kan utföra den begärda rörelsen.

  • false — 6-axlig arm kan inte utföra den begärda rörelsen.

Exempel

// Increment the 6-Axis Arm 100 mm along the x-axis if possible
if (Arm.canArmReachInc(100, 0, 0)) {
  Arm.moveInc(100, 0, 0);
}

canEndEffectorReachTo#

canEndEffectorReachTo returnerar om ändeffektorn kan rotera till en specificerad girnings-, rullnings- och lutningsorientering.

Använd den här funktionen för att kontrollera ett måls orientering innan du använder moveEndEffectorTo.

Tillgänglig funktion

bool canEndEffectorReachTo(
  double yaw,
  double roll = 0,
  double pitch = 0
);

Parameter

Typ

Beskrivning

yaw

double

Målets girvinkel i grader.

roll

double

Valfritt. Målrullningsvinkeln i grader. Standardvärdet är 0.

pitch

double

Valfritt. Målvinkeln i grader. Standardvärdet är 0.

Returvärde

Returnerar ett booleskt värde.

  • true — Ändeffektorn kan nå den begärda orienteringen.

  • false — Ändeffektorn kan inte nå den begärda orienteringen.

Exempel

// Rotate the end effector to 90 degrees of roll if possible
if (Arm.canEndEffectorReachTo(0, 90, 0)) {
  Arm.moveEndEffectorTo(0, 90, 0);
}

canEndEffectorReachInc#

canEndEffectorReachInc returnerar om ändeffektorn kan rotera med en specificerad girnings-, rullnings- och lutningsmängd från sin aktuella orientering.

Använd den här funktionen för att kontrollera en relativ orienteringsrörelse innan du använder moveEndEffectorInc.

Tillgänglig funktion

bool canEndEffectorReachInc(
  double yaw,
  double roll = 0,
  double pitch = 0
);

Parameter

Typ

Beskrivning

yaw

double

Förändringen i girning, i grader.

roll

double

Valfritt. Förändringen i rullning, i grader. Standardvärdet är 0.

pitch

double

Valfritt. Ändringen av tonhöjd, i grader. Standardvärdet är 0.

Returvärde

Returnerar ett booleskt värde.

  • true — Ändeffektorn kan utföra den begärda rotationen.

  • false — Ändeffektorn kan inte utföra den begärda rotationen.

Exempel

// Increment the end effector by 10 degrees of pitch if possible
if (Arm.canEndEffectorReachInc(0, 0, 10)) {
  Arm.moveEndEffectorInc(0, 0, 10);
}

isConnected#

isConnected returnerar om 6-axisarmen är ansluten till EXP-hjärnan.

Detta är en kompatibilitetsfunktion som returnerar samma värde som installed.

Tillgänglig funktion

bool isConnected();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returnerar ett booleskt värde.

  • true — 6-axlig arm är ansluten till EXP-hjärnan.

  • false — 6-axlig arm är inte ansluten till EXP-hjärnan.

Exempel

// Print whether the 6-Axis Arm is connected
Brain.Screen.print(Arm.isConnected());

timestamp#

timestamp returnerar tidsstämpeln för det senast mottagna statuspaketet från 6-axlig arm.

Tillgänglig funktion

uint32_t timestamp();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returnerar tidsstämpeln för det senaste statuspaketet som uint32_t i millisekunder.

installed#

installed returnerar om 6-axlig arm är ansluten.

Tillgänglig funktion

bool installed();

Parametrar

Den här funktionen har inga parametrar.

Returvärde

Returnerar ett booleskt värde.

  • true — 6-axlig arm är ansluten.

  • false — 6-axlig arm är inte ansluten.

Återuppringningar#

controlStopped#

controlStopped registrerar en funktion som körs när kontrollstopp är aktiverat.

Tillgänglig funktion

void controlStopped(void (* callback)(void));

Parameter

Typ

Beskrivning

callback

void (*)(void)

En funktion som körs när kontrollstopp är aktiverat.

Returvärde

Den här funktionen returnerar inget värde.

Exempel

// Called when the 6-Axis Arm is control stopped
void onControlStopped() {
  Brain.Screen.print("Arm control stopped");
}

int main() {
  vexcodeInit();

  Arm.controlStopped(onControlStopped);
}

crashed#

crashed registrerar en funktion som körs när 6-axlig arm har kraschat under rörelse.

När en krasch upptäcks stoppar 6-axlig arm motorns rörelse och kan verka slak. Detta minskar belastningen och hjälper till att skydda motorerna från oavsiktliga skador.

Tillgänglig funktion

void crashed(void (* callback)(void));

Parameter

Typ

Beskrivning

callback

void (*)(void)

En funktion som körs när 6-axlig arm har kraschat under rörelse.

Returvärde

Den här funktionen returnerar inget värde.

Exempel

// Called when the 6-Axis Arm crashes while moving
void onArmCrashed() {
  Brain.Screen.print("Crash detected");
  SignalTower6.setColor(signaltower::green, signaltower::off);
  SignalTower6.setColor(signaltower::red, signaltower::on);
}

int main() {
  vexcodeInit();

  Arm.crashed(onArmCrashed);
}