2015-03-03 28 views
5

Tôi muốn phát hiện mẫu chuyển động cụ thể trên điện thoại di động Android, ví dụ: nếu tôi làm năm đứng.Phát hiện mẫu chuyển động trên thiết bị Android

[Ghi chú:. Tôi hiện đang phát hiện các chuyển động nhưng sự chuyển động trong tất cả các hướng là như nhau]

Những gì tôi cần là:

  1. tôi cần phải phân biệt các chuyển động đi xuống, đi lên, về phía trước và lạc hậu.
  2. Tôi cần tìm chiều cao của điện thoại di động từ mặt đất (và chiều cao của người cầm nó).

Có dự án mẫu nào có phát hiện chuyển động mẫu được triển khai không?

+1

@ NSQuamber.java –

Trả lời

2

Điều đó là không thể. Bạn có thể nhận ra xuống và lên trên so sánh gia tốc với lực hấp dẫn chính nhưng làm thế nào để bạn biết là điện thoại của bạn là trong túi sau khi bạn tăng hoặc chỉ trong bàn tay vẫy tay của bạn khi bạn nói xin chào? Nếu 5 đứng lên hoặc 5 địa ngục? Chuyển tiếp và lạc hậu thậm chí còn khó lường hơn. Những gì được chuyển tiếp cho điện thoại lộn ngược? Điều gì sẽ xảy ra nếu chuyển tiếp từ góc độ điện thoại? Và mặt đất cũng như chiều cao hoàn toàn không đo được. Điện thoại sẽ di chuyển và tạo ra các gia tốc theo cách chính xác cho người lùn hay khổng lồ - nó phụ thuộc nhiều hơn vào hành vi của con người hoặc bất động trên chiều cao.

+1

Tôi không đồng ý. Nó không hoàn hảo - nhưng điều đó đúng với nhiều lĩnh vực của CS. Do tính chính xác của các cảm biến hiện nay, việc xây dựng mô hình để đoán xem người mặc đang làm gì không phải là không hợp lý. Ví dụ, lĩnh vực/ngành công nghiệp mới nổi của Wireless Health tập trung vào các vấn đề như thế này. Tôi đã làm việc một lần với một giáo sư sử dụng cảm biến - không giống như những người trong OPs điện thoại - trên các nạn nhân đột quỵ, có thể giúp chẩn đoán các vấn đề tiềm năng từ đi bộ dáng đi. Trong trường hợp của OP, chắc chắn, bạn sẽ nhận được các kết quả dương tính giả, nhưng sẽ không khó để nói giữa một làn sóng và một stand-up bằng cách nhìn vào dữ liệu cảm biến. –

6

Điều này là không thể, nhưng nó có thể không phải là cực kỳ chính xác, cho rằng độ chính xác của gia tốc và con quay hồi chuyển trong điện thoại đã được cải thiện rất nhiều.

gì ứng dụng của bạn sẽ làm được lấy tư liệu cảm biến, và làm một regression analysis.

1) Bạn sẽ cần phải xây dựng một mô hình dữ liệu mà bạn phân loại là năm ngồi và đứng. Điều này có thể được thực hiện bằng cách yêu cầu người dùng làm năm ngồi và đứng, hoặc bằng cách tải các ứng dụng với một mô hình tinh chỉnh hơn từ dữ liệu mà bạn đã thu thập trước đó. Có thể có các thủ thuật bạn có thể làm, chẳng hạn như tải một số mô hình người có chiều cao khác nhau và yêu cầu người dùng gửi chiều cao của riêng họ trong ứng dụng để sử dụng mô hình tốt nhất.

2) Khi chạy, ứng dụng của bạn sẽ cố gắng để phù hợp với data from the sensors (Android có great libraries for this), với mô hình mà bạn đã thực hiện. Hy vọng rằng, khi người dùng thực hiện năm sit-stand, anh ta sẽ tạo ra một tập hợp các dữ liệu chuyển động tương tự với định nghĩa của bạn về năm sit-stand mà thuật toán của bạn chấp nhận nó như vậy.

Rất nhiều công việc ở đây là lắp ráp và phân loại mô hình của bạn và chơi với nó cho đến khi bạn có được độ chính xác chấp nhận được. Tập trung vào những gì làm cho một độc đáo độc lập với các chuyển động lên xuống khác - Ví dụ, có thể có một dấu hiệu mở rộng chân trong dữ liệu, tiếp theo là một hình dạng khác để thẳng lên hoàn toàn. Hoặc, nếu bạn mong đợi điện thoại ở trong túi, bạn có thể không có nhiều chuyển động quay, vì vậy bạn có thể từ chối các bộ thử nghiệm đã đăng ký rất nhiều thay đổi từ con quay hồi chuyển.

1

Tôi không nhất thiết phải đồng ý với phản hồi của Alex. Điều này là có thể (mặc dù có thể không chính xác như bạn muốn) bằng cách sử dụng gia tốc, xoay thiết bị và ALOT của thử nghiệm/lỗi và khai thác dữ liệu.

Cách tôi thấy rằng điều này có thể hoạt động là xác định một cách cụ thể mà người dùng giữ thiết bị (hoặc thiết bị bị khóa và định vị trên cơ thể người dùng). Khi họ đi qua các chuyển động, định hướng kết hợp với gia tốc và thời gian sẽ xác định loại chuyển động nào đang được thực hiện.Bạn sẽ cần sử dụng các đối tượng lớp như OrientationEventListener, SensorEventListener, SensorManager, Sensor và các bộ hẹn giờ khác nhau, ví dụ: Runnables hoặc TimerTasks.

Từ đó, bạn cần thu thập nhiều dữ liệu. Quan sát, ghi lại và nghiên cứu những con số để thực hiện các hành động cụ thể, và sau đó đưa ra một loạt các giá trị xác định từng chuyển động và chuyển động phụ. Những gì tôi có nghĩa là theo tiểu phong trào được, có thể một situp có năm phần:

1) vị trí nghỉ ngơi nơi định hướng điện thoại là x có giá trị vào thời điểm x

2) Situp bắt đầu nơi định hướng điện thoại là hàng loạt các y- giá trị lúc y (lớn hơn x)

3) Situp là ở vị trí cuối cùng, nơi định hướng điện thoại là phạm vi của z-giá trị vào thời điểm z (lớn hơn y)

4) Situp là trong phục hồi (người dùng đang rơi xuống sàn), nơi định hướng điện thoại có phạm vi giá trị y tại thời điểm v (lớn hơn z)

5) Situp trở lại ở vị trí còn lại khi định hướng điện thoại là giá trị x tại thời điểm n (thời gian lớn nhất và cuối cùng)

Thêm gia tốc cho điều này, vì có trường hợp tăng tốc. Ví dụ, giả thuyết của tôi là mọi người thực hiện situp thực tế (các bước 1-3 trong sự cố trên của tôi) với khả năng tăng tốc nhanh hơn khi họ quay trở lại. Nói chung, hầu hết mọi người rơi chậm hơn vì họ không thể nhìn thấy những gì đằng sau họ. Điều đó cũng có thể được sử dụng như một điều kiện bổ sung để xác định hướng của người dùng. Điều này có lẽ không đúng đối với tất cả các trường hợp, tuy nhiên, đó là lý do tại sao khai thác dữ liệu của bạn là cần thiết. Bởi vì tôi cũng có thể đưa ra giả thuyết rằng nếu ai đó đã thực hiện nhiều situps, thì situp cuối cùng sẽ rất chậm và sau đó họ sẽ trở lại vị trí còn lại do kiệt sức. Trong trường hợp này, gia tốc sẽ ngược lại với giả thiết ban đầu của tôi.

Cuối cùng, hãy kiểm tra chuyển động Cảm biến: http://developer.android.com/guide/topics/sensors/sensors_motion.html

Tất cả trong tất cả, nó thực sự là một trò chơi số kết hợp với "guestimation" của riêng bạn. Nhưng bạn có thể ngạc nhiên về hiệu quả hoạt động của nó. Có lẽ (hy vọng) đủ tốt cho mục đích của bạn.

Chúc may mắn!

1

Đó là một chủ đề nghiên cứu và có lẽ tôi đã quá trễ để đăng bài ở đây, nhưng tôi vẫn đang tìm kiếm văn học, vậy thì sao?

Tất cả các loại phương pháp học máy đã được thiết lập về vấn đề này, tôi sẽ đề cập đến một số cách trên đường đi. Andy Ng của MOOC on machine learning cung cấp cho bạn một điểm vào trường và vào Matlab/Octave mà bạn ngay lập tức có thể đặt để thực hành, nó làm sáng tỏ những con quái vật quá ("Hỗ trợ máy vectơ" ... wtf?).

Tôi muốn phát hiện nếu ai đó say rượu vì tăng tốc điện thoại và có thể là góc, do đó tôi đang tán tỉnh các mạng thần kinh cho vấn đề này (chúng tốt cho every issue về cơ bản, nếu bạn có đủ khả năng cho phần cứng), vì Tôi không muốn giả định các mẫu được xác định trước để tìm kiếm.

mẫu

Nhiệm vụ của bạn có thể được tiếp cận dựa trên có vẻ như, một cách tiếp cận áp dụng để phân loại golf play motions, dancing, hành vi every day walking patterns, và hai lần drunk driving detection nơi one địa chỉ các vấn đề của việc tìm kiếm một đường cơ sở cho những gì thực sự là chuyển động theo chiều dọc như trái ngược với mỗi hướng khác, có thể có thể đóng góp để tìm các đường cơ sở bạn cần, như mức mặt đất là gì.

Đó là một bụi cây dày đặc về các khía cạnh và cách tiếp cận, bên dưới chỉ một số chi tiết. Chào mừng bạn đến với Orwellian overkill, pals.

Lim e.a. 2009: Real-time End Point Detection Specialized for Acceleration Signal

Ông & Yin 2009: Activity Recognition from acceleration data Based on Discrete Consine Transform and SVM

Tiêu đề kỳ lạ nhất, rất kỹ thuật và Thụy Sĩ: Dhoble e.a. 2012: Online Spatio-Temporal Pattern Recognition with Evolving Spiking Neural Networks utilising Address Event Representation, Rank Order, and Temporal Spike Learning

Một Hy Lạp, chủ nghĩa khoái lạc, artsy và hài hước nhất, có lẽ là đưa ra một cách tiếp cận tốt để phát hiện say rượu, nếu nó có thể được coi là loại vũ:

Panagiotakis ea: Temporal segmentation and seamless stitching of motion patterns for synthesizing novel animations of periodic dances

này một sử dụng dữ liệu trực quan, nhưng bạn đi qua một cài đặt matlab của một bộ phân loại mạng nơron:

Symeonidis 2000: Hand Gesture Recognition Using Neural Networks

Các vấn đề liên quan