แขน 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);

พารามิเตอร์

พิมพ์

คำอธิบาย

index

int32_t

พอร์ตอัจฉริยะที่เชื่อมต่อกับแขนกล 6 แกน จะเขียนในรูปแบบ PORTxโดยที่ x คือหมายเลขพอร์ต ตัวอย่างเช่น PORT1

ตัวอย่าง

// 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 Holder

  • setControlStop — เปิดใช้งานหรือปิดใช้งานการหยุดควบคุมสำหรับแขน 6 แกน

  • setTimeout — ตั้งค่าการหมดเวลาที่ใช้โดยฟังก์ชันการเคลื่อนไหวของแขน 6 แกน

เมธอด Getter — ส่งคืนสถานะการเคลื่อนไหว ตำแหน่ง การวางแนว และค่าการเชื่อมต่อ

  • isDone — ส่งคืนว่าแขน 6 แกนเคลื่อนที่เสร็จแล้วหรือไม่

  • isCrashed — ส่งคืนว่าแขน 6 แกนชนกันขณะเคลื่อนที่หรือไม่

  • getX — ส่งคืนตำแหน่ง x ปัจจุบันของปลายแขนกล

  • getY — ส่งคืนตำแหน่ง y ปัจจุบันของปลายแขนกล

  • getZ — ส่งคืนตำแหน่ง z ปัจจุบันของปลายแขนกล

  • getYaw — ส่งคืนค่า yaw ปัจจุบันของปลายแขนกล

  • getRoll — ส่งคืนค่าการหมุนปัจจุบันของปลายแขนกล

  • getPitch — ส่งคืนค่า pitch ปัจจุบันของ end effector

  • canArmReachTo — ส่งคืนว่าแขน 6 แกนสามารถเอื้อมถึงตำแหน่งที่กำหนดได้หรือไม่

  • canArmReachInc — ส่งคืนว่าแขน 6 แกนสามารถเคลื่อนที่ได้ตามระยะทางที่กำหนดหรือไม่

  • canEndEffectorReachTo — ส่งคืนว่าปลายแขนกลสามารถเข้าถึงทิศทางที่กำหนดได้หรือไม่

  • canEndEffectorReachInc — ส่งคืนว่าปลายแขนกลสามารถหมุนได้ตามจำนวนที่ระบุหรือไม่

  • isConnected — ส่งคืนว่าแขน 6 แกนเชื่อมต่อกับสมอง V5 หรือไม่

  • timestamp — ส่งคืน timestamp ของแพ็กเก็ตสถานะที่ได้รับล่าสุดจาก 6-Axis Arm

  • installed — ส่งคืนว่าแขน 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

double

พิกัด x ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร

y

double

พิกัด y ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร

z

double

พิกัด z ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร

waitForCompletion

bool

ตัวเลือกเสริม true (ค่าเริ่มต้น) รอจนกว่าการเคลื่อนไหวจะเสร็จสมบูรณ์ก่อนดำเนินการต่อ false เริ่มการเคลื่อนไหวและดำเนินการต่อในบรรทัดโค้ดถัดไปทันที

ค่าที่ส่งคืน

ส่งคืนค่าบูลีน

  • 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

double

ระยะทางที่ต้องเคลื่อนที่ไปตามแกน x ในหน่วยมิลลิเมตร

y

double

ระยะทางที่ต้องเคลื่อนที่ไปตามแกน y ในหน่วยมิลลิเมตร

z

double

ระยะทางในการเคลื่อนที่ตามแกน z ในหน่วยมิลลิเมตร

waitForCompletion

bool

ตัวเลือกเสริม true (ค่าเริ่มต้น) รอจนกว่าการเคลื่อนไหวจะเสร็จสมบูรณ์ก่อนดำเนินการต่อ false เริ่มการเคลื่อนไหวและดำเนินการต่อในบรรทัดโค้ดถัดไปทันที

ค่าที่ส่งคืน

ส่งคืนค่าบูลีน

  • 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
);

พารามิเตอร์

พิมพ์

คำอธิบาย

yaw

double

มุมหันเป้าหมายในหน่วยองศา

roll

double

(ไม่บังคับ) ระบุค่ามุมม้วนเป้าหมายเป็นองศา ค่าเริ่มต้นคือ 0

pitch

double

(ไม่บังคับ) ระบุค่ามุมเอียงเป้าหมายเป็นองศา ค่าเริ่มต้นคือ 0

waitForCompletion

bool

ตัวเลือกเสริม true (ค่าเริ่มต้น) รอจนกว่าการเคลื่อนไหวจะเสร็จสมบูรณ์ก่อนดำเนินการต่อ false เริ่มการเคลื่อนไหวและดำเนินการต่อในบรรทัดโค้ดถัดไปทันที

ค่าที่ส่งคืน

ส่งคืนค่าบูลีน

  • 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

double

การเปลี่ยนแปลงของมุมหันเห (yaw) ในหน่วยองศา

roll

double

ตัวเลือกเสริม การเปลี่ยนแปลงมุมม้วนในหน่วยองศา ค่าเริ่มต้นคือ 0

pitch

double

ตัวเลือกเสริม การเปลี่ยนแปลงระดับเสียง หน่วยเป็นองศา ค่าเริ่มต้นคือ 0

waitForCompletion

bool

ตัวเลือกเสริม true (ค่าเริ่มต้น) รอจนกว่าการเคลื่อนไหวจะเสร็จสมบูรณ์ก่อนดำเนินการต่อ false เริ่มการเคลื่อนไหวและดำเนินการต่อในบรรทัดโค้ดถัดไปทันที

ค่าที่ส่งคืน

ส่งคืนค่าบูลีน

  • 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);

พารามิเตอร์

พิมพ์

คำอธิบาย

speed

uint32_t

ความเร็วที่แขนกล 6 แกนควรเคลื่อนที่ ในหน่วยมิลลิเมตรต่อวินาที

ค่าที่ส่งคืน

ฟังก์ชันนี้ไม่ส่งค่ากลับ

ตัวอย่าง

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

setEndEffectorType#

setEndEffectorType กำหนดประเภทของอุปกรณ์ปลายแขนกลที่ติดอยู่กับแขนกล 6 แกน

เมื่อเปลี่ยนประเภทของหัวจับชิ้นงาน แขนกล 6 แกนจะปรับค่าชดเชยแกน Z โดยอัตโนมัติให้ตรงกับเครื่องมือที่เลือก

ฟังก์ชันที่มีให้ใช้งาน

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

พารามิเตอร์

พิมพ์

คำอธิบาย

type

endEffectorType

เครื่องมือที่ติดอยู่กับแขน 6 แกน: magnet (เครื่องมือหยิบแม่เหล็ก) หรือ pen (เครื่องมือจับปากกา)

waitForCompletion

bool

ตัวเลือกเสริม true (ค่าเริ่มต้น) รอจนกว่าการเปลี่ยนแปลงจะเสร็จสมบูรณ์ก่อนดำเนินการต่อ false เริ่มการเปลี่ยนแปลงและดำเนินการต่อในบรรทัดถัดไปทันที

ค่าที่ส่งคืน

ส่งคืนค่าบูลีน

  • true — ตั้งค่าประเภทที่ร้องขอเรียบร้อยแล้ว

  • false — ประเภทที่ร้องขอไม่ได้ถูกตั้งค่า หรือ waitForCompletion ถูกตั้งค่าเป็น false

ตัวอย่าง

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

setEndEffectorMagnet#

setEndEffectorMagnet เปิดใช้งานหรือปิดใช้งานเครื่องมือหยิบแม่เหล็ก

ฟังก์ชันที่มีให้ใช้งาน

void setEndEffectorMagnet(bool enabled);

พารามิเตอร์

พิมพ์

คำอธิบาย

enabled

bool

true เปิดใช้งานแม่เหล็กเพื่อดูดและยึดวัตถุ false ปิดใช้งานแม่เหล็กและปล่อยวัตถุที่ยึดไว้

ค่าที่ส่งคืน

ฟังก์ชันนี้ไม่ส่งค่ากลับ

ตัวอย่าง

// 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);

พารามิเตอร์

พิมพ์

คำอธิบาย

zOffset

double

ค่าการเบี่ยงเบนของปากกาในหน่วยมิลลิเมตร

ค่าที่ส่งคืน

ฟังก์ชันนี้ไม่ส่งค่ากลับ

ตัวอย่าง

// 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);

พารามิเตอร์

พิมพ์

คำอธิบาย

state

bool

ตัวเลือกเสริม true (ค่าเริ่มต้น) เปิดใช้งานการหยุดควบคุมและป้องกันการเคลื่อนที่เชิงเส้นหรือข้อต่อเพิ่มเติม false ปิดใช้งานการหยุดควบคุม

ค่าที่ส่งคืน

ฟังก์ชันนี้ไม่ส่งค่ากลับ

ตัวอย่าง

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

setTimeout#

setTimeout กำหนดค่าเวลาหมดเวลาที่ใช้เมื่อเคลื่อนย้ายแขนกล 6 แกน

หากการเคลื่อนไหวไม่เสร็จสิ้นก่อนหมดเวลาที่กำหนด โครงการจะดำเนินการต่อในบรรทัดโค้ดถัดไป

ฟังก์ชันที่มีให้ใช้งาน

void setTimeout(
  int32_t   timeout,
  timeUnits units
);

พารามิเตอร์

พิมพ์

คำอธิบาย

timeout

int32_t

ค่าหมดเวลาใหม่

units

timeUnits

หน่วยเวลา: sec วินาที หรือ msec มิลลิวินาที

ค่าที่ส่งคืน

ฟังก์ชันนี้ไม่ส่งค่ากลับ

ตัวอย่าง

// 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

double

พิกัด x ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร

y

double

พิกัด y ของตำแหน่งเป้าหมายในหน่วยมิลลิเมตร

z

double

พิกัด 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

double

ระยะทางที่ต้องเคลื่อนที่ไปตามแกน x ในหน่วยมิลลิเมตร

y

double

ระยะทางที่ต้องเคลื่อนที่ไปตามแกน y ในหน่วยมิลลิเมตร

z

double

ระยะทางในการเคลื่อนที่ตามแกน 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
);

พารามิเตอร์

พิมพ์

คำอธิบาย

yaw

double

มุมหันเป้าหมายในหน่วยองศา

roll

double

(ไม่บังคับ) ระบุค่ามุมม้วนเป้าหมายเป็นองศา ค่าเริ่มต้นคือ 0

pitch

double

(ไม่บังคับ) ระบุค่ามุมเอียงเป้าหมายเป็นองศา ค่าเริ่มต้นคือ 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

double

การเปลี่ยนแปลงของมุมหันเห (yaw) ในหน่วยองศา

roll

double

ตัวเลือกเสริม การเปลี่ยนแปลงมุมม้วนในหน่วยองศา ค่าเริ่มต้นคือ 0

pitch

double

ตัวเลือกเสริม การเปลี่ยนแปลงระดับเสียง หน่วยเป็นองศา ค่าเริ่มต้นคือ 0

ค่าที่ส่งคืน

ส่งคืนค่าบูลีน

  • 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 แกนเชื่อมต่อกับสมอง V5

  • false — แขน 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));

พารามิเตอร์

พิมพ์

คำอธิบาย

callback

void (*)(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));

พารามิเตอร์

พิมพ์

คำอธิบาย

callback

void (*)(void)

ฟังก์ชันที่จะทำงานเมื่อแขนกล 6 แกนเกิดการขัดข้องขณะเคลื่อนที่

ค่าที่ส่งคืน

ฟังก์ชันนี้ไม่ส่งค่ากลับ

ตัวอย่าง

// Called when the 6-Axis Arm crashes while moving
void onArmCrashed() {
  Brain.Screen.print("Crash detected");
}

int main() {
  Arm.crashed(onArmCrashed);
}