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

Thảo luận trong 'Robot'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. tba150990

    tba150990 Kỹ sư Staff Member

    Tham gia ngày:
    15/11/12
    Bài viết:
    117
    Đã được thích:
    172
    Điểm thành tích:
    43
    Giới tính:
    Nam
    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)
    GY521.
    -Độ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.
    tamagawa 60wx41.JPG
    -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.
    omni.JPG



    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ơ đồ:
    1.
    Đế Robot của đội mình trên Solid. :)
    rb.


    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ó:

    r222.
    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ó:
    r333.

    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 đó. :">
     

    Các file đính kèm:

    huutrinh845, LilyMeow, togmanhchinh16 others thích bài này.
  2. dainv

    dainv http://vntech24h.com/

    Tham gia ngày:
    6/9/12
    Bài viết:
    411
    Đã được thích:
    655
    Điểm thành tích:
    93
    Giới tính:
    Nam
    Nghề nghiệp:
    Engineer Electronic
    Nơi ở:
    Vĩnh Phúc
    Tiếp tục đi em ơi. like like :D
     
  3. tba150990

    tba150990 Kỹ sư Staff Member

    Tham gia ngày:
    15/11/12
    Bài viết:
    117
    Đã được thích:
    172
    Điểm thành tích:
    43
    Giới tính:
    Nam
    :). 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.
     
    mtarada212, Lê Minh Hiếu, dovanhieu2 others thích bài này.
  4. daotruongpro

    daotruongpro http://vtechpro.vn

    Tham gia ngày:
    4/9/12
    Bài viết:
    382
    Đã được thích:
    497
    Điểm thành tích:
    93
    Giới tính:
    Nam
    Nghề nghiệp:
    Kỹ sư Điện tử - Truyền thông
    Nơi ở:
    Hà Nội
    Bài viết này thực sự rất hay và ý nghĩa. Thank so much
     
  5. flytothesky

    flytothesky Học sinh trung cấp

    Tham gia ngày:
    12/3/13
    Bài viết:
    90
    Đã được thích:
    8
    Điểm thành tích:
    8
    Giới tính:
    Nam
    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. Lê Minh Hiếu

    Lê Minh Hiếu Học sinh phổ thông

    Tham gia ngày:
    9/8/14
    Bài viết:
    4
    Đã được thích:
    2
    Điểm thành tích:
    3
    Giới tính:
    Nam
    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. chiefpro

    chiefpro Học sinh trung cấp

    Tham gia ngày:
    20/1/14
    Bài viết:
    30
    Đã được thích:
    1
    Điểm thành tích:
    8
    Giới tính:
    Nam
    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. tongtienbk

    tongtienbk Học sinh phổ thông

    Tham gia ngày:
    7/9/12
    Bài viết:
    5
    Đã được thích:
    1
    Điểm thành tích:
    3
    Giới tính:
    Nam
    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 ạ!
     
    phihongdiep thích bài này.
  9. phihongdiep

    phihongdiep Học sinh phổ thông

    Tham gia ngày:
    16/12/15
    Bài viết:
    2
    Đã được thích:
    0
    Điểm thành tích:
    1
    Giới tính:
    Nam
    Nghề nghiệp:
    QA
    Nơi ở:
    Quảng Ninh, Việt Nam
    Bài viết hay quá! like like
     
  10. Gin Be

    Gin Be Học sinh phổ thông

    Tham gia ngày:
    24/2/15
    Bài viết:
    1
    Đã được thích:
    0
    Điểm thành tích:
    1
    một loại cảm biến khác
     

Chia sẻ trang này