Tăng tốc khi thiết bị nghiêng


13

Tôi hiện đang làm việc trên thiết bị sử dụng gia tốc kế 3D luôn bật (sử dụng tỷ lệ + -2g) và con quay hồi chuyển 3D (sử dụng thang đo + -250g).

Tôi có thể đọc mọi vectơ có thể (X, Y, Z) và gia tốc của chúng (g) và tốc độ góc (dps) và cả góc mà thiết bị hiện đang ở. Nhưng vấn đề của tôi là khi thiết bị nghiêng (0g khi không nghiêng), gia tốc nằm trong khoảng (xuống) 0g -> - 1g hoặc giữa (hướng lên) 0g-> 1g tùy thuộc vào góc của thiết bị hiện tại. Dưới đây là hình ảnh hy vọng sẽ xóa ý tưởng.

Hy vọng điều này sẽ giúp

Thiết bị sẽ được đặt trong xe hơi và nên đo gia tốc khi xe chạy chậm (phanh). Tuy nhiên, nếu thiết bị đã nghiêng, gia tốc kế sẽ đo một số gia tốc gây ra độ nghiêng khiến cho thiết bị có thực sự tăng tốc hay đó chỉ là độ nghiêng gây ra gia tốc.

X và Y -Axis tạo ra 0g và trục Z là 1g khi thiết bị không có độ nghiêng và nằm trên bề mặt phẳng. Độ nghiêng làm cho việc đọc trục X đi về hướng 1g nếu độ nghiêng hướng lên và -1g khi đi xuống. Đạt + -1g khi thiết bị ở độ 90 * so với vị trí ban đầu

Tôi đã suy nghĩ làm thế nào để loại bỏ khả năng tăng tốc mà độ nghiêng gây ra và chỉ đo gia tốc thực sự của thiết bị nhưng không thể nghĩ ra cách giải quyết vấn đề này với dữ liệu sau mà tôi có thể tạo ra.

Về cơ bản tôi nghĩ rằng nếu tôi chỉ có thể đo gia tốc trục X (hình ảnh) ngay cả khi cảm biến nghiêng như trong ảnh.

Hy vọng rằng thông điệp này không quá khó hiểu vì kỹ năng tiếng Anh của tôi và cách tôi đang cố gắng giải thích vấn đề của mình.


2
Tại sao bạn không đo khi không có gia tốc thú vị nào xảy ra và sử dụng nó làm điểm so sánh?
PlasmaHH

Tôi nghĩ rằng nó sẽ không làm việc. Nếu thiết bị hoàn toàn vẫn là trục X và Y là 0g và trục Z 1g. Nghiêng khiến đọc trục X là từ -1g đến 1g tùy theo độ nghiêng, như tôi đã nêu. Việc phanh khiến giá trị đo trục X giảm (gia tốc âm nên xe đang giảm tốc). Nếu thiết bị đã được ví dụ nghiêng xuống, vậy đó là khoảng 0g - (-1g), làm thế nào tôi có thể nói rằng đây không phải là gia tốc do phanh?
jumbojohn

Tại sao bạn không tính tổng gia tốc của ba trục thay vì chỉ trục Y? Tôi nghĩ đó là điều cơ bản để xem xét cả ba trục phải không!? Một cái gì đó như thế này
charansai

LSM6DSM không có từ kế. bạn đã nhận được thông tin này từ đâu? Tôi nghĩ bạn trên thực tế đang sử dụng hội đồng quản trị X-Nucleo-IKS01A1 từ ST, trong đó có cả LSM6DSM Gyro / gia tốc một LIS3MDL từ kế.
MrGerber

@MrGerber Cảm ơn bạn đã nhận thấy điều đó. Đó là xấu của tôi khi đọc sai bảng dữ liệu của cảm biến.
jumbojohn

Câu trả lời:


18

Chỉ có một bản phác thảo của một giải pháp.

Hãy xem xét tất cả 3 trục.

Gia tốc do trọng lực, bất kể độ nghiêng, sẽ luôn là 1G, như một tổng vectơ của X, Y, Z, bất kể độ nghiêng là gì. Bạn có thể hình dung gia tốc khi nghỉ hoặc chuyển động đều như một điểm trên quả cầu có bán kính 1G. (Nếu bạn nằm ngang hoàn toàn, điểm đó sẽ là (0, 0, -1) tức là ngay bên dưới bạn).

Gia tốc do phanh sẽ làm biến dạng quả cầu; tổng vectơ của X, Y, Z sẽ không còn là 1G.

Vì thế

Một= =X2+Y2+Z2

Một

MộtMột

Trừ khi bạn cũng đang quay hoặc trượt, vì vậy bạn cần chắc chắn đầu vào từ vô lăng và ABS; điều đó trở thành một vấn đề tổng hợp dữ liệu. Cách tiếp cận này sẽ cung cấp một ước tính của gia tốc. Để kiểm tra vệ sinh và tinh chỉnh ước tính đó, hãy kết hợp nó với các nguồn dữ liệu khác (cũng không đáng tin cậy), như trong câu trả lời của Phil Frost, sử dụng bộ lọc Kalman.


Trên thực tế tôi chưa bao giờ làm việc với gia tốc kế / con quay hồi chuyển trước đây vì vậy bức tranh lớn không hoàn toàn rõ ràng về cách thức những thứ này hoạt động và toán học không phải là một trong những kỹ năng mạnh nhất của tôi vì vậy tôi sẽ đánh giá cao những lời khuyên / làm rõ, cảm ơn.
jumbojohn

Trong khi chính xác, tôi có một sự nghi ngờ mạnh mẽ rằng các lề lỗi sẽ rất quan trọng. Ngoài ra, đừng quên gia tốc dọc sẽ làm biến dạng hình cầu (ví dụ như va chạm tốc độ, ổ gà), do đó bạn có thể cần phải giải quyết vấn đề đó tùy thuộc vào ứng dụng.
Chris H

Nhưng trọng lực không phải là không đổi nếu bạn nhìn đủ cứng . Trong khi con đường cao nhất ở Mỹ chỉ giảm $ g $ khoảng 0,1%, thì việc đi từ cực đến xích đạo tạo ra sự khác biệt 0,5%. Địa chất cũng có thể tạo ra sự khác biệt của thứ tự cường độ này . Có lẽ không phải là người thay đổi trò chơi nhưng đừng bỏ qua việc hiệu chuẩn
Chris H

Bạn chỉ cần sửa đổi bán kính của quả cầu G theo vị trí của bạn hoặc đo nó trước khi bật động cơ; đó không phải là vấn đề Tôi đồng ý rằng những va chạm có lẽ cần phải được xử lý cùng với trượt và lái.
Brian Drumond

Hiệu chỉnh trước khi khởi động động cơ là loại điều tôi đã suy nghĩ. Việc hiệu chỉnh đã được nhanh chóng mặc dù nếu người xây dựng không phải là người dùng cuối.
Chris H

9

Sai lầm chính của bạn là không coi gia tốc là một vectơ duy nhất. Khi xe ở trạng thái nghỉ, vectơ đó sẽ luôn là 1 g trở lên. Đừng chỉ nhìn vào thành phần X của dữ liệu gia tốc thô. Làm toán vectơ thực.

Nhưng vấn đề của tôi là khi thiết bị nghiêng (0g khi không nghiêng), gia tốc nằm trong khoảng (xuống) 0g -> - 1g hoặc giữa (trở lên) 0g-> 1g.

Không. Đây là điểm. Những gì bạn đang nói có thể đúng với thành phần X của đầu ra gia tốc, nhưng nó không đúng với khả năng tăng tốc khi xe nghỉ ngơi.

Gia tốc đo lý tưởng sẽ luôn là gia tốc thực tế của xe (so với trái đất), cộng với gia tốc 1 g do trọng lực. Cái sau luôn theo hướng lên. Nếu bạn biết định hướng của xe, thì bạn có thể trừ đi 1 g này do trọng lực để tìm gia tốc mà bạn thực sự đang tìm kiếm.

Lưu ý rằng có lỗi đáng kể trong các bài đọc như vậy, đặc biệt là từ các cảm biến MEMS giá rẻ. Mặc dù bạn có thể có được một ý tưởng tốt về các sự kiện ngắn hạn như tăng tốc cứng hoặc phanh cứng, dữ liệu này không đủ tốt để thực hiện điều hướng quán tính trong hơn một vài giây.


Gia tốc (được đo) do trọng lực có theo hướng "lên" không? Như trong, việc đọc bạn sẽ nhận được từ thiết bị khi nghỉ ngơi trong lực hấp dẫn của Trái đất sẽ giống như bạn đi ra ngoài bất kỳ trường hấp dẫn nào nhưng đang tăng tốc theo hướng "lên" của thiết bị?
psmears

@psmears: Vâng, bạn nói đúng. Lực hướng xuống, nhưng gia tốc rõ ràng là hướng lên. Đã sửa.
Olin Lathrop

5

Như các câu trả lời khác đã nêu, gia tốc kế cung cấp một vectơ ba chiều là tổng trọng lực và gia tốc khác trên xe do động cơ, phanh hoặc các lực khác tác dụng lên xe. Mục tiêu của bạn sau đó là trừ đi gia tốc trọng trường từ đầu ra của gia tốc để tìm các lực còn lại.

Để có độ chính xác tốt nhất, bạn không thể cho rằng trọng lực luôn "giảm" so với gia tốc kế. Ví dụ, chiếc xe có thể ở trên một ngọn đồi. Tất cả các tính toán của bạn phải được thực hiện với toán học vectơ ba chiều và bạn phải có một số ước tính về hướng của xe để bạn biết hướng của vectơ trọng lực để trừ.

Một bộ lọc Kalman là một cách tiếp cận phổ biến ở đây. Ý tưởng là lấy tất cả dữ liệu bạn có có thể thay đổi hướng của xe, sau đó thực hiện trung bình các phép đo, kết hợp với những gì bạn biết về vật lý hoạt động trên xe, để đi đến ước tính xác suất của định hướng mới của xe và cách nào là "xuống".

Bạn càng có nhiều dữ liệu và bạn có thể mô hình hóa vật lý của xe càng chính xác, ước tính này càng chính xác.

Ví dụ, nếu bạn có một con quay hồi chuyển và bạn đo chiếc xe đang lao lên, bạn có thể dự đoán vectơ trọng lực sẽ quay về phía sau xe. Trong thời gian ngắn, giả sử khi chiếc xe vừa mới bắt đầu đi lên một ngọn đồi, điều này có thể giúp vectơ trọng lực nhanh chóng đảm nhận hướng chính xác.

Bạn cũng có thể cho rằng chiếc xe trung bình sẽ không phanh hoặc tăng tốc. Do đó, một đầu ra được lọc thông thấp của gia tốc kế có thể đưa vào ước tính hướng "xuống" là hướng nào. Điều này cung cấp một phép đo dài hạn không bị trôi theo quán tính.

Kết hợp dữ liệu từ gia tốc kế và con quay hồi chuyển để ước tính hướng trọng lực, do đó cung cấp ước tính chính xác hơn so với chỉ đo.

Bạn có thể kết hợp thêm những gì bạn biết về phong bì vận hành có thể có của chiếc xe. Ví dụ, chiếc xe không thể lái lên hoặc xuống đồi quá dốc, vì vậy khi gia tốc kế chỉ ra những góc cực đoan như vậy, bạn có thể cân nó ít hơn, giả sử phần lớn sản lượng của nó là do phanh hoặc động cơ, không phải do trọng lực.

Bạn biết nếu người lái nhấn phanh, điều này sẽ di chuyển vectơ gia tốc và bạn có thể trừ điều này khỏi thành phần "xuống" ước tính.

Hoặc nếu bạn có GPS và dữ liệu bản đồ, bạn có thể kết hợp ước tính độ dốc của xe dựa trên vị trí. Nếu bạn có dữ liệu chính xác cao, bạn có thể biết chính xác chiếc xe đang ở trên đồi nào. Nếu bạn chỉ có dữ liệu chính xác thấp, điều này vẫn có thể hữu ích. Ví dụ, nếu chiếc xe ở Kansas, đồi là không thể. Nếu xe ở San Francisco, đồi có nhiều khả năng và bạn có thể cho gia tốc kế giảm trọng lượng.

Nếu bạn có dữ liệu về mức tiêu thụ nhiên liệu và tốc độ, biết rằng sẽ tiêu thụ nhiều nhiên liệu hơn khi đi lên dốc, bạn có thể sử dụng thông tin này để ước tính chiếc xe được nâng lên hoặc xuống dựa trên hiệu quả nhiên liệu.

Và như thế. Bạn càng biết nhiều, ước tính của bạn càng tốt.


3

Bạn sẽ cần một thuật toán nhiệt hạch và sử dụng cảm biến gia tốc 3D, 3D-Gyro và 3D-Magnetic. Với thuật toán nhiệt hạch này, bạn có được thái độ, trọng lực trái đất giúp tham chiếu để phát hiện đường chân trời - góc nghiêng / ngáp / cuộn. Hai cảm biến mag / gyro khác giúp lọc chuyển động. Khi xe bạn cũng sẽ rẽ trái / phải, .. lực ly tâm sẽ được thêm vào. Khi bạn có thái độ, sau đó bạn có thể trừ vectơ hấp dẫn và tháo rời gia tốc kết quả ở cả ba trục.


3

Là một cách tiếp cận rất cơ bản, bạn có thể sử dụng bộ lọc thông cao để loại bỏ phần không đổi của gia tốc (tương ứng với trọng lực) và giữ phần biến đổi trong đó là do động lực học của xe. Giả sửraw là một vectơ chứa các phép đo X, Y và Z của bạn và acclà gia tốc xe không có trọng lực. Sau đó

void correct_for_gravity(float *raw, float *acc)
{
   const float k = 0.9;
   static float gravity[3];

   gravity[0] = k * gravity[0] + (1 - k) * raw[0];
   gravity[1] = k * gravity[1] + (1 - k) * raw[1];
   gravity[2] = k * gravity[2] + (1 - k) * raw[2];

   acc[0] = raw[0] - gravity[0];
   acc[1] = raw[1] - gravity[1];
   acc[2] = raw[2] - gravity[2];
}

Các thành phần riêng lẻ accvẫn bị ảnh hưởng bởi độ nghiêng, nhưng chỉ tiêu vectơ không phải là:

norm_acc = sqrt(acc[0]*acc[0] + acc[1]*acc[1] + acc[2]*acc[2]);

Tất nhiên, phương pháp này không chính xác lắm, đặc biệt nếu độ nghiêng thay đổi với tốc độ cao. Đây là về chừng nào toán học ngây thơ có được bạn. Nếu bạn cần độ chính xác tốt hơn, hãy tìm hiểu cách sử dụng bộ lọc Kalman.


1

Câu trả lời nằm trong định nghĩa chính xác của "làm chậm" .

Từ câu hỏi của bạn:

Thiết bị sẽ đặt trong xe hơi và nên đo gia tốc khi xe chạy chậm (phanh).

Tuy nhiên, giảm tốc độ không bằng phanh . Có hai định nghĩa có thể:

  1. Tốc độ của xe so với mặt đất đang giảm.
  2. Hệ thống phanh xe đang được áp dụng.

Sự khác biệt này rất có ý nghĩa trong việc nâng cấp và hạ cấp. Trong tình trạng xuống dốc, tốc độ của xe sẽ tăng lên nếu không áp dụng phanh. Và trong tình trạng nóng lên, tốc độ có thể chậm lại ngay cả khi không phanh.

Hóa ra việc phát hiện 1. khó khăn hơn đáng kể so với 2. Hãy xác định các trục có liên quan đến hướng xe: X: hướng trước-sau, Y: hướng trái-phải, Z: hướng lên xuống. Tất cả các trục thẳng hàng với xe.

Các giải pháp:

  1. Đối với định nghĩa 1., cách tiếp cận tốt nhất là giả định rằng tốc độ của xe chỉ có thể thay đổi theo hướng X. Khi đó gia tốc đo được a = g + v trong đó g là gia tốc do lực chống lại trọng lực và v là gia tốc do thay đổi vận tốc. Bạn có thể giả sử chiều dài của g luôn bằng 9,8 m / s² và v luôn theo hướng X. Vì vậy (g_x + v_x, g_y, g_z) = (a_x, a_y, a_z) , cung cấp cho v_x = a_x - sqrt ((9,8m / s²) ² - g_y² - g_z²) . Điều này sẽ chỉ hoạt động miễn là | v | nhỏ hơn | g |hay nói cách khác, gia tốc do động cơ hoặc phanh nhỏ hơn 1G. Giả định khá an toàn trừ khi xe của bạn có bộ tăng tốc tên lửa.

  2. Đối với định nghĩa 2., bạn chỉ có thể đọc trực tiếp trục x. Nếu xe không tăng tốc hoặc phanh, lực chống trọng lực duy nhất tác dụng lên nó là lực bình thường của mặt đường. Lực này luôn luôn theo hướng z so với xe hơi, vì vậy nó không thay đổi cách đọc trục x. Phanh và động cơ chỉ hoạt động theo hướng x, và sẽ được nhìn thấy trực tiếp trong bài đọc này.


0

Có vẻ như bạn đang sử dụng thiết bị "quá mức" cho ứng dụng của mình. Bạn nên sử dụng một thiết bị chỉ đo gia tốc x & y, theo cách này, độ nghiêng sẽ không có tác dụng có thể đo lường được. Mặc dù tổng gia tốc có thể nhỏ hơn hoặc lớn hơn, do độ nghiêng, thiết bị sẽ chỉ đo các thành phần x & y của gia tốc trên mặt phẳng mà xe đang bật.

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.