- Введение в систему дифференциального привода и кинематику робота
- Веб-сервис
- Железо
- Математическое моделирование робота
- Обратная кинематика
- Объяснение уравнений прямой кинематики
- Предыстория
- Программа
- Прямая кинематика дифференциального робота
- Робокосилка 2023. ros & fun
- Типы колесных баз, подъемных механизмов и колес робота — национальная сборная worldskills россия
- У вас есть минутка? не могли бы вы покосить мой газон?
- “зарождение проекта. часть 1.1. как я собирал робота телеприсутствия на колесной базе.” технологии endurance
- Итоги
Введение в систему дифференциального привода и кинематику робота
Кинематика – изучение движения объекта с точки зрения математики. Она рассматривает движение объекта без учета влияющих на него внешних сил. Здесь в основном внимание привлекает геометрическое отношение деталей, обеспечивающих управление конструкцией. Динамика – это исследование движения объекта с учетом всех сил, влияющих на робота.
Мобильный робот имеет шесть степеней свободы (DOF). Три степени свободы: х, у и z — связаны с тремя координатными осями, позволяющими определить положение объекта в трехмерном пространстве. Остальные три степени свободы относятся к ориентации робота в пространстве.
Это такие значения, как крен (боковой наклон, или раскачивание корпуса робота относительно оси движения), тангаж (наклон аппарата относительно горизонтальной поперечной оси, т. е. наклон вниз или подъем вверх передка робота) и рыскание (небольшие изменения направления движения аппарата вправо или влево относительно его курса).
Робот с дифференциальным приводом перемещается в двухмерной плоскости (2D), и его положение в любой момент можно описать двумя глобальными координатами Х и Y, лежащими в горизонтальной плоскости. При этом курс робота обозначается как θ. Этих данных вполне достаточно, чтобы описать положение робота с дифференциальным приводом.
Как уже говорилось ранее, дифференциальный привод робота основан на разности между скоростью вращения правого и левого ведущих колес. Если скорость вращения ведущих колес одинакова, робот движется прямо. При изменении скорости вращения одного ведущего колеса относительно другого робот будет выполнять поворот в ту сторону, в которой скорость вращения ведущего колеса меньше по отношению ко второму ведущему колесу. Ниже на фото представлена пара популярных роботов с дифференциальным приводом:
Веб-сервис
На bootstrap накидал страничку. На странице два .jpg файла, которые обновляются по мере загрузки. Факторов, влияющих на задержки в управлении и телеметрии много, это и Ваша скорость соединения, и канал на сервере, и канал у меня дома.
Максимальная частота обновления, которую удалось добиться мне:
Железо
В волшебную коробочку аккуратно добавлены Raspberry pi, USB хаб, wifi-адаптер, веб-камера.Из интересных моментов по железу. У меня не оказалось драйвера с нужными характеристиками для двигателей. Обычно в качестве драйвера используют H-мост на полевых транзисторов или (хардкор) на реле. Я выбираю более жесткий вариант, потому что именно реле были в наличии.
Обычная схема подключения подразумевает 4 ключа на каждый двигатель, т.е. 8 на 2 ходовых двигателя.
Учитывая, что можно использовать так же и нормально-открытое состояние реле, а так же тот факт, что нет необходимости приводить двигатели в движение по отдельности можно обойтись всего лишь 5 реле для двух ходовых двигателей.
Кроме самого робота установлена на доме камера, которая с частотой 3 кадра/сек. загружает на ftp-сервер в интернете обзорное фото участка для лучшей ориентации. Но впоследствии просто заменил на решение от ivideon.
Математическое моделирование робота
Наиболее важная часть мобильного робота – это система управления. С помощью нее робот ориентируется и перемещается в пространстве. Одной из самых простых и рентабельных систем управления является система дифференциального привода. Дифференциальный привод состоит из двух независимых друг от друга ведущих колес, установленных на общей оси.
Каждое ведущее колесо приводится в движение отдельным двигателем. Дифференциальный привод – это неголономная система, которая имеет ограничения в изменении положения робота. Примером неголономной системы является автомобиль, поскольку он не может изменить положение без измененияпозы.
Напомним, голономная система – это механическая система, все механические связи которой можно свести к геометрическим. Такие связи накладывают ограничения только на положение системы, но не на величины скоростей.
Механической связью называют ограничения, накладываемые на координаты и скорости механической системы, которые должны выполняться на любом ее движении.
Если все кинематические связи нельзя свести к геометрическим связям, то данная система будет неголономной. Таким образом, неголономная система – это механическая система, на которую, кроме геометрических связей, наложены еще и дифференциальные (кинематические). Их нельзя свести к геометрическим связям.
Далее мы рассмотрим работу робота с дифференциальным приводом и возможность смоделировать его математически.
Обратная кинематика
C помощью уравнений прямой кинематики мы можем определить новое положение робота, учитывая скорость вращения колеса. Теперь можно приступить к обратной задаче.
Допустим, робот в момент времени t находится в положении (х, y, θ). Определим скорости левого (V-left) и правого (V-right) колес так, что за промежуток времени t δt робот займет новое положение с координатами (х′, y′ и θ′).
В устройствах с дифференциальным приводом переместить робота в нужную позицию с помощью только простой установки скорости вращения колес нельзя. Как уже упоминалось ранее, дифференциальный привод – это неголономная механическая система, в которой, кроме геометрических, учитываются и кинематические связи. Неголономная система накладывает некоторые ограничения на управление роботами.
Для увеличения степени подвижности (управляемости) неголономного робота следует использовать разность скоростей левого и правого колес. Если вставить значения из уравнений (12) в уравнение (15), то можно определить способы управления, которые в дальнейшем сможем запрограммировать:
- если V-left = V-right, => nr = nl => R = ∞, wdT = 0 (т. е. скорость и направление вращения левого ведущего колеса совпадают со скоростью и направлением вращения правого колеса), значит, робот движется прямолинейно и q остается неизменной;
- если V-left = –V-right, => nr = –nl, => R = 0, wdT = 2nl × step/l и ICC = [ICCx, ICCy] = [x, y] => x′ = x, y′ = y, θ′ = θ ωδt => (т. е. скорости вращения левого и правого колес одинаковы, но направления их вращения не совпадают, колеса вращаются навстречу друг другу), значит, робот вращается вокруг мгновенного центра кривизны (ICC), т. е. ∀q может изменяться без ограничений при неизменных координатах [x, y].
Объединяя приведенные ниже способы управления, можно создать алгоритм, позволяющий достичь любого положения робота относительно его начального положения:
1) поворачивайте, пока ориентация робота не совпадет с линией, ведущей из исходного в целевое положение, V-right = –V-left = V-rot (скорость поворота);2) двигайтесь прямо до тех пор, пока положение робота не совпадет с целевым положением, V-right = V-left = V-ahead (скорость прямого движения);3) поворачивайте, пока ориентация робота не совпадет с ориентацией цели, V-right = –V-left = V-rot. Скорости V-rot и V-ahead выбираются произвольно.
Объяснение уравнений прямой кинематики
Объяснение уравнения кинематики мы можем начать с формулирования решения для движения робота вперед без учета его массы и действующих на объект сил. Показанное ниже фото иллюстрирует кинематику одного из колес робота:
Наклон вправо или влево относительно оси Y называется креном; все остальное можно рассматривать как скольжение. Предположим, что колесо не проскальзывает. В этом случае за один оборот обод колеса пройдет расстояние, равное 2πr, где r – радиус колеса.
Будем считать, что движение происходит в двухмерной плоскости с плоской ровной поверхностью. Выполняя поворот, робот будет поворачиваться вокруг точки, находящейся на оси, совпадающей с осью правого и левого ведущих колес. Эта точка находится за пределами робота и называется мгновенным центром кривизны (ICC).
Основное понятие, без которого не получится вывести уравнение кинематического привода, – это угловая скорость робота, обозначаемая буквой w. При повороте ведущие колеса робота катятся по окружности, центр которой совпадает с мгновенным центром кривизны (ICC).
Скорость колеса описывается формулой v = 2πr/T, где T – время, затраченное на прохождение колесом расстояния, равного длине полной окружности с центром, совпадающим с точкой ICC. Угловая скорость w определяется как 2π/T и измеряется в радианах (градусах) в секунду. Радиан – это угол, соответствующий дуге, длина которой равна радиусу этой дуги. 1 радиан равен 57,3°.
Если объединить уравнения для расчета скорости колеса v и его угловой скорости w, получим уравнение w = 2π/T.
v = rw. (1)
(уравнение линейной скорости)
Предыстория
Вся история с газонокосилками началась летом 2023,
как раз был о моем опыте реализации робокосилки из того, что было в гараже.
После этого
их платформу для дальнейшей разработки. Это очень удобно, потому что все вопросы по железу и механике требуют особых навыков и занимают очень много времени.
Я очень хотел организовать конкурс роботов-газонокосилок. Как оказалось дело это нелегкое. Команд было зарегистрировано более 15, но в итоге только трое участников показали ход работ.
Все усилия по проведению конкурса в Сколково оказались зря. В конце концов оказалось, что свободных газонов для конкурса по робототехнике в Сколково нет. Все возможные спонсоры не хотят связываться с новым конкурсом с неясными перспективами. На письма в муниципальные организации я даже не получил ответ.
Программа
Как и прежде Arduino получает по serial-порту сообщения в один символ, которые обозначают необходимое действие. Так же для тестирования и отладки, полученные от raspberry коды отправляются по bluetooth, можно подключить телефон в режиме терминала и получать данные с сервера еще и на телефон.
int m1=2;
int m1b=3;
int m2=4;
int m2b=5;
int mk=6;
int pis=7;
char a,b;
void setup()
{
Serial.begin(9600);
Serial1.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
while (!Serial1) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Start");
pinMode(statpin, OUTPUT);
pinMode(m1, OUTPUT);
pinMode(m1b, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(m2b, OUTPUT);
pinMode(mk, OUTPUT);
pinMode(pis, OUTPUT);
analogWrite(pis, 1000);
delay(100);
analogWrite(pis, 700);
delay(200);
analogWrite(pis, 300);
delay(300);
analogWrite(pis, 1000);
delay(100);
analogWrite(pis, 100);
digitalWrite(pis, HIGH);
digitalWrite(statpin, LOW);
digitalWrite(m1, LOW);
digitalWrite(m1b, LOW);
digitalWrite(m2, LOW);
digitalWrite(m2b, LOW);
digitalWrite(mk, LOW);
digitalWrite(pis, HIGH);
}
void loop() // run over and over
{
if (Serial.available()){
a=Serial.read();
Serial1.println(a);
if(a=='B'){
digitalWrite(m1, HIGH);
digitalWrite(m1b, LOW);
digitalWrite(m2, HIGH);
digitalWrite(m2b, LOW);
}
if(a=='F'){
digitalWrite(m1, HIGH);
digitalWrite(m1b, HIGH);
digitalWrite(m2, HIGH);
digitalWrite(m2b, HIGH);
}
if(a=='R'){
digitalWrite(m1, HIGH);
digitalWrite(m1b, LOW);
digitalWrite(m2, HIGH);
digitalWrite(m2b, HIGH);
}
if(a=='L'){
digitalWrite(m1, HIGH);
digitalWrite(m1b, HIGH);
digitalWrite(m2, HIGH);
digitalWrite(m2b, LOW);
}
if(a=='S'){
digitalWrite(m1, LOW);
digitalWrite(m1b, LOW);
digitalWrite(m2, LOW);
digitalWrite(m2b, LOW);
}
if(a=='W'){
digitalWrite(mk, HIGH);
}
if(a=='w'){
digitalWrite(mk, LOW);
}
if(a=='V'){
digitalWrite(pis, LOW);
}
if(a=='v'){
digitalWrite(pis, 700);
}
}else{
}
}
Прямая кинематика дифференциального робота
С помощью уравнений кинематики для робота с дифференциальным приводом определяется положение устройства. Представим, что начальное положение робота в момент времени t – X, Y, θ. Нам требуется определить, какое положение устройство займет (X′, Y′, θ′) за промежуток времени t dt. При этом следует учесть следующие параметры: v-left – скорость левого и v-right – скорость правого колеса.
Эта методика расчета положения используется для проводки робота по требуемой траектории.
Робокосилка 2023. ros & fun
Я осваиваю ROS и пишу лаунчер для робокосилки, использую Kinect и SLAM, только на визуальной одометрии робот строит карту и прокладывает маршрут. Kinect в солнечную погоду работает плохо. С ROS Вы за один вечер сделаете «Hello World!», а дальше тьма.
нет ВООБЩЕ ни одной точки в РФ? Я открыл
В свободное время прикрутил к тягам своей «рабочей лошадки» два сервопривода, ультразвуковой сенсор и Arduino. Простой тест объезда березы и остановки пройден! А дальше бездна, эту штуку опасно просто так пускать по своему участку! Ее даже не получится пинать как роботов сами знаете откуда.
Оказывается роботы — вещи достаточно скучные в понимании большинства людей, особенно сервисные роботы. Да, знаю о великой дружбе роботов-пылесосов и котиков. Знаю о супер творениях от Boston Dynamics, Darpa и российском боевом роботе-аватаре, это все больше похоже на роботов, чем коробочка, в которой некий алгорим взаимодействует с реальным миром.
В понимании моей дочки роботы — это как минимум трансформеры, а не та еруда, на которую я трачу время. Я принял тяжелое решение и «временно» сделал из робокосилки игрушку на bluetooth управлении.
Управление работает так же как и у снегоуборщика. Оказалось это весело! Особенно для папы.
Дальше — больше! Меня заинтересовала идея реализации управления не на bluetooth, а через интернет, с телеметрией. Скучно, пресно и идея избитая!
А что если дать возможность любому пользователю интернета управлять моей газонокосилкой? Знаете такие идеи, которые потом трудно выкинуть из головы? Это как раз была такой…Сhallenge accepted!
Типы колесных баз, подъемных механизмов и колес робота — национальная сборная worldskills россия
4. Четырехколесные базы со всеми ведущими колесами представлены в двух вариантах: варианте с omni-колесами, когда мотор располагается под 45 градусов к ходу робота, и вариантом с механо-колесами, которые по своей сути являются вариацией omni-колес и обладают теми же возможностями. Но моторы, при этом, располагаются к ходу робота под прямым углом. Такие конструкции подходят только для передвижения по идеально ровным поверхностям.
У вас есть минутка? не могли бы вы покосить мой газон?
Краткая история разработки на коленке робота-газонокосилки. Управлять ей можно с любой точки земли через интернет. Мечтали почувствовать себя оператором марсохода или лунохода? Всего лишь нужно зайти на сайт
“зарождение проекта. часть 1.1. как я собирал робота телеприсутствия на колесной базе.” технологии endurance
Проект: Технологии «Endurance Robots&Lasers».
Статья №1. “Зарождение проекта. Часть 1.1. Как я собирал робота телеприсутствия на колесной базе.”
К 2023г членам нашей будущей команды удалось заработать достаточно денег, чтобы рисковать своим временем в долгосрочной перспективе (определили горизонт планирования 1 год). И мы решили организовать стартап. Заниматься куплей-продажей? Нееееет, технологичный стартап! А именно, разработка роботов и твердотельных лазеров мощностью порядка 1-10 Вт.
Идея присутствия в нужное время в интересном месте за тысячи километров мне сразу понравилась и нравится до сих пор! Все мы любим онлайн-трансляции. А благодаря роботу я к тому же сам управляю направлением своего взгляда, своим местонахождением. Поэтому в 2023 году когда мы начали проект Endurance Robots, я взялся за разработку робота телеприсутствия на колесах. Колесная база позволит передвигаться по помещению или на улице, а телеприсутствие обеспечит актуальность происходящей вокруг ситуации. Конечная цель: полная виртуальная реальность, робот, управляемый человеком с помощью очков Oculus rift! Огонь!))
Для начала я погуглил и изучил имеющиеся на международном рынке предложения: PadBot (Китай), BotEyes (Россия), Double Robotics (США), Webot (Россия), OrigiBot (США), Oculus (Канада), Anybot (США), RBOT Synergy (Россия), и составил таблицу сравнительных характеристик роботов. Роботы отличались по своему функционалу: умение брать предметы манипулятором (банку пива из холодильника:), преодолевать высокие препятствия, автономно заряжаться и др. Естественно, ценник плавал и находился в диапазоне от $1000 до $10000. Впоследствии я понял, что недорогие устройства до $5000 являются роботизированными платформами, управляемыми человеком-оператором, но никак не автономными роботами, способными самостоятельно принимать решения в меняющейся обстановке: приближение препятствия, проезд по маршруту из пункта А в пункт В, распознавание речевых команд. Наша команда Endurance Robots решила войти на рынок платформ эконом класса до $2000. Исходя из таблицы сравнительных характеристик я определил характеристики устройства, которые нужно достичь в первую очередь, а именно: время автономной работы (от 8 часов, целый рабочий день), преодоление препятствий (высотой до 3,5 сантиметров, порог входной двери), надежная передача команд управления через сеть Интернет, качественная видео- и аудиосвязь. Один участник проекта настаивал сделать корпус робота из женского манекена и установить планшет между грудей. Мы даже купили б/у торс без рук, ног и головы за $2 (полноценный новый манекен стоит ~$100), но из-за ограниченного бюджета эта идея в итоге умерла.
В ходе тестирования спроса стало однозначно понятно, что люди ищут не просто планшет на колесах, но, скорее, роботизированную платформу, которая способна выполнять интеллектуальные задачи человека: распознавать объекты и речь (open source технология OpenCV), грамотно ответить на вопросы (ИИ), преодолеть маршрут до предмета, захватить предмет и перевести в место назначения. То есть колесная база – это не главное, но нужное дополнение к тому, что мы предлагаем. Стратегически колесная база остается главным форм фактором (form factor). По аналогии ноутбук -> планшет. Т.е. новая форма – это новый продукт.
Задача на первом этапе — разработать колесную базу: недорогую (не дороже $200 для мелкосерийного производства), эффективную (которая бы надежно двигалась, имела бы модульность и возможность быстрого ремонта), простую (на подобии того, что телефон поставил, приложение скачал и система работает), надежную (software, hardware), которую в дальнейшем можно будет усовершенствовать. Оператор должен быть способен подавать сигналы на электромоторы и сервоприводы через сеть интернет.
Итак, БАЗОВЫЕ ПРИНЦИПЫ конструкции.
— Универсальность платформы а-ля «вездеход» не преследуется. Модель окружающей среды = внутри помещения. Поверхность ровная, (ламинат, плитка, дерево, бетон, линолеум), препятствия до 1 см.
— Приоритет в следующей последовательности: привлекательность, эргономичность и простота, мобильность.
— Создание прототипа, смоделированного под промышленное производство.
— Надежность в ежедневной эксплуатации (1 год)
— Заменяемость или дополняемость (поставить второй динамик или вторую камеру есть куда).
— Универсальность крепежей.
— Прямолинейное движение, а не зигзагами.
— Шум и вибрация менее 10 ДцБ.
— Разборность и легкость конструкции для переноса из одного здания в другое.
ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ конструкции.
— Максимальная скорость до 3 км/ч.
— Высота расположения верхнего края экрана ~1.5 м. (желательно, с возможностью изменения с 1.2 м до 1.8 м).
— Сколько кг на высоте 180 см? Планшет кредл два сервопривода. Будет ли устойчива трехколесная конструкция с выбранными АКБ вдоль бортов при наезде на препятствие 3.5 см одним колесом или двумя колесами?
И тут повалился миллион вопросов… Какого размера колеса? Из какого материала?
Какого типа: омни, гладкие, с глубоким протектором?
Сколько колес: три или четыре? Как насадить на вал?
На вал редуктора или мотора?
Какой мотор выбрать: коллекторный, бесколлекторный, шаговый? Из какого материала изготовить раму? В итоге я сделал первый прототип из легкодоступных материалов, продающихся в любом строительном магазине: 3 колеса (два ведущих и одно поворотное), рама из тонкого алюминиевого П-образного профиля, саморезы и болты, 2 шаговых мотора.
Главное, этот прототип выполнял свое предназначение: служить нашему схемотехнику Андрею для тестирования электроники вдоль и поперек.
В этой статье я описал самое начало нашего длинного пути. Изделия и фотографии любительские. Но в следующих частях я покажу более профессиональный подход:
Схема расположения элементов механики и электроники, на которую мы ориентировались:
Продолжение статьи здесь: «Продолжение. Часть 1.2. Как я собирал робота телеприсутствия на колесной базе.» Технологии Endurance Robots&Lasers
Итоги
Эта статья была посвящена не только фундаментальным концепциям роботов с дифференциальным приводом, но и кинематическим уравнениям движения таких устройств. В начале статьи были рассмотрены основы дифференциального привода роботов.
Далее мы вывели использующиеся в таких устройствах уравнения прямой кинематики и объяснили их с помощью кинематических схем. Затем познакомились с уравнениями обратной кинематики. В следующей статье «Моделирование робота с дифференциальным приводом» рассмотрим, как с помощью ROS и Gazebo создать модель автономного мобильного робота.
За основу данной статьи взята книга Д. Лентина «Изучение робототехники с использованием Python»