เอ็นวิเดีย(NVIDIA, $NVDA) เผยตัวอย่างสร้างวงจรควบคุมชดเชยแรงโน้มถ่วงสำหรับแขนหุ่นยนต์ด้วย Holoscan 5 SDK เมื่อวันที่ 9 ระบบจะอ่านสถานะข้อต่อ คำนวณแรงบิดที่ใช้พยุงน้ำหนักแขน แล้วส่งคำสั่งไปยังมอเตอร์
เอ็นวิเดียระบุในบล็อกเทคนิคว่าใช้ reBot Arm B601-DM ของ Seeed Studio สร้างลำดับควบคุมเดียวกันด้วย Python และ C++ การชดเชยแรงโน้มถ่วงเป็นวิธีควบคุมที่คำนวณแรงบิดซึ่งจำเป็นเมื่อแขนหุ่นยนต์เปลี่ยนท่า เพื่อให้มอเตอร์ช่วยรับน้ำหนักแขน ในตัวอย่าง มอเตอร์จะพยุงแขนขณะที่มีคนขยับแขนด้วยมือ
วงจรควบคุมมี 3 โอเปอเรเตอร์สำหรับอ่านสถานะข้อต่อ คำนวณแรงบิดจากแรงโน้มถ่วง และส่งคำสั่งไปยังมอเตอร์ ขั้นคำนวณใช้ Pinocchio กับโมเดล URDF ซึ่งบรรจุโครงสร้างและมวลของหุ่นยนต์ เพื่อหาแรงบิดจากแรงโน้มถ่วงของแต่ละข้อต่อ
โอเปอเรเตอร์ทั้งสามทำงานตามลำดับในพาร์ติชันควบคุมเดียวกัน จึงหลีกเลี่ยงการส่งข้อมูลข้ามเธรดระหว่างขั้น คิวจะเก็บสถานะล่าสุดไว้ก่อนเพื่อไม่ให้ข้อมูลสังเกตการณ์เก่าค้างสะสม ก่อนเริ่มทำงาน ระบบตรวจสอบการเชื่อมต่อกราฟและการตั้งค่าได้ ส่วน Nsight Systems ใช้ตรวจดูเวลาแฝงและความแปรปรวนของรอบในแต่ละขั้น
กำหนดให้การอ่านสถานะข้อต่อเริ่มทุก 2.5 มิลลิวินาที หรือเทียบเท่ากับ 400 ครั้งต่อวินาที แต่ไม่ได้หมายความว่าฮาร์ดแวร์จริงจะอัปเดตสถานะได้ตามรอบดังกล่าวเสมอ คู่มือเทคนิคระบุว่า หากการทำงานล่าช้า ระบบอาจรวมรอบที่ค้างไว้แล้วประมวลผล
ค่าเวลาแฝง p99.99 ที่เอ็นวิเดียเปิดเผยสำหรับการทำงานด้วย C++ อยู่ที่ 86.6 ไมโครวินาทีก่อนการตรึงและแยกแกน CPU และ 17.2 ไมโครวินาทีหลังดำเนินการดังกล่าว ส่วน Python ลดจาก 1,373.5 เหลือ 142.6 ไมโครวินาที บริษัทระบุว่าดีขึ้นประมาณ 5 เท่าและ 9.6 เท่าตามลำดับ
การทดลองเปรียบเทียบวัดรอบควบคุมมากกว่า 1 ล้านรอบในแต่ละการตั้งค่า และไม่นับ 10 วินาทีแรก เธรดควบคุมถูกตรึงไว้กับแกน CPU หนึ่งแกน ขณะที่เธรดช่วยและเธรดโปรไฟเลอร์อยู่บนแกนอื่น จากนั้นแยกแกนจริงทั้งสองออกจากแอปพลิเคชันอื่น เวลาที่วัดคือช่วงตั้งแต่โอเปอเรเตอร์ตัวแรกเริ่มทำงานจนถึงโอเปอเรเตอร์ตัวสุดท้ายเริ่มทำงาน
ตัวเลขนี้ไม่รวมเวลาส่งคำสั่งไปยังมอเตอร์ หรือเวลาตั้งแต่เซนเซอร์จริงจนถึงมอเตอร์ คู่มือเทคนิคของเอ็นวิเดียระบุว่าค่าที่เผยแพร่จึงเป็นเวลาของช่วงโอเปอเรเตอร์ภายในวงจรควบคุม และมีขอบเขตการวัดต่างจากเวลาตอบสนองทั้งหมดของอุปกรณ์จริง
ตัวอย่างนี้ทดสอบบน x86 ที่ใช้ Ubuntu 24.04, Jetson Orin Nano และ Jetson Thor ส่วนการเรียกใช้ตัวอย่าง Python ต้องใช้ Linux และ Python 3.12 ขึ้นไป
ก่อนหน้านี้ เอ็นวิเดียประกาศ Holoscan 5 เมื่อวันที่ 20 ตุลาคม พร้อมระบุว่าปรับโครงสร้างรันไทม์และ API สำหรับการทำงานและการตั้งค่าใหม่ โดยงานประมวลผลเซนเซอร์และงานควบคุมสามารถจัดวางในระบบโอเปอเรเตอร์และกราฟของ SDK เดียวกัน ตัวอย่างแขนหุ่นยนต์นี้นำโครงสร้างดังกล่าวไปใช้กับอุปกรณ์จริง
เมื่อนำไปใช้กับอุปกรณ์จริง ความสดใหม่ของข้อมูลป้อนกลับและขั้นตอนหยุดทำงานเป็นเรื่องสำคัญ ไดรเวอร์ motorbridge พื้นฐานจะส่งคืนข้อมูลป้อนกลับที่บันทึกไว้ โดยไม่มีเวลารับข้อมูลหรือหมายเลขแพ็กเก็ตกำกับ หากข้อมูลป้อนกลับขาดหายแต่ยังส่งคำสั่งต่อ ระบบอาจใช้สถานะข้อต่อเดิม
หากชุดคำสั่งยังทำไม่เสร็จภายในเวลาหมดอายุเริ่มต้นของตัวเฝ้าระวังที่ 100 มิลลิวินาที ตัวเฝ้าระวังจะหยุดกราฟและพยายามปิดการทำงานของมอเตอร์ อย่างไรก็ตาม กลไกนี้ตรวจจับภาวะข้อมูลป้อนกลับค้างไม่ได้
เมื่อหยุดการควบคุม แรงพยุงจากมอเตอร์จะหายไปและแขนหุ่นยนต์อาจตกได้ บทสอนแนะนำให้วางแขนไว้ในตำแหน่งเริ่มต้นที่ปลอดภัยก่อนเริ่มทำงาน และขยับแขนกลับไปยังตำแหน่งนั้นด้วยมือก่อนปิดระบบตามปกติ
Comment 0