GimbalCam UR5

ที่มาและความสำคัญ

ที่มาของโปรเจ็ค “GimbalCam UR5” เป็นผลมาจากความต้องการในการพัฒนาเทคโนโลยีที่มีประสิทธิภาพสูงในการควบคุมการเคลื่อนไหวของกล้องอย่างแม่นยำและมีประสิทธิภาพ โดยใช้หุ่นยนต์ UR5 และ Gimbal ในการรองรับการเคลื่อนไหว โปรเจ็คนี้มีความสำคัญอย่างมากในหลากหลายวงการ เช่น

  1. ภาคการศึกษาและวิจัย: การใช้ GimbalCam UR5 สามารถช่วยในการศึกษาและวิจัยในหลายด้าน เช่น การศึกษาด้านการเคลื่อนไหวของหุ่นยนต์ การควบคุมระบบต่าง ๆ และการประยุกต์ใช้เทคโนโลยีที่มีอุปกรณ์พร้อมใช้งานในสถานการณ์ทางการศึกษาและวิจัย
  2. การใช้งานในงานอุตสาหกรรมและการเกษตร: GimbalCam UR5 สามารถนำมาใช้ในงานอุตสาหกรรมและการเกษตร เช่น การตรวจสอบและควบคุมกระบวนการผลิต การตรวจสอบคุณภาพสินค้า หรือการสำรวจแปลงนา
  3. การนำมาใช้ในงานที่มีความเสี่ยง: สำหรับงานที่อาจมีความเสี่ยงต่อชีวิตและสุขภาพของมนุษย์ เช่น การตรวจสอบสภาพแวดล้อมในที่ที่อาจเป็นอันตราย การใช้ GimbalCam UR5 สามารถช่วยลดความเสี่ยงและเพิ่มความปลอดภัยในการดำเนินงาน

ด้วยความสามารถที่มีของ GimbalCam UR5 ในการควบคุมกล้องและการเคลื่อนไหวของหุ่นยนต์อย่างแม่นยำ จึงเป็นเครื่องมือที่มีความสำคัญในหลากหลายอุตสาหกรรมและเป็นเครื่องมือที่มีศักยภาพในการเพิ่มประสิทธิภาพและความสามารถในงานต่าง ๆ ที่ต้องการความแม่นยำและความเร็วในการดำเนินงาน

System Overview

Gantt Chart

Hardware

Programing

1. Dynamixel Wizard 2.0

ได้มีการทดสอบมอเตอร์ Dynamixel รุ่น MX-28 ด้วยโปรแกรม Dynamixel Wizard 2.0 เพื่อ Set up แล้วกำหนด IP 0,1,2 (ชื่อมอเตอร์แต่ละตัว) และจะใช้เป็นโปรโตคอล 1 ที่ใช้ในการสื่อสาร
โดยโปรแกรมนี้จะสามารถปรับค่าต่างๆที่ต้องการของมอเตอร์ Dynamixel รุ่น MX-28 ได้ก่อนที่จะนำไปเขียนโปรแกรม Python ต่อ เพราะจะสามารถกำหนดแรง องศา ในการเซ็ตท่าทางได้ด้วยเช่นกัน

2. Python

โดยโปรแกรม Pyton ที่ได้เขียนมานั้นจะเป็นการสั่งให้มอเตอร์ตัวที่ 2 และ 3 ล็อคตำแหน่งที่ได้เซ็ตค่าไว้ แต่มอเตอร์ตัวที่ 1 จะสามารถเพิ่มค่าองศาเข้าไปได้ เพื่อให้หัวของหุ่นยนต์สามารถหันหน้า ซ้าย ขวา ตรงได้ตามที่ผู้ใช้อยากให้ไป และจะนำค่าที่ส่งออกมาจากนี้ไปยังส่วนของ Unity ต่อเพื่อให้ผู้ควบคุมจอยของ VR สามารถขับเคลื่อนหัวหุ่นยนต์หรือกล้องตามที่อยากเห็นภาพใน VR ได้ โดยในโปรเจ็คนี้จะทำถึงขั้นที่มอเตอร์สามารถหันได้ตามที่กล่าวไปข้างต้น

การใช้งานร่วมกับ VR

ขั้นแรกจะสตรีมภาพให้กับ Oculus (แว่นVR) เพื่อเป็นช่องทางในการส่งไปบน Server และทางเพื่อนที่ทำ Unity จะเป็นส่วนในการรับค่า
โดยจะต้องสร้าง Server และ IP เบื้องต้นจะใช้ Libary Socket (ใช้รับส่งข้อมูลผ่าน IP) สำหรับการ Set up และ สตรีม (ส่งข้อมูลรูปภาพ หรือ สตรีมวิดีโอ) หลังจากนั้นเมื่อได้ค่า IP ก็จะนำไปใส่ใน Oculus ก็จะสามารถใช้ฟังก์ชั่นต่างๆได้

ปัญหาที่พบเจอในก่อนหน้าและปัจจุบัน

ได้ทำการลง Gstreamer ใน Windows (คือเครื่องมือในการเอาภาพขึ้นไปบนเซิร์ฟ) แต่ติดปัญหาที่ยังใช้งานไม่ได้ Build ไม่ได้ จึงลองลง C make (เป็นซอร์ฟแวร์ มีหน้าที่ช่วยให้ Set up project ช่วย Build ภาษาต่างๆ และ library ได้ง่ายขึ้น ) แต่ก็ยังไม่ได้ จึงยังไม่สามารถใช้ค่า IP เพื่อเรียกส่งรับข้อมูลถึงกันได้

หลังจากนั้นจึงได้ไปใช้ Tailscale (เป็นบริการเครือข่ายส่วนตัว (VPN) ที่ออกแบบมาเพื่อให้การเชื่อมต่อระหว่างอุปกรณ์ในเครือข่ายเป็นไปอย่างง่าย) และยังมี Zero Trust Network ซึ่งหมายถึงการเชื่อมต่อแต่ละอุปกรณ์ในเครือข่ายเพียงเครื่องที่รับอนุญาตเท่านั้น และมีการเข้ารหัสแบบ end-to-end เพื่อความปลอดภัยของข้อมูลในระหว่างการสื่อสาร โดยสามารถเชื่อมต่อกับอุปกรณ์ที่ใช้ระบบปฏิบัติการต่างๆ เช่น Windows, macOS, Linux, iOS, และ Android เป็นต้น

ได้ลองใช้ Streaming ZED-sdk ใน Github เพื่อทดสอบว่าโค้ด sender และ receiver นั้นสามารถนำมาใช้ได้ไหม

ส่วนนี้จะเป็นส่วนค่าที่ออกมาของ sender

ส่วนนี้จะเป็นส่วนค่าที่ออกมาของ receiver

นี่คือ Streaming แบบเรียลไทม์ ที่ receiver เป็นผู้เห็น

ซึ่งจากการทดสอบเห็นได้ว่าโค้ด sender และ receiverนั้นสามารถใช้งานได้ แต่ก็จะติดปัญหาเรื่องหลุด ค้าง ช้า บ่อยครั้ง

กระบวนการที่จะทำและแก้ไขในครั้งต่อไป

แก้ไขส่วนของ Streamimg ให้สามารถใช้งานได้ไหลลื่นขึ้น