roboforum.ru

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

 

Монстр R1-B1

Наше хобби — конструировать и программировать.
Демонстрация готовых роботов и устройств построенных своими руками.

Монстр R1-B1

Сообщение space » 03 май 2008, 18:10

Ну иначе его назвать нельзя так как с виду похож именно на монстра хоть и безобидного :D
Не удержался и решил показать свой шедевр. Только ещё не доделал не хватает переднего бампера и нескольких датчиков. Но уже ездит снял на видео как через порожек переезжает :D . Вообщем меня он порадовал.
Вложения
video.rar
видео
(1.23 МиБ) Скачиваний: 167
1.jpg
Так он выглядит в 3D
5.JPG
4.JPG
3.JPG
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Монстр R1-B1

Сообщение RoboTok » 03 май 2008, 21:30

А не круто ли сервы на колеса ставить ?
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

Re: Монстр R1-B1

Сообщение space » 03 май 2008, 21:53

А это посмотрим в дальнейшем 8)
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Монстр R1-B1

Сообщение Myp » 04 май 2008, 14:21

а зачем сервы на таких тонких лепестках? они же отломятся еси на него нажать посильнее...
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 15949
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Монстр R1-B1

Сообщение space » 04 май 2008, 15:09

Толщина у оргстекла 5 мм. Так что не отломится даже если нажать. Да и тем более зачем на него нажимать то ? :crazy:
А на лепестках так удобней. Место больше остаётся на платформе
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Монстр R1-B1

Сообщение RoboTok » 04 май 2008, 16:12

А зачем лепестки для серв, если сервы под платформой ? :crazy:
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

Re: Монстр R1-B1

Сообщение space » 04 май 2008, 17:04

Когда я платформу делал в 3д, то думал что, если без лепестков, то разворачиваться он будет хуже. Ведь прямоугольную платформу повернуть сложней, а из-за лепестков получается квадрат, который и развернуть легче. Можно конечно было сделать сразу квадратную платформу, но у меня тогда оргстекла нехватило бы.
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Монстр R1-B1

Сообщение space » 05 июн 2008, 15:05

Эх.. :( Накололся я с этой платформой плохо разварачивается.

Поэтому решил сделать расстояние поменьше между сервами.
Переделал и вот результат:
Только с 3 сервами. Так как на одной сломалась шестерёнка :(

Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Монстр R1-B1

Сообщение RoboTok » 05 июн 2008, 19:08

А изза чего плохо разворачивается ?
Аватара пользователя
RoboTok
 
Сообщения: 1060
Зарегистрирован: 04 фев 2008, 13:18
Откуда: Москва
прог. языки: PHP

Re: Монстр R1-B1

Сообщение space » 05 июн 2008, 19:23

По всеё видимости расстояние большое между сервами и в добавок, если сверху смотреть, то получается всё же прямоугольник, а не квадрат, который разворачивать куда проще. А то, что переделал там точно квадрат получился и разворачивается даже с тремя сервами хорошо.
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Монстр R1-B1

Сообщение Master » 06 июн 2008, 08:48

Ну вообще-то для разворота танкового типа нужно колеса боковые ставить как можно ближе.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Монстр R1-B1

Сообщение space » 06 июн 2008, 10:28

Master писал(а):Ну вообще-то для разворота танкового типа нужно колеса боковые ставить как можно ближе.

вот и поставил и как видишь даже с тремя всё разворачивается :)
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Монстр R1-B1

Сообщение Master » 06 июн 2008, 10:35

Поставь гироскоп и он будет разворачиваться с двумя.
Аватара пользователя
Master
 
Сообщения: 4468
Зарегистрирован: 21 дек 2006, 19:56
Откуда: Украина, г.Одесса
прог. языки: Delphi и С

Re: Монстр R1-B1

Сообщение space » 09 июн 2008, 07:51

Написал программу для следования по линии. За датчики взял модуль датчика линии на основе компаратора LM311 FireFly
Вот

Код: Выделить всёРазвернуть
// Программа следования по линии для Проекта мобильного робота "R1-B1"     
// Автор Space:
//       -мк ATmega16
//       -используется кварц на 8мГц
//       -компилятор WinAVR V2.0.5
// Программа 2008 для робота R1-B1 - www.robptsspace.ucoz.ru
//------------------------------------------------------------------------
#include <avr/io.h>     
#define bit_is_clear(sfr, bit) \
                     (!(sfr & _BV(bit)))
#define bit_is_set(sfr, bit) (sfr & _BV(bit))
// назначение определений для танкового привода
#define OUT PORTA
#define MOTOR_FR  PA0  // вперед-вправо
#define MOTOR_BR  PA1  // назад-вправо
#define MOTOR_BL  PA2  // назад-влево
#define MOTOR_FL  PA3  // вперед-влево

#define IN PIND
#define LIGHT_R  PD0 // правый фотодиод
#define LIGHT_L  PD1 // левый фотодиод
#define LED PD4 // светодиод

// Возможные режимы движения для танкового привода

enum {STOP, F, FR, FL};

//------------------------------------------------------------------------------
// Задержка t х 10ms
//------------------------------------------------------------------------------
//#define F_CPU 8000000
#define K_DELAY_10ms    F_CPU/600
void Delay_10ms(unsigned char t) {
      if (t==0) return;
      unsigned int i;
      while (t--) for(i=0;i<K_DELAY_10ms; i++);
}

//------------------------------------------------------------------------------
// Включение комбинации моторов для движения в заданном направлении
//------------------------------------------------------------------------------
void go(unsigned char direction){

      switch (direction) {
      case STOP:
        cbi(OUT, MOTOR_FR);
        cbi(OUT, MOTOR_BR);
        cbi(OUT, MOTOR_BL);
        cbi(OUT, MOTOR_FL);
        break;

      case F:
        sbi(OUT, MOTOR_FR);
        cbi(OUT, MOTOR_BR);
        cbi(OUT, MOTOR_BL);
        sbi(OUT, MOTOR_FL);
        break;

      case FR:
        cbi(OUT, MOTOR_FR);
        cbi(OUT, MOTOR_BR);
        cbi(OUT, MOTOR_BL);
        sbi(OUT, MOTOR_FL);
        break;

      case FL:
        sbi(OUT, MOTOR_FR);
        cbi(OUT, MOTOR_BR);
        cbi(OUT, MOTOR_BL);
        cbi(OUT, MOTOR_FL);
        break;

         
      }
}

//------------------------------------------------------------------------------
// "STOP", ЕСЛИ НЕТ СИГНАЛА
//------------------------------------------------------------------------------
unsigned char walk(void){
       // этот цикл организует STOP пока
       // нет сигнала ни от одного из датчиков освещенности
       while((bit_is_clear(IN, LIGHT_R)) && (bit_is_clear(IN, LIGHT_L))){
           go(STOP);     

           cbi(PORTD, LED); // зажигаем светодиод на PD4
           Delay_10ms(125);   // движемся в этом направлении 2.5 сек
           sbi(PORTD, LED); // гасим светодиод на PD4
           Delay_10ms(125);   // движемся в этом направлении 2.5 сек
       }
       // этот цикл организует движение на свет, пока
       // есть сигнал хотя бы от одного из датчиков освещенности
       while((bit_is_set(IN, LIGHT_R)) || (bit_is_set(IN, LIGHT_L))){
           if((bit_is_set(IN, LIGHT_R)) && (bit_is_set(IN, LIGHT_L))) go(F);
           else if(bit_is_set(IN, LIGHT_R)) go(FR);
           else if(bit_is_set(IN, LIGHT_L)) go(FL);

       }

       return(0);
}

//------------------------------------------------------------------------------
// Главная программа
//------------------------------------------------------------------------------
int main(void)
{

      DDRA  = 0xff;  // назначаем все линии порта A на выход
      PORTA = 0x00;  // и устанавливаем на них низкий уровень

      DDRD  = 0x10;  // назначаем все линии порта D на вход, кроме PD4
      PORTD = 0xef;  // подключаем внутренние нагрузочные резисторы, кроме PD4             

      // для подсчета числа миганий в цикле
      unsigned char i;

      for (i=0;i<5;i++){   // Подмигиваем пять раз
        cbi(PORTD, LED); // Зажигаем LED
        Delay_10ms(250);  // пауза
        sbi(PORTD, LED); // гасим LED
        Delay_10ms(250);  // пауза
        }

      // запускаем главный цикл
      while(1) walk();

}

Хочу поставить ещё третий датчик по центру. Чтоб робот видел линию, а не только следовал по краям линии
Аватара пользователя
space
 
Сообщения: 548
Зарегистрирован: 17 июн 2007, 23:44
Откуда: Тула
прог. языки: Bascom AVR Basic, CodeVisionAVR
ФИО: Замотаев Кирилл Игоревич

Re: Монстр R1-B1

Сообщение dima » 11 июл 2008, 18:46

Что то мне это напоминает... 8) В смысле платформа...
dima
 
Сообщения: 215
Зарегистрирован: 21 ноя 2006, 17:55
Откуда: Ukraine Lugansk

След.

Вернуться в Наши проекты

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

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

Mail.ru counter