วิธีสร้างหุ่นยนต์ Pick-and-Place ด้วย SimReady ใน Isaac Sim

บทความนี้จะสาธิตการสร้างภารกิจหยิบและวาง (pick-and-place) กระป๋องเครื่องดื่ม โดยเลือกใช้ แขนกล UR17G, Robotiq 2F-140 gripper และ กระป๋องเครื่องดื่ม เพื่อนำมาประกอบฉากใน Isaac Sim พร้อมตรวจสอบพฤติกรรมและรันตัวอย่างการทำงานผ่านระบบควบคุมที่สร้างโดย agent
ในกระบวนการทำงานด้านหุ่นยนต์นั้น คำว่า SimReady หมายถึง asset ในรูปแบบ OpenUSD ที่ได้รับการจัดเตรียมคุณสมบัติทางกายภาพที่จำเป็นสำหรับการจำลองไว้แล้ว เช่น การชน (collisions), มวล (mass), ข้อต่อ (joints) และระบบขับเคลื่อนข้อต่อ (joint drives) โดย SimReady Central ซึ่งเป็นคลัง asset แบบเปิดบน Hugging Face ช่วยให้นักพัฒนาสามารถนำหุ่นยนต์และวัตถุที่มีการตั้งค่าฟิสิกส์และผ่านการตรวจสอบ profile มาใช้ซ้ำได้ทันที สำหรับรายละเอียดเพิ่มเติมสามารถอ่านได้ที่ announcement blog
นิยามของ SimReady สำหรับ Robot Asset
SimReady Foundation ได้กำหนดคุณลักษณะที่ asset OpenUSD ต้องมีสำหรับการใช้งานในระบบจำลอง โดยแบ่งเกณฑ์การตรวจสอบออกเป็น 3 ระดับหลัก ได้แก่:
- Profile: กลุ่มคุณลักษณะตามกรณีการใช้งาน เช่น ตัวหุ่นยนต์ (robot body)
- Features: ความสามารถที่จำเป็น เช่น ข้อต่อที่ควบคุมได้
- Requirements: การตรวจสอบการตั้งค่าเชิงลึก เช่น ระบบขับเคลื่อนของข้อต่อ
สำหรับภารกิจนี้ คุณสมบัติจะครอบคลุมถึงข้อต่อของแขนกลและ gripper รวมถึงมวลและการชนของกระป๋องเครื่องดื่ม ระบบจะตรวจสอบ (validation) ค่าเหล่านี้เทียบกับข้อกำหนด เพื่อดูว่าหุ่นยนต์ที่ประกอบแล้วจะสามารถหยิบและเคลื่อนย้ายวัตถุได้จริงหรือไม่
สิ่งที่มีมาให้ใน Asset และสิ่งที่ต้องเตรียมเอง
แพ็กเกจของ UR17G, Robotiq 2F-140 และ กระป๋องเครื่องดื่ม จะมาพร้อมโมเดลและการตั้งค่าฟิสิกส์พื้นฐาน
อย่างไรก็ตาม ผู้ใช้ต้องเป็นคนประกอบฉากและเพิ่มโค้ดสำหรับภารกิจเอง เพื่อระบุจุดเชื่อมต่อระหว่างแขนกลกับ gripper, พื้นที่ทำงาน, ตำแหน่งเริ่มต้น และระบบควบคุมการเคลื่อนที่

ภาพที่ 2. SimReady Central จัดเตรียมโมเดลและการตั้งค่าฟิสิกส์ ส่วนฉากและระบบควบคุมจะเป็นตัวกำหนดภารกิจการทำงาน
ข้อควรตรวจสอบก่อนเริ่มภารกิจ Pick-and-Place
แม้หุ่นยนต์จะดูปกติใน Isaac Sim ขณะหยุดนิ่ง แต่อาจมีพฤติกรรมผิดเพี้ยนเมื่อเริ่มทำงานจริง ดังนั้นควรทดสอบประเด็นต่อไปนี้ก่อนเริ่มภารกิจ โดยสามารถขอให้ agent ช่วยทดสอบหรือทำด้วยตนเองก็ได้:
- การตั้งค่าข้อต่อ (Joint settings): ตรวจสอบขีดจำกัดของข้อต่อทั้งแขนกลและ gripper รวมถึงระบบขับเคลื่อน
- การเคลื่อนไหว (Movement): ลองขยับแขนกลและสั่งเปิด-ปิด gripper ในระยะสั้นๆ
- การสัมผัส (Contact): ตรวจสอบว่าวัตถุวางอยู่บนพื้นผิวได้อย่างมั่นคง ไม่ตกลงไปใต้พื้นฉาก
ระหว่างทำงาน ให้สังเกตว่ากระป๋องยังอยู่ใน gripper ขณะเคลื่อนที่หรือไม่ เนื่องจากโครงสร้าง asset อาจต่างกัน จึงควรใช้ค่าเริ่มต้นในฉากเป็นจุดตั้งต้นในการปรับจูน
การสร้างโปรเจกต์ Pick-and-Place ใน Isaac Sim
ในตัวอย่างนี้ เราจะสั่งให้หุ่นยนต์คีบกระป๋อง ยกขึ้น เคลื่อนย้ายไปยังเป้าหมาย และปล่อยออก โดยใช้บริการ SimReady Central Space เพื่อค้นหาเนื้อหาจาก OEM
เราจะนำโมเดล AI ระดับแนวหน้า (frontier AI model) มาช่วยสร้างและรันโค้ดใน Isaac Sim ซึ่งในที่นี้ใช้ GPT-6 Sol (รุ่นอื่นอาจใช้ได้หากรองรับทักษะที่จำเป็นและ Python) ทั้งนี้ควรตรวจสอบโค้ดที่ AI สร้างขึ้นก่อนนำไปใช้งานจริงเสมอ
ซอฟต์แวร์ที่ต้องเตรียม:
- ติดตั้ง Isaac Sim 6.2 และตรวจสอบสเปกเครื่อง
- ตั้งค่า agent และ Agent Skills เพื่อให้ AI โต้ตอบกับซอฟต์แวร์ได้
- ติดตั้ง Hugging Face CLI สำหรับดาวน์โหลดผ่าน command-line
- เข้าถึง USD Search endpoint
ขั้นตอนที่ 1: ดาวน์โหลด Asset ที่จำเป็น
ไปที่ SimReady Central เพื่อดาวน์โหลด UR17G, Robotiq 2F-140 และ กระป๋องเครื่องดื่ม โดยเก็บโฟลเดอร์ไว้ให้ครบถ้วนเพื่อให้โปรแกรมหาไฟล์ประกอบเจอ และระบุพาธไฟล์ USD ในเครื่องให้ agent ทราบ เช่น:
~/ASSETS/hf/src/simready-assets-c7fa7615/Robotiq_2F_140/simready_usd/Robotiq_2F_140.usda
ภาพที่ 3. ระบบค้นหาของ SimReady Central ช่วยระบุโมเดลที่ต้องการได้อย่างแม่นยำ

ภาพที่ 4. วิธีการดาวน์โหลดมีทั้งแบบบันทึกไฟล์โดยตรง หรือใช้ Hugging Face CLI
สำหรับการตรวจสอบ Asset รายงานของแขนกล และ gripper บ่งชี้ว่าผ่านเกณฑ์ PhysX driven-joint checks เรียบร้อยแล้ว ซึ่งช่วยการันตีความพร้อมในการจำลอง
ขั้นตอนที่ 2: ประกอบหุ่นยนต์และสร้างฉาก
เริ่มใช้งาน Isaac Sim จาก directory หลักและเปิด remote Python server เพื่อให้ agent สื่อสารได้:
./isaac-sim.sh --enable isaacsim.code_editor.python_serverตรวจสอบว่าโหลด asset ครบถ้วนและไม่มีไฟล์สูญหาย จากนั้นขอให้ agent ประกอบแขนกลและ gripper เข้าด้วยกันเป็นยูนิตเดียว (Articulation) ตามตัวอย่าง prompt ด้านล่าง:
Assemble the robot arm <local path to Simready ur17g robot usd>
with the gripper <local path to downloded simready Robotiq_2F_140 gripper usd>
using the Robot Assembly tutorial in Isaac Sim
https://docs.isaacsim.omniverse.nvidia.com/6.2.0/robot_setup/assemble_robots.html.
Validate the assembly on completion.Agent จะใช้ทักษะอย่าง ‘isaac-sim-remote’ และ ‘usd-articulation’ เพื่อประกอบหุ่นยนต์และตรวจสอบระบบฟิสิกส์ให้เสร็จสรรพ

ภาพที่ 5. การปรับแต่งข้อต่อสำหรับ UR17G และ Robotiq 2F-140 ในหน้าจอ Isaac Sim
ขั้นตอนที่ 3: ทดสอบการควบคุมและรันภารกิจ
ขณะนี้ฉากพร้อมแล้ว เราจะใช้ตัวควบคุมเพื่อประสานงานระหว่างแขนกลและ gripper โดยใช้ prompt ตัวอย่างดังนี้:
Run pick and place with the assembled robot and soda can
<path to soda can USD from SimReady library> in Isaac Sim.
Ensure you do a contact based grasp for picking up the can and validate
the accuracy/placement error for the pick and place as well.ทักษะที่ใช้: ‘isaac-sim-remote’, ‘manipulaiton-ik’ และ ‘physics-simulation’

ภาพที่ 6. แขนกลเคลื่อนย้ายกระป๋องจากจุดสีเหลืองไปยังเป้าหมายสีเขียว (ความเร็ว 4 เท่า)
ข้อควรจำเกี่ยวกับการจำลอง:
- การจำลองครั้งนี้เริ่มต้นในตำแหน่งที่แน่นอนบนพื้นที่ราบ
- วัตถุเป็นแบบลดรูป (Rigid body) ไม่มีการจำลองน้ำองเหลวหรือการบุบสลายของกระป๋อง
- แรงบีบที่ใช้คือ 2 N·m ซึ่งได้จากการทดลองในโปรแกรม ไม่ได้ยึดตามคำแนะนำผู้ผลิตในฮาร์ดแวร์จริง (ดูข้อมูลแรงจริงได้ที่ เอกสาร Robotiq)
ต่อยอดการทำงานด้วย SimReady Assets
คุณสามารถสร้างภารกิจอื่นเพิ่มเติมได้ง่ายๆ โดยค้นหาหุ่นยนต์ใหม่ๆ จาก SimReady Central และศึกษาข้อกำหนดเพิ่มเติมที่ SimReady Foundation
สำหรับผู้ที่มีโมเดล CAD ของตัวเอง สามารถทำตาม 5 ขั้นตอนการสร้าง SimReady Assets และส่งผลงานของคุณเข้าสู่คลังกลางผ่าน คู่มือการส่ง Asset เพื่อแบ่งปันให้นักพัฒนาทั่วโลกได้ใช้งาน
ความคิดเห็น (0)
เข้าสู่ระบบเพื่อร่วมแสดงความเห็น
สมัครสมาชิกมาเป็นคนแรกที่แสดงความเห็นกันเลยโบร
