Làm thế nào để phân loại dữ liệu gia tốc?


7

Tôi đang cố gắng phát hiện xem một chiếc xe đã tăng tốc hay phanh bằng cách sử dụng gia tốc kế của iPhone.

Trong hình dưới đây tôi đã vẽ các dữ liệu thu thập được. (Để thu thập dữ liệu, điện thoại được đặt phẳng trong xe đối diện với đỉnh của điện thoại về phía trước).

Vấn đề tôi gặp phải bây giờ là trực quan tôi có thể thấy rõ chiếc xe tăng tốc ở đâu và nó đã phanh ở đâu (xem bên dưới). Nhưng không thể tìm ra cách để làm điều đó một cách lập trình.

Những gì tôi về cơ bản muốn là biết tần suất một chiếc xe đã phanh hoặc tăng tốc trong một cửa sổ thời gian nhất định. (Kích thước cửa sổ khoảng 10-30 giây).

Bất cứ sự giúp đỡ nào cũng được đánh giá cao.

Cảm ơn trước! Tăng tốc |  Phanh xe


Đơn vị trên gì? x-trục
Gilles

Đơn vị của trục x là thời gian. Tôi đã lấy mẫu với 60 Hz. Vì vậy, các giá trị trên trục x chia cho 60 sẽ biểu thị giây.
riik

Được rồi, đó là số lượng mẫu. Một cách sẽ là có được một cửa sổ trượt có kích thước bạn đề xuất và đặt các điều kiện về giá trị trung bình và phương sai của các mẫu được thu thập, nếu cần thêm các điều kiện vào các khoảng không giao nhau. Nhưng nếu bạn thực hiện phân tích mà không có cửa sổ thời gian ngắn, số cạnh tăng của tín hiệu hoạt động (tín hiệu màu xanh) có thể cho bạn biết bạn đã tăng tốc bao nhiêu lần và các cạnh bị vỡ không?
Gilles

1
@PaulR cảm ơn đã làm rõ! Tôi chỉ cập nhật câu hỏi cho phù hợp.
riik

2
OK, nếu bạn sử dụng dữ liệu gia tốc, về nguyên tắc, bạn có thể chỉ sử dụng dấu hiệu của gia tốc (- để phanh, + để tăng tốc). Vấn đề là tiếng ồn. Có lẽ bạn có thể tăng đủ SNR bằng cách sử dụng bộ lọc Savayky Golay .
Matt L.

Câu trả lời:


1

Bạn nên xem xét thực hiện STFT trên tín hiệu gia tốc. Điều này sẽ cho phép bạn hình dung tần số của tín hiệu. Nếu bạn có thể xác định tần số của phanh, bạn sẽ có thể đặt ngưỡng cho tần số phanh cụ thể đó và đếm mỗi lần vượt quá. Bạn cũng sẽ có thể đo thời gian phanh xảy ra.

Làm thế nào bạn đang xử lý tín hiệu của bạn? Matlab và python có chức năng specgram, cho phép bạn xem phanh tần số thực tế. Từ đó bạn sẽ có thể xác định tần số phanh cũng như ngưỡng.


1

Khi phanh được áp dụng, gia tốc dọc theo hướng chuyển động sẽ đảo ngược dấu hiệu. Ví dụ: nếu bạn định vị điện thoại của mình sao cho trục z của máy gia tốc theo hướng trục trọng lực (tức là đối diện với trái đất), thì gia tốc dọc theo trục z là -g. Mặt khác, nếu trục z âm được căn với g, thì trục z của gia tốc kế đo + g. Điều này tương tự như kịch bản của một chiếc xe tăng tốc và phanh, mặc dù cường độ giảm tốc thấp hơn một chút so với tăng tốc. Bạn có thể bắt đầu bằng cách xác định trục tham chiếu là trục g và xác định 2 trục còn lại dựa trên hướng gia tốc tối thiểu và tối đa, sử dụng ma trận xoay. Về cơ bản, bạn thay đổi trục tham chiếu từ tọa độ x, y, z dựa trên hướng của điện thoại sang hệ thống tham chiếu cố định g, a, s (trong đó g là trục trọng lực, a là hướng gia tốc cực đại và trục đứng yên). Bạn cũng có thể sử dụng con quay hồi chuyển để đạt được trục xoay này như được thảo luận trongnày trang. Bạn có thể xem daya gia tốc trong các trục được chuyển đổi, bạn có thể dễ dàng phân loại các vùng tăng tốc và giảm tốc dựa trên tín hiệu từ chỉ một trục bất kể hướng của điện thoại bằng cách tìm kiếm các điểm giao nhau.


1

Bạn nên biết hướng của điện thoại vì dấu hiệu trục phải giống với chuyển động của xe. Giả sử dấu hiệu trục là chính xác, bạn có thể filterđưa tín hiệu gia tốc vào lowpass, để làm sạch tần số cao noisevà sau đó xem dấu hiệu tín hiệu để phát hiện xem có bị đứt khôngmột(tTôi)<0 hoặc tăng tốc một(tTôi)>0.

Bạn nên thử lọc với butterworthmức thấp của lệnh thứ hai hoặc thứ ba với tần suất thấp chẳng hạn10Hz hoặc cũng ít hơn, bạn nên thử một số tần số cắt tìm đồ họa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.