ฉันสามารถใช้ FFT เพื่อตีความท่าทางของ accelerometer ได้หรือไม่


10

ฉันต้องการตรวจจับท่าทางสองแบบที่เกิดขึ้นเมื่อดูข้อมูล accelerometer นี่คือการทำงาน (สั้น ๆ เท่าที่ฉันสามารถทำได้):

ให้บอกว่า iPhone กำลังแกว่งไปมาในขณะที่หงายหน้าอยู่ ผู้ใช้สามารถทำการแกว่งหนึ่งครั้ง (ไปข้างหน้าหรือข้างหลังท่าทางหนึ่ง) หรือการแกว่งอย่างต่อเนื่องในระยะเวลาใดก็ได้ (ท่าทางที่สอง)

ปัจจุบันรหัสของฉันเก็บรักษารายการข้อมูล accelerometer (แกน y) ของอุปกรณ์จาก 50 เฟรมล่าสุด แต่ละเฟรมข้อมูลนี้ใส่ผ่านอัลกอริทึม FFT (อันนี้http://goo.gl/yi3mn ) จากนั้นฉันพยายามตีความโดเมนความถี่ที่กำหนด ฉันสังเกตุเห็นถึงความสัมพันธ์ที่แน่นแฟ้นระหว่างความเร็วของออสซิลเลชันและพลังของช่วงความถี่กลางถึงต่ำ

ปัญหาคือฉันต้องตรวจจับ (ในแบบเรียลไทม์เมื่อการเคลื่อนไหวทำให้บางสิ่งบางอย่างบนหน้าจอ) ไม่ว่าการสั่นที่เพิ่งเสร็จสิ้นนั้นจะเป็นแบบเอกพจน์หรืออย่างใดอย่างหนึ่งที่ยังคงสั่นอีกทิศทางหนึ่งในทิศทางตรงกันข้าม ที่นี่ฉันควรชี้ให้เห็นว่า accelerometers ทำงานกับแผ่นความดัน เมื่อความผันผวนหยุดข้อมูลอินพุตจะแสดงค่าตรงข้ามจากเมื่อมีการดำเนินการความผันผวน สิ่งนี้ทำให้เป็นการยากที่จะเห็นความแตกต่างที่ชัดเจนระหว่างการเคลื่อนที่ไปข้างหน้าเดี่ยวและการเคลื่อนที่ไปข้างหน้าสองครั้งจากนั้นเคลื่อนที่ไปข้างหลังถอยหลัง

ใครสามารถแนะนำวิธีที่ฉันอาจใช้ FFT เพื่อถอดรหัสค่าขนาดที่ถูกต้อง (หรือสิ่งอื่นที่มีประโยชน์) ที่ฉันสามารถใช้เพื่อบอกความแตกต่างระหว่างท่าทางที่อธิบายข้างต้น

ฉันบันทึกข้อมูลที่ฉันใช้กับไฟล์ข้อความ เป็นข้อมูลดิบ (ค่า g-force) ตามแนวแกน y ของอินพุตมาตรวัดความเร่ง

http://pastebin.ca/2108123แสดงข้อมูลสำหรับออสซิลเลชัน 2 เอกพจน์ (ฉันถืออุปกรณ์ไว้ที่จุดเริ่มต้นจุดจบและระหว่างสองออสซิลเลชัน)

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ: อัปโหลดข้อมูลดิบที่มีการแกว่ง 20 ครั้งแล้ว แต่ยังไม่ได้วางแผน http://pastebin.ca/2108387แสดงข้อมูลสำหรับการแกว่งอย่างต่อเนื่อง 20 ครั้ง (ฉันถืออุปกรณ์ไว้ที่จุดเริ่มต้นและสิ้นสุด)

ป้อนคำอธิบายรูปภาพที่นี่


การไม่เห็นข้อมูลด้วยตัวเองความประทับใจแรกของฉันคือว่านี่ไม่ใช่แอปพลิเคชันที่ดีสำหรับ FFT คุณมีข้อมูลบางส่วนที่คุณสามารถโพสต์ได้ไม่ว่าจะเป็นรูปแบบดิบหรือเป็นพล็อต
Jason R

สวัสดีขอบคุณสำหรับคำติชม ไฟล์ที่แสดงแต่ละค่าตามลำดับเวลาจะยอมรับได้ด้วยตัวคั่น ',' หรือไม่ ฉันได้รับประมาณ 60 ค่าต่อวินาที ฉันสงสัยว่านี่อาจจะไม่ใช่แอปพลิเคชันที่ดีเช่นกัน บางทีเราสามารถทำงานกับข้อมูลบางส่วนได้
rykardo

2
หากคุณโพสต์ข้อมูลดิบอาจเป็นไปได้ว่ามีใครบางคนสามารถแปลงเป็นข้อมูลพล็อตและแก้ไขโพสต์ของคุณได้
Jason R

เยี่ยมมาก จะอัปโหลดในไม่ช้า
rykardo

มันใช้เวลานานกว่าที่ฉันคาดไว้ ฉันใช้งานโครงการด้วย Unity ซึ่งสามารถรับข้อมูลอินพุตจากอุปกรณ์ที่ 60 เฟรม / วินาทีเท่านั้น ซึ่งหมายความว่าฉันไม่สามารถมีอัตราตัวอย่างสูง แต่ก็ยังคง นี่คือสิ่งที่คุณหมายถึงคำแนะนำของคุณ?
rykardo

คำตอบ:


2

ดูข้อมูลที่ฉันไม่เห็นว่าทำไมคุณต้องการใช้ FFT เพื่อจุดประสงค์นี้ (ฉันอาจผิด) ช่วยบอกว่าคุณต้องการตรวจจับการเคลื่อนไหวเดียวหรือหลายครั้งตามชุดข้อมูลนี้ (ซึ่งคุณได้แนบมา) วิธีการที่ฉันจะดู

  1. บางสิ่งบางอย่างในบรรทัดอัตราการเปลี่ยนแปลงของค่าสัมบูรณ์ อนุพันธ์อันดับแรกจะทำอย่างที่ฉันเดา
  2. แปลงเวฟเล็ตอาจ? ฉันไม่สามารถอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับยูทิลิตี้ได้จนกว่าฉันจะรู้ว่าคุณต้องการทราบตำแหน่งของยอดเขาหรือไม่

หากสิ่งเดียวที่คุณต้องการตรวจจับคือการเปรียบเทียบแบบเดี่ยวและหลายครั้งการสั่นสะเทือนแล้ว FFT คือในความคิดของฉันไม่ใช่ตัวเลือกที่ดีสำหรับการวิเคราะห์


ขอบคุณสำหรับความคิดเห็น! เพื่อนแนะนำ FFT อาจเป็นวิธีที่จะไปก่อนที่ฉันไม่เคยใช้มาก่อน สิ่งที่ฉันต้องตรวจสอบคือถ้ามีการแกว่งตัวใหม่เริ่มต้นเมื่อสิ้นสุดการสั่นแต่ละครั้งหรือไม่ แปลงข้างต้นควรเปิดเผยว่าทำไมจึงเป็นเรื่องยาก ฉันคิดว่าฉันสามารถใช้อัลกอริธึมขนาดใหญ่ได้ แต่นี่เป็นเรื่องยุ่งยากเพราะพลัง / ความเร็วของการสั่นจะแตกต่างกันไปตามผู้ใช้
rykardo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.