CTE Arm#
Zavedení#
Třída arm poskytuje ovládání 6osého ramene používaného v pracovní buňce CTE. V jazyce VEX V5 C++ může 6osé rameno pohybovat koncovým efektorem do pozic v trojrozměrném prostoru, otáčet koncovým efektorem, kontrolovat, zda jsou pohyby možné, a ovládat připojené nástroje, jako je nástroj pro magnetické snímání nebo nástroj pro držák pera.
6osé rameno není v kódu VEXcode V5 nakonfigurováno jako zařízení. Chcete-li jej použít v projektu VEX V5 C++, ručně vytvořte v kódu objekt arm s inteligentním portem, ke kterému je 6osé rameno připojeno.
Příklady na této stránce používají ručně vyrobené 6osé rameno s názvem Arm.
Konstruktéři#
arm#
arm vytvoří objekt 6osého ramene.
Dostupná funkce
arm(int32_t index);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Inteligentní port, ke kterému je připojeno 6osé rameno, zapsaný jako |
Příklad
// Create a 6-Axis Arm named Arm on Port 1
arm Arm = arm(PORT1);
Destruktor#
~arm#
~arm zničí objekt arm a uvolní přidružené zdroje.
Dostupná funkce
~arm();
Členské funkce#
Třída arm obsahuje následující členské funkce:
Akce – Pohyb 6osého ramene do pozic nebo orientací.
moveTo— Přesune koncový efektor na zadanou souřadnici x, y a z.moveInc— Přesune koncový efektor o zadanou vzdálenost od jeho aktuální polohy.moveEndEffectorTo— Otočí koncový efektor do zadané orientace stáčení, klopení a stoupání.moveEndEffectorInc— Otočí koncový efektor o zadanou hodnotu stáčení, klopení a stoupání.
Mutátory – Konfigurace pohybu, nástrojů a nastavení ovládání.
setSpeed— Nastavuje rychlost pohybu používanou 6osým ramenem.setEndEffectorType— Nastaví typ koncového efektoru připojeného k 6osému ramenu.setEndEffectorMagnet— Povolí nebo zakáže nástroj pro snímání magnetu.setPenOffset— Nastaví posun osy z použitý s nástrojem Držák pera.setControlStop— Povolí nebo zakáže zastavení řízení pro 6osé rameno.setTimeout— Nastavuje časový limit používaný funkcemi pohybu 6osého ramene.
Gettery – Vracejí stav pohybu, pozici, orientaci a hodnoty připojení.
isDone— Vrátí, zda se pohyb 6osého ramene dokončil.isCrashed— Vrátí, zda došlo k havárii 6osého ramene během pohybu.getX— Vrátí aktuální pozici x koncového efektoru.getY— Vrátí aktuální pozici y koncového efektoru.getZ— Vrátí aktuální pozici z koncového efektoru.getYaw— Vrátí aktuální natočení koncového efektoru.getRoll— Vrátí aktuální hod koncového efektoru.getPitch— Vrátí aktuální výšku tónu koncového efektoru.canArmReachTo— Vrátí, zda 6osé rameno může dosáhnout zadané polohy.canArmReachInc— Vrátí, zda se 6osé rameno může posunout o zadanou vzdálenost.canEndEffectorReachTo— Vrátí, zda koncový efektor může dosáhnout zadané orientace.canEndEffectorReachInc— Vrátí, zda se koncový efektor může otočit o zadanou hodnotu.isConnected— Vrátí, zda je 6osé rameno připojeno k V5 Brain.timestamp— Vrátí časové razítko posledního přijatého stavového paketu z 6osého ramene.installed— Vrátí, zda je připojeno 6osé rameno.
Zpětná volání — Spouštějí funkce, když dojde k událostem arm.
controlStopped— Registruje funkci, která se má spustit, když je povoleno zastavení řízení.crashed— Zaregistruje funkci, která se spustí při detekci havárie.
Akce#
moveTo#
moveTo přesune 6osé rameno na zadanou souřadnici x, y a z.
Souřadnice x, y a z popisují polohu koncového efektoru v trojrozměrném prostoru. Pokud cílová poloha může být mimo dosažitelný pracovní prostor 6osého ramene, použijte před touto funkcí funkci canArmReachTo.
Dostupná funkce
bool moveTo(
double x,
double y,
double z,
bool waitForCompletion = true
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Souřadnice x cílové polohy v milimetrech. |
|
|
Souřadnice y cílové polohy v milimetrech. |
|
|
Souřadnice z cílové polohy v milimetrech. |
|
|
Volitelné. |
Návratová hodnota
Vrací booleovskou hodnotu.
true— 6osé rameno dosáhlo cílové polohy.false— 6osé rameno nedosáhlo cílové polohy nebowaitForCompletionbylo nastaveno nafalse.
Příklady
// 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 posune 6osé rameno o zadanou vzdálenost od jeho aktuální polohy podél os x, y a z.
Tuto funkci použijte pro pohyb vzhledem k aktuálnímu umístění koncového efektoru. Pokud pohyb může umístit 6osé rameno mimo jeho dosažitelný pracovní prostor, použijte před touto funkcí funkci canArmReachInc.
Dostupná funkce
bool moveInc(
double x,
double y,
double z,
bool waitForCompletion = true
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Vzdálenost, o kterou se má posunout podél osy x v milimetrech. |
|
|
Vzdálenost, o kterou se má posunout podél osy y v milimetrech. |
|
|
Vzdálenost, o kterou se má posunout podél osy z v milimetrech. |
|
|
Volitelné. |
Návratová hodnota
Vrací booleovskou hodnotu.
true— 6osé rameno dosáhlo požadované polohy.false— 6osé rameno nedosáhlo požadované polohy nebowaitForCompletionbylo nastaveno nafalse.
Příklad
// Move the 6-Axis Arm 100 millimeters along the y-axis
Arm.moveInc(0, 100, 0);
moveEndEffectorTo#
moveEndEffectorTo otáčí koncový efektor 6osého ramene do zadané orientace stáčení, klopení a klopení.
Orientace popisuje, jak se koncový efektor otáčí. yaw otáčí kolem osy z, roll otáčí kolem osy x a pitch otáčí kolem osy y.
Dostupná funkce
bool moveEndEffectorTo(
double yaw,
double roll = 0,
double pitch = 0,
bool waitForCompletion = true
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Cílový úhel stáčení ve stupních. |
|
|
Volitelné. Úhel náklonu cíle ve stupních. Výchozí hodnota je |
|
|
Volitelné. Cílový úhel sklonu ve stupních. Výchozí hodnota je |
|
|
Volitelné. |
Návratová hodnota
Vrací booleovskou hodnotu.
true— Koncový efektor dosáhl cílové orientace.false— Koncový efektor nedosáhl cílové orientace nebowaitForCompletionbyl nastaven nafalse.
Příklad
// Rotate the end effector to 90 degrees of roll
Arm.moveEndEffectorTo(0, 90, 0);
moveEndEffectorInc#
moveEndEffectorInc otočí koncový efektor 6osého ramene o zadanou hodnotu stáčení, klopení a stoupání oproti jeho aktuální orientaci.
Tuto funkci použijte k otočení vzhledem k aktuálnímu stáčení, klopení nebo stoupání koncového efektoru.
Dostupná funkce
bool moveEndEffectorInc(
double yaw,
double roll = 0,
double pitch = 0,
bool waitForCompletion = true
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Změna stáčení ve stupních. |
|
|
Volitelné. Změna náklonu ve stupních. Výchozí hodnota je |
|
|
Volitelné. Změna výšky tónu ve stupních. Výchozí hodnota je |
|
|
Volitelné. |
Návratová hodnota
Vrací booleovskou hodnotu.
true— Koncový efektor dosáhl požadované orientace.false— Koncový efektor nedosáhl požadované orientace nebowaitForCompletionbyl nastaven nafalse.
Příklad
// Rotate the end effector -50 degrees in pitch
Arm.moveEndEffectorInc(0, 0, -50);
Mutátory#
setSpeed#
setSpeed nastavuje rychlost pohybu používanou 6osým ramenem.
Dostupná funkce
void setSpeed(uint32_t speed);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Rychlost, s jakou by se mělo 6osé rameno pohybovat, v milimetrech za sekundu. |
Návratová hodnota
Tato funkce nevrací hodnotu.
Příklad
// Set the 6-Axis Arm movement speed
Arm.setSpeed(100);
setEndEffectorType#
setEndEffectorType nastavuje typ koncového efektoru připojeného k 6osému ramenu.
Při změně typu koncového efektoru šestiosé rameno automaticky upraví svůj z-offset tak, aby odpovídal vybranému nástroji.
Dostupná funkce
bool setEndEffectorType(
endEffectorType type,
bool waitForCompletion = true
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Nástroj připojený k 6osému ramenu: |
|
|
Volitelné. |
Návratová hodnota
Vrací booleovskou hodnotu.
true— Požadovaný typ byl nastaven.false— Požadovaný typ nebyl nastaven, nebowaitForCompletionbyl nastaven nafalse.
Příklad
// Set the end effector type to the Magnet Pickup Tool
Arm.setEndEffectorType(magnet);
setEndEffectorMagnet#
setEndEffectorMagnet povoluje nebo zakazuje nástroj pro snímání magnetu.
Dostupná funkce
void setEndEffectorMagnet(bool enabled);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
|
Návratová hodnota
Tato funkce nevrací hodnotu.
Příklad
// Pick up objects and then drop them
Arm.setEndEffectorType(magnet);
Arm.setEndEffectorMagnet(true);
wait(2, seconds);
Arm.setEndEffectorMagnet(false);
setPenOffset#
setPenOffset nastavuje ofset osy z použitý, když je nástroj Držák pera připojen k 6osému ramenu.
Před použitím této funkce nastavte typ koncového efektoru na pen Pokud není vybrán nástroj Držák pera, tato funkce nemá žádný účinek.
Offset pera je vzdálenost od horní části držáku pera k hrotu fixu stíratelného za sucha. Kladná hodnota z posouvá offset směrem nahoru od bodu uchycení nástroje.
Dostupná funkce
void setPenOffset(double zOffset);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Hodnota odsazení pera v milimetrech. |
Návratová hodnota
Tato funkce nevrací hodnotu.
Příklad
// Set the end effector type to the Pen Holder Tool and set the pen offset
Arm.setEndEffectorType(pen);
Arm.setPenOffset(25);
setControlStop#
setControlStop povoluje nebo zakazuje zastavení řízení pro 6osé rameno.
Když je aktivováno zastavení řízení, 6osé rameno okamžitě zastaví pohyb a zabrání dalším lineárním nebo kloubovým pohybům.
Dostupná funkce
void setControlStop(bool state = true);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Volitelné. |
Návratová hodnota
Tato funkce nevrací hodnotu.
Příklad
// Stop the 6-Axis Arm and prevent further movement
Arm.setControlStop();
setTimeout#
setTimeout nastavuje hodnotu časového limitu použitého při pohybu 6osého ramene.
Pokud pohyb nedokončí před uplynutím časového limitu, projekt pokračuje na další řádek kódu.
Dostupná funkce
void setTimeout(
int32_t timeout,
timeUnits units
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Nová hodnota časového limitu. |
|
|
Časová jednotka: |
Návratová hodnota
Tato funkce nevrací hodnotu.
Příklad
// Set the 6-Axis Arm timeout to 2 seconds
Arm.setTimeout(2, sec);
Gettery#
isDone#
isDone vrací, zda se pohyb 6osého ramene dokončil.
Tato funkce je užitečná po volání funkce pro přesun s parametrem waitForCompletion nastaveným na false.
Dostupná funkce
bool isDone();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací booleovskou hodnotu.
true— Pohyb 6osého ramene byl dokončen.false— 6osé rameno se stále pohybuje.
Příklad
// 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 vrací, zda došlo k havárii 6osého ramene během pohybu.
Pokud je detekována havárie, 6osé rameno zastaví pohyb motoru a může se zdát, že se zablokovalo. To snižuje namáhání a pomáhá chránit motory před náhodným poškozením.
Dostupná funkce
bool isCrashed();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací booleovskou hodnotu.
true— Došlo k havárii 6osého ramene.false— 6osé rameno se nezhroutilo.
Příklad
// 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 Brain screen
Brain.Screen.print("Crash Detected");
break;
}
wait(5, msec);
}
getX#
Funkce getX vrací aktuální pozici x koncového efektoru v milimetrech.
Tato funkce slouží k přečtení aktuální polohy koncového efektoru podél osy x.
Dostupná funkce
float getX();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací hodnotu float která představuje pozici x koncového efektoru v milimetrech.
Příklad
// Print the current x position of the 6-Axis Arm
Brain.Screen.print(Arm.getX());
getY#
getY vrací aktuální pozici y koncového efektoru v milimetrech.
Tato funkce slouží k přečtení aktuální polohy koncového efektoru podél osy y.
Dostupná funkce
float getY();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací hodnotu float která představuje pozici y koncového efektoru v milimetrech.
Příklad
// Print the current y position of the 6-Axis Arm
Brain.Screen.print(Arm.getY());
getZ#
getZ vrací aktuální polohu z koncového efektoru v milimetrech.
Tato funkce slouží k přečtení aktuální polohy koncového efektoru podél osy z.
Dostupná funkce
float getZ();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací hodnotu float která představuje pozici z koncového efektoru v milimetrech.
Příklad
// Print the current z position of the 6-Axis Arm
Brain.Screen.print(Arm.getZ());
getYaw#
getYaw vrací aktuální natočení koncového efektoru ve stupních.
Dostupná funkce
float getYaw();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací hodnotu float která představuje aktuální natočení koncového efektoru ve stupních.
Příklad
// Print the current yaw of the end effector
Brain.Screen.print(Arm.getYaw());
getRoll#
getRoll vrací aktuální natočení koncového efektoru ve stupních.
Dostupná funkce
float getRoll();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací hodnotu float která představuje aktuální natočení koncového efektoru ve stupních.
Příklad
// Print the current roll of the end effector
Brain.Screen.print(Arm.getRoll());
getPitch#
getPitch vrací aktuální sklon koncového efektoru ve stupních.
Dostupná funkce
float getPitch();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací hodnotu float která představuje aktuální sklon koncového efektoru ve stupních.
Příklad
// Print the current pitch of the end effector
Brain.Screen.print(Arm.getPitch());
canArmReachTo#
canArmReachTo vrací, zda 6osé rameno může pohybovat koncovým efektorem na zadanou souřadnici x, y a z.
Tuto funkci použijte ke kontrole cílové pozice před použitím moveTo.
Dostupná funkce
bool canArmReachTo(
double x,
double y,
double z
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Souřadnice x cílové polohy v milimetrech. |
|
|
Souřadnice y cílové polohy v milimetrech. |
|
|
Souřadnice z cílové polohy v milimetrech. |
Návratová hodnota
Vrací booleovskou hodnotu.
true— 6osé rameno může dosáhnout požadované polohy.false— 6osé rameno nemůže dosáhnout požadované polohy.
Příklad
// 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 vrací, zda 6osé rameno může posunout koncový efektor o zadanou vzdálenost x, y a z od jeho aktuální polohy.
Tuto funkci použijte ke kontrole relativního pohybu před použitím moveInc.
Dostupná funkce
bool canArmReachInc(
double x,
double y,
double z
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Vzdálenost, o kterou se má posunout podél osy x v milimetrech. |
|
|
Vzdálenost, o kterou se má posunout podél osy y v milimetrech. |
|
|
Vzdálenost, o kterou se má posunout podél osy z v milimetrech. |
Návratová hodnota
Vrací booleovskou hodnotu.
true— 6osé rameno může provést požadovaný pohyb.false— 6osé rameno nemůže provést požadovaný pohyb.
Příklad
// 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 vrací, zda se koncový efektor může otáčet do zadané orientace stáčení, klopení a stoupání.
Tuto funkci použijte ke kontrole orientace cíle před použitím moveEndEffectorTo.
Dostupná funkce
bool canEndEffectorReachTo(
double yaw,
double roll = 0,
double pitch = 0
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Cílový úhel stáčení ve stupních. |
|
|
Volitelné. Úhel náklonu cíle ve stupních. Výchozí hodnota je |
|
|
Volitelné. Cílový úhel sklonu ve stupních. Výchozí hodnota je |
Návratová hodnota
Vrací booleovskou hodnotu.
true— Koncový efektor může dosáhnout požadované orientace.false— Koncový efektor nemůže dosáhnout požadované orientace.
Příklad
// Rotate the end effector to 90 degrees of roll if possible
if (Arm.canEndEffectorReachTo(0, 90, 0)) {
Arm.moveEndEffectorTo(0, 90, 0);
}
canEndEffectorReachInc#
canEndEffectorReachInc vrací, zda se koncový efektor může otočit o zadanou hodnotu stáčení, klopení a stoupání od své aktuální orientace.
Tuto funkci použijte ke kontrole relativní orientace pohybu před použitím moveEndEffectorInc.
Dostupná funkce
bool canEndEffectorReachInc(
double yaw,
double roll = 0,
double pitch = 0
);
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Změna stáčení ve stupních. |
|
|
Volitelné. Změna náklonu ve stupních. Výchozí hodnota je |
|
|
Volitelné. Změna výšky tónu ve stupních. Výchozí hodnota je |
Návratová hodnota
Vrací booleovskou hodnotu.
true— Koncový efektor může provést požadovanou rotaci.false— Koncový efektor nemůže provést požadovanou rotaci.
Příklad
// Increment the end effector by 10 degrees of pitch if possible
if (Arm.canEndEffectorReachInc(0, 0, 10)) {
Arm.moveEndEffectorInc(0, 0, 10);
}
isConnected#
isConnected vrací, zda je 6osé rameno připojeno k V5 Brain.
Toto je funkce kompatibility, která vrací stejnou hodnotu jako installed.
Dostupná funkce
bool isConnected();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací booleovskou hodnotu.
true— 6osé rameno je připojeno k mozku V5.false— 6osé rameno není připojeno k mozku V5.
Příklad
// Print whether the 6-Axis Arm is connected
Brain.Screen.print(Arm.isConnected());
timestamp#
timestamp vrací časové razítko posledního přijatého stavového paketu z 6osého ramene.
Dostupná funkce
uint32_t timestamp();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrátí časové razítko posledního stavového paketu jako uint32_t v milisekundách.
installed#
installed vrací, zda je 6osé rameno připojeno.
Dostupná funkce
bool installed();
Parametry
Tato funkce nemá parametry.
Návratová hodnota
Vrací booleovskou hodnotu.
true— 6osé rameno je připojeno.false— 6osé rameno není připojeno.
Zpětná volání#
controlStopped#
controlStopped registruje funkci, která se spustí, když je povoleno zastavení řízení.
Dostupná funkce
void controlStopped(void (* callback)(void));
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Funkce, která se spustí, když je povoleno zastavení řízení. |
Návratová hodnota
Tato funkce nevrací hodnotu.
Příklad
// Called when the 6-Axis Arm is control stopped
void onControlStopped() {
Brain.Screen.print("Arm control stopped");
}
int main() {
Arm.controlStopped(onControlStopped);
}
crashed#
crashed registruje funkci, která se spustí, když 6osé rameno havaruje během pohybu.
Pokud je detekována havárie, 6osé rameno zastaví pohyb motoru a může se zdát, že se zablokovalo. To snižuje namáhání a pomáhá chránit motory před náhodným poškozením.
Dostupná funkce
void crashed(void (* callback)(void));
Parametr |
Typ |
Popis |
|---|---|---|
|
|
Funkce, která se spustí, když se 6osé rameno během pohybu zhroutí. |
Návratová hodnota
Tato funkce nevrací hodnotu.
Příklad
// Called when the 6-Axis Arm crashes while moving
void onArmCrashed() {
Brain.Screen.print("Crash detected");
}
int main() {
Arm.crashed(onArmCrashed);
}