Làm thế nào để sử dụng tứ phân vị để cung cấp vòng lặp ổn định quad quad PID?


9

Tôi đang tạo ra một quad quad. Tôi đã thiết lập một vòng lặp PID để ổn định nó thành một góc Euler nhất định (cao độ và cuộn). Vấn đề phát sinh khi cuộn đạt 90 độ (45 độ trở lên). Các giá trị không còn ý nghĩa nữa, khi nó tiến đến khóa gimbal. Tôi dự định làm cho nó thực hiện các thao tác phức tạp như vòng lặp, v.v., vượt quá giới hạn cuộn 45 độ.

Làm thế nào tôi có thể sử dụng tứ phương để khắc phục vấn đề này? (Tôi nhận được các phần tư từ MPU-9150.) Tôi đã đọc nhiều bài viết về vấn đề của các phần tư, nhưng tất cả chúng đều nói về các phép quay trong phần mềm 3D và xoay quanh hai điểm xoay. Điều này có ý nghĩa rất nhỏ vì tôi không biết số ảo và ma trận.


bạn đã giải quyết vấn đề chưa? Nếu không xin vui lòng cho chúng tôi biết nó đang diễn ra như thế nào, nếu không bạn có thể muốn chấp nhận một trong những câu trả lời.
marcv81

1
@ marcv81 Vâng, hiện tại nó hoạt động khá tốt :) Cảm ơn bạn đã nhắc nhở tôi về việc chấp nhận câu trả lời :)
Bạn của Kim

Tôi rất vui vì nó hoạt động. Nó làm tôi nghĩ đến mã của riêng tôi và cũng sửa một lỗi :)
marcv81

Câu trả lời:


6

Một quad quad chứa (trong số những thứ khác) hai thuật toán riêng biệt và độc lập: thuật toán ước tính thái độ và thuật toán điều khiển.

Thuật toán ước tính thái độ tính toán thông tin về hướng của quad quad: góc lăn, góc nghiêng và góc ngáp.

Thuật toán điều khiển chịu trách nhiệm điều khiển các động cơ sao cho hướng của quad quad phù hợp với những gì phi công (hoặc phần mềm lái tự động) mong đợi. Thuật toán này là những gì sẽ đọc các góc quad quad ước tính (từ thuật toán ước tính thái độ) và thay đổi tốc độ động cơ để cố gắng khớp với các góc mong muốn. PID là một thuật toán điều khiển phù hợp và phổ biến cho các quadcopters.

Khóa Gimbal là một hiện tượng có thể xảy ra trong thuật toán ước tính thái độ. Nó không có gì để làm với thuật toán điều khiển. Vì vậy, bạn không cần ESC, động cơ hoặc cánh quạt để kiểm tra khóa gimbal: bạn có thể sửa đổi mã của mình để hiển thị các góc cuộn, cao độ và ngáp của mình và kiểm tra xem các giá trị chính xác được tính khi bạn di chuyển quad quad của mình theo cách thủ công. Bạn có thể thực hiện điều này với quad quad được nối với máy tính của bạn, thông qua Bluetooth hoặc sử dụng các phương pháp khác tùy thuộc vào nền tảng của bạn.

Nếu các góc được tính toán chính xác, bạn không cần phải lo lắng về tứ phân vị. Nếu chúng không được tính toán chính xác, có thểgiúp bạn. Thuật toán ước tính thái độ sẽ đưa ra 3 góc cho thuật toán điều khiển sử dụng, tuy nhiên, nó có thể sử dụng một biểu diễn bên trong khác như ma trận bậc ba hoặc ma trận 3x3. Trong trường hợp đó, nó vẫn sẽ chuyển đổi thông tin thái độ thành các góc để cung cấp dữ liệu có thể sử dụng cho thuật toán điều khiển. Nói chung, tứ phương là không trực quan nhưng tính toán hiệu quả. Điều này làm cho chúng phù hợp với các nền tảng chậm như Arduino. Ma trận hoặc góc có thể là một lựa chọn dễ dàng hơn cho phần cứng nhanh hơn. Nếu bạn cần tôi giải thích về giải pháp này hay giải pháp khác, xin vui lòng cho tôi biết, nhưng sẽ khá sớm để tôi cung cấp chi tiết ở giai đoạn này vì tôi không tin bạn cần phải thực hiện tứ phương.

Cuối cùng, nếu các góc được tính toán chính xác, cách để tạo ra vòng lặp quad quad của bạn là kiểm soát tốc độ góc thay vì góc. Nếu gậy của bạn đại diện cho góc quad quad thì không có cách nào để làm cho nó thực hiện một vòng lặp đầy đủ: hãy thử hình dung vị trí gậy như các vòng quad quad và bạn nên hiểu tại sao. Tuy nhiên nếu gậy kiểm soát tốc độ góc thì bạn có thể kiểm soát tốc độ vòng lặp.

Chúc may mắn với dự án của bạn!

Lưu ý: Để đơn giản, tôi đã không đề cập đến tùy chọn lý thuyết để thao tác dữ liệu dưới dạng ma trận hoặc bậc bốn cả trong thuật toán ước tính thái độ và thuật toán điều khiển. Tôi chưa bao giờ thấy một quad quad thực hiện các thuật toán như vậy.


Cảm ơn bạn đã trả lời kỹ lưỡng của bạn! Một người làm việc tại InvenSense cho biết, trong hầu hết các ứng dụng, tứ phương dễ dàng hơn và tốt hơn so với góc Euler. Nhìn vào dữ liệu được buộc, có vẻ như có thể sửa một trục để dừng khóa gimbal khi điều này sắp xảy ra.
Bạn của Kim

1
Góc Euler là một lựa chọn kém cho biểu diễn bên trong của định hướng. Chúng đơn giản để hình dung, nhưng rất khó để thao tác chính xác để tránh khóa gimbal. Đệ tứ tốt hơn vì bạn sẽ không chạy vào khóa gimbal, nhưng chúng khó hình dung. Ma trận bằng cách nào đó dễ hình dung hơn so với tứ phương, nhưng không hiệu quả nếu nền tảng của bạn chậm. Quad quadar của tôi sử dụng tứ phương trong nội bộ, nhưng chuyển đổi sang các góc Euler để sử dụng các PID.
marcv81

3

Đầu tiên, tôi nghĩ bạn cần quay lại và xem mã của mình. Khóa gimbal chỉ là vấn đề khi bạn đến rất gần (trong một vài độ) 90. Nếu bạn đang thấy hành vi lạ ở 45 độ thì một cái gì đó khác là nguyên nhân.

Đối với câu hỏi của bạn, tứ phương thường không được sử dụng trực tiếp trong điều khiển PID cơ bản vì chúng có hành vi phức tạp dẫn đến kết quả không trực quan. Thông thường, chúng được chuyển đổi thành các góc Euler và sau đó được sử dụng trong bộ điều khiển PID thông thường hoặc các bộ điều khiển phi tuyến đặc biệt được thiết kế để sử dụng chúng.

Lưu ý rằng đối với các thao tác lặp của bạn, PID thường không phải là bộ điều khiển rất tốt: các mức tăng hoạt động tốt gần di chuột không còn hoạt động tốt ở các góc lớn. Thông thường, khi ai đó muốn thực hiện một vòng lặp, họ sẽ chuyển sang "vòng lặp mở", tức là họ bắt đầu điều khiển dưới sự kiểm soát và sau đó khi họ vượt qua một góc nhất định chỉ cần áp dụng một chuỗi lệnh cố định cho đến khi họ hoàn thành vòng lặp. Chỉ ra một loạt các lệnh cố định sẽ sử dụng là phần khó khăn và thường sử dụng học tăng cường (giống như một cách chính thức để thực hiện thử và sai).


Cảm ơn bạn đã hiểu biết của bạn. Tôi hoàn toàn mới với lập trình kim loại trần. Tôi chỉ mới thực hiện lập trình cấp cao. Tôi cũng rất quan tâm đến vật lý và toán học, mặc dù tôi vừa học xong trung học, vì vậy tôi vẫn chưa biết quá nhiều ...
Bạn của Kim

Tôi đang thực hiện điều này với một người bạn và chúng tôi đã "phát minh" ra vòng lặp PID. Đã quen với câu trả lời "đúng", chúng tôi rất khó sử dụng nó mà không biết đây là cách phổ biến để giải quyết vấn đề của mình. Và khi chúng tôi phát hiện ra vòng lặp PID trên Wikipedia, vòng lặp PID được phát minh của chúng tôi đã được "phê duyệt".
Bạn của Kim

Vì vậy, tôi thực sự đánh giá cao sự hiểu biết của bạn về cách điều này thường được thực hiện trong các dự án làm việc. Hành vi kỳ lạ mà tôi đang nói đến đã tự tiết lộ khi nhìn vào biểu đồ trong Serial Chart( code.google.com/p/serialchart ) Đầu vào là đầu ra Euler trực tiếp từ I2CDevLib (MPU-9150). Tôi sẽ kiểm tra thêm một chút. "Lỗi" có thể là do bản thân tôi di chuyển không chính xác.
Bạn của Kim

Cuộn là đường màu xanh. Màu đỏ là ngáp, màu xanh là cao độ, màu xanh là cuộn. Như bạn có thể thấy, các vấn đề bắt đầu từ khoảng pi / 4 trở đi. Đây có phải là vấn đề với I2CDevLib không, hay nó được cho là như thế này? screencast.com/t/svPV3C8B Tôi đang xoay con quay 360 độ quanh trục cuộn.
Bạn của Kim

Tôi đã thấy AeroQuad có thể tự ổn định ngay cả khi bị ném lên không trung. Đây có phải là vì nó chăm sóc cuộn trước, sau đó là cao độ, sau đó là ngáp?
Bạn của Kim

3

Bài viết này, Kiểm soát thái độ dựa trên toàn bộ Đệ tứ cho một Quadrotor của Emil Fresk và George Nikolakopoulos, thể hiện những gì bạn đang cố gắng đạt được.

Tóm tắt - Mục đích của bài viết này là để trình bày một sơ đồ kiểm soát dựa trên tứ phương mới cho vấn đề kiểm soát thái độ của một tứ giác. Đệ tứ là một số siêu phức bậc 4 có thể được sử dụng để tránh điểm kỳ dị hình học vốn có khi biểu diễn động lực học cơ thể cứng nhắc với các góc Euler hoặc độ phức tạp của việc kết hợp các phương trình vi phân với Ma trận định hướng (DCM). Theo cách tiếp cận được trình bày, cả mô hình thái độ của tứ phương và bình phương tỷ lệ phi tuyến tính được đề xuất ( P 2) thuật toán điều khiển đã được triển khai trong không gian bậc bốn, không có bất kỳ biến đổi và tính toán nào trong không gian góc của Euler hoặc DCM. Trong suốt bài viết, những ưu điểm của phương pháp tiếp cận tiểu thuyết được đề xuất đang được phân tích và thảo luận, trong khi hiệu quả của bộ điều khiển dựa trên tiểu thuyết đề xuất tiểu thuyết được đánh giá bằng các kết quả mô phỏng mở rộng.


2
Cảm ơn các bài báo liên quan @ jgkim2020. Nhưng bạn có thể giải thích về nó? Có lẽ tóm tắt những phát hiện của bài báo? (Liên kết có thể trở nên cũ kỹ sau khi tất cả). Bạn cũng có thể muốn xem Cách trả lời
Ben

1
Tôi đồng ý với Ben - Một bản tóm tắt của bài báo sẽ rất hay, vì cái chết liên kết thường xảy ra sau một thời gian.
Greenonline

2

Khóa học miễn phí MOOC này, Chào mừng bạn đến với AUTONAVx của TUMx! Điều hướng tự động cho Robot bay , có thể giúp đỡ. Nó bao gồm:

  • Học lý thuyết
  • Bài tập lập trình Quadcoptor chạy trên cả phần cứng kích thích và phần cứng thực tế

Liên kết không hoạt động.
Bạn của Kim

Liên kết hoạt động nếu bạn đã đăng nhập.
Bạn của Kim

Video 1.4 có bản demo của nhiều hình tứ giác, thực hiện các hành động tuyệt vời. Hy vọng bạn có được quan tâm đến chủ đề này.
EEd

Có thể kiểm tra phần mềm FreeIMU, cung cấp a) dữ liệu hợp nhất từ ​​nhiều cảm biến (tốc độ con quay, la bàn, gia tốc kế), cho dữ liệu chính xác, trôi thấp hơn và chính xác hơn so với việc chỉ đọc dữ liệu thô từ chip b) cung cấp nhiều định dạng đầu ra, bao gồm cả độ cao, cuộn và ngáp, có thể đơn giản hơn để hình dung, hiểu và sử dụng.
EEd

Cảm ơn sự giúp đỡ của bạn. Tôi đang sử dụng MPU-9150 có DMP (phản ứng tổng hợp cảm biến) trên tàu của cả con quay hồi chuyển và gia tốc kế. Việc kết hợp này với từ kế phải được thực hiện thủ công.
Bạn của Kim
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.