การเข้ารหัสหุ่นยนต์ VEX AI

บทความนี้จะครอบคลุมถึงโครงการตัวอย่างที่แสดงแดชบอร์ดที่รายงานสถานะสำหรับการสื่อสารระหว่างหุ่นยนต์กับหุ่นยนต์โดยใช้ VEXlink และสถานะไปยัง Jetson ด้วย โครงการ ai_demo ถูกโฮสต์อยู่บนเรา โครงการสาธิตนี้รวบรวมข้อมูลจากโปรเซสเซอร์ Jetson ผ่านการเชื่อมต่อแบบอนุกรม USB เมื่อได้รับข้อมูลแล้ว ข้อมูลดังกล่าวจะแสดงบนหน้าจอของ V5 Brain และยังส่งข้อมูลไปยังหุ่นยนต์ V5 คู่หูที่เชื่อมต่อผ่าน VEXlink

หมายเหตุ: โปรเจ็กต์นี้ต้องการ VS Code Extension เวอร์ชันล่าสุดสำหรับ V5 ดาวน์โหลดส่วนขยาย VS Code สำหรับ V5
ที่นี่


NVIDIA Jetson Nano ถึง VEX V5 การสื่อสารทางสมอง

โปรเซสเซอร์ Jetson มีแอปพลิเคชันที่รวบรวมข้อมูลต่อไปนี้จากซอฟต์แวร์ VEX AI:

แผนภาพแสดงขั้นตอนการใช้ VEX AI โดยแสดงส่วนประกอบสำคัญและเวิร์กโฟลว์สำหรับการนำไปใช้อย่างมีประสิทธิผลในระบบหุ่นยนต์ V5

ข้อมูลตำแหน่งของหุ่นยนต์:

  • ตำแหน่ง X,Y ของหุ่นยนต์เป็นเมตรจากศูนย์กลางสนาม
  • ราบของหุ่นยนต์ (มุ่งหน้า) ยกระดับ (ขว้าง) หมุน (ม้วน) ทั้งหมดในเรเดียน

ข้อมูลการตรวจจับวัตถุ (สามประเภท):

แผนภาพแสดงส่วนประกอบของระบบ VEX AI และการโต้ตอบของส่วนประกอบเหล่านั้น เพื่อแสดงให้เห็นว่า VEX AI ช่วยเพิ่มประสิทธิภาพการทำงานของหุ่นยนต์ในประเภท V5 ได้อย่างไร

การตรวจจับภาพ (ประเภทที่หนึ่ง):
  • ข้อมูลนี้แสดงถึงวัตถุที่ตรวจพบโดยกล้อง VEX AI Intel
  • ข้อมูลนี้อธิบายวัตถุโดยอ้างอิงกับภาพของกล้อง
  • ค่าสำหรับ X, Y, ความกว้าง และความสูงอยู่ในหน่วยพิกเซล ค่าพิกเซลอ้างอิงถึงมุมซ้ายบนของกล่องการตรวจจับรูปภาพและวัตถุ ความละเอียดของภาพคือ 640x480

 

แผนภาพแสดงคุณลักษณะและส่วนประกอบของ VEX AI พร้อมเน้นถึงการใช้งานและประโยชน์ในด้านหุ่นยนต์ เป็นส่วนหนึ่งของคำอธิบายหมวดหมู่ V5

การตรวจจับแผนที่ (ประเภทที่สอง):

  • ข้อมูลนี้แสดงถึงตำแหน่งของวัตถุบนสนามในระบบพิกัดเดียวกันกับเซ็นเซอร์ GPS ซึ่งรายงานเป็นหน่วยเมตร
  • แต่ละออบเจ็กต์ยังมีตำแหน่งของออบเจ็กต์ที่สัมพันธ์กับศูนย์กลางของฟิลด์ด้วย ค่าของ X และ Y อยู่ในหน่วยเมตรจากศูนย์กลางของสนามในแกนที่เกี่ยวข้อง ค่าของ Z คือเมตรจากไทล์สนาม (ความสูง)

วัตถุตรวจจับ (ประเภทที่สาม):

ไดอะแกรมแสดงส่วนประกอบของระบบ VEX AI และการโต้ตอบของส่วนประกอบเหล่านั้น พร้อมทั้งเน้นคุณลักษณะและฟังก์ชันหลักภายในแพลตฟอร์มหุ่นยนต์ V5

  • ซึ่งจะสรุปข้อมูลทั้งหมดเกี่ยวกับวัตถุที่ตรวจพบ
  • แต่ละวัตถุมีค่าที่แสดงถึงการจัดประเภทของวัตถุที่ตรวจพบ (รหัสคลาส: 0 = กรีนไทรบอล, 1 = เรดไทรบอล, 2 = บลูไทรบอล)
  • แต่ละวัตถุยังมีความน่าจะเป็นที่แสดงถึงความมั่นใจของ VEX AI ในการตรวจจับ นี่คือหลังจากตัวกรองใน model.py ที่ลบการตรวจจับความน่าจะเป็นต่ำ
  • นอกจากนี้ ความลึกของวัตถุยังรายงานเป็นเมตรจากกล้อง VEX AI Intel
  • การตรวจจับภาพและการตรวจจับแผนที่จะแนบไปกับแต่ละวัตถุเพื่อแสดงพิกัดของวัตถุบนภาพและในโลกแห่งความเป็นจริง

รายละเอียดของโปรแกรม ai_demo:

Main.cpp

แผนภาพแสดงคุณลักษณะและฟังก์ชันการทำงานของ VEX AI ในประเภท V5 แสดงให้เห็นถึงวิธีการใช้เทคโนโลยีอย่างมีประสิทธิภาพสำหรับการใช้งานหุ่นยนต์

มาตรฐานรวมถึงสำหรับโครงการ VEX:

ไดอะแกรมแสดงส่วนประกอบของระบบ VEX AI และการโต้ตอบของส่วนประกอบเหล่านั้น ซึ่งเป็นส่วนหนึ่งของคำอธิบายหมวดหมู่ V5 ในส่วนการใช้งาน VEX AI

ประกาศอินสแตนซ์ของคลาส Jetson คลาสนี้ใช้เพื่อส่งคำขอข้อมูลไปยัง Jetson รวมถึงรับข้อมูลผ่านการเชื่อมต่อแบบอนุกรม USB

#กำหนด MANAGER_ROBOT 1

แผนภาพแสดงคุณลักษณะและส่วนประกอบของ VEX AI ในบริบทของหุ่นยนต์ V5 โดยเน้นฟังก์ชันหลักและแนวทางการใช้งาน

ประกาศอินสแตนซ์ของคลาส robot_link วัตถุนี้จะถูกใช้เพื่อเชื่อมต่อและถ่ายโอนข้อมูลระหว่างหุ่นยนต์ตัวนี้และหุ่นยนต์คู่หู โปรเจ็กต์เดียวกันนี้สามารถดาวน์โหลดไปยังโรบ็อตสองตัวที่แยกจากกัน หุ่นยนต์ตัวหนึ่งจะต้องมีเส้น:

//#กำหนด MANAGER_ROBOT 1

ก่อนที่คุณจะโหลดโค้ดลงบนโรบ็อตตัวที่สอง คุณจะต้องใส่เครื่องหมายความคิดเห็นในบรรทัดนั้น:

คลาส robot_link ตั้งค่า VEXlink ของหุ่นยนต์และจัดการการส่งและรับข้อมูลระหว่างหุ่นยนต์ทั้งสอง เราจะไม่ลงรายละเอียดในบทความนี้เกี่ยวกับวิธีการทำงานของชั้นเรียน เป็นความคิดที่ดีที่จะทำความเข้าใจวิธีการทำงานของ VEXlink ก่อน หากต้องการดูข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับการใช้ V5 VEXlink API จะอธิบายถึงไลบรารีใหม่ ๆ และวิธีการใช้งานอย่างมีประสิทธิภาพสำหรับการสื่อสารระหว่างหุ่นยนต์

  • ผู้จัดการกิจกรรมการแข่งขัน

    แผนภาพแสดงคุณลักษณะและส่วนประกอบของ VEX AI ในระบบหุ่นยนต์ V5 พร้อมเน้นย้ำถึงความสามารถในการเพิ่มประสิทธิภาพของหุ่นยนต์และการเขียนโปรแกรม

    ความแตกต่างที่ใหญ่ที่สุดประการหนึ่งระหว่าง VAIC และ VRC คือไม่มีช่วงควบคุมไดรเวอร์ แต่มีช่วงอิสระอยู่สองช่วง ได้แก่ ช่วงแยกและช่วงโต้ตอบ ในตัวอย่างนี้ มีกิจวัตรแยกกันสำหรับช่วงเวลาอิสระแต่ละช่วง เนื่องจาก VEX API ไม่รองรับการเรียกกลับที่แตกต่างกันสองครั้ง จึงต้องมีแฟล็กในโปรแกรมเพื่อกำหนดว่ารูทีนใดที่จะดำเนินการ ในโปรแกรมตัวอย่างนี้ "firstAutoFlag" ใช้เพื่อเรียกใช้ฟังก์ชัน Isolation ในครั้งแรกที่เปิดใช้งาน autonomous และฟังก์ชันโต้ตอบเมื่อ autonomous ถูกเปิดใช้งานเป็นครั้งที่สอง สิ่งหนึ่งที่ควรทราบก็คือ หากจำเป็นต้องรีเซ็ตการแข่งขันด้วยเหตุผลบางประการ โปรแกรมสาธิตจะต้องเริ่มต้นใหม่เพื่อให้สามารถรีเซ็ตการตั้งค่าสถานะอัตโนมัติครั้งแรกได้

  • หลัก()

    แผนภาพแสดงคุณลักษณะและฟังก์ชันการทำงานของ VEX AI ในประเภท V5 โดยเน้นที่ส่วนประกอบหลักและการโต้ตอบของส่วนประกอบเหล่านั้นเพื่อการเขียนโปรแกรมและการทำงานอัตโนมัติของหุ่นยนต์ที่ได้รับการปรับปรุง

    นี่คืองานหลักสำหรับโครงการนี้ เริ่มต้นด้วยการเรียก vexcodeInit() เพื่อตั้งค่าสภาพแวดล้อม VEXcode อย่างถูกต้อง ถัดไป จะมีการประกาศวัตถุ AI_RECORD ในเครื่องเพื่อจัดเก็บข้อมูลที่เราได้รับจาก Jetson มีการตั้งค่างานแยกต่างหากเพื่อจัดการการอัปเดตหน้าจอด้วยข้อมูลล่าสุด รหัสสำหรับงานนั้นอยู่ในไฟล์ Dashboard.cpp การโทรกลับอัตโนมัติยังถูกลงทะเบียนเพื่อจัดการเมื่อมีการเริ่มต้นช่วงเวลาอัตโนมัติ

    การวนซ้ำ while() หลักเริ่มต้นด้วยการคัดลอกข้อมูลล่าสุดจากออบเจ็กต์ jetson_comms ไปยังออบเจ็กต์ AI_RECORD ในเครื่องของเรา จากนั้นจะส่งข้อมูลตำแหน่งของหุ่นยนต์ไปยังออบเจ็กต์ลิงก์เพื่อให้สามารถส่งไปยังหุ่นยนต์คู่ของเราได้ เมื่อประมวลผลข้อมูลเสร็จแล้ว ก็จะขอข้อมูลเพิ่มเติมจาก Jetson และจะเข้าสู่โหมดสลีป 66 มิลลิวินาที อัตราการโพลสำหรับข้อมูลนี้คือ 15Hz ไม่มีเหตุผลที่จะสำรวจเร็วขึ้นเนื่องจากข้อมูลระบบ AI อัปเดตที่ประมาณ 15Hz

    หมายเหตุ: ข้อมูลแผนที่ Jetson จำเป็นต้องได้รับการร้องขอเพียงงานเดียวเท่านั้น

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: