Thông báo

Collapse
No announcement yet.

Giải động học Robot 4 khớp (Bài toán của ToanThang88)

Collapse
This is a sticky topic.
X
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Giải động học Robot 4 khớp (Bài toán của ToanThang88)

    Gửi các bạn bài mình giải động học cho cái tay máy do bạn ToanThang88 đã đưa trong luồng "E-Book về Robotics" (http://dientuvietnam.net/forums/showthread.php?t=2108) . Các bạn xem có sai hay có gì phải sửa không.

    To ToanThang88: bài này mình giải bằng các đặt hệ trục toạ độ theo phương pháp đã biến đổi (hệ toạ độ i được đặt trên trục i) thay vì dùng phương pháp chính tắc (hệ toạ độ i đặt trên trục i-1). Đồng thời dùng Maple10 để tính toán, nhân chia ma trận, rút ngắn thời gian tự mình ngồi tính. :-)

    Một câu hỏi đặt ra: Tại sao trong này, từ phương trình T=A01*A12*A23*A34, ta lại nên nhân 2 vế với nghịch đảo của A01 mà ko phải là nghịch đảo của ma trận khác? Đây là điểm mấu chốt để giải động học ngược của bất kỳ một Robot nào.
    Attached Files
    Lai như lưu thuỷ hề, thệ như phong
    Bất tri hà xứ lai hề, hà sở chung

  • #2
    Mình có viết nhầm ở hệ phương trình. Ở phương trình thứ 3, nó phải là d4.s23 chứ ko phải là d4.c23. :-) Xin lỗi tí chút. Như vậy hệ phương trình sau cân bằng là:
    -a3.s23 + d4.c23 - s2.a2 = py.s1 + px.c1
    0 = -px.s1 + py.c1
    a3.c23 + d4.s23 + c2.a2 = pz - d1

    Còn lại các phần khác giải vẫn đúng.
    Lai như lưu thuỷ hề, thệ như phong
    Bất tri hà xứ lai hề, hà sở chung

    Comment


    • #3
      Nguyên văn bởi Vo_Duy_Thanh
      To ToanThang88: bài này mình giải bằng các đặt hệ trục toạ độ theo phương pháp đã biến đổi (hệ toạ độ i được đặt trên trục i) thay vì dùng phương pháp chính tắc (hệ toạ độ i đặt trên trục i-1). Đồng thời dùng Maple10 để tính toán, nhân chia ma trận, rút ngắn thời gian tự mình ngồi tính. :-)

      Một câu hỏi đặt ra: Tại sao trong này, từ phương trình T=A01*A12*A23*A34, ta lại nên nhân 2 vế với nghịch đảo của A01 mà ko phải là nghịch đảo của ma trận khác? Đây là điểm mấu chốt để giải động học ngược của bất kỳ một Robot nào.
      Em sẽ giải theo phương pháp khác bác một tí (hệ tọa i đặt lên trục i+1 không phải là i-1), để xem kết quả có giống bác không.

      Bác đặt câu hỏi rất hay. (giải song bài này em sẽ trả lời).

      Comment


      • #4
        Một số điểm chú ý khi tìm nghiệm:

        Xác định các hệ trục tọa độ:

        Denavit & Hartenberg (D-H) đã đề xuất một phương pháp để mô tả quan hệ giữa hai khâu liên tiếp trong cơ cấu không gian dùng ma trận thuần nhất 4x4, các phần tử trong ma trận chứa thông tin về thông số của khớp.

        Mô hình D-H chỉ ra mối quan hệ giữa hệ tọa độ i so với hệ tọa độ i-1 bằng biểu thức tích các ma trận thuần nhất sau:

        A[i] = R(z,theta[i])*T(0,0,d[i])*T(a[i],0,0)*R(x,alpha[i])

        + R(z,theta[i]) : Trục x[i] quay quanh trục z[i-1] một góc theta[i] so với x[i-1].

        + T(0,0,d[i]) : Gốc O[i] tịnh tiến dọc trục z[i-1] so với gốc O[i-1] một đoạn d[i].

        + T(a[i],0,0) : Gốc O[i] Tịnh tiến dọc trục x[i-1] (đã trùng với x[i]) so với gốc O[i-1] một đoạn a[i].

        + R(x,alpha[i]) : Trục z[i] quay quanh trục x[i-1] một góc alpha[i] so với z[i-1].

        Việc xác định hệ trục tọa độ phải phù hợp với các phép biến đổi của ma trận A[i]. Nên lần lượt các trục được xác định:

        - Trục z[i] phải chọn cùng phương với trục khớp động i+1

        - Khi gắn hệ trục tọa độ phải tuân theo mô hình ma trận A[i]

        Ví dụ: Trục z[1] & z[0] đã được xác định, ta thấy z[1] quay đi một góc 90o so với z[0], tương ứng với phép quay R(x[0],alpha[1]) => trục x[0] bắt buộc phải vuông góc với z[1] & z[0] => xác định được trục x[0] (qui ước: chiều dương là chiều quay ngược chiều kim đồng hồ).

        - Sau khi xác định được trục z & x => trục y (theo qui tắc bàn tay phải)

        Lập bảng thông số D-H:

        Bảng thông số D-H chính là bảng chứa những thông số về biến khớp và những thông số khác đặc trưng cho cấu hình của tay máy.

        Dựa vào trình tự thiết lập hệ tọa độ mà suy ra từng thông số.

        Ví dụ:

        + Đối với khớp quay thì biến khớp là theta[i], z[1] quay đi một góc 90o so với z[0], tương ứng với phép quay R(x[0],alpha[1]) => alpha[1] = 90 = Pi/2.

        + Tâm 0[2] tịnh tiến một đoạn a[2] (ví dụ: 50cm) dọc trục trục x[1] so với 0[1] => tương ứng với phép tịnh tiến T(a[i],0,0) => a[2].
        Attached Files
        Last edited by ToanThang88; 27-08-2006, 23:14.

        Comment


        • #5
          Nguyên văn bởi Vo_Duy_Thanh
          Một câu hỏi đặt ra: Tại sao trong này, từ phương trình T=A01*A12*A23*A34, ta lại nên nhân 2 vế với nghịch đảo của A01 mà ko phải là nghịch đảo của ma trận khác?
          Theo em mục đích là để luôn tồn tại ít nhất một phương trình độc lập để từ đó có thể tính toán được biến khớp thứ nhất.

          Hỏi tiếp:

          1. theta[3] có 2 nghiệm, tương ứng với hai cấu hình robot hay là tương ứng với bàn kẹp được quay trái hoặc quay phải?. (câu trả lời sẽ tương đối hay).

          2. nghiệm theta nên được tính theo hàm arctan. Tại sao?

          Lời giải chi tiết cho bài toán đưa ra ban đầu được gởi đính kèm ở file bên dưới.
          Attached Files

          Comment


          • #6
            Nguyên văn bởi Vo_Duy_Thanh
            bài này mình giải bằng các đặt hệ trục toạ độ theo phương pháp đã biến đổi (hệ toạ độ i được đặt trên trục i) thay vì dùng phương pháp chính tắc

            Các bạn xem có sai hay có gì phải sửa không.
            Em cũng đã làm xong, lời giải được post cụ thể lên diễn đàn rồi. Bây giờ ta bắt đầu thảo luận nhé.

            + Đầu tiên là các hệ trục tọa độ: em thấy bác thiếu.

            Vị trí số 1 ở hình vẽ em post phía dưới, đó là một khớp xoay, em không thấy một hệ tọa độ nào mô tả khớp đó. Nếu là hệ tọa độ 4 thì không phải, vì hệ tọa độ này luôn gắn với điểm tác động cuối (ở vị trí đó là đúng rồi). Nếu là hệ tọa độ 3 thì cũng không phải, vì hệ tọa độ này rõ ràng là mô tả khớp thứ 3 (ở vị trí đó cũng đúng luôn). Còn hệ tọa độ 0, 1, 2 lại càng không phải.

            Tiếp đến là hai hệ tọa độ 0 & 1 (vị trí em đánh số 2 trong hình). hai hệ này chắc chắn có một cái dành cho giá đỡ (chắc hệ 0). Vậy hệ còn lại bác dùng cho khớp nào?. (em thấy không có khớp nào thỏa hệ còn lại này).

            + Tiếp theo là phương pháp giải: em cũng thấy bác thiếu

            Ngoài theta[3] có 2 nghiệm, các theta còn lại em thấy cách tính của bác đều cho ra 1 nghiệm. Thực tế: chỉ có theta[1] là có 1 nghiệm, tất cả các theta còn lại đều phải có hai nghiệm tương ứng với 2 cấu hình robot (ví dụ: đó là cánh tay trái hoặc cánh tay phải của robot chẳng hạn).

            Đây chỉ là thảo luận, có thể bác có cách lí giải hợp lí về cách tính của mình. đó là những chỗ em thắc mắc, bác coi lại xem thế nào?.
            Attached Files

            Comment


            • #7
              Chào TT88. Mình trả lời câu hỏi của cậu đây:
              Câu 1: Có lẽ cậu đã quá máy móc khi đặt hệ trục tọa độ. Hệ trục tọa của một khớp không nhất thiết phải đặt tại ngay khớp đó. Điểm gốc của một hệ tọa độ có thể nằm bất kỳ tại điểm nào đó trên trục xoay của khớp, miễn là có trục z trùng với trục của khớp đó là được. Ở đây, trong bài giải của mình, mình đã đặt điểm gốc của hệ trục khớp xoay đầu tiên - O1xyz trùng điểm gốc của hệ trục khớp xoay thứ 2 - O2xyz ngay tại khớp thứ 2, làm vậy sẽ dễ dàng trong tính toán.
              Như vậy: Hệ đầu tiên được đánh số 0 là hệ trục tọa độ của chân đế - O0xyz
              Hệ O1xyz là hệ trục tọa độ của khớp 1
              Hệ O2xyz là hệ trục tọa độ của khớp 2
              và cứ như vậy.

              Câu 2. Cậu đọc lại bài giải của mình đi, trong phương trình giải ra Theta3 ý. Đó là một phương trình có cả cos(theta3) và sin(theta3) nếu đặt tan(theta3/2) là t (ví dụ cho một cách giải). Thì ta sẽ có một phương trình bậc 2 theo t. Giải ra, ta sẽ được 2 nghiệm của t tương ứng với 2 nghiệm của theta3, từ đó mà theta2 và theta4 sẽ có 2 nghiệm. Do đó, Robot sẽ có 2 cấu hình.

              Câu 3: "theta[3] có 2 nghiệm, tương ứng với hai cấu hình robot hay là tương ứng với bàn kẹp được quay trái hoặc quay phải?". Theo mình, theta3 là mấu chốt của vân đề, nó là "điểm nhạy cảm" của robot. Nó có 2 nghiệm tức là nó có 2 tư thế để thỏa mãn yêu cầu vị trí của khâu tác động cuối. VÌ thế nó là cấu hình chứ ko phải là quay phải hay trái. Ứng với mỗi cấu hình của theta3, theta2 và theta4 phải quay để phù hợp với yêu cầu. Ở đây, bàn kẹp quay phải hay trái cũng có thể tùy thuộc vào cấu hình. Tùy từng bài toán cụ thể mà ta điều khiển.
              Có một vấn đề đặt ra nữa, nếu trước đối tượng là nhiều vật cản, vậy thì robot phải thay đổi cấu hình như thế nào để có thể tiến tới tiếp xúc với đối tượng? Có thể cấu hình tính toán lại không phù hợp vì các theta nếu quay như tính toán sẽ chạm vào vật cản.

              Câu 4: theta3 tính theo acrtan hay atan2 cũng còn tùy. Khi cậu lập chương trình điều khiển robot, cậu sẽ biết được. Theo mình, việc dùng hàm nào thì nên xuất phát từ thực nghiệm khi mình kiểm tra kết quả trên robot thực.

              Trở lại câu hỏi của mình. Cậu trả lời rằng: "mục đích là để luôn tồn tại ít nhất một phương trình độc lập để từ đó có thể tính toán được biến khớp thứ nhất". Đúng như vậy. Tuy nhiên, tớ lại đặt tiếp câu hỏi, với một phương trình nhân ma trận như thế, ta làm thế nào để có thể tìm được ma trận mà từ đó, nếu nhân nghịch đảo của nó với 2 vế, ta lại tìm được kết quả để ra được phương trình độc lập?

              Đồng thời, cậu đã thử lại cách giải của cậu chưa? Đưa ma trận T vào, tìm ra được khớp rồi quay lại, ốp góc khớp vào robot xem nó đã đi đến điểm yêu cầu chưa?
              Lai như lưu thuỷ hề, thệ như phong
              Bất tri hà xứ lai hề, hà sở chung

              Comment


              • #8
                Có một cái mà chúng ta trước khi giải bài toán này đã ko thống nhất với nhau từ đầu. TT88 biết là gì ko? Nếu nói được thì mình bao một chầu cafe. He he.
                Lai như lưu thuỷ hề, thệ như phong
                Bất tri hà xứ lai hề, hà sở chung

                Comment


                • #9
                  đó là vị trí các khớp, kiểu khớp. he he...

                  Comment


                  • #10
                    Những vấn đề mà VDT nói quả thật chí lý. Chỉ có điều chầu cafe đó VDT không chung được đâu, cho nên TT88 không cần trả lời, muốn uống ly cafe đó, theo F biết chắc phải bay hơi bị xa .

                    Rất nhiều người làm bài toán này một cách máy móc như kiểu TT88 khi đặt gốc trục thứ nhất không đúng, sẽ khiến cho bài toán phải tính nhiều hơn, thậm chí có thể gặp những chỗ không thể tính được (giải tay) vì quá dài.

                    Chỉ cần khử đi thành phần a hoặc d trong ma trận DH bằng cách dời trục đầu, bài toán sẽ đơn giản đi rất nhiều.

                    Vì đây là bài toán 4 bậc tự do, cho nên còn chưa gặp tình huống giải quyết hệ trục 4,5,6 phải đặt trùng nhau. Nếu như đặt trục theo cách của TT88, thì gần như bài toán 6 bậc, chịu, không thể giải nổi.

                    Riêng bác VDT ở Nhật, chắc học tay máy Nhật, xin hỏi bác vấn đề khi mà trục 6 đặt không trùng trục với 4,5 (đặc điểm của tay máy Nhật), các nước Mỹ, và châu Âu đều đặt trùng, chỉ riêng thằng Nhật thì nó lại đặt trục 6 dịch đi.

                    Bác có thể cung cấp bài giải động học cho tay máy Nhật được không?

                    Chúc vui.
                    Falleaf
                    Công ty TNHH Thương mại và Giao nhận R&P
                    58/57 Nguyễn Minh Hoàng - Phường 12 - Quận Tân Bình - TP.HCM
                    mail@falleaf.net - VP: (04) 36408561 - (08) 38119870

                    Comment


                    • #11
                      Nguyên văn bởi falleaf
                      Những vấn đề mà VDT nói quả thật chí lý. Chỉ có điều chầu cafe đó VDT không chung được đâu, cho nên TT88 không cần trả lời, muốn uống ly cafe đó, theo F biết chắc phải bay hơi bị xa .

                      Rất nhiều người làm bài toán này một cách máy móc như kiểu TT88 khi đặt gốc trục thứ nhất không đúng, sẽ khiến cho bài toán phải tính nhiều hơn, thậm chí có thể gặp những chỗ không thể tính được (giải tay) vì quá dài.
                      Chỉ cần khử đi thành phần a hoặc d trong ma trận DH bằng cách dời trục đầu, bài toán sẽ đơn giản đi rất nhiều.

                      Vì đây là bài toán 4 bậc tự do, cho nên còn chưa gặp tình huống giải quyết hệ trục 4,5,6 phải đặt trùng nhau. Nếu như đặt trục theo cách của TT88, thì gần như bài toán 6 bậc, chịu, không thể giải nổi.

                      Riêng bác VDT ở Nhật, chắc học tay máy Nhật, xin hỏi bác vấn đề khi mà trục 6 đặt không trùng trục với 4,5 (đặc điểm của tay máy Nhật), các nước Mỹ, và châu Âu đều đặt trùng, chỉ riêng thằng Nhật thì nó lại đặt trục 6 dịch đi.

                      Bác có thể cung cấp bài giải động học cho tay máy Nhật được không?

                      Chúc vui.
                      Quan sát thật kĩ mô hình tọa độ và bảng D-H của bác VDT và của em. Em đố bác F.

                      - bảng D-H của ai đơn giản hơn?.
                      - điểm gốc của hệ tọa độ trục thứ 1 và thứ 2 em có đặt trùng nhau không? (giống hay khác, hay tốt hơn cách đặt của bác VDT).
                      - hệ trục tọa độ của em và của bác VDT ai đặt sai qui tắc cơ bản?
                      - bác F xem kĩ phương pháp tìm nghiệm của bác VDT đã OK chưa?

                      vân vân .. và vân vân.

                      to bác F: người Nhật, người Mĩ, người Hàn, người Việt Nam. 1 ngày củng chỉ có 24 giờ để làm và để học thôi, nếu nói tới Mĩ người Việt phải sợ, nói tới Nhật người Việt phải run rẩy, nói tới người Hàn người Việt phải khép nép, Vậy đừng làm người Việt nữa.

                      Comment


                      • #12
                        Nguyên văn bởi ToanThang88
                        đó là vị trí các khớp, kiểu khớp. he he...
                        He he, cậu trả lời sai rồi . May quá, tớ đang thiếu tiền.

                        Câu trả lời của tớ là: Cái mà ta chưa thống nhất với nhau hay nói cách khác là đề bài ra thiếu: đó chính là trạng thái ban đầu của robot (initial state). Tức là trạng thái mà tại đó, tất cả các góc khớp = 0. Nó rất rất quan trọng khi lập trình, đặc biệt lập trình theo nhóm do phải có sự thống nhất ngay từ đầu.

                        To F: Tớ về VN rồi. Mà sao cậu biết tớ học ở Nhật. Ở đó, tớ có lập trình, tính toán, điều khiển một cái tay máy 6 DOF (tên nó là RV1A của Mitsubishi), tớ vẫn đặt các hệ tọa độ như tớ đặt trong bài của cậu TT88 thôi. Trục 6 vẫn đặt như bình thường, ko hiểu đặt lệch như cậu nói là thế nào.
                        Nói chung, đối với tớ thì cách đặt trục nào cũng có ưu nhược điểm. Tớ thích cái cách tớ làm vì trong các ma trận xoay, cột thứ 4 không có biến xoay. Đấy chính là ưu điểm, vì chúng ta nên hạn chế các biểu thức chứa cos, sin.

                        Nguyên văn bởi ToanThang88
                        Quan sát thật kĩ mô hình tọa độ và bảng D-H của bác VDT và của em. Em đố bác F.

                        - bảng D-H của ai đơn giản hơn?.
                        - điểm gốc của hệ tọa độ trục thứ 1 và thứ 2 em có đặt trùng nhau không? (giống hay khác, hay tốt hơn cách đặt của bác VDT).
                        - hệ trục tọa độ của em và của bác VDT ai đặt sai qui tắc cơ bản?
                        - bác F xem kĩ phương pháp tìm nghiệm của bác VDT đã OK chưa?

                        vân vân .. và vân vân
                        To TT88: mỗi người đều có một kiểu làm mà người đấy quen thuộc, đối với họ, họ thấy nó là tốt, thì họ làm theo, dần thì thành quen thôi. Tất nhiên, phương pháp đặt trục của tớ không phải là là quy tắc cơ bản vì nó gọi là Mô hình đã biến đổi (modified form). Tuy nhiên, nó không phải là sai. Nếu nó sai, tớ đã không thể điều khiển được robot.
                        Lai như lưu thuỷ hề, thệ như phong
                        Bất tri hà xứ lai hề, hà sở chung

                        Comment


                        • #13
                          OK, bác thấy khớp cuối cùng không?(khớp cổ tay ấy). bác gắn vào hệ tọa độ nào?

                          Comment


                          • #14
                            trạng thái ban đầu mà bác nói tới đương nhiên là phải có khi tiến hành khâu lập trình. Vậy nó ảnh hưởng gì tới khâu tìm phương trình đặc trưng của nghiệm?

                            Comment


                            • #15
                              Nguyên văn bởi ToanThang88
                              OK, bác thấy khớp cuối cùng không?(khớp cổ tay ấy). bác gắn vào hệ tọa độ nào?
                              Hệ tọa độ 4 đấy, nó vừa là khớp quay, vừa là khâu tác động cuối, cậu có thể nghĩ như vậy. Sao lại ko tận dụng luôn khớp cuối, đúng ko? Thêm vào đấy, mình nghĩ là ở đây chẳng có khớp cổ tay cũng chẳng có cẳng tay vì với 4 khớp thì chưa đủ để làm nên một cái tay


                              Nguyên văn bởi ToanThang88
                              trạng thái ban đầu mà bác nói tới đương nhiên là phải có khi tiến hành khâu lập trình. Vậy nó ảnh hưởng gì tới khâu tìm phương trình đặc trưng của nghiệm?
                              Trạng thái ban đầu ko phải là chỉ có khi tiến hành lập trình mà nó phải có ngay từ đầu nếu muốn robot đi đúng hướng và nếu muốn mô phỏng đúng. Nó có ảnh hưởng đến việc lập bảng D-H nên nó vì thế mà nó ảnh hưởng tới toàn bộ quá trình giải động học, ko phải chỉ riêng cho việc tìm phương đặc trưng.
                              Lai như lưu thuỷ hề, thệ như phong
                              Bất tri hà xứ lai hề, hà sở chung

                              Comment

                              Về tác giả

                              Collapse

                              Vo_Duy_Thanh Tìm hiểu thêm về Vo_Duy_Thanh

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X