roboforum.ru

Технический форум по робототехнике.

Ройботы - роботы для исследования группового поведения

Ройботы - роботы для исследования группового поведения

meoita » 10 фев 2019, 00:56

Ребенок в школе делает самостоятельную работу - "Исследование простейших алгоритмов группового поведения роботов при прохождении незнакомых объектов типа лабиринт".

В итоге будем моделировать алгоритм Крейга Рейнольдса.
Правила алгоритма:
1. Держать скорость как у соседа
2. Сохранять до ближайших соседей одно расстояние
3. Постараться ни с кем не столкнуться.
Вообще из-за сложности проект разбит на две части:
1 часть (10 класс) - разработка и создание одного из группы роботов, разработка алгоритма прохождения одиночным роботом простого лабиринта.
2 часть (11 класс) - исследование простейших алгоритмов группового поведения роботов при прохождении незнакомых объектов типа лабиринт.

Сначала думали купить платформы на АЭ.
Но потом спроектировали свою - побольше и поменьше. Остановились на той, что поменьше - тестовый лабиринт будет меньше места занимать.
Корпус распечатан на 3D принтере.
Диаметр итогового ройбота - 80мм.

На скрине все три платформы.
Roybot_01.jpg
Слева направо: итоговый вариант, промежуточный, магазинный

Пока готов только тестовый - 1 черный
Roybot_02.jpg

Roybot_03.jpg


Небольшое видео.

В предосмотре почему-то не видно, но надеюсь, что нормально в сообщение вставится (модераторы - поправьте пожалуйста).
Если не вставится, то вот ссылка на Ютуб.

Будущая группа.
Roybot_04.jpg


Группа в большом лабиринте.
Roybot_05.jpg

Roybot_06.jpg


Тестовый лабиринт (из спроектированных деталей можно собрать несколько вариантов)
Roybot_07.jpg


Фото/видео тестового подготовлю позже, если будет интерес у сообщества. 8)

Re: Ройботы - роботы для исследования группового поведения

Angel71 » 10 фев 2019, 04:58

на первое время с физическими ботами, ориентироваться не сильно сложно будет? на компьютере можно простенькую программу написать. сходу делать в каком игровом движе, может и не стоит (может уйти больше времени на изучение движка). форму и на ней отрисовывать. ещё кстати processing есть, по подобным алгоритмам в сети есть ряд скетчей. введите, к примеру такой запрос "processing boids".
с физической реализацией для упрощения ориентации можно использовать одну или несколкьо внешних камер. сверху на каждого бумажку с визуальным кодо, по которому идентифицировать каждого робота, определять его положение и направление. или esp32 + камера, кадры передавать или на ботах обрабатывать или отправлять на компьютер. на ботах где-то выше дальномеров, по периметру корпуса 4, 5 или 6ти гранник, на сторонах которых визуальные метки, по которым хотя бы расстояние определять. с камерой на боте для ориентации ещё можно, допустим примерно как тут два варианта маркировки
Roybot_07.jpg

или ещё какую маркировку продумать
из компактных платформ ещё можно шагающего (два мотора - одним поворачивает, вторым шагает вперёд/назад). вот одного в банку поймал, пока не убежал
2.jpg

вот кстати человек так реализовал
3.jpg

только сразу предупреждаю, такую конструкцию чуть сложней (по крайней мере первого) и дольше делать. хотя некоторые и покупных переделывают
4.jpg

Re: Ройботы - роботы для исследования группового поведения

meoita » 10 фев 2019, 09:44

Angel71 писал(а):на первое время с физическими ботами, ориентироваться не сильно сложно будет?
Нет.
Первый Черный уже вовсю бегает среди лабиринта из книг.
Проблема с фотиком - сломался. Новый будет только на неделе - тогда и сфотаем/сделаем видео.
Ну и еще лабиринт не доделан - сохнут покрашенные стенки (фанера).
У каждого робота по несколько сенсоров:
Один HC-SR04 - дальняя зона
Два TCRT5000L - средняя зона
4 датчика касания (концевик) - ближняя зона
Думаем, что этого им для "общения" будет достаточно.
На крайний случай, любому роботу из группы можно будет "подсказать" по WiFi куда бежать, кроме того они могут по WiFi общаться между собой.
А о своем состоянии робот сможет сообщать при помощи пищика и/или светодиода.

Re: Ройботы - роботы для исследования группового поведения

esisl » 10 фев 2019, 11:01

В школе. Роевое поведение роботов.
Хмм... А как успехи с холодным термоядом? ;)

Re: Ройботы - роботы для исследования группового поведения

meoita » 10 фев 2019, 11:13

"Занимаюсь на труде синхрофазотроном." (с) :crazy:

Физмат класс с ориентацией в сторону робототехники.
В программе обучения есть следующие предметы (помимо основных): мехатроника, электротехника, инженерная графика, программирование, избранные вопросы математики :cry:

Это у нас была халява - а сейчас или мозги или деньги (или все вместе).

Re: Ройботы - роботы для исследования группового поведения

Angel71 » 10 фев 2019, 17:24

в том-то и дело, что все датчики видел и есть небольшое опасение, что ориентация для данной задачи может оказаться немного проблемной. в лабиринте один то нормально бегать будет. а для группы с учётом задач вроде многовато косвенных и не очень точных данных. хотя сильно зависит от подхода. должны карту строить, понимать где они сейчас находятся и в каком направлении ориентированы или на полуощупь тыкаться, как-то пытаться понять перед ним стена или другой бот. и т.д., т.е. в том числе и как воспринимать ваши пункты 1 и 2. та же скорость зависит от шима и напряжения аккумуляторов. энкодеров нет, данных об абсолютном положении других нет, относительные кое как косвенно и неточно. т.е. как скорость и расстояние выдерживать? даже данные о скорости в додумываемых попугаях - с разно просевшими акуумуляторами, простым заданием шима реальная скорость будет немного отличаться. до некоторой степени это может и не будет проблемой. ещё двигаются же они не по виртуальным клеткам, перепрыгивая из текущей в одну из 8ми соседних (и обсчёт всех за один тик), а по разным путям с асинхронно работающим кодом на каждом.
1.jpg

и т.д. в общем много от подхода и желаемого поведения зависит и в отличии от виртуальной реализации, для физической при реализации всякие интересные или труднорешаемые особенности могут нарисоваться.
кстати если со временем (хоть потом, уже после школы) решите использовать более-менее точное абсолютное положение и карту/карты, можно будет реализовывать некоторые интересные роевые алгоритмы. допустим с картой запахов некоторые муравьиные алгоритмы.
про ик сходу не скажу, а уз мешать друг другу сильно могут. если с уз будут трудность, можно сделать согласование. к примеру у первого тймаут по времени и если последний долго не сообщал о сканировании, начинать скан. включил уз, измерял, отключил и в эфир "первый закончил"/"второй давай сканируй". второй закончил скан, сообщает третьему. и т.д. или как в вашем коде и как вы выпускать их бдете (когда добавляете и убираете, делать самонастройку может и интересно, но пока может стоит и повременить с этим) по другому удобней будет.

Re: Ройботы - роботы для исследования группового поведения

meoita » 10 фев 2019, 18:56

Все будет без карты.
С условием построения карты сильно дорожает каждый робот и усложняется общий алгоритм взаимодействия.

Angel71 писал(а):т.е. как скорость и расстояние выдерживать?
- возможно будет просто условие нахождения в группе. Возможно, еще реализуем узнавание свой-чужой (стена).

Angel71 писал(а):в общем много от подхода и желаемого поведения зависит и в отличии от виртуальной реализации, для физической при реализации всякие интересные или труднорешаемые особенности могут нарисоваться.
С этим уже столкнулись при написании программы для одиночного робота. Драйвер двигателя не позволяет манипулировать скоростью вращения мотора, приходиться некоторые вопросы по другому решать.

Angel71 писал(а):а уз мешать друг другу сильно могут. если с уз будут трудность, можно сделать согласование. к примеру у первого тймаут по времени и если последний долго не сообщал о сканировании, начинать скан. включил уз, измерял, отключил и в эфир "первый закончил"/"второй давай сканируй". второй закончил скан, сообщает третьему. и т.д.
Думали сделать "плавающий" период опроса. Но этот вопрос решим как будут несколько роботов.
Сейчас надо все, что сделали оформить и сдать сделанное (это прохождение одиночным роботом лабиринта).

Re: Ройботы - роботы для исследования группового поведения

Angel71 » 10 фев 2019, 19:11

meoita писал(а):Драйвер двигателя не позволяет манипулировать скоростью вращения мотора, приходиться некоторые вопросы по другому решать.

какой драйвер (микросхема) используется? в каких-то наверно можно по некоторому протоколу частоту шима или ещё что задавать. в некоторых отдельный пин для шима. в некоторых можно шимить через два управляющих пина. для примера drv8833 (отличий между разными decay режимами заметить не удалось)
1.jpg
1.jpg (58.93 КиБ) Просмотров: 3093
Последний раз редактировалось Angel71 10 фев 2019, 19:22, всего редактировалось 1 раз.

Re: Ройботы - роботы для исследования группового поведения

meoita » 10 фев 2019, 19:19

Драйвер "TZT teng.5A"
TZT teng.5A.jpg

Карта управления
Card_TZT teng.5A.jpg

Re: Ройботы - роботы для исследования группового поведения

Angel71 » 10 фев 2019, 19:25

не успел картинку добавить. ну вот такой же случай. шимировать одновременно через один из управляющих пинов. один в смысле, для in1 и in2 только один из них шимить. из in3 и in4 тоже только один.

Re: Ройботы - роботы для исследования группового поведения

meoita » 10 фев 2019, 19:28

Пробовали - реакция только на наличие/отсутствие сигнала, т.е. управление "1" или "0". Но с ШИМом тоже работает - 125 как "0", выше как "1" воспринимается.

Re: Ройботы - роботы для исследования группового поведения

Angel71 » 10 фев 2019, 19:38

Код: Выделить всёРазвернуть
void SetPwm(uint16_t pwm1, uint16_t pwm2)
{
  __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, pwm1);
  __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, pwm2);
}

void Servo::stopMotor()
{
  SetPwm(1, 1); //slow decay
}

//direction 0 - to minimum of potentiometr value, 1 - to maximum
void Servo::runMotor(bool direction, uint16_t pwm)
{
   bool decayMode = 0; //decay 0 - fast, 1 - slow
  if(config.invertRotation)
      direction = !direction;
   
  if(pwm > pwmMaxPulseWidth)
    pwm = pwmMaxPulseWidth;
  if(direction)
  {
    pwm1 = decayMode; // TIM_CHANNEL_1
    pwm2 = pwm; // TIM_CHANNEL_2
  }
  else
  {
    pwm1 = pwm; // TIM_CHANNEL_1
    pwm2 = decayMode; // TIM_CHANNEL_2
  }
  SetPwm(pwm1, pwm2);
}

не помню, почему так и переделывал ли потом. на всякий, может для вашего мк и прочего так тоже подойдёт.
да не, похоже просто код причесать нужно и заработает шим. на всякий перепроверить, привильно ли собственно шим настроен и задаётся. скважность это не прямое линейное управление скоростью. т.е. задали 3% или 95%, не будет вращать прям на 3% или 95% от максимальной скорости. до некоторой скважности вращения не будет совсем. потом еле-еле будет пытаться вращать, но всё ещё "мощности" не хватит. потом постепенно (зависимость не линейная) скорость должна увеличиваться. в определённый момент будет максимальной, но шим ещё сколько-то там докручивать можно. тут с этим всем ещё с нагрузкой момент.
допустим потенциометр подключить к мк, на один пин единицу, а второй шимить в зависимости от того как выкручен потенциометр. из простого, можно скважность через консоль в уарт отправлять.
с шимом скорость калибровать. или замерять, допустим оптопрерывателями в двух точках на "трассе". или на вал/колесо метку как сделать и оптопарой частоту замерять. потом сделать массив из нескольких значений соответствия скоростей шиму и промежуточные интерполировать по простому вычислять, ну или засисимость определить и более точно вычислять.

Re: Ройботы - роботы для исследования группового поведения

meoita » 10 фев 2019, 19:48

Angel71 писал(а):просто код причесать нужно и заработает шим. во-первых скважность это не прямое линейное управление скоростью. т.е. задали 3% или 95%, не будет вращать прям на 3% или 95% от максимальной скорости. до некоторой скважности вращения не будет совсем.

Управляющий канал понимает только наличие/отсутсвие сигнала на нем.
Пробовали разную скважность ШИМ (меняли по 1%) - не работает с этим драйвером как хотелось бы.
Ну, или мы не умеем.

Re: Ройботы - роботы для исследования группового поведения

Angel71 » 10 фев 2019, 19:55

пока из догадок, что нужно перепроверить (мультиметром и/или даталоггером), настроен ли шим правильно, как потом скважность задаётся, может попробовать другие частоты шима. с этим драйвером не сталкивался и даташит что-то не наодится (маркировку микросхемы драйвера трудно понять, у китавайцев в лотах вплоть до всякой дичи на подобии l298 упоминается), но возможно как и с drv8833 ещё какой нюанс с шимом. в drv8833 там внутренний генератор для шима на 50кгц (не приятно на некоторых моторах, пищит и дополнительных муторных телодвижений), т.е. внешний шим накладывается на внутренний.
п.с. альтернативный вариант, если не захочется возиться или с тем драйвером что-то не так, это использовать другие драйверы. тот же drv8833 или что на подобии из недорогого и компактного. из вариантов не очень (короткое легко устроить), хоть на транзисторах (посмотрите схему и код той же openservo).

Re: Ройботы - роботы для исследования группового поведения

meoita » 10 фев 2019, 20:11

Angel71 писал(а):с этим драйвером не сталкивался и даташит что-то не наодится (маркировку микросхемы драйвера трудно понять
Даташит тоже не нашли. Только вот такое видео - ссылка.

Вторая причина, по которой не использовали что-то другое - дефицит свободных выводов на Ардуино. Мультиплексоры ставить не выход - места мало на теле робота.

В принципе, как писал уже выше, мы все проблемы отсутствия регулирования скорости моторов решили.


Rambler\'s Top100 Mail.ru counter