roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 10:13

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Робот объезжающий препятствия
СообщениеДобавлено: 27 май 2013, 16:35 
Не в сети
Аватара пользователя

Зарегистрирован: 02 фев 2013, 12:50
Сообщения: 319
Откуда: Москва
Так как мне предстоит заниматься новым проектом, роботом которого мне безвозмездно отдал demon333, за что ему огромный респект!
По этому я решил опубликовать свой старый проект, так и не получивший в свою комплектацию Веб камеру с роутером Nexx wt3020
Проект получился достаточно бюджетным и простым, думаю что сынишка подрастет и доведет его до ума.

Вложение:
plat9_mid.jpg
plat9_mid.jpg [ 28.86 КиБ | Просмотров: 20117 ]


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

Робот состоит из следующей комплектации
Роутер Nexx wt3020
Платформа
Arduino Nano v.7
Ультразвуковой датчик
Драйвер двигателей
Инструкция по сборке

Сборка робота заняла 10-15мин.
Код программы робота получился тоже простым, но он выполняет то что мне требуется
Робот обходит препятствия, даже с неподвижным дальномером. Мне так и не удалось создать такую ситуацию из которой бы он не смог выбраться
Для управления роботом и для стабильной работы дальномера, я использовал библиотеку CyberLib

Схема робота
Вложение:
Cyberbot3.png
Cyberbot3.png [ 11.33 КиБ | Просмотров: 13407 ]


Видео того что получилось


Исходник
Код:
#include <CyberLib.h>
#include <avr/wdt.h>

#define motors_init {D4_Out; D5_Out; D6_Out; D7_Out;}
#define robot_go {D4_Low; D5_High; D6_High; D7_Low;}
#define robot_stop {D4_Low; D5_Low; D6_Low; D7_Low;}
#define robot_rotation_left {D4_Low; D5_High; D6_Low; D7_High;}
#define robot_rotation_right {D4_High; D5_Low; D6_High; D7_Low;}

#define size_buff 5 //размер массива sensor
uint16_t sensor[size_buff]; //массив для хранения замеров дальномера
uint8_t stat=0;

void setup() 
{
  motors_init;  //инициализация выходов моторов
  D11_Out; //динамик
  D14_Out; D14_Low; //пин trig ультразвукового сонара
  D15_In; //пин echo  ультразвукового сонара
  for(uint8_t i=0; i<12; i++) beep(50, random(100, 1000)); //звуковое оповещение готовности робота
  wdt_enable (WDTO_500MS);    //Сторожевая собака 1сек.
}

void loop()
{Start 
  uint16_t dist=GetDistance(); //производим замер

    if( dist < 10) {rotation(stat, 255);} else   
    if( dist < 20) {rotation(stat, 200);} else
    if( dist < 40) {rotation(stat, 130);} else
                   {robot_go; stat=~stat;}           //поехали!!!
     
     wdt_reset(); //покормить собаку
End;}

//***************************************************
void rotation(uint8_t arr, uint8_t dur)
{
    switch (arr)
    {
    case 0:    robot_rotation_right;
      break;
    case 255:    robot_rotation_left;
      break;   
    }
    delay_ms(dur);   
    robot_stop;
}
//***************************************************
uint16_t GetDistance()
{
uint16_t dist;
for (uint8_t i = 0; i < size_buff; ++i) //производим несколько замеров
  {
    D14_High; delay_us(10);  D14_Low;  //запустить измерение
   dist = pulseIn(15, HIGH, 2400); //считываем длительность времени прохождения эха, ограничить время ожидания
   if(dist==0) dist=2400; 
   sensor[i]=dist;
   delay_ms(40); //задержка между посылками
   wdt_reset(); //покормить собаку, что бы она не сбежала
  }
  dist=(find_similar(sensor, size_buff, 58))/58; // //фильтруем показания датчика и переводим в см
  return dist;
}
//*************************************************** 
void beep(uint8_t dur, uint16_t frq)
{
  dur=(1000/frq)*dur;  //расчет длительности бипа
  for(byte i=0; i<dur; i++)
  {
    D11_High;
    delay_us(frq);
    D11_Low;
    delay_us(frq);
  }
}


Хотелось бы выслушать Вашу критику.

_________________
Мои проекты


Последний раз редактировалось CyberLab 20 мар 2017, 03:21, всего редактировалось 9 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препядствия
СообщениеДобавлено: 27 май 2013, 21:35 
Не в сети

Зарегистрирован: 27 май 2013, 15:48
Сообщения: 7
Интересная вещь, но я бы использовал ИК радар, там программа проще, ещё неплохо было бы установить несколько датчиков, чтобы робот лучше всё видел или сделать так чтобы датчик вращался и снимал показания с разных угллв. А вобще класно получилось.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препятствия
СообщениеДобавлено: 28 май 2013, 00:52 
Не в сети
Аватара пользователя

Зарегистрирован: 02 фев 2013, 12:50
Сообщения: 319
Откуда: Москва
Я пробовал с ИК радаром, к него есть недостаток, он сильно зависим от напряжения питания.
Учитывая тот факт что питаю робота напрямую от аккумуляторов, без стабилизатора, то получается полная лажа
Также при использовании ИК, потребуется источник опорного напряжения для АЦП и делитель на входе АЦП. К тому же ИК радар узконаправленный в отличии от УЗД и для него уж точно пришлось бы использовать сервомотор. Так что я бы не сказал что ИК радар в данном роботе был бы лучше и проще
А вот с УЗ дальномером как раз нет никаких проблем
Роль сервомотора выполняет сам робот, за счет дистанции 40см и широкого угла дальномера, робот своевременно обнаруживает препятствия как перед собой, так и сбоку и соответственно начинает разворачиваться и сканировать допустимое расстояние
Даже если он зацепится за какое нибудь препятствие которое он не увидел, то за счет круглой формы его начинает разворачивать лицом к препятствию, ну и соответственно он детектирует его и разворачивается пока не найдет выход
Несколько УЗД датчиков будут конфликтовать

_________________
Мои проекты


Последний раз редактировалось CyberLab 30 май 2013, 00:24, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препядствия
СообщениеДобавлено: 28 май 2013, 07:52 
Не в сети

Зарегистрирован: 27 май 2013, 15:48
Сообщения: 7
Я не знаю что у вас там за схема с этим ИК датчиком, но у меня всё работает намного проще и без помех, вне зависимости от напряжения питания. Просто ШИМ на мк генерирует несущую, которая отражается от препятствия и возвращается на ТСОП, который подключён через транзисторный ключ к другой ноге МК и при возникровении сигнала на нём он передаётся на мк.
Если ставить много датчиков то при правильно постановки программы они не будут конфликтовать, я также проверял на ИК датчиках, ставил несколько по кругу, и они отлично взаимодействовали. Я попробую его обратно собрать (этого робота), и видео выложу


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препядствия
СообщениеДобавлено: 28 май 2013, 08:39 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
неплохо)) а что за робота тебе демон отдал? прямо из Канады выслал что ли))))

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препядствия
СообщениеДобавлено: 28 май 2013, 09:03 
Не в сети
Аватара пользователя

Зарегистрирован: 21 май 2007, 22:57
Сообщения: 600
Откуда: Калининград
прог. языки: C++
Код:
{Start

Код:
End;}

- это вообще компилируется? :)

_________________
RoboCraft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препятствия
СообщениеДобавлено: 28 май 2013, 12:43 
Не в сети
Аватара пользователя

Зарегистрирован: 02 фев 2013, 12:50
Сообщения: 319
Откуда: Москва
robovan писал(а):
неплохо)) а что за робота тебе демон отдал? прямо из Канады выслал что ли))))

Робот находился в Москве
Изображение

Добавлено спустя 1 минуту 42 секунды:
noonv писал(а):
Код:
{Start

Код:
End;}

- это вообще компилируется? :)

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

Добавлено спустя 2 часа 48 минут 45 секунд:
Artem писал(а):
Я не знаю что у вас там за схема с этим ИК датчиком, но у меня всё работает намного проще и без помех, вне зависимости от напряжения питания. Просто ШИМ на мк генерирует несущую, которая отражается от препятствия и возвращается на ТСОП, который подключён через транзисторный ключ к другой ноге МК и при возникровении сигнала на нём он передаётся на мк.
Если ставить много датчиков то при правильно постановки программы они не будут конфликтовать, я также проверял на ИК датчиках, ставил несколько по кругу, и они отлично взаимодействовали. Я попробую его обратно собрать (этого робота), и видео выложу

Я извиняюсь, думал что речь идет о дальномерах Sharp
Беспорно с ИК бампером на TSOP будет работать.
Только генерировать хардверным ШИМ-ом 38кГц не получится.
Также этот датчик не сможет измерять дистанцию.

_________________
Мои проекты


Последний раз редактировалось CyberLab 20 мар 2017, 03:19, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препядствия
СообщениеДобавлено: 28 май 2013, 13:34 
Не в сети

Зарегистрирован: 27 май 2013, 15:48
Сообщения: 7
Почему не получиться, нужна только правильная настройка, хотя может дело в ардуино, я никогда им не пользовался поэтому не знаю какая там тактовая частота, но если разогнать хотя бы до 4 мегагерц то можно будет и более 36 килогерц выводить, если хотите могу код программы выложить, но на СИ будет.
А по поводу измерения расстояния: а зачем вам это, робот будет объезжать препятствия и без этого.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препятствия
СообщениеДобавлено: 28 май 2013, 13:50 
Не в сети
Аватара пользователя

Зарегистрирован: 02 фев 2013, 12:50
Сообщения: 319
Откуда: Москва
Artem писал(а):
А по поводу измерения расстояния: а зачем вам это, робот будет объезжать препятствия и без этого.

Для данного примера не спорю, измерять расстояние не нужно, но я изначально планировал использовать WR703N и удаленный сервер для навигации и отрисовки карты помещения(SLAM)

Artem писал(а):
Почему не получиться, нужна только правильная настройка, хотя может дело в ардуино, я никогда им не пользовался поэтому не знаю какая там тактовая частота, но если разогнать хотя бы до 4 мегагерц то можно будет и более 36 килогерц выводить, если хотите могу код программы выложить, но на СИ будет.

Можно рассматривать не как ардуино , а как Atmega328 с частотой задающего генератора 16мГц

_________________
Мои проекты


Последний раз редактировалось CyberLab 30 май 2013, 00:25, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препядствия
СообщениеДобавлено: 28 май 2013, 13:57 
Не в сети
Аватара пользователя

Зарегистрирован: 26 янв 2012, 03:59
Сообщения: 1341
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин
для SLAM, мне кажется, надо много точек и желательно угол 360. ждем когда начнут продавать post274181.html#p274181


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препядствия
СообщениеДобавлено: 28 май 2013, 14:10 
Не в сети

Зарегистрирован: 27 май 2013, 15:48
Сообщения: 7
Мне кажется, что и для построения карт не нужен измеритель расстояния
Nesenin писал(а):
для SLAM, мне кажется, надо много точек и желательно угол 360. ждем когда начнут продавать post274181.html#p274181

Да нет не нужен, можно сделать так чтобы робот крутился на маленьком участке "тыкаясь" в препятствия и записывая информацию


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препятствия
СообщениеДобавлено: 28 май 2013, 14:11 
Не в сети
Аватара пользователя

Зарегистрирован: 02 фев 2013, 12:50
Сообщения: 319
Откуда: Москва
Цитата:
для SLAM, мне кажется, надо много точек и желательно угол 360

У робота на платформе есть места для крепления сервы. Большое число точек всегда можно получить используя алгоритм Брезенхэма
Про RP-LIDAR читал, если цена будет адекватная, то популярная вещь получится у роботостроителей. Ждем начала продаж

_________________
Мои проекты


Последний раз редактировалось CyberLab 30 май 2013, 00:26, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препядствия
СообщениеДобавлено: 28 май 2013, 16:42 
Не в сети
Аватара пользователя

Зарегистрирован: 26 янв 2012, 03:59
Сообщения: 1341
Откуда: Казань
прог. языки: LabVIEW
ФИО: Никита Есенин
эм. во-первых это какое то извращение заставлять робота крутиться\кататься чтобы добавить точек в карту.
во-вторых картостраительство для того и нужно что бы нивелировать ошибки расчета перемещений по одометрии методом проверки растояний до объектов с известными координатами.
может мы по разному понимаем SLAM
для меня ето

без всякой одометрии))только Lidar+IMU

Добавлено спустя 3 минуты 29 секунд:
PS я делаю подобие этого робота

и до полного счастья не хватает упомянутого сканируещего дальномера
Изображение
остальное все в продаже есть по адекватным ценам


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препядствия
СообщениеДобавлено: 29 май 2013, 11:21 
Не в сети
Аватара пользователя

Зарегистрирован: 04 сен 2012, 00:39
Сообщения: 1536
Откуда: Украина
ФИО: Владимир
лидар рулит))) простота и точность. а платформу классную ты отхватил, аж жаба задавила)))))))))

_________________
Самое важное в жизни- найти человека , который смотрит на мир, так же как и ты:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Робот объезжающий препятствия
СообщениеДобавлено: 29 май 2013, 20:11 
Не в сети
Аватара пользователя

Зарегистрирован: 02 фев 2013, 12:50
Сообщения: 319
Откуда: Москва
robovan писал(а):
Платформу классную ты отхватил, аж жаба задавила)))))))))

Согласен! Сам бы такую платформу не собрал, нет возможности

_________________
Мои проекты


Последний раз редактировалось CyberLab 30 май 2013, 00:27, всего редактировалось 2 раз(а).

Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу 1, 2, 3  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO