Engineering
Роботы несут общий груз
В ангаре для марсоходов на марсианской исследовательской базе на закате, когда его огромные ворота открыты на красный реголит, шесть маленьких шестиколёсных роботов, пристыкованных к большому ящику с солнечными панелями, несут его вдоль нарисованной линии через поворот на четверть круга к его отсеку. Кулоново трение пола требует mu m g, прежде чем ящик вообще сдвинется; колёса каждого робота дают не больше mu_w m_r g, поэтому нужное число роботов одинаково на Марсе и на Луне и растёт на Земле, где ограничивают моторы. Команда использует общий закон управления, и каждый робот берёт свою долю с минимальной нормой: выключите одного — и смотрите, как ящик разворачивается, пока остальные не узнают об этом и не возьмут его нагрузку; уберите двоих — и команда упрётся в предел, а ящик будет едва ползти. Пусть один робот толкает пустой ящик не по центру — и тот повернётся вокруг точки на своей длинной оси, которую предсказывает замкнутая формула для однородного прямоугольника. Каждый джоуль, вложенный роботами, снова появляется как тепло в полу.

Что происходит
Ящик 3,0 × 1,2 м массой 300 кг (I = m·(L² + W²)/12 = 261 кг·м²) стоит на стальных плитах пола с μ = 0,4 при марсианской силе тяжести 3,721 м/с². Его вес давит равномерно на пятно опоры, а кулоново трение действует на каждую из 24 × 10 ячеек против собственной скорости ячейки, сглаженное ниже ε = 2 мм/с: прежде чем ящик вообще поедет, роботы должны толкать с силой μ·m·g = 446,5 Н. Каждый 40-килограммовый робот пристыкован к длинной стороне и толкает не сильнее min(150 N, μ_w·m_r·g) = 104.2 N при μ_w = 0,7, поэтому ceil(μ·m·g/F_max) = 5 роботов нужно на Марсе и на Луне — тяга падает с g так же, как трение, — и 8 на Земле, где ограничивают моторы. Маршрут — 6 м прямо, поворот на четверть круга радиусом 3,5 м и ещё 5 м со скоростью 0,25 м/с и ускорением 0,1 м/с². Команда использует общий ПИД-силовой винт по ошибке положения (тройной полюс на 1,2 рад/с) плюс известное трение пола как прямую связь; каждый робот берёт свою долю с минимальной нормой f_i = F/n + ((τ − c×F)/J)·rot90(r_i − c) среди роботов, которых команда считает активными, и все доли уменьшаются вместе, если одна превысила бы свой предел. Отказавший робот сразу перестаёт толкать; остальные узнают об этом после задержки обнаружения. Одиночный толкатель упирается в длинную сторону пустого 80-килограммового ящика на 0,1 м/с: квазистатически ящик поворачивается вокруг точки на своей длинной оси, где равнодействующая трения однородного прямоугольника — интегралы ρ и w/ρ по нему в замкнутом виде — лежит на линии толкателя. Поворот и сдвиг продвигаются по неявному правилу средней точки, методом Ньютона на выпуклом диссипативном потенциале, при силах роботов, постоянных на каждом 10-мс шаге управления, поэтому работа роботов равна теплу трения плюс кинетическая энергия с точностью до округления.
Что попробовать
Смотрите, как шесть роботов поровну делят нагрузку на прямой и заносят ящик в его отсек; отключите робота и следите за разворотом и новыми долями; попробуйте четырёх роботов или Землю; выберите одиночного толкателя и сравните центр вращения с замкнутой формулой; сдвиньте точку толкания.
Модель и её ограничения
Жёсткий ящик на плоском жёстком полу с равномерным давлением и кулоновым трением, сглаженным ниже 2 мм/с, — поэтому ящик, удерживаемый ниже порога, ползёт со скоростью ε·f/√(1 − f²) вместо того, чтобы стоять; роботы — идеальные источники силы в точках стыковки (их собственную массу и качение несут их собственные приводы), идеальная общая локализация и мгновенный консенсус, кроме задержки обнаружения отказа; без податливости захватов, без проскальзывания колёс робота по полу сверх его предела силы.
Уравнения модуля
Уравнения F_fr = −Σ μ·p·ΔA·u_c/√(|u_c|² + ε²), u_c = V + Ω×r_c, pure translation: |F_fr| = μ·m·g·v/√(v² + ε²) f_i = F/n + ((τ − c×F)/J)·rot90(r_i − c), J = Σ|r_i − c|², |f_i| ≤ min(F_motor, μ_w·m_r·g) n ≥ μ·m·g/F_max, below it: v_creep = ε·f/√(1 − f²), f = n·F_max/(μ·m·g) e = ∫ρ dA/∫(w/ρ) dA + c, F_push = μ·p·∫(w/ρ) dA, W_robots = Q_friction + E_k


