May 2021

Lucksawan Yutthanakorn
3 min readMay 5, 2021

Lucksawan Y. Progress Update #10
63340700413 FRAM#18
#WFH #Covid19

ครั้งที่ 10 รายงานความคืบหน้าตั้งแต่ 6 เมษายน ถึง 5 พฤษภาคม พ.ศ. 2564

Thesis update

Next step ที่เขียนไว้เดือนที่แล้ว

  1. สั่งงาน actuator ผ่าน Unity ที่สร้าง UI จาก MRTK library (Status: Success)
  2. อ่านค่า sensor ที่ Demo site ส่งเป็น message ผ่าน MQTT มาแสดงผลใน Unity (Status: แสดงข้อความที่ subscribe topic นั้นๆ ได้แล้ว แต่ยังแสดงผลไม่ได้แบบที่ต้องการ ต้องการให้แสดงเป็นลักษณะ led status เขียวแดง เพื่อให้ผู้ใช้งานเข้าในง่าย ต้องแก้ UI และ C# script ต่อ)
  3. โอน UI และสคริปทั้งหมดไปใช้งานบน Hololens2 (Status: Experimented)
  4. สั่งงาน actuator ผ่าน Hololens2 (Status: Experimented)
  5. สร้าง UI สำหรับสั่งงานหุ่นยนต์แขนกล Dobot Magician ที่มีอยู่ใน Demo site
  6. ทดสอบการใช้งานหุ่นยนต์แขนดกล Dobot Magician ผ่าน Hololens2

การสร้างหน้า UI สำหรับสั่งงานผ่าน Microsoft Hololens2 จะต้องใช้ library ของ Microsoft ที่ชื่อ Mixed Reality Tool Kit (MRTK) ในที่นี้ใช้ เวอร์ชั่นดังนี้

MRTK: 2.5.4
Unity: 2019.4.15f1
Protocol: MQTT
Websocket: broker.mqttdashboard.com Port: 1883
LocalHost (Demosite): 192.168.100.8 Port: 1883
Microsoft Hololens 2

จากที่ได้ทดลองสร้าง UI ปุ่มสำหรับสั่งงาน actuator สำหรับดันชิ้นงานลูกบาศก์ทั้ง 4 สี โดยใช้ PressableRoundButton จาก library MRTK เป็น UI จากนั้นใส่ C# Script ให้ปุ่มสามารถ Publish ข้อความและส่งผ่าน MQTT ไปสั่งงาน actuator ได้

วิดิโอที่ 1. ทดลองใช้ PressableRoundButton publish ข้อความไปยัง Websocket

จากวิดิโอที่ 1. จะเห็นว่าสามารถใช้ MRTK UI publish ข้อความไปยัง ฺBroker ที่เป็น Websocket ได้ (ทดลองที่บ้านต่างจังหวัด) โดยตั้ง topic ชื่อ hello/unity

จากวิดิโอที่ 1. ปรับ C# script ให้ส่งข้อความที่ถูกต้องไปยัง LocalHost และตั้ง topic กับข้อความที่ต้องส่งไปควบคุม actuator นำไปทดลองกับ Demo site

วิดิโอที่ 2. ทดลองกับ demo site (Unity MRTK x MQTT x Hardware)

ค่า sensor จะถูก publish ออกมา ดังนั้นต้อง subscribe topic ของ sensor นั้นๆ และ decoding message ออกมาประมวลผล โดยขั้นตอนการ subscribe และ decoding นั้นสามารถทำงานได้แล้ว จากที่ได้ทดลองกับ Websocket

รูปที่ 1. ให้ UI ใน Unity แสดงผลข้อความที่ถูก publish ผ่าน topic ที่ไป subscribe ไว้

จากรูปที่ 1. ส่วนด้านบนที่ Broker ออนไลน์ (Websocket) เป็นผู้ publish ข้อความ dun และ eiei มาที่ topic hello/unity โดยใน C# script ได้ subscribe topic นี้ไว้แล้ว และ Decoding message ที่ได้รับออกมาเป็นตัวอักษร ให้แสดงในหน้า UI และแสดงที่ console ด้านล่าง

จะสังเกตได้ว่า ที่ Websocket และ console ด้านล่างให้ผลลัพธ์เหมือนกัน คือ dun 1บรรทัด และ eiei อีก 1บรรทัด แต่ตรง UI ที่แสดงผล แสดงผลติดกัน อันนี้ต้องแก้ไขใน C# script ใหม่

แต่ขั้นต่อไปคาดว่า จะนำ message ที่ decoding ออกมาได้ไปแปลงเป็น LED status เพื่อให้เข้าใจได้ง่ายขึ้นแทน

นอกจากนี้ได้ลองทดสอบการสั่งควบคุม actuator ผ่าน Microsoft Hololens 2 แล้ว ด้วยการ Remote UI ต่าง ๆ เข้าไปแสดงผลที่ Hololens สิ่งที่ต้องทำคือ

ต้องลงโปรแกรม HololensEmulator
ตั้งค่า Holographic (Deprecated) ใน Unity ตรง Remote machine ให้ใส่เลข IP ของ Hololens เปิด Hololens เพื่อดูเลข IP
ใช้ Wifi วงเดียวกันทั้งหมด

รูปที่ 2. ภาพตอนกำลังทดสอบ Hololens

จากที่ได้ทดสอบใช้งาน Hololens สั่ง actuator “ยังไม่สำเร็จ” คาดว่าเกิดจาก network ไม่เสถียร เนื่องจากตอนที่ลอง remote เข้าไปที่ hololens ครั้งแรก สามารถแสดงผลรวมทั้งกดปุ่ม PressableRoundButton ได้ แต่ไม่ได้ตั้ง broker ที่ถูกต้องของ demo site ไปตั้งของ Websocket

จึงตั้งค่า broker ใหม่และ remote อีกครั้ง แต่พอเป็นครั้งนี้ ภาพที่แสดงผลใน Hololens มีความพร่าและกระตุกมาก และภาพก็หายไปจาก Hololens เลยในขณะที่ Player monitor ใน Unity ยังแสดงผลว่ามุมมองผู้เล่นใน Hololens เห็นอะไรอยู่ (ฝากให้พี่ลูกพีชดูที่ Unity ให้)

จึงคาดว่าน่าจะเป็นที่ network ที่ทำให้ frame rate ตก หรืออีกข้อที่คาดการณ์ไว้คือวันนั้น Hololens แบตอ่อนมาก (17%) อาจจะเกี่ยวได้ แต่ยังไม่ได้มีผลของ network มาให้เห็นชัดเจน เนื่องจากได้ทดลองกับ Hololens แค่ครั้งเดียวในวันที่ 22 เมษายน 2564

เนื้อหาที่เกี่ยวกับ Smart Factory ที่ตอนแรกไว้ที่หน้าเว็บไซต์ของ smart factory และ moodle ของอาจารย์โซ่

ตอนนี้เอาออกมาให้อ่านให้เป็น PDF แล้ว เพื่อจะขอให้ผู้ใช้งานช่วยทำแบบสอบถามให้ จะได้อ่านได้ง่าย ๆ

แบบสอบถาม คลิก

Next step:

  1. เปลี่ยนเวอร์ชั่นของ MRTK ไปใช้เวอร์ชั่น 2.6 เนื่องจาก Unity ขึ้น warning มาว่า 2.5.4 ที่ใช้อยู่ตอนนี้มันล้าหลังไปแล้ว และเข้าไปดูที่เว็บไซต์ของ Microsoft แนะนำให้ใช้ Unity 2019 กับ MRTK 2.6 ขึ้นไปสำหรับ Hololens 2
  2. ทำ Sensor status ให้เรียบร้อย
  3. เริ่มทำ Blockly สำหรับสั่งควบคุม actuator
  4. ทดสอบกับ Hololens 2 เรื่อย ๆ
  5. สร้าง UI สำหรับสั่งงานหุ่นยนต์แขนกล Dobot Magician ที่มีอยู่ใน Demo site
  6. ทดสอบการใช้งานหุ่นยนต์แขนดกล Dobot Magician ผ่าน Hololens2
  7. หา Feedback เนื้อหาให้ได้ ตอนนี้ยังไม่ได้เลย

AI For All: Phase 1

แก้ Protocol ที่ใช้ส่งผ่าน MQTT ของ demo site ให้หมด เปลี่ยนเป็น JSON โดยของ Module#0 แก้เสร็จเกือบ 100% แล้ว

รูปที่ 3. ตัวอย่างการส่ง Message เป็น JSON ผ่าน MQTT (Node-red)

เปลี่ยนรูปแบบ Message ก็เหมือนกับต้องทำใหม่ เนื่องจากวิธีการเรียกใช้ Message และวิธีการส่งไม่เหมือนเดิม

ได้ทดลองกับ Demo site เรียบร้อยแล้ว สามารถทำงานได้ ทดสอบมา 2 ครั้ง (พฤ.ที่ 22 และพฤ.ที่ 29 เมษายน) ในวันพฤ.ที่ 6 พฤษภาคม จะเข้าไปทดสอบแบบเต็มระบบ (Automation 100%) เรียกออร์เดอร์จากหน้าเว็บได้

ข้อดีของการใช้ Message เป็น JSON คือสามารถเรียกใช้และส่งได้ง่าย structure ของ JSON จะเป็น topic ไป อย่างในรูปที่ 3. จะเห็นว่าสามารถตั้ง object ที่ต้องการจะส่งเป็น msg.payload โดยตั้งค่าให้เท่ากับ object ได้เลย ทำให้เข้าใจได้ง่ายขึ้น

msg.payload = {“CMD”:”ACK”, “PARAM”:“SRC”:”0",“CMD”:”GET_PENDING”, “RPC”:null, “DATA”:pending}};

หมายเหตุ pending เป็นตัวแปร ถ้าเป็นคำหรือ string ต้องใส่เครื่องหมาย “”

และวิธีการเรียกใช้ค่าใน topic ต่าง ๆ ก็เพียงแค่ใส่ msg.payload.ชื่อtopic ก็จะสามารถนำค่าออกมาใช้งานต่อได้อย่างถูกต้อง ดีกว่าที่ทำก่อนหน้านี้ที่เป็น string ยาว ๆ ต้องมา split เอง ทำให้ค่าที่ออกมาผิดพลาดได้ง่ายกว่า

รูปที่ 4. Module#0 หลังจากแก้ message เป็น JSON แล้ว

Next step:

  1. เปลี่ยนจากที่ส่งออกหลาย ๆ topic MQTT (สีม่วง) ให้ส่งออกตัวเดียว แต่ adjust topic ใน coding แทน
  2. หลังจากทดสอบการทำงานว่าทำได้ 100% แล้ว ต้องลบ input (สีฟ้า) ต่าง ๆ ออก
  3. Upload moodle tips&trick

หมายเหตุ เนื้อหา content ที่เคยใส่ไว้ในเว็บ moodle ทั้งของ Smart Factory และของอ.โซ่ ได้ export ออกมาและ backup ไว้ใน MS Team เรียบร้อยแล้ว

--

--