Welcome & Happy Holidays!
Kết quả 1 đến 9 của 9
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Ứng dụng Gyro vào Robot chạy đa hướng trong Robocon

    Sau bài giới thiệu về Gyro mình muốn giới thiệu một ứng dụng của nó vào cuộc thi Robocon.

    Ý tưởng và mục đích của phương án này: Trước đây, với cách chạy truyền thống dùng bánh xe "cứng" để di chuyển, robot thường phải quay trước theo hướng muốn chạy và chạy theo hướng đó, sau đó lại phải quay robot lần nữa để có hướng làm việc phù hợp. Do đó sẽ làm chậm đi tốc độ của Robot. Ý tưởng được đưa ra là thiết kế một phương án chạy sao cho Robot có thể vừa chạy theo một hướng xác định vừa quay quay Robot đúng hướng làm việc. Như vậy sẽ tiết kiệm rất nhiều thời gian.

    Công cụ cần thiết để thực hiện phương án này:
    -Cảm biến vận tốc góc Gyro MPU6050. Mình dùng Module GY86. (GY521 vẫn dùng được)


    [IMG]http://*************/attachments/6858/[/IMG]

    -Động cơ điều khiển bằng PID để có thể truyền tốc độ một cách chính xác. Mình sử dụng động cơ servo 60W, Encoder 1000x.


    [IMG]http://*************/attachments/6859/[/IMG]

    -Robot sử dụng bánh đa hướng Omni để di chuyển. Với bánh có hình dưới thì Robot chạy không mịn lắm. Sau đội mình dùng bánh Omni đường kính 136mm thì chạy ổn hơn.


    [IMG]http://*************/attachments/6857/[/IMG]



    Thực hiện ý tưởng: Ở đây mình áp dụng cho robot 3 bánh đa hướng, với 4 bánh thì các bạn có thể suy ra tương tự.

    Sơ đồ:


    [IMG]http://*************/attachments/6860/[/IMG]

    Đế Robot của đội mình trên Solid.


    [IMG]http://*************/attachments/6862/[/IMG]


    Hoạt động: ta xem như mỗi bánh xe khi chạy là 1 vecto vận tốc. chiều và độ lớn của vecto phụ thuộc vào chiều quay động cơ và độ lớn giá trị vận tốc. Như vậy, Hướng chạy của robot sẽ là tổng của 3 vecto trên. Ta có:



    [IMG]http://*************/attachments/6864/[/IMG]

    Ta đặt vào Robot một hệ toạ độ tưởng tượng Oxy như hình vẽ, và mọi tính toán sau này sẽ dựa trên hệ toạ độ này. Lấy tâm Robot làm điểm gốc. Lấy chiều quay Robot ngược chiều kim đồng hồ là chiều dương, cùng chiều kim đồng hồ là chiều âm. góc và các hàm sin, cos tính như góc lượng giác bình thường như đã học ở cấp 3.

    Trường hợp 1: Xét Robot chuyển động tịnh tiến (Không quay quay tâm của nó) theo phương a nào đó. Giả sử ta có như hình trên.

    Ta có: V[tt] = V[Att] + V[Btt] + V[Ctt]
    Với: V[Xtt] = V[tt] * cos(a-góc của chiều vecto đơn vị tạo với trục Ox của bánh tương ứng)

    Ví dụ góc tạo bới bánh A với trục Ox là 180 =>
    V[Att] = V[tt] * cos(a-180)

    tương tự:
    V[Btt] = V[tt] * cos(a+60)
    V[Ctt] = V[tt] * cos(a-60)

    từ công thức này các bạn có thể suy ra cho 3 bánh nhưng nằm ở hướng khác (giả sử hướng 2 bánh B, C quay lên trên chẳng hạn) hoặc dùng cho Robot đa hướng 4 bánh.

    Trường hợp 2: Robot của chúng ta quay quanh tại chỗ:
    Ta có:


    [IMG]http://*************/attachments/6865/[/IMG]

    Suy ra các vecto tương ứng:

    V[Aq] = Vquay * sai số góc
    V[Bq] = Vquay * sai số góc
    V[Cq] = Vquay * sai số góc

    với sai số góc = góc hiện tại của Robot - beta.

    Với phương án này, các bạn phải đọc giá trị góc liên tục từ Gyro trả về để update liên tục góc hiện tại so với gốc toạ độ của robot. Nên trước khi khởi động Robot, các bạn phải set giá trị góc = 0, đây là toạ độ của robot tại vị trí xuất phát. Sau này góc hiện tại mà mình nói sẽ so với gốc toạ độ này.

    Từ 2 trường hợp trên, ta có:
    V[A] = V[Att] + V[Aq]
    V[ B] = V[Btt] + V[Bq]
    V[C] = V[Ctt] + V[Cq]

    Tuy nhiên, nếu các bạn áp dụng thế này sẽ sai. Do công thức tịnh tiến của chúng ta viết là so với gốc toạ độ. Do đó, để công thức tịnh tiến cũng đúng thì ta phải cộng thêm góc hiện tại vào công thức này để đưa toạ độ hiện tại của Robot về gốc toạ độ. Do đó, công thức cuối cùng là:

    V[A] = V[tt] * cos(a+Góc hiện tại của Robot-180) + Vquay * sai số góc
    V[ B] = V[tt] * cos(a+Góc hiện tại của Robot+60) + Vquay * sai số góc
    V[C] = V[tt] * cos(a+Góc hiện tại của Robot-60) + Vquay * sai số góc

    Với: sai số góc = góc hiện tại của Robot - beta
    beta và góc quay của Robot ở đích so với gốc toạ độ.

    Kiểm tra lại công thức với một hướng di chuyển bất kỳ. Mình sẽ test với trường hợp chuyển động tịnh tiến, các bạn có thể kiểm nghiệm lại góc quay sau nhé.
    giả sử muốn Robot chuyển động tịnh tiến theo hướng 30 độ.
    Suy ra a=30, góc hiện tại =0, sai số góc = 0.

    Vậy V[A] = V[tt] * cos(30-180) = - sqtr(3)/2 * V[tt]
    V[ B] = V[tt] * cos(30+60) = 0
    V[C] = V[tt] * cos(30-60) = sqtr(3)/2 * V[tt]
    => theo hình trên thì vecto A sẽ có chiều sang phải (do âm nên ngược với chiều dương, tức là cùng chiều kim đồng hồ theo giả thiết ở trên.) do đó bánh A di chuyển sang phải (hướng 0 độ), Bánh B đứng yên do có giá trị = 0, tương tự: bánh C quay xiêng theo hướng 60 độ. tổng A và C là vecto có góc 30 độ.

    Từ công thức di chuyển trên các bạn có thể chuyển về hàm cho riêng mình với các tham số truyền vào là:
    -V[tt]: tốc độ tịnh tiến của Robot
    -a: hướng di chuyển tịnh tiến của Robot so với 1 gốc toạ độ cố định mà bạn mong muốn.
    -beta: hướng của Robot tại đích đến so với gốc toạ độ. (các bạn nên tránh nhầm lẫn giữa hướng chạy của robot là a với hướng quay của robot beta)
    -Vquay: Vận tốc góc của Robot nếu có quay.

    Tương tự cho một hệ toạ độ khác hay các bạn có thể phát triển cho mình thành Robot 4 bánh hay 5 bánh...

    Cảm ơn các bạn đã quan tâm đề tài của mình. Thân!

    tài liệu tham khảo ở đính kèm nhé các bạn. . Các bạn có ý tưởng di chuyển theo đường cong thì chia sẻ để mọi người cùng tham khảo. mình chưa làm được cái đó. :">

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Tiếp tục đi em ơi. like like

  3. #3
    Ngày tham gia
    Apr 2016
    Bài viết
    0
    . giờ em về quê ít ngày. vào Đà Nẵng rồi post tiếp. hi. Cái này hay ở chỗ là chỉ có 1 hàm con mà có thể giải quyết được gần như tất cả đường chạy của robot trên sân. sẽ không phải lo robot chạy lệch hướng, cũng không phải dò đường mà vẫn có thể quay tại chỗ, tịnh tiến hay vừa tịnh tiến vừa quay theo mọi hướng trên sân. . sẽ làm cho chương trình chúng ta đơn giản hơn rất nhiều.

  4. #4
    Ngày tham gia
    Jan 2016
    Bài viết
    0
    Bài viết này thực sự rất hay và ý nghĩa. Thank so much

  5. #5
    Ngày tham gia
    Jan 2016
    Bài viết
    0
    rất hay. bạn còn biết thêm gì về cái omni nữa thì chia sẻ với, mình đang rất cần

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi tba150990
    . giờ em về quê ít ngày. vào Đà Nẵng rồi post tiếp. hi. Cái này hay ở chỗ là chỉ có 1 hàm con mà có thể giải quyết được gần như tất cả đường chạy của robot trên sân. sẽ không phải lo robot chạy lệch hướng, cũng không phải dò đường mà vẫn có thể quay tại chỗ, tịnh tiến hay vừa tịnh tiến vừa quay theo mọi hướng trên sân. . sẽ làm cho chương trình chúng ta đơn giản hơn rất nhiều.
    có khi nào robot của đội bạn đánh qua tầm với của vợt thì robot mình ko thể tới kịp ko pác???

  7. #7
    Ngày tham gia
    Feb 2016
    Bài viết
    0
    Mấy bác cho em hỏi cách chống nhiễu khi đọc giá trị vận tốc và gia tốc góc, làm sao mình calib lại tín hiệu để khi để yên cảm biến thì vận tốc theo các trục đều bằng 0 ? Cảm ơn mấy bác nhiều.

  8. #8
    Ngày tham gia
    Jun 2016
    Bài viết
    0
    a ơi, a có thể cho e xin lý thuyết và code điều khiển động cơ, của bài này được không ạ, và a có thể nói nguyên lý điều khiển của con robot này được không ạ, em đang tìm hiểu về loại này,e cám ơn ạ!

  9. #9
    Ngày tham gia
    Jun 2016
    Đang ở
    Россия
    Bài viết
    0
    Bài viết hay quá! like like

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 09:18 PM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2025 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.