Đơn vị 2 / 9

Trí tuệ nhân tạo trong Robotics và Điều khiển chuyển động

Lợi nhuận:

  • Khả năng thiết lập và giải quyết các bài toán lập kế hoạch quỹ đạo và động học thuận/nghịch với sự trợ giúp của AI
  • Khả năng tạo ra quỹ đạo an toàn bằng cách đưa ra các giới hạn cho khớp robot, các hạn chế về tốc độ và gia tốc làm bối cảnh cho lời nhắc
  • Khả năng xác minh số lượng và vật lý đầu ra động học và quỹ đạo do AI tạo ra

Đưa phần gắp ở đầu cánh tay robot đến một điểm nhất định trong không gian, theo một hướng nhất định; Nghe có vẻ đơn giản nhưng đằng sau đó là những phương trình động học, giới hạn khớp, điểm kỳ dị và quy hoạch quỹ đạo. Ở đây, kỹ sư cơ điện tử sử dụng lượng giác, đại số tuyến tính và lý thuyết điều khiển cùng nhau. Trí tuệ nhân tạo là một trợ thủ đắc lực trong quá trình này: nó có thể thiết lập các phương trình động học thuận, đề xuất các phương pháp giải cho động học nghịch đảo, tham số hóa quỹ đạo theo các giới hạn vận tốc/gia tốc. Tuy nhiên, robot là một trong những lĩnh vực cơ điện tử có rủi ro vật lý cao nhất; Nếu một chuỗi góc do AI tạo ra được gửi đến robot mà không được xác minh, cánh tay có thể va vào chính nó, môi trường hoặc người vận hành. Trong phần này, chúng ta sẽ xem cách thiết lập và xác minh kế hoạch động học và quỹ đạo bằng AI.

Động học thuận và nghịch đảo

Động học thuận (FK): Tìm vị trí và hướng của bộ phận tác động cuối nếu biết các góc khớp. Chỉ có một giải pháp duy nhất, đó là trực tiếp.

Động học nghịch đảo (IK): Nếu biết vị trí mong muốn của hàm cuối, hãy tìm các góc khớp sẽ mang lại điều này. Nó thường có nhiều hơn một nghiệm (như khuỷu tay lên/xuống), đôi khi nó không có nghiệm (điểm không thể tiếp cận), đôi khi nó có vô số nghiệm (điểm kỳ dị).

khái niệm

đầu vào

đầu ra

Số lượng giải pháp

Động học chuyển tiếp

góc khớp

Vị trí/định hướng cực đoan

độc thân

Động học nghịch đảo

Vị trí/định hướng cực đoan

góc khớp

Nhiều/không/vô hạn

Đối với cánh tay phẳng hai khớp, động học nghịch đảo có thể được thiết lập trong AI và được xác minh thủ công như sau:

import numpy as npdef inverse_kinematik_2r(x, y, L1, L2): """IK cho cánh tay phẳng 2 khớp. Trả về các góc theo radian (giải pháp khuỷu tay hướng xuống).""" r2 = x**2 + y**2 # Kiểm tra khả năng truy cập: điểm trong không gian làm việc có phải không? if np.sqrt(r2) > (L1 + L2) hoặc np.sqrt(r2) < abs(L1 - L2): raise ValueError("Điểm nằm ngoài không gian làm việc có thể truy cập") cos_t2 = (r2 - L1**2 - L2**2) / (2 * L1 * L2) cos_t2 = np.clip(cos_t2, -1.0, 1.0) # bảo mật số t2 = np.arccos(cos_t2) # khuỷu tay xuống t1 = np.arctan2(y, x) - np.arctan2(L2*np.sin(t2), L1 + L2*np.cos(t2)) return np.degrees(t1), np.degrees(t2)# Xác thực: L1=L2=1, target (1,1) -> dự kiến t2=90 in độ(inverse_kinematik_2r(1.0, 1.0, 1.0, 1.0)) # ~ (0.0, 90.0)

Các dòng quan trọng ở đây là nơi AI thường bỏ qua: kiểm tra khả năng tiếp cận (là điểm trong không gian làm việc) và `np.clip` (ngăn đầu vào arccos vượt quá ±1 do lỗi làm tròn). Nếu không có hai biện pháp bảo vệ này, mã sẽ tạo ra NaN hoặc bị lỗi ở điểm không hợp lệ.

Mẹo: Khi yêu cầu độ phân giải IK, hãy yêu cầu rõ ràng AI "thêm kiểm soát khả năng truy cập và giới hạn đầu vào arccos vào clip". Hai dòng này ngăn chặn những lỗi im lặng gây đau đầu nhất trên thực địa.

Giới hạn chung, tính đơn nhất và nhiều giải pháp

Mỗi khớp của robot thực có phạm vi góc (ví dụ: -170° đến +170°), giới hạn tốc độ và giới hạn gia tốc. Ngay cả khi IK đưa ra một góc có giá trị về mặt toán học thì nó cũng không thể được sử dụng nếu góc đó nằm ngoài phạm vi vật lý của khớp. Ngoài ra, robot rơi vào tình trạng kỳ dị trong một số cấu hình: hai trục thẳng hàng, mất một bậc tự do và vận tốc khớp cố gắng đạt đến vô cực đối với một chuyển động đầu nhỏ.

Vì vậy, chỉ giải pháp nhân sự thôi là chưa đủ; Mọi giải pháp đều phải vượt qua bộ lọc chấp nhận được:

def Solution_gecerli_mi(acilar_deg, limit_deg): """pains: [t1,t2,...], limit: [(min,max),...]""" cho nỗi đau, (amin, amax) trong zip(acilar_deg, limit_deg): nếu không (amine <= pain <= amax): trả về Sai, f"Vượt quá giới hạn chung: {pain:.1f} deg ({amine},{amax}) ngoại trừ" return True, "OK"limits = [(-170, 170), (-120, 120)]print(cozum_valid_mi([0.0, 90.0], limit)) # (True, 'OK')print(cozum_valid_mi([0.0, 150.0], limit)) # (Sai, 'Vượt quá giới hạn chung...')

AI có thể đưa ra giải pháp “toán học” của IK; nhưng các giới hạn chung và tránh điểm kỳ dị là dành riêng cho hệ thống của bạn và phải được đưa ra làm ngữ cảnh cho lời nhắc.

Lập kế hoạch quỹ đạo

Đưa robot từ điểm A đến điểm B không phải là vẽ một đường thẳng giữa hai góc. Thay đổi tốc độ đột ngột tạo ra sốc và rung cơ học. Thay vào đó, các cấu hình mềm được sử dụng: cấu hình vận tốc hình thang (gia tốc không đổi – tốc độ không đổi – giảm tốc không đổi) hoặc đường cong chữ S (mượt mà hơn, trong đó gia tốc cũng bị hạn chế). Khi bắt AI tạo quỹ đạo, bạn phải đưa ra mục tiêu, thời lượng và các ràng buộc.

import numpy as npdeftrapez_yorunge(q0, q1, v_max, a_max, dt=0.01): """Hồ sơ vận tốc hình thang cho một khớp. Mảng vị trí được trả về.""" distance = abs(q1 - q0) Direction = np.sign(q1 - q0) t_speed = v_max / a_max distance_speed = 0.5 * a_max * t_speed**2 if 2 * distance_speed > khoảng cách: # cấu hình tam giác (không thể truy cập v_max) t_speed = np.sqrt(khoảng cách / a_max) t_constant = 0,0 v_peak = a_max * t_speed khác: t_constant = (khoảng cách - 2 * distance_speed) / v_max v_peak = v_max T = 2 * t_accelerate + t_constant t = np.arange(0, T, dt) # ... tính toán vị trí cho mỗi t (dựa trên các pha tăng tốc/không đổi/giảm tốc) return t, T, v_peak, thời lượng, vz = hình thang_trajectory(0,0, 90,0, v_max=60.0, a_max=120.0)print(f"Tổng thời lượng: {duration:.3f} s, tốc độ cực đại: {vz:.1f} deg/s")

Kiểm tra logic ở đây là: nếu khoảng cách ngắn, động cơ sẽ không bao giờ đạt v_max và cấu hình sẽ chuyển từ hình thang sang hình tam giác. Nếu AI bỏ lỡ điều kiện này, thời lượng sai sẽ được tính cho các chuyển động ngắn. Bạn có thể xác minh điều này bằng cách kiểm tra mã với một giá trị đã biết (ví dụ: khoảng cách rất ngắn).

Nhắc yếu / Nhắc mạnh

YẾU:"Viết quỹ đạo đưa cánh tay robot từ A đến B."(Không có ràng buộc: giới hạn tốc độ? gia tốc? khoảng cách khớp? Đầu ra mù.) MẠNH:"Tạo quỹ đạo điểm-điểm trong không gian khớp cho robot 6 trục. Giới hạn tốc độ cho mỗi khớp là 90 độ/s, giới hạn gia tốc là 180 độ/s^2, phạm vi góc được cho trong bảng. Sử dụng cấu hình vận tốc hình thang, nếu khoảng cách ngắn, rơi vào hình tam giác profile. Đầu ra của mỗi khớp cũng là viết một hàm xác minh để kiểm tra xem nó có vượt quá giới hạn của khớp không: {{table}}"

Xác minh: Từ mô phỏng đến Robot

Quỹ đạo do AI tạo ra được xác minh theo thứ tự sau trước khi đến robot:

  1. Số: Góc khớp, tốc độ và gia tốc của từng bước có nằm trong giới hạn không?
  2. Va chạm: Dọc theo quỹ đạo, cánh tay có va chạm với chính nó hoặc với môi trường không (hình dung/mô phỏng nếu có thể)?
  3. Điểm kỳ dị: Quỹ đạo có đi qua vùng kỳ dị không (định thức Jacobian có tiến tới 0) không?
  4. Kiểm tra phần cứng chậm: Vận hành robot ở tốc độ thấp (ví dụ: 10%) và giám sát nó một cách trực quan.
  5. Tăng tốc độ dần dần: Sau khi mọi thứ được xác minh, tốc độ sẽ tăng từng bước đến giá trị danh nghĩa.
Thận trọng: Khi khởi động robot với quỹ đạo mới lần đầu tiên, việc ghi đè tốc độ phải luôn ở mức thấp và phải có sẵn điểm dừng E. Ngay cả khi đầu ra AI “chính xác về mặt toán học”, độ lệch, trục đảo ngược hoặc hiện tượng vướng cáp trong thiết lập vật lý sẽ chỉ được phát hiện khi thử nghiệm chậm.

Hộp đựng nhỏ

Kỹ sư tự động hóa Ece yêu cầu AI cung cấp mã quỹ đạo trong không gian chung cho ứng dụng gắp và đặt. AI tạo ra một mặt cắt hình thang, nhưng khi Ece kiểm tra một chuyển động ở khoảng cách ngắn, cô ấy thấy rằng thời gian là số âm: mã không xử lý được trường hợp mặt cắt hình tam giác không thể đạt được v_max. Ece sửa lỗi này bằng cách nhắc nhở "nếu khoảng cách ngắn thì rơi vào hình tam giác". Sau đó, nó chạy các góc khớp do AI đưa ra thông qua chức năng xác thực dựa trên bảng giới hạn của chính nó và nhận thấy rằng khớp 5 muốn +125° tại một điểm, trong khi giới hạn là +120°. Anh ta lập kế hoạch lại quỹ đạo và theo dõi nó, lần này chạy robot với tốc độ 10%. Ở vòng đầu tiên, anh ấy thấy dụng cụ kẹp đang tiến quá gần bàn và sửa lại độ lệch Z. AI trả về bản phác thảo hoạt động trong vài phút; nhưng ba lần xác nhận riêng biệt (hình tam giác, giới hạn khớp, kiểm tra chậm) đã phát hiện ra ba vấn đề thực sự riêng biệt.

Những lỗi thường gặp

  • Sử dụng giải pháp IK không có giới hạn chung và kiểm soát khả năng tiếp cận.
  • Không cắt các mục nhập arccos/arcsin nhưng tạo ra NaN trong trường hợp có lỗi làm tròn.
  • Yêu cầu quỹ đạo mà không hạn chế tốc độ/gia tốc và tạo ra cú sốc cơ học.
  • Bỏ qua các vùng kỳ dị và để tốc độ chung tăng vọt.
  • Bỏ qua quá trình chuyển đổi mặt cắt hình thang-tam giác trong một khoảng cách ngắn và tính sai thời gian.
  • Tiến hành thử nghiệm quỹ đạo đầu tiên ở tốc độ tối đa và không có quyền truy cập E-stop.

Tóm lại

  • Động học thuận có một nghiệm duy nhất; động học nghịch đảo có thể tạo ra nhiều nghiệm, không tồn tại hoặc vô hạn.
  • Các giải pháp IK nhất thiết phải được lọc theo các giới hạn chung, khả năng tiếp cận và điểm kỳ dị.
  • Lập kế hoạch quỹ đạo; Nó sử dụng các cấu hình mềm, tương thích giới hạn như hình thang hoặc đường cong chữ S.
  • Ở khoảng cách ngắn, hình dạng thay đổi từ hình thang sang hình tam giác; điều này nên được xử lý trong mã.
  • AI tăng tốc độ toán học; Các giới hạn và bối cảnh cài đặt vật lý phải nhập vào dấu nhắc.
  • Quỹ đạo mới luôn được chạy lần đầu tiên với tỷ lệ tốc độ thấp và điểm dừng E dễ tiếp cận.

Nhiệm vụ ứng dụng

Chọn mô hình cánh tay hai hoặc ba khớp (với độ dài liên kết thực hoặc ảo và giới hạn khớp). Yêu cầu AI tạo ra hàm động học nghịch đảo và công cụ lập kế hoạch quỹ đạo với bối cảnh này. Sau đó: (1) xác minh thủ công đầu ra IK với một mục tiêu đã biết (bạn có đặt các góc trở lại và quay trở lại cùng điểm với FK), (2) kiểm tra xem mã có bắt được chúng hay không bằng cách đưa ra ít nhất một điểm không thể tiếp cận và một giới hạn khớp vượt quá mục tiêu, (3) kiểm tra xem ở khoảng cách ngắn, thời gian quỹ đạo có hợp lý không. Viết ra bao nhiêu vấn đề xác thực mà bạn đã tìm thấy trong phiên bản đầu tiên của mã và lớp nào đã giải quyết từng vấn đề đó.