Самоорганизовываемые стаи завораживают. Если вы устали от просмотра муравьев или термитов делать свое дело, теперь вы можете наблюдать рой 1000 крошечных роботов решений формы без кого-либо, имеющих общий контроль.
Мы уже покрывали роботов Kilobot и раньше, но это первый раз, когда они достигли цели, подразумеваемой в их имени — т.е. рой 1000 роботов. Килоботы маленькие и очень простые. Они двигаются с помощью вибрации, направляется через три небольшие проволочные ноги. Это дешево, но это означает, что роботы движутся сравнительно медленно, и это объясняет долгое время, необходимое для роя, чтобы построить целевую форму.
Килоботы могут в основном двигаться в том или иной стороне, общаться с соседями и чувствовать соседей. Именно способность чувствовать соседей дает Килоботу способность самоохохохоняться.
Взгляните на следующее видео, сделанное Гарвардской самоорганизовывющейся исследовательской группой систем:
Что более интересно, чем просто видеть роботов форме, как они это делают.
Наиболее важным моментом является то, что все роботы получают ту же программу, и все же в конечном итоге в разных частях формы. Сначала это кажется довольно волшебным, но когда вы начинаете думать об этом это то, что все клеточные автоматы зависят от. Например, каждая ячейка в игре Life запускает ту же программу, но некоторые клетки включаются, а некоторые выключаются. Если правила связаны с состоянием соседа, то одна и та же программа, работа на всех Килоботах, может производить различное поведение в каждом Килоботе.
Алгоритм довольно умный. Четыре семенных робота находятся рядом с первоначальным рой. Они служат для создания координируемой системы, что каждый робот может использовать, т.е. роботы позиционируют себя по отношению к семенным роботам. Семенные роботы являются единственными роботами, которые имеют различные программы, и они просто остаются там, где они ставятся.
Один из семенных роботов также посылает сообщение «градиент» нуля, который используется, чтобы дать всем роботам ощущение того, где они находятся в рое. Все роботы устанавливают свой градиент на один больше, чем наименьшее значение градиента, что их соседи передают. Например, роботы, близкие к семени, имеют градиент 1, роботы, близкие к градиенту 1, присваивают себе градиент 2 и так далее.
Все остальные роботы получают ту же программу, которая содержит картину формы роботы пытаются построить как bitmap. Только роботы на краю роя начинают двигаться в новое положение. Роботы знают, что они находятся на краю, потому что они имеют градиент значение больше, чем любой из их соседей. Если у робота есть соседи, которые имеют такое же значение градиента, то локально уникальный идентификационный номер используется, чтобы разорвать связь и один из максимально удаленных роботов начинает двигаться, следуя по краю группы по часовой стрелке.
В конце концов он сталкивается с тремя роботами, которые знают, где они находятся в координируемой системе или семенных роботов. В любом случае он может использовать эту информацию, чтобы выяснить, где она находится в координируемой системе и, следовательно, если она находится внутри желаемой формы или нет. Затем он продолжает следовать за краем, пока либо он не выходит из формы или он сталкивается с роботом, который уже остановился и имеет градиентное значение больше, чем его собственные — в любом случае он останавливается.
Как весь процесс останавливается зависит от того, сколько роботов Есть и размер формы. Если Есть не хватает роботов, то все они останавливаются, но форма является неполной. Если есть только правильный номер, то все они останавливаются, и форма завершена. Слишком много роботов и форма завершена, но некоторые роботы продолжают кружить края пытаются найти место, а некоторые никогда не двигаться от своего первоначального местоположения.
Есть много мелких деталей, опущенных из этого счета алгоритма, но это необходимый план. В результате того, как градиенты используются в качестве стартовых и останавливаных условий, форма, как правило, строится в слоях постоянного расстояния от семенных роботов.
Теперь еще раз взглянуть на видео и увидеть все это в действии.
Я надеюсь, что это делает гораздо больше смысла сейчас!
Алгоритм основан на морфогенных градиентах и похож на геометрию «травяного огня», изобретенную Гарри Блюмом в 1967 году. В этом клеточном автомате есть правила, которые зависят от глубинного поля, т.е. их кратчайшее расстояние до края формы.