roboforum.ru

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

Fasto - робот для езды по линии (ранее Минибот - Лайнер)

Fasto - робот для езды по линии (ранее Минибот - Лайнер)

Ruslan » 25 июн 2008, 22:55

Начал делать гонщика по линии на основе минибота.
- 5 оптопар QRD1114 (как было бы хорошо если бы контакты совпали - нет, пришлось перекрещивать ножки). Два крайних подцеплены к выводам в середине платы
- моторы Maxon и фирменные колесики
- связь с хозяином пока через УАРТ. Может потом приделаю дисплейчик на I2C.
- питание - 3 NiMH. Скоро переделаю на LiPo от батареи для нотбука.
- сзади 2 опорных ролика-шарика.
Minibot-Liner 01.jpg

По линии пока ездит неуверенно. Отлаживаю код.

В дальнейшем робот был переделан, заменен моск и модуль сенсоров.
Последний раз редактировалось Ruslan 31 янв 2009, 23:49, всего редактировалось 1 раз.

Re: Минибот - Лайнер

EdGull » 25 июн 2008, 22:57

покажи фотку опорных роликов

Re: Минибот - Лайнер

Ruslan » 25 июн 2008, 23:03

Изображение
Брал там: http://www.pololu.com/catalog/product/174 3шт за 2 долл.

Re: Минибот - Лайнер

EdGull » 25 июн 2008, 23:34

это от дезика что ли?

Re: Минибот - Лайнер

Ruslan » 26 июн 2008, 00:44

Нет. Он на самом деле маленький, сантиметр в диаметре. Но похож.

Re: Минибот - Лайнер

Myp » 26 июн 2008, 01:39

RiO писал(а):как было бы хорошо если бы контакты совпали - нет, пришлось перекрещивать ножки


дык в чём проблема? вынимаешь ИК из чёрного корпуса(они вынимаюцца легко) и вставляешь задом наперёд :)
получаешь нужную тебе распиновку

Re: Минибот - Лайнер

EdGull » 26 июн 2008, 08:47

а от чего такая опора?
грязи много на себя наматывает?

Re: Минибот - Лайнер

Ruslan » 26 июн 2008, 15:18

Myp писал(а):
RiO писал(а):как было бы хорошо если бы контакты совпали - нет, пришлось перекрещивать ножки


дык в чём проблема? вынимаешь ИК из чёрного корпуса(они вынимаюцца легко) и вставляешь задом наперёд :)
получаешь нужную тебе распиновку

Зато потом когда перепаиваешь - надоест искать у кого где какие ноги.

EdGull писал(а):а от чего такая опора?

2 точки = колеса. Еще 2 - ролики (хотел только 1 но по центру его некуда монтировать.
На оптопары ессно опираться не стал.

Re: Минибот - Лайнер

frig » 31 июл 2008, 17:07

ну как проект? движется?

нет ли у многоуважаемого RiO желания поделиться с миниботовским сообществом набросками кода?

а то пишется потихоньку инструкция по прошивке и хочется наклянчить у кого чего есть из кода по миниботу. :roll:

Re: Минибот - Лайнер

Ruslan » 06 авг 2008, 09:54

Проект движется но медленно. Запорол одну плату минибота, переделал всё заново в формате двухэтажного бутерброда. Он уже ездит по линии, но криво, так как алгоритм не отлажен
Кодом поделюсь запросто, но только когда вернусь из отпуска. В принципе там ничего особенного нет, простой цикл: Считать сенсоры - оценить положение относительно линии - дать команду моторам.

Рекомендую почитать относительно алгоритмов вот это:
http://www.wrighthobbies.net/guides/linefollower.htm
http://www.pololu.com/docs/0J19/3

Re: Минибот - Лайнер

frig » 06 авг 2008, 22:53

Кодом поделюсь запросто, но только когда вернусь из отпуска.


будем рады! если не трудно - вот в этой теме: http://roboforum.ru/viewtopic.php?f=58&t=4392

Рекомендую почитать относительно алгоритмов вот это:


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

Он уже ездит по линии, но криво, так как алгоритм не отлажен


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

Re: Минибот - Лайнер

frig » 12 авг 2008, 17:01

Кодом поделюсь запросто, но только когда вернусь из отпуска.


а когда отпуск заканчивается? нее.. я конечно за то чтобы отпуск был подольше :-) просто волнуюсь чтобы не забыть.

Re: Минибот - Лайнер

Ruslan » 28 авг 2008, 23:10

Выкладываю код:
Код: Выделить всёРазвернуть
int lCounter;

uint8_t LineFlags;
#define kLineThreshold 70  // Black / White threshold

#define  kLineSharpIn  -20
#define  kLineSharpOut  120
#define  kLineMildIn  0
#define  kLineMildOut 120
#define  kLineStraight 120


void line_tracer_classic ()
{
buzzer (1200,100);   DELAY_MS(100); 
motors(kLineStraight, kLineStraight);

while (1)  // ОСНОВНОЙ ЦИКЛ
   {

   SL2 = analog(0);    SL1 = analog(1);
   SC  = analog(2);    SR1 = analog(3); 
   SR2 = analog(4);  // считываем значение на сенсорах

   LineFlags = 0;

   if (SL2 > kLineThreshold)  LineFlags |= 0b00100000;  // Left half
   if (SL1 > kLineThreshold)  LineFlags |= 0b00010000;    // Left center
   if (SC  > kLineThreshold)  LineFlags |= 0b00001000;    // Center
   if (SR1 > kLineThreshold)  LineFlags |= 0b00000100;  // Right center
   if (SR2 > kLineThreshold)  LineFlags |= 0b00000010;  // Right half

   // ВРЕМЕННО ПИШЕМ В ПЕРЕМЕННУЮ LineFlags состояние сенсоров.

   switch (LineFlags)  // выбор поведения.
      {
      case 0b00100000:
         motors(kLineSharpIn, kLineSharpOut);
         break;

      case 0b00010000:
         motors(kLineMildIn, kLineMildOut);
         break;

      case 0b00011000:
         motors(30, 130);
         break;

      case 0b00001000:
         motors(kLineStraight, kLineStraight);
         break;

      case 0b00000100:
         motors(kLineMildOut, kLineMildIn);
         break;

      case 0b00001100:
         motors(130, 30);
         break;

      case 0b00000010:
         motors(kLineSharpOut, kLineSharpIn);
         break;

      default :
         break;
      }
   } 
}


Re: Минибот - Лайнер

mandigit » 29 авг 2008, 10:52

Трейсер реально живой?

Re: Минибот - Лайнер - вариант 2

Ruslan » 03 сен 2008, 22:58

После того, как я убил первую плату минибота, я решил сделать еще одного лайн-трейсера на более продвинутом уровне. Концепция включала отдельную плату
(шасси) для моторов и сенсоров и в перспективе для ЛиПо батареи. Выкладываю фотки и видео. Код пока не оптимизирован. Хочу переписать под ПИД но руки не доходят.


CIMG2738.JPG
Общий вид.

CIMG2739.JPG
Вид снизу - видны обе платы

CIMG2742.JPG
Шасси отдельно.


cron
Rambler\'s Top100 Mail.ru counter