13 คะแนน โดย xguru 2024-05-13 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • ระหว่างมองหาแอปเพื่อเข้าร่วม "Push-Up Challenge วันละ 100 ครั้ง" ของ Cancer Research UK จึงตัดสินใจลองทำอะไรสนุก ๆ ที่นับจำนวนวิดพื้นด้วยตัวเอง
  • สำรวจเฟรมเวิร์ก Core Motion ของ iOS
    • ระหว่างหาวิธีใช้ข้อมูลจากเซ็นเซอร์ จึงเลือกใช้ CMHeadphoneMotionManager เพื่อดึงข้อมูลการเคลื่อนไหวจาก AirPods
    • Core Motion ให้ข้อมูลจาก accelerometer, gyroscope และ magnetometer
    • มีประโยชน์สำหรับการวัดการเคลื่อนไหวและทิศทางที่แม่นยำและเชื่อถือได้
    • ต้องขอสิทธิ์เข้าถึงข้อมูลเพื่อคุ้มครองความเป็นส่วนตัวของผู้ใช้
  • แนวคิดในการนำ AI มาใช้
    • มีแอปจำนวนมากที่ใช้เฟรมเวิร์กอย่าง ARKit อยู่แล้ว
    • จึงมองว่า AI น่าจะช่วยให้ทำไอเดียนี้ให้เป็นจริงได้
    • ใช้ GPT ที่เรียนรู้เกี่ยวกับ Core Motion เพื่อถามคำถามด้วยภาษาธรรมชาติและหาทางแก้ปัญหา
  • การออกแบบสถาปัตยกรรมของแอป
    • Motion Manager: สตรีมข้อมูลจากเซ็นเซอร์และจัดการการอัปเดตจากเซ็นเซอร์ของอุปกรณ์
    • Pushups Detector: วิเคราะห์ข้อมูลที่สตรีมเข้ามา เพื่อตรวจจับและนับการวิดพื้นตามค่า threshold ที่กำหนดไว้ล่วงหน้า
    • SwiftUI View: มอบ UI แบบตอบสนองที่อัปเดตแบบเรียลไทม์ขณะผู้ใช้กำลังวิดพื้น
  • การพัฒนา Motion Manager
    • ใช้ delegate pattern เพื่อเข้าถึงค่าที่อัปเดต
    • ใช้ CMHeadphoneMotionManager เพื่อดึงข้อมูล motion ของอุปกรณ์
    • ใช้ startUpdates() และ stopUpdates() เพื่อเริ่มและหยุดการอัปเดตจากเซ็นเซอร์
    • อัปเดตค่า pitch และ accelerationY พร้อมแจ้งไปยัง delegate
  • การพัฒนา Pushups Detector
    • นำแนวคิดเรื่อง "session" มาใช้เพื่อเริ่มและหยุดการวิเคราะห์สตรีมข้อมูล
    • ตีความข้อมูลดิบเพื่อพิจารณาท่าทางของผู้ใช้และตรวจว่ากำลังวิดพื้นหรือไม่
    • ใช้ค่า threshold เพื่อตรวจจับช่วงลงและช่วงขึ้นของการวิดพื้น แล้วเพิ่มจำนวนครั้ง
    • พัฒนา MotionManagerDelegate เพื่อจัดการการเปลี่ยนแปลงของค่า acceleration และ pitch
  • สร้าง View แบบเรียบง่ายด้วย SwiftUI
    • ประกอบด้วยปุ่มเริ่ม/หยุด session และตัวเลขขนาดใหญ่สำหรับแสดงจำนวนครั้งของการวิดพื้น
    • เพิ่มข้อความสำหรับบอกว่าท่าทางของผู้ใช้ถูกต้องหรือไม่
  • การวิเคราะห์และทำภาพข้อมูล
    • ใช้ Swift Charts เพื่อทำภาพข้อมูลดิบจากเซ็นเซอร์และระบุแพตเทิร์น
    • พบแพตเทิร์นการวิดพื้นในค่า acceleration แกน Y คือช่วงลง (-1.0) และช่วงขึ้น (+0.5)
    • ปรับค่า threshold ผ่านการทดสอบจริงเพื่อเพิ่มความแม่นยำ (+0.4, -0.7)
  • เสน่ห์ของการติดตามแบบเรียลไทม์
    • เมื่อสวม AirPods แล้วกดปุ่มเริ่ม จำนวนครั้งของการวิดพื้นจะอัปเดตโดยอัตโนมัติ
    • ทำงานได้โดยแทบไม่ต้องมีการโต้ตอบจากผู้ใช้
  • สิ่งที่ได้เรียนรู้จากโปรเจกต์
    • ตอกย้ำความสำคัญของการตรวจสอบตั้งแต่เนิ่น ๆ และการปรับปรุงแบบวนซ้ำ
    • รู้สึกถึงความสนุกและความพึงพอใจจากการสร้างสิ่งที่มีความหมาย
    • ยังมีจุดที่ควรปรับปรุง เช่น UI และการนับการวิดพื้นข้ามหลายวัน
    • เพิ่ม audio feedback ผ่าน AirPods เพื่อยกระดับประสบการณ์ผู้ใช้นอกเหนือจากอินเทอร์เฟซแบบภาพ
  • บทสรุป
    • พัฒนาแอปภายใน 24 ชั่วโมงที่ผสาน Core Motion, SwiftUI และ AI เพื่อเพิ่มมิติใหม่ให้กับการติดตามฟิตเนส
    • ความท้าทายสำคัญคือการคิดว่าจะนำเทคโนโลยีใหม่ไปใช้แก้ปัญหาในชีวิตประจำวันได้อย่างไร

2 ความคิดเห็น

 
ing03201 2024-05-13

พอมาคิดดูอีกที Galaxy Watch ที่นับจำนวนครั้งของ 3 ท่าหลักได้เนี่ย สุดยอดจริง ๆ

 
jooyh1021 2024-05-13

เมื่อหลายปีก่อนผมเคยทำแอปชาเลนจ์วิดพื้นชื่อ Thirty ที่ใช้เซ็นเซอร์ระยะใกล้ของ iPhone อยู่เหมือนกัน แต่ดูเหมือนว่าจะมีวิธีทำกับ AirPods ได้ด้วยนะครับ.. รู้สึกว่าความแม่นยำของเซ็นเซอร์ระยะใกล้น่าจะลดลงไปบ้างหลังจากเพิ่ม Dynamic Island เศร้า