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 |
|---|---|---|
|
|
Den smarta porten som 6-axlingsarmen är ansluten till, skriven som |
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 |
|---|---|---|
|
|
Målpositionens x-koordinat i millimeter. |
|
|
Y-koordinaten för målpositionen i millimeter. |
|
|
Z-koordinaten för målpositionen i millimeter. |
|
|
Valfritt. |
Returvärde
Returnerar ett booleskt värde.
true— 6-axlig arm nådde målpositionen.false— 6-axlig arm nådde inte målpositionen, ellerwaitForCompletionvar 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 |
|---|---|---|
|
|
Avståndet som ska förflyttas längs x-axeln i millimeter. |
|
|
Avståndet att förflytta sig längs y-axeln i millimeter. |
|
|
Avståndet som ska förflyttas längs z-axeln i millimeter. |
|
|
Valfritt. |
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, ellerwaitForCompletionvar 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 |
|---|---|---|
|
|
Målets girvinkel i grader. |
|
|
Valfritt. Målrullningsvinkeln i grader. Standardvärdet är |
|
|
Valfritt. Målvinkeln i grader. Standardvärdet är |
|
|
Valfritt. |
Returvärde
Returnerar ett booleskt värde.
true— Sluteffektorn nådde målorienteringen.false— Sluteffektorn nådde inte målorienteringen, ellerwaitForCompletionvar 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 |
|---|---|---|
|
|
Förändringen i girning, i grader. |
|
|
Valfritt. Förändringen i rullning, i grader. Standardvärdet är |
|
|
Valfritt. Ändringen av tonhöjd, i grader. Standardvärdet är |
|
|
Valfritt. |
Returvärde
Returnerar ett booleskt värde.
true— Ändeffektorn nådde den begärda orienteringen.false— Ändeffektorn nådde inte den begärda orienteringen, ellerwaitForCompletionvar 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 |
|---|---|---|
|
|
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 |
|---|---|---|
|
|
Verktyget fäst vid 6-axlig arm: |
|
|
Valfritt. |
Returvärde
Returnerar ett booleskt värde.
true— Den begärda typen har angetts.false— Den begärda typen var inte inställd, ellerwaitForCompletionvar 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 |
|---|---|---|
|
|
|
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 |
|---|---|---|
|
|
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 |
|---|---|---|
|
|
Valfritt. |
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 |
|---|---|---|
|
|
Det nya timeout-värdet. |
|
|
Tidsenheten: |
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 |
|---|---|---|
|
|
Målpositionens x-koordinat i millimeter. |
|
|
Y-koordinaten för målpositionen i millimeter. |
|
|
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 |
|---|---|---|
|
|
Avståndet som ska förflyttas längs x-axeln i millimeter. |
|
|
Avståndet att förflytta sig längs y-axeln i millimeter. |
|
|
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 |
|---|---|---|
|
|
Målets girvinkel i grader. |
|
|
Valfritt. Målrullningsvinkeln i grader. Standardvärdet är |
|
|
Valfritt. Målvinkeln i grader. Standardvärdet är |
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 |
|---|---|---|
|
|
Förändringen i girning, i grader. |
|
|
Valfritt. Förändringen i rullning, i grader. Standardvärdet är |
|
|
Valfritt. Ändringen av tonhöjd, i grader. Standardvärdet är |
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 |
|---|---|---|
|
|
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 |
|---|---|---|
|
|
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);
}