Мой первый робот
- Войдите на сайт для отправки комментариев
Сб, 18/02/2012 - 11:43
Приветствую всех!
Мой первый робот. Наконец кончил собирать и устанавливать все компоненты и теперь пришло время для софта. :)
http://i1067.photobucket.com/albums/u427/Romas_Lina/1.jpg
http://i1067.photobucket.com/albums/u427/Romas_Lina/2.jpg
http://i1067.photobucket.com/albums/u427/Romas_Lina/3.jpg
http://i1067.photobucket.com/albums/u427/Romas_Lina/4.jpg
http://i1067.photobucket.com/albums/u427/Romas_Lina/5.jpg
http://i1067.photobucket.com/albums/u427/Romas_Lina/6.jpg
http://i1067.photobucket.com/albums/u427/Romas_Lina/7.jpg
http://i1067.photobucket.com/albums/u427/Romas_Lina/8.jpg
http://i1067.photobucket.com/albums/u427/Romas_Lina/9.jpg
Прикольный робот))) больше всего понравилась прога на компе и продуманная система выключения. Как я понял через реле? То есть сначала вручную включаешь. Вижу будет продолжение? Столько датчиков по кругу.
Да и сортир зачётный)))
Планировка туалета на мою похожа, ты не на ул.Удальцова живешь случайно?
Вижу будет продолжение?
да теперь осталось писать много кода.. Выложу новое видео когда сделаю что нибудь новое:)
Планировка туалета на мою похожа, ты не на ул.Удальцова живешь случайно?
Нет, я уже как 15 лет в литве живу - в Клайпеде.. но родом из Рязани:)
Ну вот и продолжение, а скорее вопрос - что делать, чтобы робот прямо ехал?
На видео видно о чем идет речь.
Код с английскими командами ну там и так все ясно.
http://www.youtube.com/watch?v=3LbTOSO0x_4&feature=plcp&context=C3730bee...
Проект очень симпатичный вышел.
А можно полюбопытствовать на первой и второй фотке хорошо видно две детали(датчика?) - желтые цилиндры примотанные резинкой. Это какой-то дальномер? Или что?
IR дальномер
IR дальномер
Спасибо. А какая у него эффективная дальность? Если известно можно моделью поинтересоваться.
http://www.ebay.com/itm/Arduino-Infrared-Reflectance-Sensor-Sensor-Shiel...
Новое видео:) - http://www.youtube.com/watch?v=00byli7JjQY&context=C4f935f6ADvjVQa1PpcFO...
Интересно, но я что-то не пойму зачем столько дальномеров? Несколько ультразвуковых и ик еще, или на будущее? Чтобы ездить и объезжать препятствия достаточно одного ультразвукового дальномера.
Ну вот и продолжение, а скорее вопрос - что делать, чтобы робот прямо ехал?
На видео видно о чем идет речь.
Код с английскими командами ну там и так все ясно.
Подход 1.
Завести для каждого колеса отдельную переменную, в которой хранится скорость колеса. Уменьшать сначала ее, а потом уже из нее, а не констант, устанавливать скорость на колесо. Тогда эта стабилизирующая функция будет несколько раз "поправлять скорость", если одноразовой поправки не хватило. А не как сейчас делать "фиксированную разницу скорости колес" (и не известно "достаточно" этого или "слишком много").
Подход 2.
Запоминать время когда произошела смена L_forward_esc_counter и R_forward_esc_counter. Из их раницы вычислять "точно необходимую поправку".
Подход 3.
PID библиотека ;) Запоминать время X_forward_esc_counter, вычислять "время круга". Тогда входом для PID будет желаемая RMP, обратной связью "реальная скорость" (RPM), а управляющим воздействием - нужный PWM.
Все три подхода имеют, потенциально, одну общую проблему: что-бы робот стабилизировался должно произойте несколько оборотов колеса. А оно у вас большое. Пару раз крутнул и комната уже кончилась.
Варианты решения:
P.S. И да, попроуйте еще уменьшить значения trimminus, timplus. Возможно он у вас изначально едет "почти прямо", а потом как включется корректировка где разница скорости колес почти 50%-процентов это выглядит как "поворот". Вообщем он у вас отклонился от прямой на пару градусов вправо, а вы, вместо "чуть-чуть довернуть влево", выполнили "боевой разворот влево".
думаю нужно увеличивать резолюцию энкодера. сейчас 8 "зубов" то есть 16 сигналов за один оборот, А нужно чтобы было как минимум 18 "зубов" то есть каждый десять градусов. А так конечно подход 3, самый правильный. Также и скетч изменился, сейчас задается скорость сантиметрами в секунду - то есть если speedo 30. Значит робот будет ехать 30 см в сек, не важно в гору или с горки. Только сейчас времени нету PID библиотеку изучать, да и с самим роботом заниматься. А то и так проект на проекте и нечего законченного.
Мне бы таую программу, да под андроид, вообще шикарно было бы)
если не трудно поделись исходником, мож его за основу возьму)
я сейчас делаю четырехмоторного робота, у меня та же проблема с не прямой ездой, правда менее выражена, но у меня самодельная платформа, возможно еще на ней колеса не так точно установлены...
>Мне бы таую программу, да под андроид, вообще шикарно было бы)
Очень плохая идея. Андроид - не система реального времени. Там ваша программа может быть в любой момент выкинута из памяти, приостановлена, загнана в низкие приоритеты.
То есть предсказать сколько времени выполнялся тот или иной кусок кода - не возможно.
Поэтому чем-то "управлять напрямую", считывать тики датчиков - практически не реально.
На нем можно делать "удобный/красивый" интерфейс. Что-бы он передавал ардуине "высокоуровневые команды" (прямо, правей, левей, держи такую скорость и т.п.) А уж какой pwm включать, засекать с какой скоростью колесо крутится, время прихода эха от сенсора засекать - это в любом случае должна ардуина делать.
Ну "а хочу", у вас есть три варианта: