Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Реплика марсохода «Марс Настойчивость» своими руками — проект на базе Arduino

<основной класс="главный сайт" id="главный">

В этом уроке я покажу вам, как я построил копию марсохода Perseverance Rover. Конечно, вдохновленный настоящим марсоходом, который в настоящее время исследует Марс, я разработал этот марсоход таким образом, чтобы все, кто любит эту технологию, студенты, производители, энтузиасты мехатроники или робототехники и т. д., могли легко следовать инструкциям в этом видео и построить свой собственный марсоход.

Вы можете посмотреть следующее видео или прочитать письменное руководство ниже.

Обзор

Давайте посмотрим на основные особенности этого вездехода. В нем используется подвеска с качающейся тележкой, которая позволяет марсоходу плавно двигаться по неровной местности и преодолевать препятствия, такие как камни, которые вдвое больше диаметра колеса, при этом все шесть колес постоянно находятся в контакте с землей. Каждое колесо имеет независимый двигатель постоянного тока, который двигает марсоход вперед или назад.

Четыре угловых колеса имеют индивидуальные рулевые серводвигатели. Чтобы эффективно управлять марсоходом и избежать проскальзывания колес при движении по кривой, мы внедряем геометрию рулевого управления Аккермана. С помощью этой геометрии мы можем рассчитать скорость и угол каждого колеса в зависимости от радиуса поворота.

Это означает, что при повороте внутренние управляемые колеса будут иметь больший угол по сравнению с внешними колесами. В то же время внутренние колеса будут иметь меньшую скорость по сравнению с внешними колесами.

Для управления марсоходом я использую дешевый коммерческий радиоуправляемый передатчик, который отправляет команды на ровер. На марсоходе у меня есть подходящий радиоуправляемый приемник, который получает команды и отправляет их на плату Arduino. Да, мозг этого марсохода на самом деле представляет собой плату Arduino MEGA, и для легкого соединения всего вместе я сделал специальную печатную плату, которую можно просто прикрепить поверх платы Arduino MEGA.

Ровер также оснащен камерой FPV, расположенной в блоке камер. Он управляется с помощью шагового двигателя и серводвигателя, и я получаю видео в реальном времени на смартфон.

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

Тем не менее, теперь позвольте мне рассказать вам о процессе его сборки, начиная с проектирования вездехода, подключения электронных компонентов и программирования платы Arduino.

3D-модель Марсохода своими руками

Я спроектировал этот марсоход с помощью 3D EXPERIENCE Solidworks , которая является спонсором этого видео.

3DEXPERIECE Solidworks — это версия Solidworks с облачными возможностями, которую мы получаем через платформу 3DEXPERIECE. Здесь все работает через облако, поэтому вы или кто-либо из вашей команды может иметь доступ к данным или моделям в любое время из любой точки мира. Платформа 3DEXPERIECE также включает множество полезных приложений для повышения производительности и управления данными.

Например, приложение «Планирование проекта» — отличный способ упорядочить задачи, установить сроки и отслеживать прогресс. С помощью приложения 3D Markup вы можете просматривать, исследовать и делать заметки о моделях с любого устройства, например ноутбука, планшета или даже смартфона.

Существует также отдельная облачная программа для 3D-моделирования под названием SOLIDWORKS xDesign, которая запускается в вашем браузере. Его можно использовать вместе с Solidworks или отдельно, и он отлично подходит для моделирования в любом месте, в любое время и на любом устройстве.

Тем не менее, вероятно, самая захватывающая новость для многих из вас, ребята, заключается в том, что начиная со второй половины этого года появится версия 3DEXPERIECE Solidworks для производителей, которую вы можете получить всего за 99 долларов США в год. Большое спасибо Solidworks за спонсирование подобного образовательного контента.

Если вы хотите узнать, подходят ли вам SOLIDWORKS и платформа 3DEXPERIENCE, перейдите по следующим ссылкам ниже.

Попробуйте 3DEXPERIENCE бесплатно по моей специальной ссылке: www.solidworks.com/HTMTryNow

Узнайте больше о 3DEXPERIENCE SOLIDWORKS: www.solidworks.com/HTMLearnMore

3DEXPERIENCE SOLIDWORKS для производителей:www.solidworks.com/htm

Хорошо, давайте вернемся к модели и объясним, как я спроектировал вездеход. Моя цель состояла в том, чтобы сделать этот вездеход максимально похожим на настоящий Mars Perseverance Rover. На официальном сайте NASA есть 3D-модель марсохода Perseverance Rover, поэтому я скачал и открыл ее в Blender.

Я сделал 3 фотографии марсохода спереди, сверху и сбоку и импортировал их в Solidworks. Я хотел, чтобы размер колес был 130 мм в диаметре, поэтому я масштабировал изображения в соответствии с этим размером.

Затем отсюда я взял все основные размеры, такие как ширина, длина, высота, расстояние между колесами, размеры подвески коромысел и так далее.

Теперь, в соответствии с этими размерами, двигателями постоянного тока и сервоприводами, которые я планировал использовать, я спроектировал детали вездехода таким образом, чтобы их можно было легко распечатать и собрать в 3D, стараясь сохранить внешний вид как можно ближе к оригиналу.

Для подвески качающейся тележки я использую круглые 20-мм алюминиевые профили, а для базовой рамы — 20-мм алюминиевые профили с Т-образными пазами.

Вы можете найти и скачать эту 3D-модель, а также изучить ее в своем браузере на Thangs.

А вот файлы STL, необходимые для 3D-печати:

3D-печать деталей копии марсохода

Для 3D-печати деталей я использовал свой старый Creality CR-10, а также новый 3D-принтер CR-10 V3. Если вы хотите напечатать колеса гибким материалом, вам обязательно понадобится принтер с прямым экструдером, такой как CR-10 V3.

Оба этих 3D-принтера обеспечивают отличное качество печати и относительно доступны по цене. Если вам интересно, вот ссылки на них, чтобы вы могли ознакомиться с ними:

См. также:Лучшие бюджетные осциллографы для начинающих и мастеров – Обновление 2021 г.

При 3D-печати деталей важно использовать функцию горизонтального расширения в программном обеспечении для нарезки. Я использовал значение –0,1 мм. Эта функция компенсирует расширение нити при печати.

Если не использовать, например, если деталь имеет отверстие диаметром 20 мм, отверстие фактической 3D-печатной детали будет около 19,8 мм, и мы не сможем ее собрать.

Тем не менее, вот все детали, напечатанные на 3D-принтере.

Честно говоря, это немного безумие, сколько там полиграфии, но это единственный способ получить уникальный внешний вид марсохода. Однако вы можете вдвое сократить время печати, если решите печатать только функциональные части этого вездехода.

Список деталей для марсохода своими руками

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

Также нам понадобятся болты М4, М5 и М6 разной длины. Вы можете проверить полный список необходимых болтов и гаек ниже.

Вы также можете приобрести болты и гайки в местном хозяйственном магазине.

Сборка вездехода

Хорошо, теперь мы можем начать сборку марсохода. Сначала нам нужно подготовить алюминиевые профили. Я использовал ручную пилу по металлу, чтобы обрезать их по размеру.

Нам потребуется 10 Т-образных профилей для основания и 8 круглых профилей для подвески коромысла со следующими размерами.

Для сборки рамы из профилей с Т-образными пазами мы используем подходящие угловые кронштейны с Т-образными пазами и несколько болтов и гаек. Как только у нас будут готовы верхняя и нижняя рамы, мы можем завершить основание, вставив распечатанные на 3D-принтере детали коромысла по бокам и несколько распечатанных на 3D-принтере кронштейнов спереди и сзади. Для их крепления нам понадобятся болты M3 и гайки с Т-образными пазами.

Для шарниров коромысел я использовал болты и гайки M5. Расстояние от переднего профиля до коромысла должно быть 134 мм.

Сборка подвески коромысел

Затем мы можем вставить на место коренные подшипники подвески коромысел. Затем у нас есть ось коромысла, которая будет прикреплена к основанию с помощью болта M8.

На валу есть прорезь, куда мы можем вставить гайку M8, которая используется для крепления его к основанию. Отверстие вала 7,5 мм, так что у нас есть плотное соединение между болтом и валом. Таким образом, мы фактически усиливаем напечатанный на 3D-принтере вал, так как сам болт будет нести часть веса марсохода. Это наиболее нагруженная часть всей сборки, так как весь вес вездехода приходится на вал коромысел. То, как мы печатаем детали, очень важно для их прочности.

Сначала я напечатал этот вал более простым способом, где не нужен вспомогательный материал, но печать не удалась.

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

Тем не менее, сейчас мы продолжим сборку коромысел-подвески вместе с колесными шарнирами и опорами двигателя, а позже соединим эти узлы с валами коромысел.

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

Теперь, чтобы правильно собрать эти детали, нам нужно сделать отверстия в круглых профилях в точных местах. Для этого сначала отметим прямую линию на профиле.

Далее мы можем вставить профиль в напечатанную на 3D-принтере деталь так, чтобы линия маркировки проходила через отверстие детали. Затем мы можем отметить места, где нам нужно просверлить профиль с обеих сторон этой детали.

С противоположной стороны профиля нам нужно повторить ту же процедуру.

Я просверлил отверстия сверлом 2,5 мм, а затем с помощью болта М3 сделал в профиле резьбу, которую мы будем использовать для стягивания деталей.

Алюминиевый профиль мягче болта, поэтому легко сделать резьбу самим болтом. Следование этому методу сверления отверстий очень важно, чтобы в конце все детали располагались так, как они должны быть относительно друг друга.

Для шарнира тележки мы также используем два подшипника и болт М8.

После того, как мы завершим установку подвески коромысла, мы можем продолжить сборку шарниров рулевого колеса. Деталь шарнира рулевого колеса состоит из двух частей, скрепленных болтами.

Для фактического соединения или соединения между частью крепления сервопривода и частью крепления двигателя постоянного тока мы используем два подшипника и болт M6.

На верхней стороне или на головке болта нам нужно прикрепить рупор сервопривода, и мы делаем это с помощью этого напечатанного на 3D-принтере соединителя и нескольких болтов M3.

Муфта имеет шестигранную прорезь, через которую движение сервопривода будет передаваться болту. С нижней стороны мы можем прикрутить другую часть соединения.

Закрепляем это соединение гайкой М6. Это завершает соединение рулевого колеса, хотя позже я пойму, что нам действительно нужно добавить еще одну гайку M6 внизу и затянуть ее с другой гайкой.

Нам нужно это сделать, потому что движение от сервопривода передается на часть крепления двигателя постоянного тока с помощью самой гайки, и если не затянуть другой гайкой, то все соединение открутится.

Та же процедура выполняется для другого углового соединения. Мы знаем, что все соединили правильно, если мы поместим этот узел на плоскую поверхность, и все три опоры двигателя будут лежать ровно или все они будут параллельны друг другу.

Конечно, мы используем тот же метод для сборки другой стороны. Однако здесь мы можем отметить, что хотя некоторые части выглядят одинаково, это не одни и те же части, а на самом деле они зеркально отражены.

Затем нам нужно вставить эти узлы в валы коромысел на базовой раме или шасси. Прежде чем мы это сделаем, нам нужно вставить в вал несколько латунных вставок с резьбой.

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

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

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

Шасси будет иметь средний угол наклона обоих коромыслов.

Вот все детали, необходимые для сборки дифференциала.

Поскольку перекладина дифференциала довольно длинная, я сделал ее из трех частей, скрепленных вместе болтами, чтобы мы могли печатать их в 3D даже на небольших 3D-принтерах. Дифференциальный стержень будет вращаться в середине шасси с помощью шарнира, состоящего из двух подшипников и болта M8.

Для соединения дифференциала с коромыслом нам понадобится шаровая опора шатуна. Я использую шаровой шарнир на конце стержня M8, и нам также понадобится стержень с резьбой M8 длиной 50 мм. Резьбовой стержень входит в напечатанную на 3D-принтере деталь, на одной стороне которой имеется гайка M8, а на другой — шаровой шарнир на конце стержня.

Здесь нам нужно отрегулировать расстояние между звеном дифференциала, напечатанным на 3D-принтере, и концом штока, которое должно составлять около 20 мм, чтобы шасси оставалось горизонтальным. Для соединения звена дифференциала с коромыслом мы используем два подшипника и болт М5.

Мы повторяем эту процедуру и для другой стороны, и на этом наша подвеска качающейся тележки завершена. Когда одна сторона поднимается, другая опускается, и наоборот.

Это обеспечивает постоянный контакт всех колес с землей. Шасси совершает только половину движения ноги, или шасси имеет средний угол наклона обоих коромыслов.

См. также:Автоматическая работа манипулятора робота Arduino и платформы Mecanum Wheels

Сборка двигателей для марсохода

Хорошо, теперь мы можем перейти к установке двигателей постоянного тока. Используемые мной двигатели имеют диаметр 37 мм, работают от напряжения 12 В и имеют редуктор с выходной мощностью 50 об/мин.

Хотя позже я понял, что 50 об/мин для этого вездехода многовато, поэтому я бы посоветовал выбрать версии на 20 или 10 об/мин.

Для крепления колес к двигателям я сделал эти муфты валов.

Здесь нужно установить резьбовые вставки М3, которые будут использоваться для крепления муфты к валу, а также гайки М4 для крепления колеса к муфте. При вставке гаек мы также должны добавить немного клея, чтобы они прочно держались на месте, или вместо этого использовать резьбовые вставки.

Далее мы можем прикрепить колеса. Колеса состоят из двух частей. Один — это колесо, которое я напечатал гибким волокном, но это не обязательно, а другой — обод, напечатанный из обычного PLA.

На ободе есть прорези, которые входят в колесо, и поэтому мощность двигателя передается на колесо. Мы можем добавить несколько капель клея в прорези, чтобы они были более надежными. Наконец, мы можем прикрепить колеса к соединителям валов или двигателям постоянного тока с помощью 4 болтов M4.

Итак, теперь мы можем установить рулевые серводвигатели. Я использую цифровые сервоприводы с высоким крутящим моментом с крутящим моментом 25 кгсм и рабочим напряжением от 4,8 до 6,8 В. Для крепления сервоприводов мы используем четыре болта M3, которые входят в резьбовые вставки M3 в напечатанной на 3D-принтере детали крепления сервопривода.

Сборка блока камеры

Далее мы можем собрать блок камер. Для панорамирования камеры я решил использовать шаговый двигатель NEMA 17, но здесь вы можете изменить его на любой другой двигатель.

Движение двигателя передается на верхнюю часть с помощью резьбового стержня M5, который соединяется с двигателем с помощью напечатанного на 3D-принтере соединительного вала, а с другой стороны мы используем подшипник и две гайки для крепления резьбового стержня к подвижному элементу. Для наклона камеры я использую сервопривод, такой же, как и для рулевого колеса.

Многие детали здесь, на блоке камеры, не работают, и они присутствуют только для того, чтобы соответствовать внешнему виду настоящего вездехода. Для сборки этих деталей нам понадобятся различные болты М3 и несколько резьбовых вставок.

Однако здесь я также установлю настоящую FPV-камеру. Я сделал специальный держатель для него, чтобы я мог установить его на корпус блока камеры. Камера легко доступна сверху, которую мы закрываем защелкивающейся крышкой. Вот окончательный вид блока камеры.

Я установил весь этот узел камеры в переднем правом углу корпуса.

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

Сборка остальной части вездехода

Как я уже сказал, следующие детали предназначены только для соответствия внешнему виду марсохода, поэтому я не буду вдаваться в подробности, как их собрать. Вы можете увидеть, как все должно быть связано с 3D-моделью.

На самом деле я приложил много усилий, чтобы разработать эти детали, обращая внимание на детали, чтобы все выглядело хорошо.

Эти детали также довольно большие, и для их 3D-печати требуется некоторое время.

Вот краткий обзор того, как я их установил.

Последние две верхние панели в середине ровера предназначены для защелкивания в ровере.

Фактически они будут действовать как кожух, который можно легко снять, так как в этой области будут расположены электронные компоненты.

Держатель электронных компонентов состоит из двух напечатанных на 3D-принтере деталей, скрепленных болтами, и крепится к нижней раме шасси.

Электроника

Итак, теперь мы можем продолжить с электроникой. Во-первых, нам нужно измерить, сколько провода нам нужно для каждого двигателя. Я припаял провода прямо к двигателям, так как у меня не было подходящих разъемов для двигателей. Я использовал термоусадочную трубку для изоляции разъемов.

С помощью стяжек мы можем направлять провода и содержать их в чистоте.

Для серводвигателей мы можем использовать удлинительные провода сервопривода, чтобы удлинить провода к отсеку электроники. Часть крепления электроники имеет прорези, через которые мы можем пропустить провода, чтобы получить середину марсохода.

В целом, я думаю, что проводка вышла довольно чистой, провода проходили за видимыми частями.

См. также:Робот SCARA | Как создать собственного робота на базе Arduino 

Схема марсохода своими руками

Давайте теперь посмотрим на принципиальную схему этого вездехода и посмотрим, как все должно быть подключено.

Вы можете получить компоненты, необходимые для этого проекта, по ссылкам ниже:

Для управления шестью двигателями постоянного тока мы используем шесть драйверов двигателей постоянного тока DRV8871, которые поддерживают ШИМ-управление и пиковый ток до 3,6 А. Рабочее напряжение двигателей постоянного тока составляет 12 В, номинальный ток 1 А и ток останова 3 А. Для питания марсохода я использую аккумулятор 3S LiPo, обеспечивающий около 12 В.

С другой стороны, сервоприводам требуется от 4,8 до 6,8 В, поэтому нам нужен преобразователь постоянного тока в постоянный, который преобразует 12 В в 6 В. Преобразователь должен выдерживать ток около 8 А, так как сервоприводы, которые мы используем, довольно мощные и имеют ток останова около 2 А. Для управления шаговым двигателем блока камеры мы можем использовать шаговый драйвер A4988 или DR8825. Используя два резистора, мы можем сделать простой делитель напряжения, через который мы можем контролировать напряжение батареи.

Приемник RC питается от 6 вольт, поступающих от понижающего преобразователя, а камера FPV и ее видеопередатчик питаются от 12 вольт от батареи.

Пользовательская плата

Чтобы упорядочить электронные компоненты, я разработал специальную печатную плату для этого марсохода, сделанного своими руками.

Эта печатная плата фактически будет выступать в качестве экрана Arduino MEGA, поскольку мы сможем напрямую подключить ее поверх платы Arduino MEGA. В дополнение к драйверам двигателя я включил регулятор напряжения 3,3 В и специальное соединение NRF24L01 на случай, если вы хотите управлять ровером с помощью этого модуля, а также соединения для датчика DHT22, компаса, I2C, последовательной связи, 12 В, 5 В. , 3,3 В и заземление. На самом деле, я подготовил эту печатную плату к будущему для обновления функций марсохода.

Я заказал печатную плату в PCBWay. Здесь мы можем просто загрузить файл Gerber, выбрать свойства нашей платы и заказать ее по разумной цене.

Я не менял никаких свойств по умолчанию, кроме цвета печатной платы, который я выбрал синим, чтобы он соответствовал плате Arduino. Вы загружаете файл Gerber здесь ниже или из сообщества обмена проектами PCBWay, через которое вы также можете напрямую заказать печатную плату.

Здесь вы можете скачать файл Gerber для этой печатной платы марсохода своими руками:

Тем не менее, через несколько дней печатная плата прибыла. Качество печатной платы отличное, и все точно так же, как и в дизайне.

Сборка печатной платы довольно проста, так как все помечено. Я начал с пайки контактов в нижней части печатной платы для соединения Arduino MEGA, а затем продолжил с верхней стороны. На самом деле я использовал штыревые заголовки для всех подключений, потому что это дает гибкость для внесения изменений, если что-то не работает должным образом. Регулятор напряжения 3,3 В, а также несколько свободных контактов Arduino я не стал припаивать, так как все равно не собирался их сейчас использовать.

Закончив сборку печатной платы, я прикрепил плату Arduino к монтажной части электроники с помощью двух болтов и добавил к ней печатную плату.

Затем я подключил каждый двигатель к своим драйверам и установил их на место на печатной плате. Сервоприводы подключаются к соответствующим штырькам сервопривода, а также к драйверу шагового двигателя, для которого я использовал одну перемычку для выбора шагового разрешения 1/8.

Для радиосвязи я использую передатчик и приемник FLYSKY RC, которые действительно доступны по цене и отлично работают.

Для подключения приемника к Arduino мы можем использовать удлинительные кабели сервопривода, так как нам нужны три провода:VCC, GND и сигнальный контакт. The receiver communicates with the Arduino through an I-BUS and the serial port. If we want to send data back from the receiver to the transmitter, in our case for monitoring battery voltage, we also need to connect the sensor I-BUS of the receiver to another Arduino serial port.

The buck convertor is secured in place using two bolts, and for securing the LiPo battery I’m using two rubber bands so in that way I can easily remove the battery for charging.

The power switch goes in the back right panel of the rover. I used 20-gauge wires for these connections as the current flow through them might get up to several amps when the rover is fully engaged. Make sure you double check your connections with these wires because if you connect something wrong you might fire up things.

Lastly, we can connect the FPV camera to a 12V power supply and connect video signal wire to the video transmitter which also needs to be powered with 12V. With this we are done with the electronics.

We can put back the cover panels in place and we are done with this DIY Mars Rover. Actually, we are almost done, as we need to give life to this machine now, or program the Arduino.

Programming the DIY Mars Rover – Arduino Code

Here you can download the Arduino code for this DIY Mars Rover project:

Code overview

So, using the IBusBM library we read incoming data from the RC Transmitter.

// Reading the data comming from the RC Transmitter
  IBus.loop();
  ch0 = IBus.readChannel(0);
  ch1 = IBus.readChannel(1);
  ch2 = IBus.readChannel(2);
  ch3 = IBus.readChannel(3);
  ch6 = IBus.readChannel(6);Code language: Arduino (arduino)

Then we convert these values into a turning radius to right value, turning radius to left value and rover speed from 0 to 100%.

// Convertign the incoming data
  // Steering right
  if (ch0 > 1515) {
    r = map(ch0, 1515, 2000, 1400, 600); // turining radius from 1400mm to 600mm
  }
  // Steering left
  else if (ch0 < 1485) {
    r = map(ch0, 1485, 1000, 1400, 600); // turining radius from 600mm to 1400mm
  }
  // Rover speed in % from 0 to 100
  s = map(ch2, 1000, 2000, 0, 100); // rover speed from 0% to 100%Code language: Arduino (arduino)

We use the turning radius “r” value for calculating the steering wheels angles as well as the speed of the wheels.

void calculateMotorsSpeed() {
  // if no steering, all wheels speed is the same - straight move
  if (ch0 > 1485 && ch0 < 1515) {
    speed1 = speed2 = speed3 = s;
  }
  // when steering, wheels speed depend on the turning radius value
  else {
    // Outer wheels, furthest wheels from turning point, have max speed
    // Due to the rover geometry, all three outer wheels should rotate almost with the same speed. They differe only 1% so we asume they are the same.
    speed1 = s;
    // Inner front and back wheels are closer to the turing point and have lower speeds compared to the outer speeds
    speed2 = s * sqrt(pow(d3, 2) + pow((r - d1), 2)) / (r + d4);
    // Inner middle wheel is closest to the turning point, has the lowest speed
    speed3 = s * (r - d4) / (r + d4);
  }

  // speed value from 0 to 100% to PWM value from 0 to 255
  speed1PWM = map(round(speed1), 0, 100, 0, 255);
  speed2PWM = map(round(speed2), 0, 100, 0, 255);
  speed3PWM = map(round(speed3), 0, 100, 0, 255);
}

void calculateServoAngle() {
  // Calculate the angle for each servo for the input turning radius "r"
  thetaInnerFront = round((atan((d3 / (r + d1)))) * 180 / PI);
  thetaInnerBack = round((atan((d2 / (r + d1)))) * 180 / PI);
  thetaOuterFront = round((atan((d3 / (r - d1)))) * 180 / PI);
  thetaOuterBack = round((atan((d2 / (r - d1)))) * 180 / PI);
}Code language: Arduino (arduino)

As I mentioned earlier, we are using the Ackerman steering geometry for calculating them. These values are then used for controlling the servos using the ServoEasing library which provides smoother servo movements.

// Servo motors
    servoW1.startEaseTo(97 - thetaOuterFront);
    servoW3.startEaseTo(97 + thetaOuterBack);
    servoW4.startEaseTo(94 - thetaInnerFront);
    servoW6.startEaseTo(96 + thetaInnerBack);Code language: Arduino (arduino)

For controlling the DC motors using the analogWrite() function which actually sends PWM signal to the DC motor drivers.

// Motor Wheel 1 - Left Front
      analogWrite(motorW1_IN1, speed2PWM);   // PWM value
      digitalWrite(motorW1_IN2, LOW); // ForwardCode language: Arduino (arduino)

Overall, the code is not that complicated as the rover itself doesn’t have complicated functions. However, I do plan in future videos to add more functions to this rover, like GPS navigation, various sensors, robotic arm, soil collecting mechanism and so on.

I hope you enjoyed this project and learned something new. Feel free to ask any question in the comments section below and check my Arduino Projects Collection.


Производственный процесс

  1. Rover
  2. Детектор звуковой частоты
  3. Tech-TicTacToe
  4. DIY вольтметр с Arduino и дисплеем Nokia 5110
  5. Таймер обратного отсчета Arduino
  6. Радиоуправляемый автомобиль Porsche (проект Arduino)
  7. Smart Energy Monitor на основе Arduino
  8. Идея DIY с RFID
  9. Определение цвета Arduino
  10. Самостоятельная машина для измерения высоты Arduino