CTE kar#
Bevezetés#
A arm osztály vezérlést biztosít a CTE Workcellben használt 6 tengelyes karhoz. A VEX EXP C+±ban a 6 tengelyes kar képes egy effektort háromdimenziós térben pozíciókba mozgatni, forgatni az effektort, ellenőrizni, hogy lehetséges-e a mozgás, és vezérelni a csatlakoztatott eszközöket, például a Magnet Pickup Toolt vagy a Pen Holder Toolt.
Az ezen az oldalon található példák egy Arm nevű, konfigurált 6 tengelyes kart használnak.
Konstruktorok#
arm#
arm parancs egy 6 tengelyes kar objektumot hoz létre.
Elérhető funkció
arm(int32_t index);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az az intelligens port, amelyhez a 6 tengelyes kar csatlakozik, |
Példa
// Create a 6-Axis Arm named Arm on Port 1
arm Arm = arm(PORT1);
Destruktor#
~arm#
~arm parancs megsemmisíti a arm objektumot, és felszabadítja a hozzá tartozó erőforrásokat.
Elérhető funkció
~arm();
Tagfüggvények#
A arm osztály a következő tagfüggvényeket tartalmazza:
Műveletek — Mozgassa a 6 tengelyes kart a kívánt pozíciókba vagy irányokba.
moveTo— A végrehajtó egységet a megadott x, y és z koordinátára mozgatja.moveInc— A megadott távolsággal elmozdítja az effektort az aktuális pozíciójától.moveEndEffectorTo— Elforgatja az effektort egy megadott elfordulási, hengerlési és bólintási irányba.moveEndEffectorInc— Elforgatja az effektort a megadott elfordulás, hengerlés és dőlésszög értékkel.
Mutátorok – Mozgás, eszközök és vezérlési beállítások konfigurálása.
setSpeed— Beállítja a 6 tengelyes kar által használt mozgási sebességet.setEndEffectorType— Beállítja a 6 tengelyes karhoz csatlakoztatott effektor típusát.setEndEffectorMagnet— Engedélyezi vagy letiltja a Mágnesfelszedő eszközt.setPenOffset— Beállítja a Tolltartó eszközzel használt z-tengely eltolását.setControlStop— Engedélyezi vagy letiltja a 6 tengelyes kar vezérlésének leállítását.setTimeout— Beállítja a 6 tengelyes kar mozgásfunkciói által használt időtúllépést.
Getterek – Mozgási állapotot, pozíciót, orientációt és csatlakozási értékeket adnak vissza.
isDone— Visszaadja, hogy a 6 tengelyes kar mozgása befejeződött-e.isCrashed— Visszaadja, hogy a 6 tengelyes kar mozgás közben összeomlott-e.getX— Visszaadja az effektor végpontjának aktuális x pozícióját.getY— Visszaadja az effektor végpontjának aktuális y pozícióját.getZ— Visszaadja az effektor végpontjának aktuális z pozícióját.getYaw— Visszaadja az effektor aktuális elfordulását.getRoll— Visszaadja az effektor aktuális tekercsét.getPitch— Visszaadja az effektor végpontjának aktuális hangmagasságát.canArmReachTo— Visszaadja, hogy a 6 tengelyes kar eléri-e a megadott pozíciót.canArmReachInc— Visszaadja, hogy a 6 tengelyes kar elmozdulhat-e egy megadott távolságot.canEndEffectorReachTo— Visszaadja, hogy a végrehajtó egység el tud-e érni egy megadott orientációt.canEndEffectorReachInc— Visszaadja, hogy az effektor elforgatható-e egy megadott mértékben.isConnected— Visszaadja, hogy a 6 tengelyes kar csatlakoztatva van-e az EXP Brainhez.timestamp— Visszaadja a 6 tengelyes kartól utoljára fogadott állapotcsomag időbélyegét.installed— Visszaadja, hogy a 6 tengelyes kar csatlakoztatva van-e.
Visszahívások — Függvények futtatása élesítési események bekövetkeztekor.
controlStopped— Regisztrál egy függvényt, amely akkor fut, amikor a vezérlés leállítása engedélyezve van.crashed— Regisztrál egy függvényt, amely összeomlás észlelésekor fut.
Műveletek#
moveTo#
moveTo A 6 tengelyes kart a megadott x, y és z koordinátára mozgatja.
Az x, y és z koordináták a végrehajtó egység pozícióját írják le a háromdimenziós térben. Használja a canArmReachTo függvényt a függvény előtt, ha a célpozíció a 6 tengelyes kar elérhető munkaterületén kívül eshet.
Elérhető funkció
bool moveTo(
double x,
double y,
double z,
bool waitForCompletion = true
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A célpozíció x koordinátája milliméterben. |
|
|
A célpozíció y koordinátája milliméterben. |
|
|
A célpozíció z-koordinátája milliméterben. |
|
|
Opcionális. |
Visszatérési érték
Logikai értéket ad vissza.
true— A 6 tengelyes kar elérte a célpozíciót.false— A 6 tengelyes kar nem érte el a célpozíciót, vagywaitForCompletionértékefalsevolt.
Példák
// 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 A 6 tengelyes kart a jelenlegi pozíciójából a megadott távolsággal elmozdítja az x, y és z tengelyek mentén.
Ezzel a függvénnyel mozgathatod a végrehajtó végpontját ahhoz képest, ahol most éppen van. Használd a canArmReachInc függvényt a függvény előtt, ha a mozgás a 6 tengelyes kart a rendelkezésre álló munkaterületen kívülre helyezheti.
Elérhető funkció
bool moveInc(
double x,
double y,
double z,
bool waitForCompletion = true
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az x tengely mentén elmozdítandó távolság milliméterben. |
|
|
Az y tengely mentén elmozdítandó távolság milliméterben. |
|
|
A z tengely mentén elmozdítandó távolság milliméterben. |
|
|
Opcionális. |
Visszatérési érték
Logikai értéket ad vissza.
true— A 6 tengelyes kar elérte a kért pozíciót.false— A 6 tengelyes kar nem érte el a kért pozíciót, vagywaitForCompletionértékefalsevolt.
Példa
// Move the 6-Axis Arm 100 millimeters along the y-axis
Arm.moveInc(0, 100, 0);
moveEndEffectorTo#
moveEndEffectorTo hatására a 6 tengelyes kar effektora a megadott elfordulási, gördülési és bólintási irányba forgatható.
Az orientáció leírja, hogyan forog az effektor. yaw a z tengely körül forog, roll az x tengely körül forog, és pitch az y tengely körül forog.
Elérhető funkció
bool moveEndEffectorTo(
double yaw,
double roll = 0,
double pitch = 0,
bool waitForCompletion = true
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A célzott elfordulási szög fokban. |
|
|
Opcionális. A célzott dőlésszög fokban. Az alapértelmezett érték |
|
|
Opcionális. A cél dőlésszög fokban. Az alapértelmezett érték |
|
|
Opcionális. |
Visszatérési érték
Logikai értéket ad vissza.
true— A végrehajtó egység elérte a céltájolást.false— A végrehajtó egység nem érte el a céltájolást, vagywaitForCompletionértékefalsevolt.
Példa
// Rotate the end effector to 90 degrees of roll
Arm.moveEndEffectorTo(0, 90, 0);
moveEndEffectorInc#
moveEndEffectorInc A 6 tengelyes kar effektorát a jelenlegi irányából a megadott elfordulás, hengerlés és dőlésszög értékkel forgatja el.
Ezzel a függvényel a végrehajtó eszköz aktuális elfordulásához, hengerléséhez vagy dőléséhez képest forgatható el.
Elérhető funkció
bool moveEndEffectorInc(
double yaw,
double roll = 0,
double pitch = 0,
bool waitForCompletion = true
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az elfordulás változása fokban. |
|
|
Opcionális. A dőlés változása fokban. Az alapértelmezett érték |
|
|
Opcionális. A hangmagasság változása fokban. Az alapértelmezett érték |
|
|
Opcionális. |
Visszatérési érték
Logikai értéket ad vissza.
true— A végrehajtó egység elérte a kért tájolást.false— A végrehajtó egység nem érte el a kért orientációt, vagywaitForCompletionértékefalsevolt.
Példa
// Rotate the end effector -50 degrees in pitch
Arm.moveEndEffectorInc(0, 0, -50);
Mutátorok#
setSpeed#
setSpeed beállítja a 6 tengelyes kar által használt mozgási sebességet.
Elérhető funkció
void setSpeed(uint32_t speed);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A 6 tengelyes kar mozgási sebessége milliméter/másodpercben. |
Visszatérési érték
Ez a függvény nem ad vissza értéket.
Példa
// Set the 6-Axis Arm movement speed
Arm.setSpeed(100);
setEndEffectorType#
setEndEffectorType beállítja a 6 tengelyes karhoz csatlakoztatott effektor típusát.
Amikor a végeffektor típusa megváltozik, a 6 tengelyes kar automatikusan beállítja a z-eltolását, hogy az illeszkedjen a kiválasztott szerszámhoz.
Elérhető funkció
bool setEndEffectorType(
endEffectorType type,
bool waitForCompletion = true
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A 6 tengelyes karhoz rögzített eszköz: |
|
|
Opcionális. |
Visszatérési érték
Logikai értéket ad vissza.
true— A kért típus beállítva.false— A kért típus nincs beállítva, vagywaitForCompletionértékefalse.
Példa
// Set the end effector type to the Magnet Pickup Tool
Arm.setEndEffectorType(magnet);
setEndEffectorMagnet#
setEndEffectorMagnet engedélyezi vagy letiltja a Mágnesfelszedő eszközt.
Elérhető funkció
void setEndEffectorMagnet(bool enabled);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
|
Visszatérési érték
Ez a függvény nem ad vissza értéket.
Példa
// Pick up objects and then drop them
Arm.setEndEffectorType(magnet);
Arm.setEndEffectorMagnet(true);
wait(2, seconds);
Arm.setEndEffectorMagnet(false);
setPenOffset#
setPenOffset Beállítja a z-tengely eltolását, amelyet akkor használunk, amikor a tolltartó eszköz a 6 tengelyes karhoz van rögzítve.
A funkció használata előtt állítsa az effektor típusát pen -re. Ha a Tolltartó eszköz nincs kiválasztva, a funkciónak nincs hatása.
A toll eltolás a tolltartó eszköz tetejétől a szárazon törölhető jelölő hegyéig mért távolság. A pozitív z érték felfelé tolja az eltolást az eszköz felfogatási pontjától.
Elérhető funkció
void setPenOffset(double zOffset);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A toll eltolás értéke milliméterben. |
Visszatérési érték
Ez a függvény nem ad vissza értéket.
Példa
// Set the end effector type to the Pen Holder Tool and set the pen offset
Arm.setEndEffectorType(pen);
Arm.setPenOffset(25);
setControlStop#
setControlStop engedélyezi vagy letiltja a 6 tengelyes kar vezérlésének leállítását.
Amikor a vezérlés leállítása engedélyezve van, a 6 tengelyes kar azonnal leállítja a mozgást, és megakadályozza a további lineáris vagy ízületi mozgásokat.
Elérhető funkció
void setControlStop(bool state = true);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Opcionális. |
Visszatérési érték
Ez a függvény nem ad vissza értéket.
Példa
// Stop the 6-Axis Arm and prevent further movement
Arm.setControlStop();
setTimeout#
setTimeout beállítja az időtúllépési értéket, amely a 6 tengelyes kar mozgatásakor használatos.
Ha egy mozgás nem fejeződik be az időkorlát elérése előtt, a projekt a kód következő sorával folytatódik.
Elérhető funkció
void setTimeout(
int32_t timeout,
timeUnits units
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az új időtúllépési érték. |
|
|
Az időegység: |
Visszatérési érték
Ez a függvény nem ad vissza értéket.
Példa
// Set the 6-Axis Arm timeout to 2 seconds
Arm.setTimeout(2, sec);
Getterek#
isDone#
isDone Visszaadja, hogy a 6 tengelyes kar mozgása befejeződött-e.
Ez a függvény egy mozgásfüggvény meghívása után hasznos, ha a waitForCompletion értéke false.
Elérhető funkció
bool isDone();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
Logikai értéket ad vissza.
true— A 6 tengelyes kar mozgása befejeződött.false— A 6 tengelyes kar még mindig mozog.
Példa
// 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 Visszaadja, hogy a 6 tengelyes kar mozgás közben összeomlott-e.
Ütközés észlelésekor a 6 tengelyes kar leállítja a motor mozgását, és úgy tűnhet, mintha ernyedni kezdene. Ez csökkenti a terhelést és segít megvédeni a motorokat a véletlen sérülésektől.
Elérhető funkció
bool isCrashed();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
Logikai értéket ad vissza.
true— A 6 tengelyes kar összeomlott.false— A 6 tengelyes kar nem omlott össze.
Példa
// 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 visszaadja az effektor aktuális x pozícióját milliméterben.
Ezzel a függvénnyel leolvashatja, hogy az effektor jelenleg hol helyezkedik el az x tengely mentén.
Elérhető funkció
float getX();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
Visszaad egy float amely az effektor x pozícióját jelöli milliméterben.
Példa
// Print the current x position of the 6-Axis Arm
Brain.Screen.print(Arm.getX());
getY#
getY függvény visszaadja az effektor aktuális y pozícióját milliméterben.
Ezzel a függvénnyel leolvashatja, hogy az effektor jelenleg hol helyezkedik el az y tengely mentén.
Elérhető funkció
float getY();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
Visszaad egy float amely a vég effektor y pozícióját jelöli milliméterben.
Példa
// Print the current y position of the 6-Axis Arm
Brain.Screen.print(Arm.getY());
getZ#
getZ függvény visszaadja az effektor aktuális z pozícióját milliméterben.
Ezzel a függvénnyel leolvashatja, hogy hol helyezkedik el jelenleg az effektor a z tengely mentén.
Elérhető funkció
float getZ();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
Visszaad egy float amely az effektor z pozícióját jelöli milliméterben.
Példa
// Print the current z position of the 6-Axis Arm
Brain.Screen.print(Arm.getZ());
getYaw#
getYaw visszaadja az effektor aktuális elfordulását fokban.
Elérhető funkció
float getYaw();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
float et ad vissza, amely a vég effektor aktuális elfordulását jelenti fokban.
Példa
// Print the current yaw of the end effector
Brain.Screen.print(Arm.getYaw());
getRoll#
getRoll visszaadja az effektor aktuális elfordulását fokban.
Elérhető funkció
float getRoll();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
float et ad vissza, amely az effektor aktuális elfordulását jelenti fokban.
Példa
// Print the current roll of the end effector
Brain.Screen.print(Arm.getRoll());
getPitch#
getPitch visszaadja az effektor aktuális hangmagasságát fokban.
Elérhető funkció
float getPitch();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
float et ad vissza, amely a vég effektor aktuális hangmagasságát jelöli fokban.
Példa
// Print the current pitch of the end effector
Brain.Screen.print(Arm.getPitch());
canArmReachTo#
canArmReachTo Visszaadja, hogy a 6 tengelyes kar képes-e a megadott x, y és z koordinátára mozgatni a végrehajtó egységet.
Ezzel a függvénnyel ellenőrizheti a célpozíciót a moveTo használata előtt.
Elérhető funkció
bool canArmReachTo(
double x,
double y,
double z
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A célpozíció x koordinátája milliméterben. |
|
|
A célpozíció y koordinátája milliméterben. |
|
|
A célpozíció z-koordinátája milliméterben. |
Visszatérési érték
Logikai értéket ad vissza.
true— A 6 tengelyes kar eléri a kért pozíciót.false— A 6 tengelyes kar nem éri el a kért pozíciót.
Példa
// 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 Visszaadja, hogy a 6 tengelyes kar el tudja-e mozgatni az effektort a megadott x, y és z távolsággal az aktuális pozíciójától.
Ezzel a függvénnyel ellenőrizheti a relatív mozgást a moveInc használata előtt.
Elérhető funkció
bool canArmReachInc(
double x,
double y,
double z
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az x tengely mentén elmozdítandó távolság milliméterben. |
|
|
Az y tengely mentén elmozdítandó távolság milliméterben. |
|
|
A z tengely mentén elmozdítandó távolság milliméterben. |
Visszatérési érték
Logikai értéket ad vissza.
true— A 6 tengelyes kar képes elvégezni a kért mozgást.false— A 6 tengelyes kar nem tudja végrehajtani a kért mozgást.
Példa
// 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 Visszaadja, hogy az effektor el tud-e forgatni egy megadott elfordulási, gördülési és bólintási irányba.
Ezzel a függvénnyel ellenőrizheti a célpont tájolását a moveEndEffectorTo használata előtt.
Elérhető funkció
bool canEndEffectorReachTo(
double yaw,
double roll = 0,
double pitch = 0
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
A célzott elfordulási szög fokban. |
|
|
Opcionális. A célzott dőlésszög fokban. Az alapértelmezett érték |
|
|
Opcionális. A cél dőlésszög fokban. Az alapértelmezett érték |
Visszatérési érték
Logikai értéket ad vissza.
true— A végrehajtó egység elérheti a kért orientációt.false— A végrehajtó egység nem tudja elérni a kért orientációt.
Példa
// Rotate the end effector to 90 degrees of roll if possible
if (Arm.canEndEffectorReachTo(0, 90, 0)) {
Arm.moveEndEffectorTo(0, 90, 0);
}
canEndEffectorReachInc#
canEndEffectorReachInc visszaadja, hogy az effektor el tud-e forgatni egy megadott elfordulási, hengerlési és dőlésszög-értékkel az aktuális irányából.
Ezzel a függvénnyel ellenőrizheti a relatív orientációs mozgást a moveEndEffectorInc használata előtt.
Elérhető funkció
bool canEndEffectorReachInc(
double yaw,
double roll = 0,
double pitch = 0
);
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Az elfordulás változása fokban. |
|
|
Opcionális. A dőlés változása fokban. Az alapértelmezett érték |
|
|
Opcionális. A hangmagasság változása fokban. Az alapértelmezett érték |
Visszatérési érték
Logikai értéket ad vissza.
true— A végrehajtó egység elvégezheti a kért forgatást.false— A végrehajtó egység nem tudja végrehajtani a kért forgatást.
Példa
// Increment the end effector by 10 degrees of pitch if possible
if (Arm.canEndEffectorReachInc(0, 0, 10)) {
Arm.moveEndEffectorInc(0, 0, 10);
}
isConnected#
isConnected azt adja vissza, hogy a 6 tengelyes kar csatlakoztatva van-e az EXP Brain-hez.
Ez egy kompatibilitási függvény, amely ugyanazt az értéket adja vissza, mint a installed.
Elérhető funkció
bool isConnected();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
Logikai értéket ad vissza.
true— A 6 tengelyes kar az EXP agyhoz van csatlakoztatva.false— A 6 tengelyes kar nincs csatlakoztatva az EXP agyhoz.
Példa
// Print whether the 6-Axis Arm is connected
Brain.Screen.print(Arm.isConnected());
timestamp#
timestamp Az 1-es érték a 6 tengelyes kartól utoljára fogadott állapotcsomag időbélyegét adja vissza.
Elérhető funkció
uint32_t timestamp();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
Visszaadja az utolsó állapotcsomag időbélyegét uint32_t értékként milliszekundumban.
installed#
installed visszaadja, hogy a 6 tengelyes kar csatlakoztatva van-e.
Elérhető funkció
bool installed();
Paraméterek
Ennek a függvénynek nincsenek paraméterei.
Visszatérési érték
Logikai értéket ad vissza.
true— A 6 tengelyes kar csatlakoztatva van.false— A 6 tengelyes kar nincs csatlakoztatva.
Visszahívások#
controlStopped#
controlStopped Egy olyan függvényt regisztrál, amely akkor fut, amikor a vezérlés leállítása engedélyezve van.
Elérhető funkció
void controlStopped(void (* callback)(void));
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Egy függvény, amely akkor fut, amikor a vezérlés leállítása engedélyezett. |
Visszatérési érték
Ez a függvény nem ad vissza értéket.
Példa
// 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 Egy olyan függvényt regisztrál, amely akkor fut le, amikor a 6 tengelyes kar mozgás közben összeomlik.
Ütközés észlelésekor a 6 tengelyes kar leállítja a motor mozgását, és úgy tűnhet, mintha ernyedni kezdene. Ez csökkenti a terhelést és segít megvédeni a motorokat a véletlen sérülésektől.
Elérhető funkció
void crashed(void (* callback)(void));
Paraméter |
Típus |
Leírás |
|---|---|---|
|
|
Egy függvény, amely akkor fut le, amikor a 6 tengelyes kar mozgás közben összeomlik. |
Visszatérési érték
Ez a függvény nem ad vissza értéket.
Példa
// 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);
}