2012-05-08 12 views
6

Tôi đang cố gắng xây dựng ứng dụng dựa trên Kinect và iPhone.Cách diễn giải các bài đọc gia tốc từ iPhone

Tôi đang cố gắng tính toán khả năng tăng tốc của bàn tay theo thời gian trên mỗi trục X Y và Z dựa trên quỹ đạo được quay trở lại bởi kinect. Về cơ bản, tôi chọn khoảng thời gian chuẩn là 0,5 giây hoặc 15 khung hình (dt) và 3 điểm, (x0, x1x2) theo thời gian được phân cách bằng 0,5 giây. Đầu tiên tôi nên đề cập rằng vị trí của 3 điểm được đề cập trong mét. Bằng cách sử dụng những điểm này tôi đang tính toán hai tốc độ (v0 = (x1 - x0)/dtv1 = (x2 - x1)/dt). Cuối cùng, bằng cách sử dụng các tốc độ này, tôi tính toán gia tốc giữa x1x2acc = (v1 - v0)/dt.

Tôi lặp lại các tính toán này ở mỗi khung và tôi nhận được một loạt các gia tốc.

Như tôi đã nói, tôi cũng có một chiếc iPhone và tôi muốn thấy trong tay mình có chiếc iPhone, tay trái hoặc tay phải. Tôi muốn làm điều này bằng cách cố gắng để phù hợp với sự tăng tốc của bàn tay của tôi với sự gia tốc của iPhone được tổ chức ở đúng vị trí để tôi có cùng một hệ thống trục.

Vấn đề duy nhất là có sự khác biệt lớn giữa tăng tốc và tăng tốc của điện thoại.

Đọc điện thoại acceelaration là một nơi nào đó giữa -2 và 2 cho mỗi trục, trong khi tôi là giữa -10 và 10. Làm thế nào tôi nên giải thích gia tốc iPhone để có được các biện pháp tương tự để tôi trong mét/giây?

+0

Về cơ bản, tôi đã tính Sai số bình phương giữa các bài đọc của iPhone trong một khoảng thời gian nhất định và gia tốc Kinect. Tuy nhiên, với quy mô khác nhau của các giá trị, kết quả thu được, không phải là đáng tin cậy. – Simon

+0

Vâng có ý nghĩa –

Trả lời

2

Dữ liệu gia tốc kế trên iPhone được cung cấp theo đơn vị g-lực. Trục x được căn chỉnh với cạnh trên của màn hình điện thoại, trục y được căn chỉnh với cạnh trái và trục z thẳng ra khỏi màn hình về phía bạn nếu bạn đang nhìn vào nó. Vì vậy, với điện thoại của bạn nghỉ ngơi trên bàn mặt lên, bạn sẽ nhận được giá trị của (0, 0, -1) cho x, y và z trục tương ứng. Nếu bạn thả điện thoại xuống, trong khi rơi tự do, bạn sẽ nhận được (0, 0, 0).

Giả sử bạn giữ điện thoại thẳng hàng như thế này khi bạn di chuyển nó xung quanh, để có được sự tăng tốc 3-Dimensional tính bằng mét trên giây bình phương:

- (void)accelerometer:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration 
{ 
    float g = 9.80665f; 
    float x = acceleration.x * g; 
    float y = acceleration.y * g; 
    float z = (acceleration.z + 1.0f) * g; 
    // x, y, and z now hold the absolute acceleration in ms^-2 
} 

Chú ý rằng bạn phải loại trừ tác động của lực hấp dẫn của trái đất để để tăng tốc tương đối so với phòng khách của bạn thay vì tương đối với không gian 4 chiều.

Cũng lưu ý rằng gia tốc kế của iPhone khá ồn ào và những giá trị này xung quanh ngay cả khi điện thoại tĩnh, vì vậy bạn sẽ muốn áp dụng một số làm mịn. Tuy nhiên, nếu bạn sử dụng kỹ thuật tương tự với những gì bạn đang làm với dữ liệu vị trí, hãy đặt các giá trị vào một mảng mỗi khung để có được mức trung bình trong 0,5 giây cuối cùng, điều này sẽ làm mịn dữ liệu cho bạn.

Một điều cần lưu ý nữa là gia tốc kế của iPhone đạt đỉnh điểm vào khoảng 2.3g. Những g-lực lượng không khó đạt được (ví dụ nếu bạn vỗ tay vào nhau) để bạn có thể vượt quá chúng và kỹ thuật tích lũy dữ liệu sẽ không đáng tin cậy lắm.