Engineering
Манипулятор с последовательной кинематикой
Переведите трёхзвенную руку с грузом 10 кг из одной позы в другую по квинтической траектории: ПД-регулятор каждого сустава с компенсацией тяжести следует с точностью до нескольких сантиметров, а момент в плече на покое — ровно сумма весов на горизонтальные плечи за ним, наибольший при вытянутой руке. Уполовиньте пределы моментов — плечо не удержит вытянутый груз, и рука упадёт; выключите компенсацию тяжести — она провиснет на момент тяжести, делённый на усиление; добавьте груз и смотрите, как плечо подходит к пределу; попросите точку за пределом досягаемости — рука не сдвинется. Работа моторов сводится с кинетической и потенциальной энергией и трением суставов.

Что происходит
Трёхзвенная плоская рука 0,5, 0,4 и 0,2 м с точечными массами 12, 8 и 3 кг на концах звеньев и грузом в захвате. Матрица масс, вектор Кориолиса и вектор тяжести следуют из якобианов точечных масс; каждый сустав ведёт ПД-регулятор с компенсацией тяжести и пределом момента, вязкое трение в суставах, аналитическая обратная кинематика «локтем вверх» и квинтическая прямолинейная траектория от начальной позы к конечной. RK4 с шагом 0,2 мс; работа моторов сходится с изменением кинетической и потенциальной энергии и трением до округления, а статические моменты суставов — замкнутые моменты тяжести масс за каждым суставом.
Что попробовать
Смотрите, как рука несёт груз по траектории, и прочитайте момент плеча против момента тяжести; уполовиньте пределы — рука упадёт; выключите компенсацию — провиснет; нацельтесь за предел досягаемости — не сдвинется.
Модель и её ограничения
Плоская рука с точечными массами, идеальные суставы без люфта и динамики моторов, ПД-регулятор с ограничением момента, без столкновений с собой и полом. Моменты и ошибки — этой идеализированной руки.
Уравнения модуля
Уравнения M(q)·q″ + h(q, q′) + g(q) = τ − b·q′ M = Σ m_k·J_kᵀ·J_k, g_j = Σ m_k·g·∂y_k/∂q_j = Σ_(k≥j) m_k·g·(x_(k+1) − x_j) τ_i = clamp(K_p·(q_i* − q_i) − K_d·q_i′ + g_i(q*), ±τ_max) cos q_2 = (w² − l_1² − l_2²)/(2l_1·l_2), s(u) = 10u³ − 15u⁴ + 6u⁵


