แขน CTE#
การแนะนำ#
คลาส arm ให้การควบคุมสำหรับแขนกล 6 แกนที่ใช้ใน CTE Workcell ใน VEX V5 C++ แขนกล 6 แกนสามารถเคลื่อนปลายแขนกลไปยังตำแหน่งต่างๆ ในพื้นที่สามมิติ หมุนปลายแขนกล ตรวจสอบว่าการเคลื่อนไหวเป็นไปได้หรือไม่ และควบคุมเครื่องมือที่ติดอยู่ เช่น เครื่องมือหยิบแม่เหล็กหรือเครื่องมือจับปากกา
แขนกล 6 แกนไม่ได้ถูกกำหนดค่าเป็นอุปกรณ์ใน VEXcode V5 หากต้องการใช้งานในโปรเจ็กต์ VEX V5 C++ ให้สร้างอ็อบเจ็กต์ arm ในโค้ดด้วยตนเอง โดยระบุ Smart Port ที่เชื่อมต่อกับแขนกล 6 แกน
ตัวอย่างในหน้านี้ใช้แขนกล 6 แกนที่สร้างขึ้นด้วยมือ โดยตั้งชื่อว่า Arm
ผู้สร้าง#
arm#
คำสั่ง arm สร้างวัตถุแขนกล 6 แกน
ฟังก์ชันที่มีให้ใช้งาน
arm(int32_t index);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
พอร์ตอัจฉริยะที่เชื่อมต่อกับแขนกล 6 แกน จะเขียนในรูปแบบ |
ตัวอย่าง
// Create a 6-Axis Arm named Arm on Port 1
arm Arm = arm(PORT1);
ตัวทำลาย#
~arm#
~arm ทำลายวัตถุแขน arm และปล่อยทรัพยากรที่เกี่ยวข้อง
ฟังก์ชันที่มีให้ใช้งาน
~arm();
ฟังก์ชันสมาชิก#
คลาส arm ประกอบด้วยฟังก์ชันสมาชิกต่อไปนี้:
การกระทำ — เคลื่อนแขนกล 6 แกนไปยังตำแหน่งหรือทิศทางต่างๆ
moveTo— ย้ายปลายแขนกลไปยังพิกัด x, y และ z ที่ระบุmoveInc— ย้ายปลายแขนกลไปตามระยะทางที่กำหนดจากตำแหน่งปัจจุบันmoveEndEffectorTo— หมุนปลายแขนกลไปยังทิศทาง yaw, roll และ pitch ที่กำหนดmoveEndEffectorInc— หมุนปลายแขนกลด้วยค่า yaw, roll และ pitch ที่ระบุ
ตัวปรับแต่ง — กำหนดค่าการเคลื่อนไหว เครื่องมือ และการตั้งค่าการควบคุม
setSpeed— ตั้งค่าความเร็วในการเคลื่อนที่ที่ใช้โดยแขน 6 แกนsetEndEffectorType— กำหนดประเภทของปลายแขนกลที่ติดอยู่กับแขนกล 6 แกนsetEndEffectorMagnet— เปิดใช้งานหรือปิดใช้งานเครื่องมือหยิบแม่เหล็กsetPenOffset— ตั้งค่าการชดเชยแกน z ที่ใช้กับเครื่องมือ Pen HoldersetControlStop— เปิดใช้งานหรือปิดใช้งานการหยุดควบคุมสำหรับแขน 6 แกนsetTimeout— ตั้งค่าการหมดเวลาที่ใช้โดยฟังก์ชันการเคลื่อนไหวของแขน 6 แกน
เมธอด Getter — ส่งคืนสถานะการเคลื่อนไหว ตำแหน่ง การวางแนว และค่าการเชื่อมต่อ
isDone— ส่งคืนว่าแขน 6 แกนเคลื่อนที่เสร็จแล้วหรือไม่isCrashed— ส่งคืนว่าแขน 6 แกนชนกันขณะเคลื่อนที่หรือไม่getX— ส่งคืนตำแหน่ง x ปัจจุบันของปลายแขนกลgetY— ส่งคืนตำแหน่ง y ปัจจุบันของปลายแขนกลgetZ— ส่งคืนตำแหน่ง z ปัจจุบันของปลายแขนกลgetYaw— ส่งคืนค่า yaw ปัจจุบันของปลายแขนกลgetRoll— ส่งคืนค่าการหมุนปัจจุบันของปลายแขนกลgetPitch— ส่งคืนค่า pitch ปัจจุบันของ end effectorcanArmReachTo— ส่งคืนว่าแขน 6 แกนสามารถเอื้อมถึงตำแหน่งที่กำหนดได้หรือไม่canArmReachInc— ส่งคืนว่าแขน 6 แกนสามารถเคลื่อนที่ได้ตามระยะทางที่กำหนดหรือไม่canEndEffectorReachTo— ส่งคืนว่าปลายแขนกลสามารถเข้าถึงทิศทางที่กำหนดได้หรือไม่canEndEffectorReachInc— ส่งคืนว่าปลายแขนกลสามารถหมุนได้ตามจำนวนที่ระบุหรือไม่isConnected— ส่งคืนว่าแขน 6 แกนเชื่อมต่อกับสมอง V5 หรือไม่timestamp— ส่งคืน timestamp ของแพ็กเก็ตสถานะที่ได้รับล่าสุดจาก 6-Axis Arminstalled— ส่งคืนว่าแขน 6 แกนเชื่อมต่ออยู่หรือไม่
ฟังก์ชันเรียกกลับ — เรียกใช้ฟังก์ชันเมื่อเกิดเหตุการณ์เกี่ยวกับแขนหุ่นยนต์
controlStopped— ลงทะเบียนฟังก์ชันที่จะทำงานเมื่อเปิดใช้งานการหยุดควบคุมcrashed— ลงทะเบียนฟังก์ชันที่จะทำงานเมื่อตรวจพบการขัดข้อง
การกระทำ#
moveTo#
คำสั่ง moveTo จะเคลื่อนแขนกล 6 แกนไปยังพิกัด x, y และ z ที่กำหนด
พิกัด x, y และ z อธิบายตำแหน่งของปลายแขนกลในพื้นที่สามมิติ ใช้ canArmReachTo ก่อนฟังก์ชันนี้หากตำแหน่งเป้าหมายอาจอยู่นอกพื้นที่ทำงานที่แขนกล 6 แกนสามารถเข้าถึงได้
ฟังก์ชันที่มีให้ใช้งาน
bool moveTo(
double x,
double y,
double z,
bool waitForCompletion = true
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
พิกัด x ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร |
|
|
พิกัด y ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร |
|
|
พิกัด z ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร |
|
|
ตัวเลือกเสริม |
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— แขนกล 6 แกนไปถึงตำแหน่งเป้าหมายแล้วfalse— แขนกล 6 แกนไม่ถึงตำแหน่งเป้าหมาย หรือwaitForCompletionถูกตั้งค่าเป็นfalse
ตัวอย่าง
// 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 จะเคลื่อนแขนกล 6 แกนไปตามระยะทางที่กำหนดจากตำแหน่งปัจจุบันตามแนวแกน x, y และ z
ใช้ฟังก์ชันนี้เพื่อเคลื่อนที่สัมพันธ์กับตำแหน่งปัจจุบันของปลายแขนกล ใช้ canArmReachInc ก่อนฟังก์ชันนี้หากการเคลื่อนที่อาจทำให้แขนกล 6 แกนอยู่นอกพื้นที่ทำงานที่เข้าถึงได้
ฟังก์ชันที่มีให้ใช้งาน
bool moveInc(
double x,
double y,
double z,
bool waitForCompletion = true
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ระยะทางที่ต้องเคลื่อนที่ไปตามแกน x ในหน่วยมิลลิเมตร |
|
|
ระยะทางที่ต้องเคลื่อนที่ไปตามแกน y ในหน่วยมิลลิเมตร |
|
|
ระยะทางในการเคลื่อนที่ตามแกน z ในหน่วยมิลลิเมตร |
|
|
ตัวเลือกเสริม |
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— แขนกล 6 แกนเคลื่อนที่ไปถึงตำแหน่งที่ต้องการแล้วfalse— แขนกล 6 แกนไม่ถึงตำแหน่งที่ร้องขอ หรือwaitForCompletionถูกตั้งค่าเป็นfalse
ตัวอย่าง
// Move the 6-Axis Arm 100 millimeters along the y-axis
Arm.moveInc(0, 100, 0);
moveEndEffectorTo#
คำสั่ง moveEndEffectorTo จะหมุนปลายแขนกล 6 แกนไปยังทิศทาง yaw, roll และ pitch ที่กำหนดไว้
การกำหนดทิศทางอธิบายถึงวิธีการหมุนของปลายแขนกล yaw คือการหมุนรอบแกน Z, roll คือการหมุนรอบแกน X และ pitch คือการหมุนรอบแกน Y
ฟังก์ชันที่มีให้ใช้งาน
bool moveEndEffectorTo(
double yaw,
double roll = 0,
double pitch = 0,
bool waitForCompletion = true
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
มุมหันเป้าหมายในหน่วยองศา |
|
|
(ไม่บังคับ) ระบุค่ามุมม้วนเป้าหมายเป็นองศา ค่าเริ่มต้นคือ |
|
|
(ไม่บังคับ) ระบุค่ามุมเอียงเป้าหมายเป็นองศา ค่าเริ่มต้นคือ |
|
|
ตัวเลือกเสริม |
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— ปลายแขนกลไปถึงตำแหน่งเป้าหมายแล้วfalse— ปลายแขนกลไม่ถึงทิศทางเป้าหมาย หรือwaitForCompletionถูกตั้งค่าเป็นfalse
ตัวอย่าง
// Rotate the end effector to 90 degrees of roll
Arm.moveEndEffectorTo(0, 90, 0);
moveEndEffectorInc#
moveEndEffectorInc หมุนปลายแขนกล 6 แกนด้วยค่า yaw, roll และ pitch ที่กำหนดจากตำแหน่งปัจจุบัน
ใช้ฟังก์ชันนี้เพื่อหมุนโดยสัมพันธ์กับมุม yaw, roll หรือ pitch ปัจจุบันของปลายแขนกล
ฟังก์ชันที่มีให้ใช้งาน
bool moveEndEffectorInc(
double yaw,
double roll = 0,
double pitch = 0,
bool waitForCompletion = true
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
การเปลี่ยนแปลงของมุมหันเห (yaw) ในหน่วยองศา |
|
|
ตัวเลือกเสริม การเปลี่ยนแปลงมุมม้วนในหน่วยองศา ค่าเริ่มต้นคือ |
|
|
ตัวเลือกเสริม การเปลี่ยนแปลงระดับเสียง หน่วยเป็นองศา ค่าเริ่มต้นคือ |
|
|
ตัวเลือกเสริม |
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— ปลายแขนกลเคลื่อนที่ไปยังตำแหน่งที่ต้องการแล้วfalse— ปลายแขนกลไม่ถึงตำแหน่งที่ร้องขอ หรือwaitForCompletionถูกตั้งค่าเป็นfalse
ตัวอย่าง
// Rotate the end effector -50 degrees in pitch
Arm.moveEndEffectorInc(0, 0, -50);
ตัวกลายพันธุ์#
setSpeed#
setSpeed ตั้งค่าความเร็วในการเคลื่อนที่ที่ใช้โดยแขนกล 6 แกน
ฟังก์ชันที่มีให้ใช้งาน
void setSpeed(uint32_t speed);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ความเร็วที่แขนกล 6 แกนควรเคลื่อนที่ ในหน่วยมิลลิเมตรต่อวินาที |
ค่าที่ส่งคืน
ฟังก์ชันนี้ไม่ส่งค่ากลับ
ตัวอย่าง
// Set the 6-Axis Arm movement speed
Arm.setSpeed(100);
setEndEffectorType#
setEndEffectorType กำหนดประเภทของอุปกรณ์ปลายแขนกลที่ติดอยู่กับแขนกล 6 แกน
เมื่อเปลี่ยนประเภทของหัวจับชิ้นงาน แขนกล 6 แกนจะปรับค่าชดเชยแกน Z โดยอัตโนมัติให้ตรงกับเครื่องมือที่เลือก
ฟังก์ชันที่มีให้ใช้งาน
bool setEndEffectorType(
endEffectorType type,
bool waitForCompletion = true
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
เครื่องมือที่ติดอยู่กับแขน 6 แกน: |
|
|
ตัวเลือกเสริม |
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— ตั้งค่าประเภทที่ร้องขอเรียบร้อยแล้วfalse— ประเภทที่ร้องขอไม่ได้ถูกตั้งค่า หรือwaitForCompletionถูกตั้งค่าเป็นfalse
ตัวอย่าง
// Set the end effector type to the Magnet Pickup Tool
Arm.setEndEffectorType(magnet);
setEndEffectorMagnet#
setEndEffectorMagnet เปิดใช้งานหรือปิดใช้งานเครื่องมือหยิบแม่เหล็ก
ฟังก์ชันที่มีให้ใช้งาน
void setEndEffectorMagnet(bool enabled);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
|
ค่าที่ส่งคืน
ฟังก์ชันนี้ไม่ส่งค่ากลับ
ตัวอย่าง
// Pick up objects and then drop them
Arm.setEndEffectorType(magnet);
Arm.setEndEffectorMagnet(true);
wait(2, seconds);
Arm.setEndEffectorMagnet(false);
setPenOffset#
setPenOffset กำหนดค่าชดเชยแกน z ที่ใช้เมื่อติดตั้งเครื่องมือจับปากกาเข้ากับแขน 6 แกน
ตั้งค่าประเภทหัวจับปากกาเป็น pen ก่อนใช้งานฟังก์ชันนี้ หากไม่ได้เลือกเครื่องมือจับปากกา ฟังก์ชันนี้จะไม่มีผลใดๆ
ระยะห่างของปากกา คือระยะห่างจากด้านบนของที่จับปากกาถึงปลายปากกาไวท์บอร์ด ค่า z ที่เป็นบวกจะเลื่อนระยะห่างขึ้นจากจุดยึดของที่จับปากกา
ฟังก์ชันที่มีให้ใช้งาน
void setPenOffset(double zOffset);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ค่าการเบี่ยงเบนของปากกาในหน่วยมิลลิเมตร |
ค่าที่ส่งคืน
ฟังก์ชันนี้ไม่ส่งค่ากลับ
ตัวอย่าง
// Set the end effector type to the Pen Holder Tool and set the pen offset
Arm.setEndEffectorType(pen);
Arm.setPenOffset(25);
setControlStop#
setControlStop เปิดใช้งานหรือปิดใช้งานการหยุดควบคุมสำหรับแขนกล 6 แกน
เมื่อเปิดใช้งานการหยุดควบคุม แขนกล 6 แกนจะหยุดการเคลื่อนไหวทันทีและป้องกันการเคลื่อนไหวเชิงเส้นหรือการเคลื่อนไหวข้อต่อเพิ่มเติม
ฟังก์ชันที่มีให้ใช้งาน
void setControlStop(bool state = true);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ตัวเลือกเสริม |
ค่าที่ส่งคืน
ฟังก์ชันนี้ไม่ส่งค่ากลับ
ตัวอย่าง
// Stop the 6-Axis Arm and prevent further movement
Arm.setControlStop();
setTimeout#
setTimeout กำหนดค่าเวลาหมดเวลาที่ใช้เมื่อเคลื่อนย้ายแขนกล 6 แกน
หากการเคลื่อนไหวไม่เสร็จสิ้นก่อนหมดเวลาที่กำหนด โครงการจะดำเนินการต่อในบรรทัดโค้ดถัดไป
ฟังก์ชันที่มีให้ใช้งาน
void setTimeout(
int32_t timeout,
timeUnits units
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ค่าหมดเวลาใหม่ |
|
|
หน่วยเวลา: |
ค่าที่ส่งคืน
ฟังก์ชันนี้ไม่ส่งค่ากลับ
ตัวอย่าง
// Set the 6-Axis Arm timeout to 2 seconds
Arm.setTimeout(2, sec);
ผู้รับ#
isDone#
isDone จะส่งคืนค่าว่าแขนกล 6 แกนเคลื่อนที่เสร็จสิ้นแล้วหรือไม่
This function is useful after a movement function is called with waitForCompletion set to false.
ฟังก์ชันที่มีให้ใช้งาน
bool isDone();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— แขนกล 6 แกนเคลื่อนที่เสร็จสิ้นแล้วfalse— แขนกล 6 แกนยังคงเคลื่อนที่อยู่
ตัวอย่าง
// 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 จะส่งคืนค่าว่าแขนกล 6 แกนเกิดการขัดข้องขณะเคลื่อนที่หรือไม่
เมื่อตรวจพบการชนกัน แขนกล 6 แกนจะหยุดการเคลื่อนไหวของมอเตอร์และอาจดูเหมือนอ่อนแรงลง ซึ่งจะช่วยลดแรงกดและช่วยปกป้องมอเตอร์จากความเสียหายโดยไม่ได้ตั้งใจ
ฟังก์ชันที่มีให้ใช้งาน
bool isCrashed();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— แขนกล 6 แกนเกิดขัดข้องfalse— แขนกล 6 แกนไม่ได้เกิดอุบัติเหตุ
ตัวอย่าง
// 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#
getX ส่งคืนตำแหน่ง x ปัจจุบันของปลายแขนกลในหน่วยมิลลิเมตร
ใช้ฟังก์ชันนี้เพื่ออ่านตำแหน่งปัจจุบันของปลายแขนกลบนแกน x
ฟังก์ชันที่มีให้ใช้งาน
float getX();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่า float float ที่แสดงตำแหน่ง x ของปลายแขนกลในหน่วยมิลลิเมตร
ตัวอย่าง
// Print the current x position of the 6-Axis Arm
Brain.Screen.print(Arm.getX());
getY#
getY ส่งคืนตำแหน่ง y ปัจจุบันของปลายแขนกลในหน่วยมิลลิเมตร
ใช้ฟังก์ชันนี้เพื่ออ่านตำแหน่งปัจจุบันของปลายแขนกลบนแกน y
ฟังก์ชันที่มีให้ใช้งาน
float getY();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่า float float ที่แสดงตำแหน่งแกน y ของปลายแขนกลในหน่วยมิลลิเมตร
ตัวอย่าง
// Print the current y position of the 6-Axis Arm
Brain.Screen.print(Arm.getY());
getZ#
getZ ส่งคืนตำแหน่ง z ปัจจุบันของปลายแขนกลในหน่วยมิลลิเมตร
ใช้ฟังก์ชันนี้เพื่ออ่านตำแหน่งปัจจุบันของปลายแขนกลบนแกน z
ฟังก์ชันที่มีให้ใช้งาน
float getZ();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่า float float ที่แสดงตำแหน่งแกน z ของปลายแขนกลในหน่วยมิลลิเมตร
ตัวอย่าง
// Print the current z position of the 6-Axis Arm
Brain.Screen.print(Arm.getZ());
getYaw#
getYaw ส่งคืนค่า yaw ปัจจุบันของปลายแขนกลในหน่วยองศา
ฟังก์ชันที่มีให้ใช้งาน
float getYaw();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่า float float ซึ่งแสดงถึงค่า yaw ปัจจุบันของปลายแขนกลในหน่วยองศา
ตัวอย่าง
// Print the current yaw of the end effector
Brain.Screen.print(Arm.getYaw());
getRoll#
getRoll ส่งคืนค่าการหมุนปัจจุบันของปลายแขนกลในหน่วยองศา
ฟังก์ชันที่มีให้ใช้งาน
float getRoll();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่า float float ซึ่งแสดงถึงมุมการหมุนปัจจุบันของปลายแขนกลในหน่วยองศา
ตัวอย่าง
// Print the current roll of the end effector
Brain.Screen.print(Arm.getRoll());
getPitch#
getPitch ส่งคืนค่ามุมเอียงปัจจุบันของปลายแขนกลในหน่วยองศา
ฟังก์ชันที่มีให้ใช้งาน
float getPitch();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่า float float ซึ่งแสดงถึงมุมเอียงปัจจุบันของปลายแขนกลในหน่วยองศา
ตัวอย่าง
// Print the current pitch of the end effector
Brain.Screen.print(Arm.getPitch());
canArmReachTo#
canArmReachTo ส่งคืนค่าว่าแขนกล 6 แกนสามารถเคลื่อนปลายแขนไปยังพิกัด x, y และ z ที่ระบุได้หรือไม่
ใช้ฟังก์ชันนี้เพื่อตรวจสอบตำแหน่งเป้าหมายก่อนใช้ moveTo
ฟังก์ชันที่มีให้ใช้งาน
bool canArmReachTo(
double x,
double y,
double z
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
พิกัด x ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร |
|
|
พิกัด y ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร |
|
|
พิกัด z ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร |
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— แขนกล 6 แกนสามารถเคลื่อนไปยังตำแหน่งที่ต้องการได้false— แขนกล 6 แกนไม่สามารถไปถึงตำแหน่งที่ต้องการได้
ตัวอย่าง
// 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 ส่งคืนค่าว่าแขนกล 6 แกนสามารถเคลื่อนปลายแขนกลไปตามระยะทาง x, y และ z ที่กำหนดจากตำแหน่งปัจจุบันได้หรือไม่
ใช้ฟังก์ชันนี้เพื่อตรวจสอบการเคลื่อนที่สัมพัทธ์ก่อนใช้ moveInc
ฟังก์ชันที่มีให้ใช้งาน
bool canArmReachInc(
double x,
double y,
double z
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ระยะทางที่ต้องเคลื่อนที่ไปตามแกน x ในหน่วยมิลลิเมตร |
|
|
ระยะทางที่ต้องเคลื่อนที่ไปตามแกน y ในหน่วยมิลลิเมตร |
|
|
ระยะทางในการเคลื่อนที่ตามแกน z ในหน่วยมิลลิเมตร |
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— แขนกล 6 แกนสามารถเคลื่อนไหวตามที่ต้องการได้false— แขนกล 6 แกนไม่สามารถเคลื่อนไหวตามที่ร้องขอได้
ตัวอย่าง
// 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 จะส่งคืนค่าว่าปลายแขนกลสามารถหมุนไปยังทิศทาง yaw, roll และ pitch ที่ระบุได้หรือไม่
ใช้ฟังก์ชันนี้เพื่อตรวจสอบการวางแนวเป้าหมายก่อนใช้ moveEndEffectorTo
ฟังก์ชันที่มีให้ใช้งาน
bool canEndEffectorReachTo(
double yaw,
double roll = 0,
double pitch = 0
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
มุมหันเป้าหมายในหน่วยองศา |
|
|
(ไม่บังคับ) ระบุค่ามุมม้วนเป้าหมายเป็นองศา ค่าเริ่มต้นคือ |
|
|
(ไม่บังคับ) ระบุค่ามุมเอียงเป้าหมายเป็นองศา ค่าเริ่มต้นคือ |
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— ปลายแขนกลสามารถเข้าถึงทิศทางที่ต้องการได้false— ปลายแขนกลไม่สามารถไปถึงทิศทางที่ต้องการได้
ตัวอย่าง
// Rotate the end effector to 90 degrees of roll if possible
if (Arm.canEndEffectorReachTo(0, 90, 0)) {
Arm.moveEndEffectorTo(0, 90, 0);
}
canEndEffectorReachInc#
canEndEffectorReachInc ส่งคืนค่าว่าปลายแขนกลสามารถหมุนได้ตามค่า yaw, roll และ pitch ที่ระบุจากทิศทางปัจจุบันหรือไม่
ใช้ฟังก์ชันนี้เพื่อตรวจสอบการเคลื่อนที่ของการวางแนวสัมพัทธ์ก่อนใช้ moveEndEffectorInc
ฟังก์ชันที่มีให้ใช้งาน
bool canEndEffectorReachInc(
double yaw,
double roll = 0,
double pitch = 0
);
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
การเปลี่ยนแปลงของมุมหันเห (yaw) ในหน่วยองศา |
|
|
ตัวเลือกเสริม การเปลี่ยนแปลงมุมม้วนในหน่วยองศา ค่าเริ่มต้นคือ |
|
|
ตัวเลือกเสริม การเปลี่ยนแปลงระดับเสียง หน่วยเป็นองศา ค่าเริ่มต้นคือ |
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— ปลายแขนกลสามารถหมุนได้ตามที่ร้องขอfalse— ปลายแขนกลไม่สามารถหมุนตามที่ร้องขอได้
ตัวอย่าง
// Increment the end effector by 10 degrees of pitch if possible
if (Arm.canEndEffectorReachInc(0, 0, 10)) {
Arm.moveEndEffectorInc(0, 0, 10);
}
isConnected#
isConnected จะส่งคืนค่าว่าแขน 6 แกนเชื่อมต่อกับสมอง V5 แล้วหรือไม่
นี่คือฟังก์ชันความเข้ากันได้ที่ส่งคืนค่าเดียวกันกับ installed
ฟังก์ชันที่มีให้ใช้งาน
bool isConnected();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— แขน 6 แกนเชื่อมต่อกับสมอง V5false— แขน 6 แกนไม่ได้เชื่อมต่อกับสมอง V5
ตัวอย่าง
// Print whether the 6-Axis Arm is connected
Brain.Screen.print(Arm.isConnected());
timestamp#
timestamp จะส่งคืนค่า timestamp ของแพ็กเก็ตสถานะที่ได้รับล่าสุดจากแขนกล 6 แกน
ฟังก์ชันที่มีให้ใช้งาน
uint32_t timestamp();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่า timestamp ของแพ็กเก็ตสถานะล่าสุดในรูปแบบ uint32_t ในหน่วยมิลลิวินาที
installed#
installed ส่งคืนสถานะว่าแขน 6 แกนเชื่อมต่ออยู่หรือไม่
ฟังก์ชันที่มีให้ใช้งาน
bool installed();
พารามิเตอร์
ฟังก์ชันนี้ไม่มีพารามิเตอร์
ค่าที่ส่งคืน
ส่งคืนค่าบูลีน
true— แขนกล 6 แกนเชื่อมต่อแล้วfalse— แขนกล 6 แกนไม่ได้เชื่อมต่อ
การเรียกกลับ#
controlStopped#
controlStopped ลงทะเบียนฟังก์ชันที่จะทำงานเมื่อเปิดใช้งานการหยุดควบคุม
ฟังก์ชันที่มีให้ใช้งาน
void controlStopped(void (* callback)(void));
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ฟังก์ชันที่จะทำงานเมื่อเปิดใช้งานการหยุดควบคุม |
ค่าที่ส่งคืน
ฟังก์ชันนี้ไม่ส่งค่ากลับ
ตัวอย่าง
// Called when the 6-Axis Arm is control stopped
void onControlStopped() {
Brain.Screen.print("Arm control stopped");
}
int main() {
Arm.controlStopped(onControlStopped);
}
crashed#
crashed registers a function that runs when the 6-Axis Arm had crashed while moving.
เมื่อตรวจพบการชนกัน แขนกล 6 แกนจะหยุดการเคลื่อนไหวของมอเตอร์และอาจดูเหมือนอ่อนแรงลง ซึ่งจะช่วยลดแรงกดและช่วยปกป้องมอเตอร์จากความเสียหายโดยไม่ได้ตั้งใจ
ฟังก์ชันที่มีให้ใช้งาน
void crashed(void (* callback)(void));
พารามิเตอร์ |
พิมพ์ |
คำอธิบาย |
|---|---|---|
|
|
ฟังก์ชันที่จะทำงานเมื่อแขนกล 6 แกนเกิดการขัดข้องขณะเคลื่อนที่ |
ค่าที่ส่งคืน
ฟังก์ชันนี้ไม่ส่งค่ากลับ
ตัวอย่าง
// Called when the 6-Axis Arm crashes while moving
void onArmCrashed() {
Brain.Screen.print("Crash detected");
}
int main() {
Arm.crashed(onArmCrashed);
}